dsh-codebase-memory:把代码图接到 DSH,并在决策点让模型真的用起来

前言

在 DeepSeek Harness(DSH)里接 MCP 代码图,常见卡点不是「服务起不来」,而是模型在长跑会话里几乎不去查图:提示写在 system prompt 开头,真正要不要用工具的决定却发生在后面很多步。上游 codebase-memory-mcp 提供本地代码图能力;社区插件 smter/dsh-codebase-memory(维护者 smter,分类:工作流)做的是把该 MCP 接进 DSH,并在工具管线里于决策点提醒、纠正失败调用,以及为未索引的 git 仓库自动建索引。

这是什么

一句话:DeepSeek Harness 插件,连接 codebase-memory-mcp 代码图,在决策点推动模型使用、纠正失败的 MCP 调用,并自行索引仓库。

插件以一个 bundle 提供三行能力(见 README 表格):

行 作用
codebase-memory-mcp 连接本地 stdio MCP 服务,工具以 mcp__codebase-memory-mcp__* 暴露
codebase-memory-reminder 往 system prompt 注入提示,每个 model step 都会带上
codebase-memory-nudge 在工具管线里按需出手:纠正报错、决策点提醒、自动建索引

许可证 MIT;package 版本 1.0.0;README 标注在 DSH 0.2.0-rc.1 上验证。

核心功能

MCP 连接

codebase-memory-mcp 行通过官方 StdioClientTransport 启动已安装的 codebase-memory-mcp,把图查询等工具暴露给 DSH 会话。

决策点提醒(nudge)

codebase-memory-nudge 在两类时机附简短提醒:刚 grep 源码,或刚读满配置阈值(默认 minLines 为 100)的源码行数。README 记录了对比:仅 system prompt 时,某会话 12 次 MCP 调用中 10 次失败并很快放弃;另一会话 228 次工具调用里 0 次使用代码图。提醒节奏由 cooldown(默认 6)控制——第一次提醒之后,每隔若干次符合条件的调用再提醒。

纠正失败的 MCP 调用

开启 correctMCP(默认 true)时,MCP 报错会在下一次决策点注入「这次该怎么改」的说明。README 举例:search_graph 若带 semantic_query 键,在某项目 17 次调用里带该键的 10 次全部失败(空数组也算),不带的 7 次全部成功;子代理曾因此连续重试 8 次后放弃该工具。

自动建索引

autoIndex 默认为 true。当模型正在读的路径属于尚未索引的 git 仓库时,插件自行执行 codebase-memory-mcp cli index_repository,并把准确的 project 名与可直接粘贴的调用交给模型,而不是把建索引完全交给模型(README 记载:某会话曾建错仓库、再建对,正确解析 project 名后仍一次未查图)。

索引模式与护栏(Settings 或 index.js / hook.js 中的 Config):

设置 默认 说明
autoIndexMode fast fast / moderate / full
autoIndexMaxFiles 20000 超过此文件数的仓库不自动索引(有界遍历估算,不读 .gitignore)
autoIndexCommand codebase-memory-mcp 可执行文件路径

安装与启用

前置:DSH 0.2.0-rc.1;codebase-memory-mcp 已按上游 README 安装且可用。

1、确认 MCP CLI 在 PATH 上:

codebase-memory-mcp --version

2、在 DSH 插件管理器中安装(官方流程会同时完成包安装与 bundle 选择):

github:smter/dsh-codebase-memory#663d24657256321a82934289f5ba3a281be677f4

README 说明:已固定到该 commit;升级时换成新 commit,或改用 tag v1.0.0。

3、重启 dsh web。之后在 Settings 会出现本插件两个行的选项。

若 codebase-memory-mcp 不在 PATH,在设置里改 autoIndexCommand,以及 MCP 行的 command。若要顺带处理「旧 daemon 世代」(见下文限制),把这两处都指向本仓库自带的 bin/cbm-mcp-preflight。

典型用法

安装并重启后,无需单独写调用脚本:会话中正常使用 grep、读文件等工具即可触发 nudge;未索引仓库会在读路径命中时由插件触发 cli index_repository(可通过 CBM_DEBUG=1 查看自动索引被跳过的原因)。

MCP 工具名形如 mcp__codebase-memory-mcp__*。在 PTC 模式下,Tool SDK 可能把多数 MCP 参数渲染成 unknown,插件会在 system prompt 中写明调用签名作为绕行;根因在渲染侧。

开发与自测(维护者仓库内):

pnpm install
pnpm test

README 记载 57 个用例,不需要网络或真实索引,覆盖触发条件、真实报错驱动的纠正规则、以及自动索引链路与 guard。

适用场景与注意

适合谁: 已在 DSH 中使用或计划使用 codebase-memory-mcp、希望减少「接了 MCP 但模型不用」情况的智能体 / 工作流开发者。

权限: 插件以当前 dsh 进程权限运行;自动索引会 spawn CLI。安装前应阅读 GitHub 仓库 源码与 MIT 许可证,并自行评估是否信任维护者 smter 的 bundle 内容。

已知限制(摘自 README):

  • Git worktree 会被索引成独立 project;主 checkout 与 worktree 的索引互不自动覆盖。
  • 旧 daemon 世代可能导致写入失败而读调用仍成功:index_repository 可能报 active daemon coordination could not be verified safely,易误判为「未索引」。可将 MCP 行 command 与 codebase-memory-nudge.autoIndexCommand 都设为 bin/cbm-mcp-preflight;或手工 pkill -f 'codebase-memory-mcp --cbm-daemon-internal' 后重试。nudge 也会在报错文本中识别相关串并注入修法。

DSH 生态理念是「一切皆插件」;社区目录 SkillHub 插件页 为独立站点,与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-codebase-memory 把 codebase-memory-mcp 的代码图接进 DSH,并用 reminder、nudge 三件套把「连接」推进到「在 grep/读长文件等决策点真的去查图、报错能纠、索引能代劳」。需要固定 commit 安装、在 Settings 里调阈值与可执行路径时,以 README 与表单为准。

  • 目录页:https://www.skillhub.cn/plugins/smter/dsh-codebase-memory
  • GitHub:https://github.com/smter/dsh-codebase-memory
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜