Hivemind Code Graph 是一份确定性的、由 AST 派生的当前仓库地图,涵盖每个函数、类、方法、接口、类型、枚举、常量与模块,以及它们之间的边(调用 calls、导入 imports、继承 extends、实现 implements、方法归属 method_of)。它作为 Deeplake 挂载点下的合成文件被查询;磁盘上没有真实文件,读取路径中也没有网络调用。
该图会自动构建并刷新(在 Stop / SessionEnd 时触发,受速率限制与 git diff 控制)。你无需运行任何构建命令——只需读取它。
把它当作快速索引,用来定位少数真正重要的文件/符号,然后用 Read 打开它们来作答。它不能替代源代码。
何时使用此技能
当用户提出关于代码的结构性/关系性问题时激活:
“谁调用了 pushSnapshot?” / “谁使用了这个函数?”
“deeplake-pull.ts 导入了什么?” / “什么依赖 X?”
“GraphSnapshot 定义在哪里?” / “找到处理 Y 的函数。”
“这里的主要子系统/架构是什么?”
“如果我改了这个签名,会影响到什么?” → 使用 impact/<symbol>(传递性影响范围)
何时不使用此技能
读取你已定位符号的函数体 → 对真实源文件使用 Read。代码图只给出位置与关系,不提供完整源码。
尚未提交/构建的代码——代码图可能滞后于未提交的编辑。如果某文件的 mtime 晚于构建时间戳,请读取实时源码。
TypeScript、JavaScript 与 Python 之外的语言(Go、Rust 等)——抽取器只覆盖这三种,并对具名导入解析了跨文件调用/导入。其他情况请回退到 grep/read。
路径速查表
cat ~/.deeplake/memory/graph/index.md
概览:节点/边数量、类型细分、按节点数排名靠前的文件。
cat ~/.deeplake/memory/graph/query/<pattern> # 从这里开始(二合一)
搜索并展开排名靠前的匹配项及其 1 跳邻居(调用者、被调用者、导入、继承关系)。多词 AND:query/<a>+<b>。
cat ~/.deeplake/memory/graph/find/<pattern>
对节点 id + label 做不区分大小写的子串搜索(最多 50 条命中)。打印带编号的句柄 [1] [2] ...,为该工作树保存。
cat ~/.deeplake/memory/graph/show/<handle-or-pattern>
<handle>:来自先前 find/ 的数字(例如 3)。
<pattern>:子串 → 唯一节点详情,或候选列表。
输出:该节点 + 其 1 跳邻居,按边关系分组。
cat ~/.deeplake/memory/graph/neighborhood/<file>
某文件中的所有符号 + 其跨文件邻居(调用者/被调用者/导入)。
cat ~/.deeplake/memory/graph/impact/<pattern>
传递性依赖者——更改某符号的影响范围。
cat ~/.deeplake/memory/graph/path/<from>/<to>
两个符号模式之间的最短依赖路径(跨文件追踪一条流程)。
cat ~/.deeplake/memory/graph/layers # 架构分层/子系统 cat ~/.deeplake/memory/graph/tour # 确定性的引导式导览
工作流程
范围很广? 从 index.md 开始,查看子系统与最大的文件。
在找某个符号? find/<name>(或 query/<name>)→ 选一个句柄。
想要关系? show/<handle> / neighborhood/<file> → 调用者/被调用者、导入。
追踪一条流程? path/<from>/<to>。变更影响? impact/<symbol>。
需要实际代码? 取 source_file:line 并用 Read 读取——不要仅凭代码图作答。
反模式(请阅读)
“Incoming (0)”并不代表死代码。跨文件调用已对具名导入(TS/JS/Python)解析,但实例方法派发(obj.method())、动态调用以及嵌套/内部函数不会被解析——一个零入边符号仍可能通过这些途径被触达。在断言其未被使用前,请在源代码中确认。
代码图可能过时。它每个速率限制窗口最多重建一次。SessionStart 注入会打印构建年龄;如果它很旧,或你刚编辑过某文件,请对该文件优先使用实时源码。
不要尝试构建它。正常使用中没有面向用户的构建步骤;钩子会处理它。只需读取挂载点。
find/ 是词法的,不是语义的。它匹配子串,而非含义——除非这些字符串出现在 id/label 中,find/auth 不会浮现 login/credentials。如果第一次没命中,请尝试多个关键词。