xiaohai-78/dsh-modes ↗★ 0

dsh-modes

View and manage DeepSeek Harness agent modes (presets) in Web Settings: toggle the plugins each mode loads, edit its system prompt, and create modes from starter templates. 适合需要自定义、新建或切换不同Agent工作模式和配置的用户。

패키지
dsh-modes
호환성
미검증
버전
0.4.0
라이선스
MIT
최근 업데이트
2026. 10. 16.

설치

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:xiaohai-78/dsh-modes

dsh-modes

在 DeepSeek Harness(dsh)Web 的设置里查看和管理 Agent 模式(预设):开关每个模式加载的插件、编辑它的系统提示词、用起步模板新建模式。

View and manage DeepSeek Harness agent modes (presets) in Web Settings: toggle the plugins each mode loads, edit its system prompt, and create modes from starter templates. The page follows dsh's language setting (Chinese or English).

设置 → 模式管理页面 / Settings → Modes page

兼容性

dsh 版本验证方式结果
0.2.0-rc.2(npm 当前 latest,也是 Desktop 当前版本)安装 npm pack 打出的包,在 dsh web 里实际操作可用;这个版本的 dsh 不提供插件的本地化名称,插件行显示包名和英文说明
0.2.1-alpha.3源码运行,并用本地假模型抓取实际请求可用

插件依赖的 configEditor、agentPresets、systemPrompt 等都是 dsh 尚未稳定的接口,其他版本可能需要适配。

功能

设置 → 模式管理(Modes)页面:

  • 每个模式一张卡片:本地化的名称和描述、默认 / 内置 / 自定义标记、已修改项数、正在使用它的会话数、已启用插件数
  • 展开后按分组(基础能力、规划模式、上下文压缩、子代理与工作流……)列出插件,显示插件自己的名称、说明和图标(dsh 提供本地化名称时显示中文),逐行开关
  • 修改过的插件标为「已修改」,可以单独还原;整个模式也可以一键恢复内置配置
  • 搜索插件或模式,或者只看改动过的插件
  • 用某个模式直接新建会话,或把它设为新会话的默认模式
  • 按模式编辑系统提示词(persona 行的 prefix):卡片上显示提示词摘要;编辑器支持点击插入 {{model}} 等变量,输入时实时校验变量,并可预览该模式完整的系统提示词(包括未保存的修改);修改过的提示词可以一键恢复内置
  • 提示词草稿保护:未保存的修改存在浏览器本地,收起编辑器、关闭设置或刷新页面都不会丢,卡片上显示「提示词草稿未保存」;可以随时放弃修改;支持把提示词导出为 .md 文件,或从 .md / .txt 文件导入到编辑器
  • 保存冲突检测:如果你编辑期间提示词在别处(例如另一个窗口)被改了,保存会被拒绝,并显示最新内容,你可以选择载入最新内容,或用自己的版本覆盖
  • 新建模式时选择起步方式:开发(与标准模式相同)、写作(读写文件、无终端)、聊天(只聊天和搜索网页)、只读调研(能读能搜,不能改文件、不能运行命令),或者复制任意现有模式。每个模板都带一段起步提示词(按界面语言选择中文或英文),并显示会启用多少个插件;名称和 ID 会自动填好
  • 关闭身份(persona)行之前会二次确认;关闭后,卡片和提示词编辑器都会提醒「提示词没有生效」,并提供一键重新启用。persona 行标为「核心」
  • 每一行插件都可以展开详情:行 id、模块、所在分组、内置状态、当前设置、实际加载情况、是否改过,以及完整配置
  • 删除和恢复内置都会先在页面内二次确认;删除时会提示还有多少个打开的会话在用
  • 保存时只锁住正在修改的那一行,完成后在卡片上提示;失败原因显示在对应的卡片里

修改写入当前 profile 的 cordis.patch.yml。正在运行的会话保持原有配置,之后新建的会话使用新配置。界面支持中文和英文,跟随 dsh 的语言设置。

工作方式

文件作用
index.js宿主端插件,提供 POST /api/dsh-modes,动作包括 list、read、toggle、resetRow、reset、create(支持 template 起步模板或 from 复制)、update、remove、setDefault、prompt、setPrompt(支持 base 冲突检测)。修改内置预设时,通过 configEditor.edit() 在 profile 里写入该预设行的覆盖;插件的显示信息来自 pluginInventory.list()
container.js自定义预设容器,配置里保存 presets 列表,并对每一项调用 agentPresets.register()
client.jsWeb 端设置页
cordis.patch.yml插入上面两个宿主端插件行

安装

dsh plugin --profile web add dsh-modes

然后启动 dsh web,打开 设置 → 模式管理。卸载:

dsh plugin --profile web remove dsh-modes

插件做的修改保存在 profile 的 cordis.patch.yml 里,卸载插件不会删除它们:改过的内置模式在卸载后仍按修改后的配置运行。想完全还原,请在卸载前把改过的内置模式恢复内置,并删除自己新建的模式。

起步模板

模板都以内置的标准模式为基础,用「允许名单」决定保留哪些插件:名单外的行在创建时一律关闭,这样模板不会开启它没写明的工具。

模板保留的能力说明
开发与标准模式相同不改动插件和提示词
写作文件读写与搜索、工作区指令、待办、交付文件、技能、上下文压缩、提问、时间没有终端、子代理和网页
聊天网页搜索与读取、上下文压缩、提问、时间不碰文件和终端
只读调研文件读取与搜索、网页、工作区指令、待办、技能、上下文压缩、提问、时间文件工具设为只读(write: false、edit: false),没有终端

在 dsh 0.2.1-alpha.3 上,我们用本地假模型抓取了实际请求来验证:用「只读调研」模板新建的模式,发给模型的工具只有 ask_user_question、glob、grep、read、read_image、skill、todo_write、web_fetch、web_search、working_directory,没有任何写文件、编辑或终端工具;系统提示词也是模板里的那段。

系统提示词

提示词就是该模式 @deepseek-ai/dsh-persona 行的 prefix:

  • 一般情况下,它位于系统提示词的开头,后面还会追加工具说明、工作区规则等内容;如果该行设了 complete: true(例如极简模式),它就是完整的系统提示词。
  • {{model}}、{{provider}} 这类变量在每一步组装提示词时替换成实际值。可用的变量以当前 dsh 实际注册的为准(例如 0.2.0-rc.2 还有 {{cwd}},0.2.1-alpha.2 起已移除),编辑器只列出当前可用的变量。DSH 严格校验变量,写错一个会让该模式下的每一步都失败,所以保存前会检查变量名是否已注册、格式是否完整,校验不过就拒绝保存。
  • 预览不需要真的创建会话:它用该模式当前版本的作用域组装提示词,不包含每一步注入的运行时上下文。
  • 保存时会带上你开始编辑时的版本;如果服务器上的提示词已经不是那个版本,就返回 prompt-conflict,不会覆盖。草稿保存在浏览器的 localStorage 里(键名前缀为 dsh-modes:draft:),只在当前浏览器有效。

在 dsh 0.2.1-alpha.3 上,我们用本地假模型抓取了实际发出的请求,验证了三件事:保存后新建的会话使用新提示词,{{model}} 会被替换成模型名;已经在运行的会话在提示词被改回后继续沿用旧提示词;改回后新建的会话又用回内置提示词。

已知限制

  • 覆盖内置预设时会复制完整的插件列表,内置预设之后的更新不会自动合并
  • 「在用会话数」只统计当前已打开的会话;删除自定义模式后,用过它的会话重启时无法恢复
  • 带 !!js 条件的行(例如 tool-bash)不能在界面里开关,只能改 YAML
  • 写操作只依赖 dsh 自带的登录校验,没有额外权限确认
  • 提示词修改只影响之后新建的会话;正在运行的会话要新开一个才能用上
  • 只编辑 prefix;suffix、complete、includeRuntimeContext 仍需在 YAML 中修改
  • 模板只在创建时生效;以后 DSH 新增的插件不会自动加入用模板创建的模式
  • 草稿只保存在当前浏览器,换浏览器或清除站点数据后会丢失

许可证

MIT