smter/dsh-codebase-memory ↗★ 0
dsh-codebase-memory
DeepSeek Harness plugin: connects the codebase-memory-mcp graph server, nudges the model toward it at the decision point, corrects failed MCP calls, and indexes unindexed repositories by itself. 适合需要让模型深度结合本地代码库知识图谱进行开发的用户。
Other repositories with this package name
Install
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:smter/dsh-codebase-memoryREADME
Read the full README ↗dsh-codebase-memory
English | 中文
把 codebase-memory-mcp 的代码图接进 DeepSeek Harness —— 不只是接上,而是让模型真的用它。
代码图工具最常见的失败不是「接不上」,而是「接上了没人用」:提示写在 system prompt 开头,而决策发生在第 50 步。本插件把该做的事放到决策点上,包括替模型建索引。
安装
-
先装
codebase-memory-mcp(见其上游 README),确认可用:codebase-memory-mcp --version -
在 DSH 的插件管理器里安装本插件(官方流程会同时完成包安装与 bundle 选择):
github:smter/dsh-codebase-memory#e9f18e1170b2bc34bf95254bdb03aef34d73d99e已固定到该 commit;升级时换成新 commit,或改用 tag
v1.0.0。 -
重启
dsh web。之后 Settings 里会出现本插件两个行的选项。
codebase-memory-mcp不在 PATH 上时,改设置里的autoIndexCommand,以及 MCP 行的command。
它做什么
一个 bundle,三行:
| 行 | 作用 |
|---|---|
codebase-memory-mcp | 连接本地 stdio MCP 服务,工具以 mcp__codebase-memory-mcp__* 暴露 |
codebase-memory-reminder | 往 system prompt 注入一段提示,每个 model step 都在 |
codebase-memory-nudge | 在工具管线里按需出手:纠正报错、决策点提醒、自动建索引 |
codebase-memory-nudge 的三件事,每件都有实测依据:
- 纠正失败的 MCP 调用 —— 报错时在下一次决策点注入「这次该怎么改」。
实测:某项目 17 次
search_graph中,带semantic_query键的 10 次全部失败(空数组[]也算),不带的 7 次全部成功;一个子代理因此连续重试 8 次后彻底放弃该工具。 - 决策点提醒 —— 刚 grep 源码、或刚读满 100 行以上源码时,在那次结果后面附一句。 实测:只放 system prompt 时,某会话 12 次 MCP 调用中 10 次失败并很快放弃,另一会话 228 次工具调用里 0 次使用代码图。
- 自动建索引 —— 发现正在读的路径属于未索引的 git 仓库时,插件自己跑
codebase-memory-mcp cli index_repository,然后把准确的 project 名和可直接粘贴的调用交给模型。 实测:某会话被要求建索引后,先建错了仓库、再建对,正确解析出 project 名、写下「use the daily graph」,然后一次都没查。所以这一步不让模型做。
前置条件
- DSH
0.2.0-rc.1(本插件在该版本上验证) codebase-memory-mcp已安装:MCP 行通过官方StdioClientTransport启动它,自动索引复用同一个可执行文件的cli一次性模式
设置
两个行都声明了 Config schema,选项会在 Settings 页自动成表单。常用几项:
| 设置 | 默认 | 说明 |
|---|---|---|
autoIndex | true | 自动为未索引的 git 仓库建索引 |
autoIndexMode | fast | fast / moderate / full |
autoIndexMaxFiles | 20000 | 超过此文件数的仓库不自动索引 |
autoIndexCommand | codebase-memory-mcp | 可执行文件路径(走 PATH) |
minLines | 100 | 读多少行以上算「读长源码」 |
cooldown | 6 | 第 1 次提醒后每隔几次符合条件的调用再提醒 |
correctMCP | true | 是否纠正失败的 MCP 调用 |
完整字段见 Settings 页,或 index.js / hook.js 里的 Config。
开发与测试
pnpm install
pnpm test
55 个用例,不需要网络或真实索引:
test/triggers.test.mjs— 30 例:行数阈值、源码过滤器正反例、提醒节奏、消息形状test/corrections.test.mjs— 11 例:用真实报错文本驱动纠正规则test/autoindex.test.mjs— 14 例:用桩可执行文件驱动完整索引链路与全部 guard
设置 CBM_DEBUG=1 可看到自动索引被跳过的原因。
已知限制
- PTC 模式下 Tool SDK 把多数 MCP 工具的参数渲染成
unknown,模型只能靠描述猜参数名。本插件用 system prompt 写明调用签名来绕过;根因在渲染侧,值得上游修。 - worktree 会被索引成独立 project(worktree 里
.git是文件)。这通常正是想要的,但主 checkout 的索引不会自动覆盖 worktree,反之亦然。 autoIndexMaxFiles是有界遍历估算(不读.gitignore),只是粗粒度护栏。