场景:AI 编码 Agent 每次回到项目都失忆?Scribe 把所有代码经验和决策自动写成 Wiki,让 Claude Code 和 Codex 永远带着上下文
你一定遇到过这个场景:花了一整个下午带着 Claude Code 排查了一个棘手的 Oban Worker 幂等性 Bug,仔细记录了根因和修复方案。三天后,在另一个项目里提到”幂等性”三个字,Claude Code 一脸茫然地从头开始分析,完全忘了三天前相同的讨论和结论。你叹了口气——又得重讲一遍。
这不是 Claude Code 的问题。AI 编程 Agent 的上下文是会话级的——每个新会话都是白板。你的架构决策、已评估的库(”Oban 已通过”、”Quantum 已否定”)、踩过的坑和学到的教训,都在会话关闭时消失。传统方案是自己写 CLAUDE.md 或 AGENTS.md 来喂上下文,但你写了一周后就忘了更新。
痛点对比表
| 问题 | 传统方案 | Scribe 方案 |
|---|---|---|
| Agent 记不住跨会话的决策 | 手动维护 CLAUDE.md | 自动从 git 提交和 Agent 会话中提取决策 |
| 项目 A 的教训无法在项目 B 复用 | 每个项目独立维护笔记 | 跨项目的统一知识库,全局可搜索 |
| 工作流被打断——”先记一下” | 停下工作写文档 | 写代码时 Agent 会话自动被挖掘 |
| 知识库过期后无人维护 | Vault 停灰,数据腐烂 | 定时 cron 自动更新和合并 |
| 查找以前的决策需要翻 Git 日志 | git log --grep | qmd query "XX 决策" 语义搜索 |
快速上手:30 分钟搭建你的 Agent 记忆库
Scribe 是一个 Go 单二进制 CLI(28⭐, MIT 许可证),安装后只需三步就能跑起来。
安装
brew tap oliver-kriska/scribe brew install oliver-kriska/scribe/scribe curl -fsSL https://raw.githubusercontent.com/oliver-kriska/scribe/main/install.sh | bash
初始化知识库
scribe init --path ~/my-kb cd ~/my-kb git remote add origin git@github.com:you/my-kb.git # 可选——推送到远端 scribe cron install scribe doctor
scribe init 会交互式询问你的名字、工作领域、iMessage 自聊号码等。完成后它会自动写两样东西:
- 一个
scribe.yaml配置文件 ~/.claude/CLAUDE.md和~/.codex/AGENTS.md中的握手区块——告诉 Claude Code 和 Codex 在每次会话前先去知识库里查一下
非交互式模式(适合脚本或 CI):
scribe init \ --path ~/my-kb \ --owner-name "Alice" \ --owner-context "Platform engineer. Main projects: weblog, infra." \ --domains weblog,infra \ --handle "+155****4567" \ --yes
依赖项
scribe doctor 会告诉你缺什么。核心依赖只有 claude(Agent)、ccrider(会话索引)、qmd(语义搜索)和 git、sqlite3。macOS 用户用 Homebrew 安装时会自动拉齐 ccrider 和 sqlite。
核心功能:Scribe 如何让 Agent 拥有跨会话记忆
1. 四路输入源自动采集
Scribe 通过四条管道持续收集信息,全部走 cron 定时执行,无需人工参与:
- Git 仓库:每 2 小时扫描工作项目,提取新出现的决策、模式和学到的教训
- Claude Code / Codex 会话:通过
ccrider的 FTS5 索引挖掘历史会话。每天三次(03:00、12:00、18:00)批量处理 - 自聊 iMessage:你给自己发的链接评论,每 30 分钟抽一次
- 拖放文件:其他项目通过
.claude/scribe/目录投放的笔记
每条输入在进入 LLM 处理前,会先经过 BM25 密度评分过滤——只会调整配置的例行会话直接被判定为低密度,跳过 LLM 处理,不消耗任何 API 费用。
2. 两段吸收:从原始数据到结构化 Wiki
Scribe 的处理流水线分为两段:
- Pass 1(扎根):提取原子事实(”Oban 已选用”、”Quantum 已否决,原因是单线程瓶颈”)
- Pass 2(展开):将密集源材料拆解为多个实体优先的 Wiki 页面
一周后,你的知识库看起来像这样:
my-kb/ ├── scribe.yaml ├── wiki/ │ ├── decisions/ │ │ ├── chose-oban-over-quantum.md │ │ └── dropping-circuit-breaker-middleware.md │ ├── patterns/ │ │ ├── idempotent-worker-skeleton.md │ │ └── phoenix-scope-based-auth.md │ ├── learnings/ │ │ ├── why-my-liveview-reconnect-loops.md │ │ └── fts5-match-cant-be-parameterized.md │ ├── tools/ │ │ ├── oban.md # verdict: use │ │ └── quantum.md # verdict: skip │ └── projects/ │ └── my-app/ │ ├── overview.md │ └── learnings.md ├── raw/articles/ └── output/runs/
每篇文章都有 YAML frontmatter(type:、domain:、confidence:、tags:、related:),自动生成 [[wikilinks]] 和 See Also 段落,完全可以用 Obsidian 打开阅读。
3. 握手区块:Agent 启动时主动查询知识库
scribe init 写入 CLAUDE.md 的区块告诉 Claude Code:在推荐库、提架构建议或用户提到以前做过的事情时,先查知识库再说。
这个区块包含了清晰的指引:
How to search: Use the
mcp__plugin_qmd_qmd__querytool when available (preferred), orqmd query "via Bash."
>
When to search proactively — don’t wait for the user to ask. – Before recommending a library — query
". Don’t suggest something already rejected. – Before proposing an architectural choice — queryevaluation verdict" ". – When the user references past work — search instead of answering from memory.decision reasoning"
这意味着:你说”帮我看看有没有更适合的库”时,Claude Code 先查知识库,告诉你”你半年已经评估过 Y,因为 Z 原因放弃——我建议看看 X2 版本是否改进了这些点”,而不是重新梳理十多个候选。
4. 定时自动运行:全自动的知识资产管理
Scribe 的 cron 体系覆盖了全生命周期的知识管理:
| 频率 | 任务 |
|---|---|
| 每小时 | 自动提交 KB 到 Git |
| 每 2 小时 | 扫描 Git 仓库提取新决策 |
| 每天 3 次 | 挖掘 Claude Code 和 Codex 会话 |
| 每 30 分钟 | 消费投递的 URL |
| 周日 02:00 | 每周 Dream 周期——4 阶段知识结构化合并 |
| 每天 03:10 | 热点领域 Mini-Dream——自动选择最活跃领域 |
Dream 周期是 Scribe 最有趣的设计——它每周自动对整个知识库进行一次”反思式合并”:检测矛盾条目(”Oban 已通过”和”需要重新评估 Oban”并列时自动标记为矛盾)、收敛身份别名、补全所有失落的反向链接。
横向对比表:Scribe vs 同类方案
| 维度 | Scribe | claude-memory-compiler | basic-memory | 手动 CLAUDE.md |
|---|---|---|---|---|
| 会话挖掘 | ✅ ccrider FTS5 + Codex | ✅ 每次会话全部处理 | ❌ 无此功能 | ❌ 手动 |
| 密度预过滤(省费用) | ✅ BM25 三分类 | ❌ 每次完整提 | n/a | n/a |
| 两段吸收 | ✅ 扎根+展开 | ❌ | ❌ | n/a |
| 跨项目共享 | ✅ 统一 KB | ❌ | ✅ 通过 projects | ❌ |
| 全本地运行($0) | ✅ Ollama | ❌ | ❌ | ✅ 零成本 |
| 定时自动执行 | ✅ LaunchAgents/cron | ❌ 机会主义 | ❌ 建议 cron | ❌ |
| 知识库格式 | Markdown + YAML frontmatter + 图 | JSON 侧边栏 | 内联 DSL 观测 | Markdown |
| 许可证 | MIT | MIT | MIT | n/a |
注意事项
- 仅限 Claude Code 和 Codex:Scribe 当前与 Claude Desktop App 的集成需要手动配置 MCP 服务器,Claude Code 和 Codex CLI 则自动完成。
- macOS 需要 Full Disk Access:
scribe capture(读取 iMessage)需要 macOS 授权一次。运行scribe fda一行命令即可打开设置引导流程。 - 付费 API 有兜底:如果使用 Anthropic 而非本地 Ollama,
sync.daily_output_token_ceiling会阻止循环改写的费用失控。 - ccrider 的隐私含义:Scribe 通过 ccrider 读取 Claude Code 的本地 SQLite 数据库,所有处理都在本地完成,不将原始数据发送到外部。
总结
如果你的工作涉及多个项目、多个 Agent 会话,Scribe 解决了 Agent 生态中最烦人的问题之一:会话间的知识孤岛。安装一次、设置好 cron,然后你只要继续写代码就好——每次 commit 和 Agent 会话都在自动沉淀知识。六个月后你会有一本精确记录了你所有架构决策和踩坑经验的 Wiki,比你自己记得清多了。
相关链接: