前言¶
在 DeepSeek Harness(DSH)里用 codebase-memory 做代码图与检索时,Harness 往往只为整个应用维持一条 MCP 连接,codebase-memory 侧难以知道「当前 Session 实际在哪个 workspace」。结果是各项目常见 watch.reason: not_session_project,索引不会随 Session 自动更新。若你依赖已建好的 codebase-memory 索引、又会在 DSH 里开多个 Session 或频繁切换工作目录,就需要在 Session 生命周期里显式把「当前目录」对应的索引刷新到最新。
下面介绍社区插件 dsh-cbm-autorefresh(维护者 xingbei437,SkillHub 分类为「记忆」):在 Session 创建、工作目录变更以及插件热加载时,针对该 Session 自己的工作目录调用 codebase-memory CLI 执行 refresh,而不常驻额外后台进程。
这是什么¶
dsh-cbm-autorefresh 是 DeepSeek Harness 插件,描述为:为每个 Session 在其自身 working directory 上刷新 codebase-memory 索引。源码与说明见 GitHub 仓库,社区目录页为 SkillHub。许可证 MIT;package.json 标明版本 0.1.0,运行环境要求 dsh >=0.2.0 且 <0.4.0、Node >=20。
它与「首次全量建索引」分工不同:插件不创建新索引,只刷新已存在且与 git 仓库根路径匹配的项目。
核心功能¶
根据 README,插件在以下时机触发刷新(每次为短时 CLI 调用,无变更时约 1–3 秒;重度索引由 codebase-memory 共享 daemon 承担,N 个 Session 不会对应 N 个常驻进程):
session/created:刷新该 Session 当前工作目录对应的索引。working-directory/change:刷新切换到的新目录对应索引。- 插件 (re)load:对当时已存在的 Session 做补偿刷新。
内部流程概览:从 Session 工作目录用 git rev-parse --show-toplevel 取仓库根;用 codebase-memory-mcp cli list_projects --format json 找 root_path 匹配的项目;再执行 codebase-memory-mcp cli index_repository --repo-path <root>。
行为与边界(节选):
| 情况 | 结果 |
|---|---|
| Session 落在已索引仓库 | 刷新索引(无变更时约 1–3 s) |
| Session 切换到另一已索引仓库 | 刷新该仓库索引 |
| 仓库尚未建索引 | 跳过并记日志(首次索引需人工 deliberate) |
| 非 git 工作目录 | 跳过并记日志 |
同目录在 minIntervalMs 内 |
节流跳过 |
| 同仓库已在刷新中 | single-flight 跳过 |
已知限制:长时间在同一目录大量编辑、且既不新开会话也不换目录时,主要靠 session 开始时刷新;若需更密触发需自行扩展。本机须已安装 codebase-memory-mcp(配置项 binary 或环境变量 $CBM_BIN)。
安装与启用¶
在 DSH profile 目录(示例 ~/.dsh/profiles/desktop)安装依赖:
# in your DSH profile directory, e.g. ~/.dsh/profiles/desktop
pnpm add dsh-cbm-autorefresh
在 profile 的 package.json 里把 bundle 加入清单后重载 profile:
// package.json
{
"dsh": {
"profile": {
"bundles": ["@deepseek-ai/dsh-base", "dsh-cbm-autorefresh"]
}
}
}
包内自带 cordis.patch.yml 会自动挂载;若要在 profile patch 里关闭:
- id: cbm-autorefresh
disabled: true
配置¶
在 profile patch 中可覆盖插件配置(字段以 README 为准):
- id: cbm-autorefresh
name: dsh-cbm-autorefresh
config:
enabled: true # false turns every trigger off
binary: /path/to/codebase-memory-mcp # default: $CBM_BIN, then ~/.local/bin/codebase-memory-mcp
minIntervalMs: 300000 # per-directory throttle (default 5 minutes)
timeoutMs: 600000 # per CLI call timeout (default 10 minutes)
logFile: /tmp/cbm-autorefresh.log # optional: also append every refresh line to a file
enabled: false 会关闭全部触发;minIntervalMs 默认 5 分钟,用于按目录节流;单次 CLI 超时默认 10 分钟。
典型用法¶
启用 bundle 并保证 codebase-memory-mcp 在 PATH 或通过 binary / $CBM_BIN 指定后,无需额外 API 调用:打开 DSH Session 或切换工作目录到已经纳入 codebase-memory 的 git 仓库时,插件会自动尝试 refresh。若目录未索引或非 git 仓库,可在日志或可选的 logFile 中查看跳过原因。
开发与自测方面,仓库提供:
npm test
适用场景与注意¶
适合:已在机器上为各项目建好 codebase-memory 索引,并在 DSH 中多 Session、多仓库切换,希望索引跟当前 Session 目录对齐而非长期 not_session_project 的场景。
安装前建议阅读 GitHub 源码 与 MIT 许可证;插件以当前 DSH 进程权限执行 git 与 codebase-memory CLI,profile 与 binary 路径应与你本机安全策略一致。SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系,插件也不代表官方应用商店条目。
星标等目录元数据以 SkillHub 页面为准(抓取时为 0)。
结尾¶
dsh-cbm-autorefresh 补齐 Harness 单连接 MCP 下 codebase-memory 无法感知 Session 工作区的问题:按 Session 与工作目录刷新已有索引,短生命周期 CLI、共享 daemon 索引,适合作为 DSH「记忆」类能力链中的一环。