# dsh-plugin-dev-03 **Repository Path**: my_friends/dsh-plugin-dev-03 ## Basic Information - **Project Name**: dsh-plugin-dev-03 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-09-29 - **Last Updated**: 2026-09-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # dsh-plugin-dev 让 **Claude Code / Codex / DSH** 等 coding agent 按 DeepSeek Harness (DSH) cordis 插件制式,自动**开发、审查、打包发布** DSH Web 插件的技能(skill)。 把官方插件仓库(deepseek-harness)的生产实践与官方文档的规范蒸馏成一份可执行的流程:你只提需求,agent 负责澄清、实现双端插件(或纯 Host 插件)、写测试、给验收清单,甚至生成发布工作流。 ## 这是什么 DSH Web 是基于 cordis 的 agent 宿主。给它开发插件,本质是交付一个**声明了 `dsh` 元数据、含 Host/Client 双端实现(需要设置 UI 时)、通过命名空间桥通信**的 npm 包——而不是普通脚本或独立服务。本 skill 把这类插件的全部隐性制式约束显式化,并给出从需求到发布的工作流。 本 skill **完全自包含**(SKILL.md + references 蒸馏了全部规范),不依赖本机特定路径。 ## 目录结构 ``` dsh-plugin-dev/ ├── SKILL.md # 入口:触发描述、制式约束、三硬点、开发流程、验收要点 ├── references/ │ ├── architecture.md # 双端架构与命名空间桥、会话绑定、HMR │ ├── tool-contract.md # defineTool 契约、execute 固定管线、blocked 反例 │ ├── settings-and-credentials.md # 设置注册、Schemastery Config、只写凭据 │ ├── client-card.md # 浏览器设置卡片、ModuleLoader、常见错误 │ ├── packaging.md # dsh 元数据、patch 对错例、npm Trusted Publishing 发布 │ ├── testing.md # 测试分层、受限环境验证替代、验收清单 │ └── install.md # 各 agent 安装位置 ├── evals/evals.json # 评测用例(3 个真实插件需求) └── README.md # 本文档 ``` ## 安装 把整个 `dsh-plugin-dev/` 目录复制到目标 agent 的 skills 目录: | Agent | 位置 | | --- | --- | | DSH | `~/.dsh/skills/dsh-plugin-dev` | | Claude Code | `~/.claude/skills/dsh-plugin-dev`(或项目级 `.claude/skills/`) | | Codex | `~/.codex/skills/dsh-plugin-dev` | 验证安装:向 agent 输入一句触发语(如"为 DSH 开发一个插件,让 agent 能查询 XXX"),确认它加载了本 skill 并按流程执行。 ## 使用方法 直接提需求即可。skill 的触发描述覆盖:为 DSH 开发/写插件、给 dsh web 加工具或设置卡片、写 cordis 插件、把某系统接进聊天、扩展 agent 能力并打包成插件、参照官方插件仓库开发类似插件、修复/审查已有插件。 **示例需求:** > 为 DSH 开发一个插件,让 agent 能从聊天里查询 GitHub 仓库信息(只读)。需要 3 个工具:搜索仓库、按 owner/repo 查单个仓库、列 release。需要一个设置卡片配置 GitHub Personal Access Token(走 DSH 只写凭据系统)。禁止任何写操作。开发成完整可安装的插件包并配置好 npm 发布。 **预期产出:** 双端插件包(package.json + cordis.patch.yml + index.mjs + client.js + 功能模块 + tests + README + LICENSE),必要时含 `.github/workflows/publish.yml`。 ## 能力范围 - **两种形态**:双端(Host + Client,需要设置页 UI 时)与纯 Host(标准 cordis 插件,无 UI 需求时)——skill 全程条件化,不强制 client - **开发**:10 条不可协商制式约束(bundle patch、双端、inject、Schemastery Config、凭据只写、effect 清理、transport 封装、fail-closed 等) - **三硬点**(评测中无规范时 100% 被漏的约定):结构化 `{kind:'blocked'}` 失败、`__ModuleLoader__.load` 客户端注册、patch 行 name=完整包名/id=短名 - **打包发布**:逐文件 files 白名单、exports、LICENSE、npm pack 核对清单、npm Trusted Publishing(OIDC 工作流模板,无 token/OTP) - **验证**:理想环境三步(npm test + dsh plugin add + 冒烟);受限环境(CI/沙箱/评测无 dsh CLI)提供 5 条离线替代路径 ## 评测结果 两轮对比评测(3 个真实插件需求 × 带/不带 skill),带 skill 均满分、无回归: | 用例 | 带 skill | 不带 skill(基线) | | --- | --- | --- | | eval-1 · github 信息插件 | 10/10 | 8/10 | | eval-2 · weather 插件 | 9/9 | 6/9 | | eval-3 · wiki 检索插件 | 11/11 | 7/11 | | **合计** | **30/30(100%)** | **21/30(70%)** | 关键发现:基线的失败高度集中在隐性制式(blocked 结构、`__ModuleLoader__`、patch id),恰是 skill 显式化的内容——证明判别力来自规范本身,而非基线偏弱。 评测工作区(含 benchmark.json、review.html 审阅页)在 `dsh-plugin-dev-workspace/`,与 skill 目录同级。 ## 开发与迭代 - 评测用例:`evals/evals.json`(prompt + expectations) - 评分:工作区的 `scripts/grade.mjs`(程序化断言,跨迭代可复用) - 迭代流程:修改 SKILL.md/references → 重跑带 skill 用例 → 聚合 benchmark → 生成 viewer 审阅(skill-creator 标准流程) - **改完源文件后,记得把整个目录重新复制到三个安装位置保持同步。** ## 版本记录 | 版本 | 内容 | | --- | --- | | v1(iteration-1) | 初版:制式约束 + 流程 + references;评测 30/30 | | v2(iteration-2) | 新增"最容易漏的三个硬点"(带对/错示例)、防过度工程引导、触发描述强化;评测 30/30 无回归 | | v2.1 | packaging.md 发布章节补强:完整 publish.yml 模板 + npm pack 核对清单 | | v2.2 | 双端/纯 Host 条件化(client 从默认必需改为按需可选);独立审查 10 缺口全修复(受限环境验证替代、files 对齐、patch id 语义统一、LICENSE 等) | | v2.3 | 新增「版本锚点」:标注规范对应的宿主版本与需核对的 API 调用点,宿主升级后强制核对,防规范老化 | ## 上游参考 - DeepSeek Harness 官方文档 `docs/user/develop/`:basic/config、basic/tool、basic/publish、framework/service - 官方插件仓库:github.com/deepseek-ai/deepseek-harness(官方插件实现、示例与文档同源)