DeepSeek Harness Hub
← 返回列表

adithyanraj03/dsh-graft-plugin

DeepSeek Harnessspec-screened在 GitHub 查看 ↗
未验证

一个 DeepSeek Harness 插件,它将 graft —— 一个预构建的图,包含每个符号、其…

尚未跑自动兼容性验证,可查看页面内的依赖与入口分析。 · 最近上游提交 2026/9/17 · 已提供中文文档

一个 DeepSeek Harness 插件,将 graft——一张预构建的图,包含每个符号、其 file:line 跨度以及谁调用了谁——同时呈现在你和模型面前。

综合分
30.7
GitHub 分
30.7
用户评分
★ Stars
1
周下载量
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add adithyanraj03/dsh-graft-plugin
该插件未发布到 npm,走 GitHub 源安装(pnpm 若拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑)
数据截至 2026/9/18(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
依赖的 DSH / Cordis 模块
@deepseek-ai/dsh-tools@deepseek-ai/dsh-typert-protocol
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

dsh-graft-plugin

language style license node dsh runtime tests

一个 DeepSeek Harness 插件,它将 graft —— 一个预构建的图,包含每个符号、其 file:line 范围以及谁调用了谁 —— 呈现在你和模型面前。

它做四件事:

- 编辑器中的一个标签(chip),标明当前会话实际使用的 graft 索引、它是否仍与代码匹配,以及 graft 在该仓库中节省了多少 token。
- 为模型提供的五个工具 —— graft_ask、graft_grep、graft_callers、graft_skeleton、graft_map —— 按会话解析,因此一个 dsh 可以同时服务多个工作区。
- /graft 用于构建或重建索引,以及在模型编辑文件后自动重建。
- 一个 graft viz 按钮,在 dsh-better-sidebar 中将图作为标签页打开。

安装

dsh plugin --profile web add dsh-graft-plugin
dsh --profile web

安装还会将 graft CLI(@nanonets/graft)放入你的 PATH —— 这里的每个工具都会调用它,因此没有它的插件什么也做不了。如果你的全局 npm 前缀需要提权,postinstall 会提示,并打印出需要手动运行的命令:

npm install -g @nanonets/graft

然后对仓库索引一次:

cd
graft build

侧边栏标签页

graft viz 按钮需要 dsh-better-sidebar 已挂载。它作为本插件的依赖项一起发布,因此已经下载好了 —— 但 dsh 只会挂载 profile 中列出的内容:

dsh plugin --profile web add dsh-better-sidebar

如果你不想要这个标签页,可以跳过。标签(chip)、工具、/graft 和自动重建在没有它的情况下都能正常工作;按钮只会报告侧边栏不可用。

本插件不会自行插入 dsh-better-sidebar 行,这是有意为之。那个包自己的 bundle 行带有一个守卫,当另一个已启用的行已经挂载了同一个包时,它会禁用自身。一个具有不同 id 的第二行会使该守卫变成循环,而失败的结果是你现有的侧边栏静默地禁用自己。一条显式命令比那种风险更值得。

你会得到什么

标签(chip)

位于编辑器中模型名称旁边:

● graft · my-repo          in sync
◐ graft · my-repo          syncing
▲ graft · my-repo          stale

悬停(或点击)会打开一张卡片,显示解析后的根目录、节点和边的数量、新鲜度、正在运行的节省 token 统计,以及 graft viz 按钮。
输入框中的芯片,及其悬停卡片

根目录是从会话自身的工作区解析的,而不是从 dsh 启动的位置。这正是它存在而不是使用 graft mcp 服务器的全部原因:graft mcp 在启动时从自己的工作目录解析一次仓库,之后没有任何东西能重新指向它。从主目录启动时,它对你打开的每个工作区都回答“未找到图”。

可视化器

graft viz 按钮会在 dsh-better-sidebar 中作为标签页打开图。上下文视图展示整个图:

侧边栏中的图——上下文视图

代码视图深入单个文件——它包含什么、它依赖什么、什么依赖它:

侧边栏中的图——代码视图

工具

| 工具 | 它回答什么 |
|---|---|
| graft_ask | “X 如何工作” / “Y 在哪里”——排序后的命中结果,代码内联在精确的 file:line 处 |
| graft_grep | 每一次出现,按外层符号分组(graft_ask 是前 N 个,会漏掉一些) |
| graft_callers | 谁调用某个符号、它调用什么,或重命名前的完整影响范围 |
| graft_skeleton | 一个文件的整个 API,约 200 个 token |
| graft_map | 在陌生目录树中的定位 |

它们都不接受布尔参数。它们改用字符串枚举——detail: "full" 而不是 full: true——这对模型来说更易读,并避开某些 OpenAI 兼容服务器上的一个真实故障模式:在那里,设置布尔的工具调用会被输出为字面  文本,永远不会运行。

/graft

- /graft——构建索引,如果已存在则重建
- /graft status——芯片知道的内容,以文本形式
- /graft deep——完整重建

自动重建

在模型写入或编辑文件后,索引会在后台重建,并做防抖处理,这样长回合不会在每次按键时都重建。这复用了 graft 自己的同步运行器,而不是重新实现它,因此它不会与 graft build 的行为产生偏差。

配置

全部可选,全部位于你配置文件的 cordis.patch.yml 中该插件的行上:

- id: graft-status
name: 'dsh-graft-plugin'
config:
cwd: 'C:/path/to/repo'   # 固定到一个仓库,而不是按会话解析
tools: false             # 去掉 graft_* 工具,保留芯片
command: false           # 去掉 /graft
promptSection: false     # 不再告诉模型优先使用 graft
autoBuild: false         # 编辑后不再重建

要求

- dsh 0.1.2-rc.1 或更新版本,web 配置文件
- Node 22+
- PATH 上有 graft CLI(已为你安装;见上文)

开发

npm install
npm test           # 可移植:在临时目录中构建一个合成的 graft 索引
npm run test:live  # 针对真实仓库驱动真实的 graft CLI
npm test 不需要机器上任何位置存在 graft 索引,也不需要安装 graft。唯一一个确实会构建真实索引的测试套件,在 graft 缺失时会大声地跳过自身——CLI 缺失是一种环境配置状态,而不是缺陷。

许可证

MIT

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

💬 加入 DPharness 群聊

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

点击加入 QQ 群
DPharness 群聊二维码,手机 QQ 扫码进群
扫码进群