跳到主要内容

lifewiki

把你生活中的事告诉 lifewiki,智能体就会把它整理成个人 wiki。之后再添加一条与之前矛盾的笔记,智能体会更新相关页面,同时保留原始笔记及其历史。

基于 GDK 构建:goose-agent、goose-providers,以及可选的本地推理。

源码 · 观看录屏

巧妙之处​

智能体之所以能改写 wiki,是因为 wiki 并不是事实的来源,只追加的日志才是。每条生成的内容都可以引用其背后的笔记,变更由 git 记录。如果提示词或模型有改进,可以从原始日志重新构建整个 wiki。

构建和提问使用同一个智能体循环,只是能力不同。构建时可以搜索、读取和写入页面;提问时以只读方式打开工作区,不提供写入工具。这个区别由应用本身强制执行,而不只是靠一句让模型守规矩的指令。

工作方式​

  1. 把笔记作为纯文本记录到日志中。
  2. 运行一次构建。智能体搜索并读取 wiki,然后把新信息与已有页面梳理对齐。
  3. 把 wiki 的改动和处理游标一起提交。
  4. 由另一个只读角色,基于生成的 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 历史。其中的本地模型已提前预热,回放中的停顿也经过缩短,因此不会显示首次运行的加载时间。