SuperAPI AI 工具集

Graft

Graft 是一个面向编码智能体的开源上下文层,现已更名为 Trail-code,但 graft 命令仍然可用。它通过 tree-sitter 把代码仓库解析成代码知识图谱(graft map),让 Claude Code、Cursor、Codex、Gemini 等编码智能体在每次提示时只获取匹配的文件与函数,并在编辑后看到“爆炸半径”内的依赖。官方称可减少 46% 的工具调用、42% 的 token 消耗,并带来约 12 个百分点的正确率提升。除代码图谱外,还引入了 Learnings 机制,把会话中得到的结论、决策与团队约定保存为文件,通过 git 在团队间共享。提供 MCP 服务与 graft grep、graft map、graft viz 等命令行工具,支持 monorepo。

访问官网

工具介绍

用途

Graft(现已更名为 Trail-code)是一个自学习的上下文层,面向编码智能体。它让 Claude Code、Cursor、Codex、Gemini 等编码智能体获得一份代码地图,以及团队关于这份代码已经积累的认识,从而更快、更省地完成任务。

Trail-code 由两部分组成,二者都运行在用户本地机器上:

  1. graft map(代码图谱):通过 trail init 用 tree-sitter 解析仓库,生成每个文件、函数以及调用关系的图谱。不需要模型,也不需要 API 密钥。代码变化时(包括未提交的修改)会自动刷新。智能体在每次提示时会拿到匹配的文件与函数指针,并在编辑后立即看到哪些内容依赖于该文件。
  2. Learnings(经验):当一次会话得出某个结论,或用户纠正了某项做法时,智能体会将其保存为一条 learning。下一次会话(无论是本人还是团队成员)就以此为起点,而不必重新摸索。关于代码的 learning 随代码一起提交;关于个人的 learning 留在本机。trail init 还会读取过去 Claude Code 会话中反复出现的信息作为初始 learnings。

主要能力

  • 代码图谱:tree-sitter 解析生成符号与调用关系图,确定性、无模型、无网络,支持 23 种语言。
  • 随提示提供相关代码:在 Claude Code 中通过 hooks 把匹配文件和函数加入每次提示,并在编辑后展示依赖该文件的“爆炸半径”。Cursor、Codex 等通过 MCP 工具和指令文件获得同一份图谱。
  • 始终保持最新:每次查询先检查工作树,仅重建变化部分,未提交的编辑也包含在内。
  • 纯文件形式:链接的 markdown 节点,智能体可像普通文件一样打开和检索,不使用向量嵌入。
  • 可选摘要:trail build --deep 会使用用户自己选择的模型提供商与密钥,生成系统中各部分的白话摘要。
  • Learnings:分为 personal 与 repo 两类存放位置,以及 decision 与 preference 两类内容类型;以 .trail/learnings/ 下的短 markdown 文件保存,随 PR 一起评审。
  • 团队共享:learnings 通过 git 传播,无需服务器。trail team 展示最近 7 天团队学到什么、工作在哪里重叠。trail check 在提交、推送或开 PR 前,将改动与团队已有学习内容比对。
  • 不重写历史:智能体不会编辑已有 learning,若与之冲突会在提交中说明原因并保存新的 learning。

使用方式

只需运行 trail init。它会询问要为哪些编码智能体接线,根据代码构建 graft map,创建 .trail/ 存放仓库的 learnings,并为 Claude Code 添加状态行和 hooks。它还会一次性读取该仓库中过去的 Claude Code 会话,找出你重复说过两次以上的内容并保存为 learnings;这一读取由本机 Claude Code 完成,约需一分钟。之后按原有方式工作即可,没有守护进程、没有服务器,全部是文件。

建议提交该配置以便团队成员也能使用。graft map 本身位于 graft/,属于类似 node_modules 的本地缓存,应加入 .gitignore。

相关命令:

  • trail init --dry-run:显示将要写入的智能体接线。
  • trail init --agents claude:仅接线 Claude Code。
  • graft grep、graft map、graft viz:原有 graft 命令仍然可用。
  • trail build --deep:生成深度摘要。
  • trail check:提交前的检查。
  • trail team:查看团队近 7 天动态。
  • trail telemetry disable 或环境变量 DO_NOT_TRACK=1:关闭匿名使用统计。

从 graft 迁移:代码图谱现称为 graft map;graft 与 @nanonets/graft 运行与 trail 相同的代码,输出保持不变。已有 graft 的用户运行 graft upgrade 会在其旁边添加 trail 命令。由 graft 配置过的仓库会在安装 trail 命令后,首次在该仓库打开 Claude Code 时自动迁移;也可立即运行 trail init 迁移。

效果数据(官方提供)

  • 在 SWE-bench Verified 上,同一模型(Claude Sonnet 5)对比:接入 graft map 解决 50 个问题中的 33 个,未接入解决 27 个,工具调用减少 25%,token 减少 23%,耗时减少 32%。文中提到 Claude Sonnet 5 在接入 graft map 时解决 33/50、不接入时 27/50,并使用少 23% 的 token。
  • 在 162 次相同任务、相同智能体的运行中:成本降低 32%,未缓存输入 token 减少 42%,时间减少 60%,正确比例相同。文中另提到 46% 更少工具调用、42% 的 token 节省、60% 更少时间,以及针对 cold Claude Code 的正确率提升。
  • 在 PocketBase 上,15 个真实任务的成本低 21%,速度快 14%。
  • 在 hashicorp/go-retryablehttp 的示例中,一个学习可让队友的智能体获得约 27k token 的“领先量”。

注意:不同段落中的对比数字表述不完全一致(例如 23% 与 42% 的 token 节省、不同基准),均按原文列出。

隐私与数据边界

  • 代码:graft map 在本机用 tree-sitter 构建,无模型、无网络。可选的 trail build --deep 摘要会发送到用户自选的模型提供商,使用用户自己的密钥。
  • 个人 learnings:保存在 ~/.trail,永不提交、永不上传。
  • 仓库 learnings:位于仓库中的文件,通过 git 像其他文件一样共享。
  • 历史会话:trail init 在本机读取你本人在该仓库 Claude Code 记录中的消息,由本机 Claude Code(Claude Sonnet,你的登录)完成,消息只发给 Anthropic,并计入你的 Claude 用量,不会发送给 Trail。
  • 若连接 Trail workspace:在连接前不会有 learning 上传;连接后,所选仓库中的 learnings 会上传至 Trail,包括队友已推送分支上的内容,以及每次搜索与检查的记录(搜索文本、文件、展示了谁的 learnings)。
  • 匿名使用统计:仅使用分桶与固定标签,绝不包含 learning 的标题、文本或路径;TELEMETRY.md 列出每个字段,可用 trail telemetry disable 或 DO_NOT_TRACK=1 关闭。

适用场景

  • 在大型或陌生代码库中使用编码智能体,希望减少反复探索。
  • 团队协作:希望成员的智能体能共享关于代码的决策与约定,且这些内容随 PR 评审、随 git 传播。
  • monorepo 场景(文中提到支持 monorepo,具体细节见官方参考)。
  • 需要了解改动影响范围(爆炸半径)时。

限制与暂未提供的信息

  • 各基准测试的具体配置、任务清单与完整结果见官方仓库中的基准说明。
  • Trail workspace 的团队页面(跨仓库视图、谁在学什么、learning 复用频率、工作重叠)标注为“即将推出”,尚未提供。
  • 官方资料未说明价格、收费方式与商业授权模式。
  • 未提供的安装命令细节、具体 MCP 配置示例、支持的 23 种语言完整列表、节点具体内容、各部分运行位置等,均需参见官方参考文档。
  • 并非所有功能都对所有智能体生效:Claude Code 通过 hooks 集成,Cursor、Codex 等通过 MCP 工具与指令文件集成。
  • 匿名统计可通过配置关闭。