lifewiki
把你生活中的事告诉 lifewiki,智能体就会把它整理成个人 wiki。之后再添加一条与之前矛盾的笔记,智能体会更新相关页面,同时保留原始笔记及其历史。
基于 GDK 构建:goose-agent、goose-providers,以及可选的本地推理。
巧妙之处
智能体之所以能改写 wiki,是因为 wiki 并不是事实的来源,只追加的日志才是。每条生成的内容都可以引用其背后的笔记,变更由 git 记录。如果提示词或模型有改进,可以从原始日志重新构建整个 wiki。
构建和提问使用同一个智能体循环,只是能力不同。构建时可以搜索、读取和写入页面;提问时以只读方式打开工作区,不提供写入工具。这个区别由应用本身强制执行,而不只是靠一句让模型守规矩的指令。
工作方式
- 把笔记作为纯文本记录到日志中。
- 运行一次构建。智能体搜索并读取 wiki,然后把新信息与已有页面梳理对齐。
- 把 wiki 的改动和处理游标一起提交。
- 由另一个只读角色,基于生成的 wiki 回答问题。
应用向 GDK 的状态机提供自己的操作。在
src/agent.rs 中,
这些步骤把限制、完成判断和工具执行排在推理之前:
let steps: Vec<Step<'_, Session, ConversationEffect>> = vec![
Step::Operation(Arc::new(MaxTurnsOperation)),
Step::Operation(Arc::new(TerminalOperation)),
Step::Operation(Arc::new(EndTurnOperation)),
Step::Operation(Arc::new(ToolExecutionOperation)),
Step::Inference(Arc::new(InferenceRunner {
backend: self.backend.clone(),
})),
];
GDK 提供执行机制;工具、角色、存储,以及一次运行何时结束的规则,则由 lifewiki 自己负责。另请参阅 工具实现 和设计笔记。
自己运行
你需要 Rust,以及一个 Anthropic API 密钥或已配置好的本地模型。 本地推理有额外的构建和硬件要求,这条路径请参考 仓库中的说明。
如果使用托管模型、不启用可选的本地后端,构建方式如下:
git clone https://github.com/jamadeo/lifewiki.git
cd lifewiki
cargo install --path . --no-default-features
lw init
在环境中设置好 ANTHROPIC_API_KEY 后:
lw add "Ada lives in Lisbon."
lw add "Ada moved to Porto last month."
lw build
lw ask "Where does Ada live?"
录屏演示展示了梳理、引用、提问和 git 历史。其中的本地模型已提前预热,回放中的停顿也经过缩短,因此不会显示首次运行的加载时间。