dsh-agent-studio
可视化地自定义配置 Agent 的提示词、工具、可见技能、子代理与备用模型,把它们编成一支团队。不写宿主的任何预设文件。
安装
dsh plugin --profile web add dsh-agent-studio
沙箱测试结果
| 阶段 | 结果 |
|---|---|
| 1 安装 | ✓ |
| 2 列装 | ✓ |
| 3 挂载 | ✓ |
| 4 启动 | — |
四阶段在隔离沙箱里跑:安装(有网)→ 列装 → 挂载 → 启动(后三步断网)。
README
dsh-agent-studio




简体中文 · [English](README.en.md) · 在线文档
一个 DeepSeek Harness 图形化插件:可视化地精确配置 Agent 的提示词(prompt)、工具(tools)、可见技能(skills)、子代理、备用模型,轻松创建团队,根据不同任务分配不同模型。
模型每一轮看到的东西就三份:系统提示词、工具目录、技能目录。随着插件、工具、MCP 越装越多,这三份只会越来越大,拖累模型表现。另外 DSH 目前给子代理的配置极其简陋,没法轻松配置它的提示词、工具、技能、模型和思考强度。
本插件的配置存在自己的数据里,不改动宿主既有的预设定义,卸载即恢复原状。
它把 Agent 拆成可随意拼装的积木:提示词、工具、技能、模型拼成一个完整 Agent,子代理也一样能高度定制;预设可以随手新建;工具怎么呈现按预设分三档(继承部署默认 / 原生 / PTC),在面板顶栏直接切;支持跨供应商的备用候选模型。
可以搭配 dsh-context 一起用,查看模型这一轮实际收到的提示词、工具和 skill 到底长什么样。
它解决什么
你可能遇到过的问题 · 平台的默认行为 · 装上之后
系统提示词越堆越长,关不掉也用不上 · 预设里注册了哪些段就投递哪些段 · 按 agent 编一份白名单,名单外的段不进上下文
工具越装越多,同类工具一大堆,模型挑不准 · 工具面按已装的插件全量下发 · 挑出这个 agent 要用的,其余收起来
技能多了不好管 · 所有 modelInvocable 的 skill 都进目录 · 勾哪些就给哪些,不勾的模型看不见
每个 step 都塞一段运行时快照 · 官方按 step 动态注入,没有开关 · 代理级开关,可选部分关掉就不用再收
子代理只能整套继承主代理,占用大量上下文 · 官方 subagent 既没有条目标识,也没法按角色裁剪 · 每个子代理独立配:模型 / 提示词 / 工具 / 技能 / 后台模式
子代理的执行方式说不清 · 平台按预设里挂的执行器行决定,面板里没处选 · 子代理的执行方式由它所在的预设决定(平台机制),面板上按预设切三档
干不同的活想用不同的提示词、工具、Skill,切来切去很麻烦 · 预设只管提示词组合,工具和 skill 是全局一套,换个预设照旧全量下发 · 给预设挂的 Agent 一切换即可
本地部署模型上下文紧张,根本对话不了几轮 · 做不到提示词全清,只能创造模式自己建一个 · 创建一个什么都不挂的 Agent,给预设绑上就行,真 · 0提示词
主模型限流了 / 挂了,整轮直接失败 · 只在一个 provider 里重试到上限,然后放弃 · 配一条备用候选链(可跨供应商),失败按顺序顶上
安装
按你手头的条件挑一条:有网络就用 npm,内网或离线用 GitHub Release 的安装包,想改代码就走源码。
从 npm
dsh plugin --profile web add dsh-agent-studio
从 GitHub Release 下载
到 Releases 下载 dsh-agent-studio-<版本>.tgz,它就是 npm 上那份包,lib/ 与 client/ 的构建产物都在里面,不用自己构建:
dsh plugin --profile web add "./dsh-agent-studio-0.2.1.tgz"
包放在哪个目录都行,把路径写对即可(./ 开头或绝对路径),文件名里的版本号换成你实际下载的那个。离线、内网环境走这条。
从源码
git clone https://github.com/thissensen/dsh-agent-studio.git dsh-agent-studio cd dsh-agent-studio pnpm install # 只装 devDependencies;peer 是宿主包,不走 registry node scripts/link-deps.mjs web # 把宿主的 @deepseek-ai/* 链进本项目的 node_modules dsh plugin --profile web add "link:<本目录的绝对路径>"
也可以把 Release 页的源码压缩包(Source code (zip))解压出来代替 git clone,后续步骤一样。
三条路装完都重启一次 DSH,在 设置 → Agent 中心 看到面板就成了。
link:装法下改lib/立即生效;改面板(client/parts/panel.js)刷新页面就行,不用重启。- 改
package.json的入口类字段(main/exports/dsh.*)后必须重启。 --profile填web(纯 Web 版)或desktop(桌面版)。桌面版就是 Web 版加一层 Electron 壳,host 半边一行不用改。
卸载
dsh plugin --profile web remove dsh-agent-studio
卸载后宿主配置里不留任何痕迹。预设从没被改过,其余配置都在插件自己的数据里。
面板预览
界面有浅色、深色两套:
<p align="center">
<img src="assets/panel-overview-light.png" width="49%" alt="Agent 详情:预设绑定与 Agent 身份">
<img src="assets/panel-overview-dark.png" width="49%" alt="Agent 详情(深色)">
</p>
截图为较早界面:导入 / 导出现已合并到顶栏的同一棵勾选树,后台模式已收成两档(不阻塞 / 阻塞)。
<img src="assets/agent-detail.png" width="520" alt="Agent 完整详情">
<img src="assets/prompt-set.png" width="620" alt="提示词集:段清单、PTC 专属标记、自定义与平台预设">
<img src="assets/tool-set.png" width="420" alt="工具集:按来源分组的工具候选">
<img src="assets/skill-set.png" width="480" alt="技能集:按来源分组的候选 skill">
区域 · 做什么
左侧「Agent 池」 · 每个 agent 一条:绑哪个预设、装哪些集、子代理名册
左侧集库 · 提示词集 / 工具集 / 技能集三类列表:新建、复制、改名、删除
右侧详情 · 选中集 → 编成员;选中 agent → 装载集、配模型与后台模式、挂子代理、切快照开关
顶栏 · 预设 tab 与新建 / 删除预设、预设呈现方式、主代理绑定、导入 / 导出(都走同一棵勾选树;导出的是草稿,含未保存的改动)
底栏 · 注册到主页面与突破 PTC 120 秒限制两个开关、保存态与保存改动
导入先选文件、再在树里勾要并进草稿的项;导出也在同一棵树里挑池与项(只含四个池,不带预设绑定与开关)。树里的「是否覆盖」开关决定撞 id 时是覆盖还是报错(默认关 = 报错);导入只并入草稿,点了保存才落盘。
注册到主页面:开启时主页面直接显示 Agent 中心面板、左栏出现入口;关掉后两者一起隐藏(主区回到会话页),随时可以去「设置 → Agent 中心」重开。它改的是全局开关,与草稿无关,点一下即时生效。
改 id 之前会先列出谁在引用它,改的时候把所有引用一并同步,不留悬空引用。
四个池,互相独立
四类配置对象各管各的,可以多对多引用。集建好之后,能被多个 agent 装载。
池 · 干什么用
代理 Agents · 指定绑给哪个预设;配提示词、工具、skill、子代理名册,以及被当子代理时的模型与思考强度
提示词集 promptSets · 有序的提示词清单,顺序可调
工具集 toolSets · 工具名清单,插件的和 MCP 的都在里面
技能集 skillSets · Skill 清单,决定哪些能被 AI 自主调用
- 装载:把集挂到 Agent 上。同一个 Agent 装载的集之间不允许有重叠成员,界面和写入端点各拦一道。
- 绑定:把某个预设绑到一个 Agent 上,这个预设就交给它管了。
语义边界
绑定之后,这个预设就归这个 Agent 管。三面一个规矩:没装就是空的。
概念 · 规则
绑定预设 · 被绑定的预设,提示词、工具、skill、子代理全部交给这个 Agent;解除绑
…(truncated)
以上内容来自 npm 上的 README,我们只做格式化,不改内容。
版本
npm 上共发布:11,最后更新 2026-11-05