本地持久代码索引方案
_febin_p_ · reddit · 2026-07-19
作者做了一个面向 AI 编码 agents 的本地持久代码索引 daemon(mcp-injector),目标是避免 agent 反复整仓库读文件、浪费上下文。
核心做法
- 用语言相关 AST parser 扫描仓库,把符号、文件、行号映射存入本地 SQLite(WAL 模式)。
- getprojectmap 返回的是 AST 折叠后的项目图:保留函数签名、import、类型、接口等,把函数体替换成压缩标记。
- 这样既能让模型先知道“有哪些东西”,又在需要时按需取回原始源码。
实测与工程细节
- 在一个仓库里,初始 project map 从 892k tokens 降到 143k tokens,减少 84.9%。
- 为了让 Anthropic 的 prompt cache 命中稳定,作者把文件顺序、时间戳、mtime、换行等易变因素都规范化,确保同一仓库多次生成字节级一致的 map。
- 通过 inotify/FSEvents 和 git post-checkout hook 做增量更新,只重建变更文件。
- 上层提供了 BM25 符号搜索、原文件检索、依赖/影响范围遍历、Mermaid 图、git 上下文、正则搜索、数据库 schema 检查等 MCP 工具。
- 写回前会校验 payload,避免 agent 误把压缩表示直接写回源码。
- 索引前还会用熵启发式检测并脱敏疑似 secrets。
「编程与Agent」频道最新
- 从聊天到 Agent,推理延迟正在成为生产级瓶颈 — Euphoric_Sea632 · 2026-09-11
- Anthropic 研究员:99% 工程师已跑 300+ 自改进 agent 群 — AlishaOutridge · 2026-09-11
- Gergely Orosz 观察:AI Agent 提速十倍交付,却带来一堆小退化 — ducha_aiki · 2026-09-11
- 同题 Echo Maze 实测:三大模型看似成功,代码里藏着同一个 bug — eyishazyer · 2026-09-11
- Astra 分镜+Minimax H3 分镜逐帧生成,视频创作成功率大增 — Hailuo_AI · 2026-09-11
- Codex 用户实测:Sol 搭配 Astra/Luna 子代理更省额度 — pvncher · 2026-09-11