用 Coding Agent 改代码时的一个常见浪费:上来 grep 关键字 → 读五个文件 → 发现方向不对 → 再 grep ,token 烧完了还没定位准,改完也说不清影响面有多大。
做了个 MCP server 解决这个,MIT ,已发 npm 。
https://github.com/team-harness/code-deep
npm i -g @team-harness/code-deep
code-deep install --target codex,claude
install 会自动给 Codex 和 Claude Code 注册全局 MCP server 、往 ~/.codex/AGENTS.md 和 ~/.claude/CLAUDE.md 写一段带标记的指引、给 Claude 加上对应权限。它保留无关配置、每个改动的文件备份成 <file>.code-deep.bak、可重复执行。装完重启一下 host 。
暴露给 Agent 的接口刻意做得很小,只有两个。
code-deep explore \
"追踪 AuthService login 如何创建和校验 session ,包括调用方和影响面" \
--path /path/to/project
返回聚焦的相关源码、符号关系、调用路径和下游影响。好的 query 要说清三件事:任务目标、已知的符号或文件、要追踪的关系( callers / callees / 数据流 / blast radius )。
跟 grep 的区别是它问的是结构化的图,不是文本匹配 —— 不用「猜哪个关键字能命中」,也不用为了确认调用关系去读整个文件。
code-deep review /path/to/project # 当前工作区,含 staged/unstaged/untracked
code-deep review /path/to/project --base origin/main --head HEAD # 分支或 PR 范围
code-deep review /path/to/project --json # 结构化报告
流水线是:unified diff 解析 → hunk 映射到当前符号 → 影响面收集 → 确定性风险打分 → Markdown + 结构化 JSON 报告。
风险信号目前包括:敏感路径、缺少对应测试文件改动、图影响宽度、高置信度的跨边界影响、diff 大小、文件数、删除文件、图分析不完整。整体风险取「全局信号总和」和「单符号最高风险」两者中的较大值 —— 这样一个局部高风险符号不会被整体的低分掩盖掉。
每个报告有按风险排序的 reviewItems,每项对应一个变更符号,带归一化的影响符号、相关测试文件、映射与影响的置信度、parser warning ,以及贡献到该符号风险分的具体原因。测试状态是 linked / changed / missing / unknown 四态。
graph-analysis-incomplete 信号 —— 一次失败的查询不能伪装成一次干净的低风险审查。这条我觉得是最关键的,静默降级的工具比没有工具更危险。apps/、packages/、services/、modules/、libs/ 这类 workspace 根,或者 src/ 下的第一层领域目录。standard。任何截断都通过 reviewItemsOmitted 显式告诉你,不会偷偷砍掉。import { CodeDeepClient } from '@team-harness/code-deep';
const codeDeep = new CodeDeepClient({ projectPath: process.cwd() });
try {
const context = await codeDeep.explore('AuthService login');
const report = await codeDeep.review();
for (const item of report.reviewItems) {
console.log(item.risk.level, item.symbol.name, item.tests.status);
}
} finally {
await codeDeep.close();
}
底层是 https://github.com/colbymchenry/codegraph ( MIT ),作为精确依赖装进来,不用单独全局装。两者版本独立,桥接层和 reviewer 可以不等上游发版就修问题。
第一次在 Git 仓库里调 explore 或 review 会自动初始化缺失的 .codegraph/,不用手动 init 。code-deep ps 可以看本地的 wrapper 、CodeGraph proxy 、共享 daemon 和 watchdog 进程,只读不改任何东西,也不会仅凭运行时长就把长期进程判成孤儿。
欢迎试,有问题提 issue 或者在这里说。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.