READMESource: main@4a18a218
dsh-ob-agent
DSH(DeepSeek Harness)插件:把部署里全部 agent 类工具(子代理委派、续话与中止、 工作流、Ralph、以及模型自助管理)收口到一处统一管理。
- 一个总开关:关闭时模型完全不能使用子代理 —— 不是「不提供」,而是主动拦截 DSH
原生的委派/编排工具(
tools.restrict隐藏 +tools.guard执行层拒绝)。 - 一张条目表:每条 = 一个可勾选的 Agent 能力,带两个提示词(① 何时调用给主模型、 ② 身份提示词给子代理)、运行模式(一次性 / 可继续对话,可多选)、模型、权限(只读 / 完全)。
- 每会话勾选:聊天框输入框上方的「子代理」条按会话记录选择,勾选即写入系统提示。
- 出厂 8 条:3 条插件角色(
code_review钉死 hy4 审计模型、general通用委派、agent_authoring模型自助管理)+ 5 条 DSH 原生工具;原生那 5 条一条都没删、仍受 闸门管辖,但在面板里默认折叠成一行,界面平时只占一行。 - 模型自助:模型可用
agent_create/agent_update/agent_list创建与复用 Agent 条目(默认只能改自己创建的条目,带审计日志)。
文档
| 文档 | 读者 |
|---|---|
docs/USAGE.md |
使用者:安装、界面、语义、验收清单、排障、限制 |
docs/model-guide.md |
模型:工具契约、字段规范、何时自建 Agent、常见错误 |
结构
src/
index.ts host 插件体:设置注册、agent 生命周期、触发重算
contract.ts 共享契约(类型与常量,host/client 共用)
defaults.ts 出厂数据:8 条内置条目(3 条插件角色 + 5 条 DSH 原生工具)、闸门名单、模型面文案模板
normalize.ts 纯归一化、校验与出厂默认迁移(host 与浏览器共用,零运行期依赖)
plan.ts 纯函数:选择 → 已启用条目 → 闸门匹配 → 系统提示段文本
implement.ts 纯函数:条目 → 实装动作(档 A 放行 / 档 B 重挂 / 档 C 不可用)
reconcile.ts 每 agent 协调器:隐藏层 + 执行层 + 重挂层,幂等差异应用
authoring.ts 模型自助管理工具(agent_create / agent_update / agent_list)
settings.ts host 侧设置命名空间(schemastery 模式,仅 host 引用)
docpath.ts 面向模型的文档定位与注入方式
context-types.ts 所消费服务的结构面(第三方插件不共享 DSH 的 cordis 实例)
vendor.d.ts 运行期由 profile 解析的 DSH 包的最小声明
client/ 浏览器半:dock(总开关+勾选)、设置页、设置桥、文案、样式
tests/ 153 项单元测试(纯函数层、设置桥、出厂默认迁移)
开发
npm install # 或 pnpm install --config.auto-install-peers=false
npm run typecheck # tsc --noEmit
npm test # vitest run
npm run build # esbuild 三份产物 + tsc 声明
npm run check # 以上三件一起
- 运行期依赖(
@deepseek-ai/dsh-*、@deepseek-ai/schemastery、react)由 DSH profile 提供,构建时全部外部化;它们只发布在 DSH 自身的解析链上,因此不作为开发依赖安装 (见src/vendor.d.ts顶部说明)。 .npmrc关闭 peer 自动安装,避免本地安装去 registry 拉取未发布的 DSH 内部包。
设计要点
- 会话选择不进会话日志:存在设置命名空间的
sessions映射(键 = 会话 id),因此界面 与主机读同一份快照,不需要自定义 Remote / 投影 / HTTP 路由。 - 闸门三层:隐藏层只作用于继承面(
restrict拒绝 scope-local 名字),自有层重挂的 工具靠执行层守卫兜住 —— 两层缺一不可。 - 幂等差异应用:每次重算先算目标指纹集合,只增删差异项,因此插件自身触发的
tools/change不会形成重装循环。 - 失效安全:提示词里的未知变量在写入口被拒绝,渲染期再转义一次(
renderPrompt遇到 未注册变量会打断整个请求);只读白名单交集为空时条目停用而不是降级为完全权限。 - 子代理不可再委派:子代理只装闸门的前两层,第三层永不装配。
- 出厂默认可演进:设置段带
defaultsRevision;版本落后时启动即迁移(替换内置条目、 下线旧条目、重定向改名标识、清理失效的会话勾选),用户与模型自建的条目不受影响。
许可
MIT。
No comments yet. Be the first to write one.