前言¶
在 DSH Host 里接入 AOCI 索引工作区,常见做法是在 cordis.patch.yml 里手写一段 MCP 插入行:指定 @deepseek-ai/dsh-mcp-client、serverName、stdio 命令以及 aoci 的 --repo 路径。工作区一多,容易漏绑、绑错或重复;更麻烦的是,仓库里已有 aoci.txt,但补丁里没有对应 MCP 行时,会话里往往拿不到该工作区的 AOCI 工具,且不会报错。
dsh-aoci-bind(v0.1.0,维护者 donyue7)是 DSH Host 侧工作流类插件,把「哪个工作区有索引、是否已正确绑定 MCP」从手工维护变成四条 Host 工具。它不生成、不重写任何 AOCI 索引内容,只维护 MCP 绑定行。插件在社区目录 skillhub.cn 收录,源码见 GitHub,许可证 MIT。
这是什么¶
一句话:dsh-aoci-bind 负责发现带 aoci.txt 的工作区,诊断 cordis.patch.yml 里的 AOCI MCP 绑定是否齐全、是否正确,并在需要时做最小修复或对新仓库执行 aoci init / aoci scan 并注册绑定。
与「自己记清单、改 YAML」相比,插件提供结构化状态(如 bound、unbound、wrong_repo)和幂等修复路径,并附带环境体检工具。
核心功能:四个 Host 工具¶
每个工具返回结构化 JSON + 可读摘要(摘要由 output.render 渲染)。
| 工具 | 作用 |
|---|---|
aoci_bind_status |
逐工作区诊断:bound / unbound(有索引没绑定)/ wrong_repo(绑错仓库)/ name_conflict(serverName 冲突)/ duplicate_binding(重复行)/ no_index(还没初始化)。只读。 |
aoci_bind_repair |
应用最小修复:补行、改 --repo、改 serverName、可选删除孤儿行。幂等;写前时间戳备份;非法 YAML 拒绝写入。 |
aoci_project_init |
对没有索引的仓库跑 aoci init + aoci scan,注册绑定,并返回 bootstrap 提示词(含 mcp__<serverName>__ 前缀与 root 自检说明)。 |
aoci_doctor |
环境体检:CLI 可达性与版本、补丁文件是否合法、serverName 唯一性、未绑定索引、孤儿行、workspace registry 是否可读。每项带 severity 与修复建议。 |
README 中举过典型缺口:例如 StoreProject 有 aoci.txt 却没有 MCP 行——插件会把这类情况变成明确状态与一条修复动作。
安装与启用¶
三种方式任选,README 推荐第一种(走 DSH 插件管理器):
# 1) 插件管理器(需要 DSH 的 plugin_manager 工具;装完需重启一次 DSH)
# target 传本目录的绝对路径
plugin_manager { "action": "install_bundle", "target": "C:/…/default-workspace/dsh-aoci-bind" }
# 2) CLI
dsh plugin --profile desktop add file:C:/…/default-workspace/dsh-aoci-bind
# 3) 自带脚本(复制进 profile 并写挂载行;热加载,无需重启)
pwsh -NoProfile -File scripts/install.ps1
pwsh -NoProfile -File scripts/install.ps1 -Uninstall
安装脚本会:备份 profile 的 cordis.patch.yml → 在标记注释之间写入一行 - insert: 挂载条目 → 复制包到 <profile>/node_modules/dsh-aoci-bind。-Uninstall 可完整回滚。
Host 侧改动需要重启 DSH 才生效(新增 MCP 行尤其如此);插件本身不会重启 DSH。运行环境要求 Node.js >=22(见 package.json 的 engines)。
配置¶
默认值即设计值;可在 profile 的 cordis.patch.yml 里用同 id 覆盖:
- id: aoci-bind
config:
enabled: true
tools: true
promptSection: false # 注入一段「先确认 root 再使用 AOCI 工具」的系统提示词
aociBinary: 'C:/aoci/bin/aoci-rc19.exe'
home: 'C:/Users/me/.dsh-harness-next' # 默认 $DSH_HOME
profile: 'desktop' # 默认 $DSH_PROFILE
legacyHome: 'auto' # auto=旧 home 有文件才维护;on/off
syncProfilePatch: true # 同时维护 profiles/<profile>/cordis.patch.yml
serverNamePrefix: 'aoci'
scanRoots: [] # 额外扫描目录;默认取已注册索引工作区的父目录
backupDir: '<home>/aoci-bind/backups'
initTimeoutMs: 180000
probeTimeoutMs: 20000
手写 MCP 行时,结构大致如下(插件 repair 会维护同类绑定,而非替你写索引):
- insert:
- id: aoci-gys
name: '@deepseek-ai/dsh-mcp-client'
config:
serverName: 'aoci-gys'
transport: stdio
command: 'C:/aoci/bin/aoci-rc19.exe'
args: ['--repo', 'C:/Users/…/Gys', 'mcp']
典型用法¶
下面按「先看清状态,再决定是否修复或初始化」的顺序说明。
1、诊断绑定状态¶
在 DSH 会话中调用 aoci_bind_status,逐工作区查看是否 bound、unbound、wrong_repo 等。也可在本机仓库目录用只读脚本对照真实 $DSH_HOME(不写入配置):
# 仓库内 scripts/status.mjs:演示 aoci_bind_status / aoci_doctor / aoci_bind_repair --dry_run
2、预览或执行修复¶
- Host 工具:
aoci_bind_repair(幂等;重复调用不应产生第二行)。 - 命令行同路径:
scripts/apply.mjs支持--dry-run只预览,与 Host 工具走同一条代码路径。
修复前插件会对目标补丁做结构校验,并在 <home>/aoci-bind/backups/<file>.<timestamp>.bak 留备份。
3、新仓库接入¶
对尚无索引的目录使用 aoci_project_init:依赖本机 AOCI CLI 执行 aoci init 与 aoci scan,注册 MCP 绑定,并返回 bootstrap 提示词。CLI 不可用时工具会如实返回错误与步骤,不会假装成功。
4、环境体检¶
调用 aoci_doctor 一次性检查 CLI、补丁 YAML、serverName 唯一性、未绑定索引、孤儿行、registry 可读性等,便于在批量接入前排雷。
安全边界与 v0.1.0 限制¶
写配置时的设计约束(摘自 README):
- 只拼接、不重排:行模型只替换/追加插件拥有的 MCP 行,其它行逐字节保留。
- 非法 YAML 一律拒绝,拒绝时零写入;写入采用临时文件 + 原子替换。
- 孤儿行仅在
prune_orphans: true时删除。
当前版本限制:
- 只处理 code 侧 MCP 行,不管理 AOCI 索引内容、Baseline、scope。
- 绑定以「
--repo目录 = 已知工作区」为准;未在 registry 且不在默认扫描父目录的仓库,需在scanRoots中显式加入。 - 新增 Host MCP 行后,需重启 DSH 才会出现在会话工具表中。
适用场景与注意¶
适合谁: 在 DSH Host 上维护多个带 aoci.txt 的代码工作区、希望用工具链统一发现与修复 MCP 绑定、减少静默「有索引无工具」情况的开发者。
使用前注意:
- 插件以当前 DSH 进程权限运行,安装前请自行查看 源码仓库 与 MIT 许可证,确认符合你的环境与安全策略。
- DeepSeek Harness 生态强调「一切皆插件」;SkillHub 为社区目录,与 DeepSeek / 幻方无官方从属关系,本文介绍的是社区维护的
donyue7/dsh-aoci-bind,而非官方应用商店条目。
结尾¶
dsh-aoci-bind 把 AOCI 工作区 MCP 绑定从易错的手写 YAML,收敛为可发现、可诊断、可修复、可初始化的 Host 工具链,并强调只动绑定行、不写索引内容。若你正在 DSH 上批量接入 AOCI,可先 aoci_bind_status / aoci_doctor 摸清现状,再按需 aoci_bind_repair 或 aoci_project_init。
- 目录页:https://www.skillhub.cn/plugins/donyue7/dsh-aoci-bind
- GitHub:https://github.com/donyue7/dsh-aoci-bind