本地持久代码索引方案
_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」频道最新
- 两名工程师用 AI 3.5 个月重建 FedEx 供应商计费核心,原估 7-8 个月 — alex_verem · 2026-10-27
- Terminal-Bench 4.0:GPT-6.1 Terra 涨约 20 分,追平 GPT-6.1 Sol — ArtificialAnlys · 2026-10-27
- AA 实测 GPT-6.1 Terra:编码 Agent 得 48 分,成本仅前代三分之一 — ArtificialAnlys · 2026-10-27
- Shift-1 模型路由器发布:编码 Agent 成本最高降 55% — ypatil125 · 2026-10-27
- 零基础用户用 Claude Code 两周 vibe coding 出一款 Godot JRPG — ADHDavid · 2026-10-27
- StackChan 机器人用 Grok+Hermes+GPT 演「小鸭子心事」短剧 — alexcovo_eth · 2026-10-27