pbwheel/dsh-agency-market0

dsh-agency-market

Expert market inside DeepSeek Harness — browse expert cards, install one as a user agent preset, then chat in a session on that preset. · DSH 专家市场:逛一逛,点一下,装好,开聊。

包名
dsh-agency-market
版本
0.1.0
许可证
NOASSERTION
最近更新
2026年9月1日

安装

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:pbwheel/dsh-agency-market

使用

1. 挑专家安装

打开 设置 → 专家市场:按分类浏览或搜索(中英文关键词均可命中),点卡片安装。已装行盖 ✓ 印章,行内确认即可移除。

2. 新会话直接开聊(preset 模式)

新建会话时,预设选择器里选该专家(expert-,显示专家名与简介),即可以专家人格开一场会话。

3. 任意会话中途召唤(tool 模式)

在任意进行中的会话里,直接让模型召唤,或点输入框左侧的「召唤专家」按钮 / 输入 @ 选专家——按钮与 @ 只把指令写进草稿,不会自动发送

召唤专家「Code Reviewer」(engineering-code-reviewer)处理以下任务:
审查当前工作区的改动,按严重程度列出可复现的问题。

模型侧的两个工具:

  • market_experts(category?) —— 列出当前可召唤(= 已安装)的专家:id、名称、描述、分类;不知道精确 id 时先调它。
  • summon_market_expert(expert, task) —— 把一个自包含任务委派给某专家;expert 支持 id(推荐)或名称(含中文名,模糊匹配,歧义时报候选列表),task 需完整自包含、上限 8000 Unicode 码点。调用等待专家跑完并返回答复。

未安装的专家召唤会报错并提示「请先在 设置 → 专家市场 安装」。

一个专家是什么

一个专家 = 一个用户级 agent preset(expert-,装在 ${DSH_HOME:-~/.dsh}/.agent-presets/ 下):

卡片字段落到哪里
name / descriptionpreset 的 preset.yml(预设选择器里显示的名字与简介;写入的是目录基字段/英文)
persona组合里 dsh-persona 行的 text(专家的系统提示词)
base被复制的底座预设(默认 standard,完整工具链)
avatar / tags / category市场页自己的展示字段(只在目录数据里)
中文 name / description / 分类名不进专家文件:放在 locale 覆盖层 data/i18n.d/zh.json,仅用于展示(见多语言

安装流程(宿主侧,全部走 roster 服务):

  1. agentPresets.copy(base, 'expert-') —— 复制底座预设到用户根;
  2. 改写副本的 preset.yml(名字/简介);
  3. 用锚定替换把副本 persona 行的 text 换成专家 persona(锚不中则降级为底座 persona 并在 UI 提示,不会装出坏预设);
  4. agentPresets.standingKeyFor(id) 真实挂载校验,通过才算装好。

绝不写部署自带的 preset;卸载只删 trust: "user" 的条目。

行为与安全细节

  • 变更路由只接受同源 POST、请求体上限 4 KiB、同时只允许一个安装/卸载在进行;安装只是预设复制加两处文件改写,不执行任何构建/安装脚本
  • 防递归:子代理的 toolFilter deny 掉两个召唤工具名;系统提示词 section 在子会话(header 带 parentSession)返回空串,被召唤的专家学不会再召唤。
  • 专家子代理以 stopReason !== 'completed' 结束时报错(携带 diagnostic 与部分输出),run.dispose() 在 finally 里必定执行。
  • persona 里 {{model}} / {{cwd}} / {{provider}} 是宿主注册的提示词变量,原样透传、不做 sanitize;导入时会把其余完整 {{…}} 组拆开({{{ {),未注册变量会让子代理启动失败,因此按字面文本处理。
  • 所有副作用(路由、工具、提示词 section、插槽、样式)收集 disposer 统一释放,插件卸载即全部撤销。