构建与格式化工具批量写文件时,CodeGraph 如何调大 CODEGRAPH_WATCH_DEBOUNCE_MS?

构建与格式化工具批量写文件时,CodeGraph 如何调大 CODEGRAPH_WATCH_DEBOUNCE_MS? 构建与格式化工具批量写文件时CodeGraph 如何调大 CODEGRAPH_WATCH_DEBOUNCE_MS【免费下载链接】codegraphPre-indexed code knowledge graph, auto syncs on code changes, for Claude Code, Codex, Gemini, Cursor, OpenCode, AntiGravity, Kiro, CoPilot, and Hermes Agent — fewer tokens, fewer tool calls, 100% local项目地址: https://gitcode.com/GitHub_Trending/co0degr/codegraph当构建脚本或保存即格式化format-on-save的编辑器在几秒内连续写回大量文件时CodeGraph 的文件监视器会在默认 2000ms 的防抖窗口上触发多次自动同步而不是把整批改动合并成一次。CodeGraph 提供了CODEGRAPH_WATCH_DEBOUNCE_MS环境变量来覆盖这个静默窗口本文说明如何为这类突发写入场景调大它、如何确认设置生效以及哪些值会被拒绝。先确认默认机制长什么样AgentClaude Code、Cursor、Codex、opencode、Hermes、Gemini、Antigravity、Kiro 等启动codegraph serve --mcp后CodeGraph 会在项目根目录上挂一个原生文件监视器macOS 用 FSEventsLinux 用 inotifyWindows 用 ReadDirectoryChangesW捕获每个源文件的新建 / 修改 / 删除。事件经过一个防抖计时器折叠后运行增量sync默认流程是agent writes src/Widget.ts → watcher fires (event delivery: typically 100ms) → 2000ms debounce → sync runs; Widget.tss nodes edges are in the index → next agent query sees it也就是说默认窗口是 2000ms只要 2 秒内没有新事件就触发一次同步。文档明确指出这个变量的用途Tunable:CODEGRAPH_WATCH_DEBOUNCE_MSoverrides the default 2000ms, clamped to[100ms, 60s]. Useful when a build step or formatter writes many files in a tight burst — bump it to5000or10000so the watcher coalesces them into one sync. —— Guides → Indexing a Project设置环境变量CODEGRAPH_WATCH_DEBOUNCE_MS由 MCP 服务进程在启动文件监视器时从自己的环境变量读取见 src/mcp/engine.ts 中读取process.env.CODEGRAPH_WATCH_DEBOUNCE_MS的 parseDebounceEnv所以设置位置是启动codegraph serve --mcp的那一层环境不需要改 agent 的命令行。测试文件的说明原文是让使用方tune the watcher quiet window from MCP-launched configs without editing the agents command line见tests/mcp-debounce-env.test.ts。前置条件是项目已经完成过codegraph init创建.codegraph/并建好全量图。在 agent 会话中你通常不需要手动跑codegraph sync索引由监视器维护。手动启动 MCP 服务时直接在命令前加环境变量即可CODEGRAPH_WATCH_DEBOUNCE_MS5000 codegraph serve --mcp如果你是通过 agent 启动 MCP 服务就在该 agent 的 MCP 服务器配置里为codegraph serve --mcp进程加上这个环境变量文档建议的取值是5000或10000。修改后需要让 MCP 服务进程重启因为该值是在监视器启动时读取并打印一次的。取值规则与 src/mcp/engine.ts 的解析逻辑及tests/mcp-debounce-env.test.ts 一致有效范围是100到60000含端点之间的整数单位毫秒小于 100如50、大于 60000如60001、负数、非整数如500.5或非数字如abc、NaN都会被忽略回落到默认 2000ms而不是截断到边界值——源码注释说明这是有意为之避免把明显的配置笔误静默掩盖未设置或为空字符串时同样使用默认 2000ms。验证设置生效看启动日志。监视器启动时MCP 服务会在 stderr 打印当前生效的防抖值格式来自 src/mcp/engine.ts 的日志语句[CodeGraph MCP] File watcher debounce: 5000ms (CODEGRAPH_WATCH_DEBOUNCE_MS)只有当环境变量取值合法时才会出现这一行。如果没看到它说明变量没被进程读到或者值非法而回落到了默认 2000ms。确认监视器处于活动状态。同一次启动还应打印[CodeGraph MCP] File watcher active — graph will auto-sync on changes如果环境禁用了监视器例如沙箱阻止本地 fs watcher或设置了CODEGRAPH_NO_DAEMON1会打印File watcher disabled — …此时防抖设置没有意义需要手动运行codegraph sync刷新索引。触发一次批量写入后检查索引状态。让构建或格式化工具跑一遍写入窗口期内用 MCP 侧的codegraph_status工具查看响应中的### Pending sync:小节列出尚未进入索引的文件及编辑时长该小节不存在表示没有待同步项即索引已追上。同步完成时 stderr 还会打印形如Auto-synced N file(s) in Mms的日志N 是本次合并进一次同步的文件数——批量写文件时你会看到多个文件对应一次同步记录这正是调大窗口想要的效果。调大之后的行为边界防抖窗口内的过期提示仍在。窗口内被修改但尚未入索引的文件若被某个 MCP 工具响应引用响应开头会带⚠️staleness banner列出具体文件并提示 agent 直接 Read 该文件见 indexing.md 的 Per-file staleness banner 一节。调大窗口只是把这个窗口从约 2 秒拉长到约 510 秒期间 agent 不会拿到静默的错误答案。少量文件保存仍是快速同步。按 CHANGELOG.md 的描述单个或成对的文件保存在一个更短的静默窗口后就会触发同步不会超过你配置的防抖值下限 100ms只有更大的突发超过少量文件的批量写入才会完整使用你调大后的窗口。因此调大CODEGRAPH_WATCH_DEBOUNCE_MS主要减少的是批量写入场景下的同步次数日常单文件保存的延迟不受影响。取值上限是 60 秒。源码注释说明上限的原因再长watcher feels broken监视器会显得像坏了下限 100ms 是因为再快就接近每次按键一次同步。事件风暴之外有兜底。目录删除和事件风暴仍会走全量扫描对比窗口内的漏报由 staleness banner 与连接时的 catch-up 同步覆盖如果你在防抖窗口结束、且同步日志显示完成后仍然有文件缺失文档认为这是 bug应带复现步骤提交 issue。相关文档Guides → Indexing a Project、README.md 的 How auto-syncing works 一节、src/mcp/engine.ts环境变量解析与日志、tests/mcp-debounce-env.test.ts取值边界用例。【免费下载链接】codegraphPre-indexed code knowledge graph, auto syncs on code changes, for Claude Code, Codex, Gemini, Cursor, OpenCode, AntiGravity, Kiro, CoPilot, and Hermes Agent — fewer tokens, fewer tool calls, 100% local项目地址: https://gitcode.com/GitHub_Trending/co0degr/codegraph创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考