dsh-aoci-bind:把 AOCI 工作区的 MCP 绑定做成可发现、可诊断、可修复

前言

在 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
羽毛球分组比赛记分
小程序二维码

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

小夜