dsh-chat-mode
DSH 插件:为 DeepSeek Harness 增加「对话」纯聊天模式(ChatGPT 式)——侧边栏新会话模式切换(DSH/对话)、对话会话仅提问+搜索工具、专属 \/chat 聊天工作区
- Stars
- 0
- Language
- —
- Created
- Aug 26, 2026
- Updated
- Aug 26, 2026
Introduction
dsh-chat-mode
DSH 插件:为 DeepSeek Harness 增加 「对话」纯聊天模式(ChatGPT 式对话,与 DSH 编码代理模式并列)。侧边栏「新会话」右侧新增小三角入口:点三角选 DSH / 对话即切换模式并立刻开启对应模式的新会话。已发布至 dsh-plugin 主题。
A DeepSeek Harness plugin that adds a "Chat" mode (pure web-chat dialog, ChatGPT-style) beside the DSH coding-agent mode. The sidebar's small triangle next to "New Session" opens the DSH / Chat chooser; picking a mode switch it and immediately starts a matching new conversation.
功能
| 功能 | 行为 |
|---|---|
| 「新会话」按当前模式直开 | 侧边栏「新会话」按钮直接开启一个当前模式的新会话(默认 DSH 模式),不再需要先选模式。 |
| 模式小三角(新会话右侧) | 一个 24px 圆形小按钮(与工作区分组展开箭头同款三角图标),点击展开「会话模式」菜单:DSH(构建、调试和发布)/ 对话(创建、学习和探索),当前模式带勾选标记。 |
| 菜单项 = 切换 + 直开 | 点「DSH」立即开启一个 DSH 模式新会话;点「对话」立即开启一个对话模式新会话——与当前处于什么状态无关(不再只是切换模式)。 |
| 对话模式会话 | 由 chat agent preset 组成:只有 ask_user_question 与 web_search 两个工具,没有工作区、shell、文件系统、子代理、工作流、目标、技能与计划模式;输入栏的权限/访问芯片自动隐藏(无可保护的危险工具)。 |
| 专属聊天工作区 | 所有对话模式会话固定落在聊天工作区 $DSH_HOME/chat(默认 ~/.dsh/chat,首次使用时自动创建并注册,显示标题「对话」);该工作区与普通 DSH 工作区分开分组展示。 |
| DSH 会话永不落入聊天区 | DSH 模式的新会话在继承当前工作区与「最近使用」回退时都排除聊天工作区;即使一个空白会话带着 chat 预设(例如被暂存在普通工作区里),打开前也会切回部署默认预设。 |
| 模式记忆 | 选择的会话模式持久化到浏览器本地(dsh.sidebar.prefs.v1),刷新后仍生效。 |
| 纯聊天输入条 | 对话模式下输入栏保留正常聊天体验(发送/停止/编辑/图片),只隐藏权限芯片。 |
安装
本插件 = 用户级 agent preset(agent-presets/chat/,无需碰官方预设目录)+ 宿主/客户端补丁(install.patch,按源码方式集成到你的 harness 工作区)。
- 把
agent-presets/chat/整个目录复制到你的用户 preset 目录($DSH_HOME/.agent-presets/,默认~/.dsh/.agent-presets/):- Windows:
C:\Users\<你>\.dsh\.agent-presets\chat\ - 或
$env:DSH_HOME\.agent-presets\chat\
- Windows:
- 在 harness 源码工作区根目录执行
git apply install.patch(含 hostchatDir契约、workspace.create的createDirectory/title、runtime 会话创建与 New Session 语义、侧边栏模式切换、对话输入条隐藏权限芯片、test-support 与测试;如版本有出入请对照补丁手工合并); - 安装与构建:
pnpm install pnpm run build - 重启后台(
pnpm dsh web),刷新页面——侧边栏「新会话」右侧即出现模式小三角。
补丁按上游
0.1.1-rc.2之后的结构生成(基线 commit890a727ed0);被补丁触及的文件(packages/host/apiproxy、packages/client/{connection,runtime,ui-conversation,ui-sidebar}、packages/test-support)在该基线上与上游一致,通常可直接应用。
工作原理
- 对话模式 = 一个 agent preset:
agent-presets/chat/agent.cordis.yml复刻官方standard预设的形状,但只贡献模型面向的行——persona(友好助手)、dsh-tool-ask-user(澄清提问)、dsh-tool-web(fetch: false的服务端检索)、compaction 隔离组(长对话保持上下文;与standard相同的 realm 规则)。宿主面不变:agent-loop、sessions、模型路由、沙箱与审批栈照常服务该预设。 - 聊天工作区的固定性:host 端
host.describe新增chatDir字段(缺省$DSH_HOME/chat,否则~/.dsh/chat),客户端运行时等待其解析并缓存;workspace.create支持createDirectory(首次创建$DSH_HOME/chat目录并注册)与title(命名该工作区为「对话」)。 - 新会话语义:
WorkspaceRuntime.startSession()(DSH 模式)与startChatSession()(对话模式)共享connectWorkspace的空白会话复用/新建通道;对话模式在空白会话上把预设切到chat(已开始的会话保持原组成,宿主拒绝切换),DSH 模式的无参流程则做反向守卫——聊天工作区永远不是无参目标,带chat预设的空白会话会被切回部署默认预设(有参/作用域流程不走该守卫)。 - 侧边栏 UI:
ui-sidebar的SidebarRoot新增.newSessionRow(新会话按钮 + 右侧小三角Menu);模式由createSidebarPrefsStore()持久化 store 提供(PropsStore<...>注入),菜单项在设置模式的同时直接调用startSession()/startChatSession();收起的窄栏只保留新会话图标。 - 输入栏:
ui-conversation的InputBar通过 session 摘要的agentPreset === 'chat'判定对话模式,从而隐藏权限选择芯片。
要求
- DeepSeek Harness 源码工作区(本插件按
0.1.1-rc.2版结构集成) - Node.js 22+、pnpm
相关项目(双向互链)
- dsh-text-open-source — 「文字开源」枢纽仓库:本插件的可复刻文字描述见 plugins/dsh-chat-mode.md(不依赖代码即可复刻、便于理解与微调);
- deepseek-harness — 官方上游。
License
MIT