Back to home@zdjmrq

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_questionweb_search 两个工具,没有工作区、shell、文件系统、子代理、工作流、目标、技能与计划模式;输入栏的权限/访问芯片自动隐藏(无可保护的危险工具)。
专属聊天工作区所有对话模式会话固定落在聊天工作区 $DSH_HOME/chat(默认 ~/.dsh/chat,首次使用时自动创建并注册,显示标题「对话」);该工作区与普通 DSH 工作区分开分组展示。
DSH 会话永不落入聊天区DSH 模式的新会话在继承当前工作区与「最近使用」回退时都排除聊天工作区;即使一个空白会话带着 chat 预设(例如被暂存在普通工作区里),打开前也会切回部署默认预设。
模式记忆选择的会话模式持久化到浏览器本地(dsh.sidebar.prefs.v1),刷新后仍生效。
纯聊天输入条对话模式下输入栏保留正常聊天体验(发送/停止/编辑/图片),只隐藏权限芯片。

安装

本插件 = 用户级 agent presetagent-presets/chat/,无需碰官方预设目录)+ 宿主/客户端补丁install.patch,按源码方式集成到你的 harness 工作区)。

  1. agent-presets/chat/ 整个目录复制到你的用户 preset 目录($DSH_HOME/.agent-presets/,默认 ~/.dsh/.agent-presets/):
    • Windows: C:\Users\<你>\.dsh\.agent-presets\chat\
    • $env:DSH_HOME\.agent-presets\chat\
  2. 在 harness 源码工作区根目录执行 git apply install.patch(含 host chatDir 契约、workspace.createcreateDirectory/title、runtime 会话创建与 New Session 语义、侧边栏模式切换、对话输入条隐藏权限芯片、test-support 与测试;如版本有出入请对照补丁手工合并);
  3. 安装与构建:
    pnpm install
    pnpm run build
    
  4. 重启后台(pnpm dsh web),刷新页面——侧边栏「新会话」右侧即出现模式小三角。

补丁按上游 0.1.1-rc.2 之后的结构生成(基线 commit 890a727ed0);被补丁触及的文件(packages/host/apiproxypackages/client/{connection,runtime,ui-conversation,ui-sidebar}packages/test-support)在该基线上与上游一致,通常可直接应用。

工作原理

  • 对话模式 = 一个 agent presetagent-presets/chat/agent.cordis.yml 复刻官方 standard 预设的形状,但只贡献模型面向的行——persona(友好助手)、dsh-tool-ask-user(澄清提问)、dsh-tool-webfetch: 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 预设的空白会话会被切回部署默认预设(有参/作用域流程不走该守卫)。
  • 侧边栏 UIui-sidebarSidebarRoot 新增 .newSessionRow(新会话按钮 + 右侧小三角 Menu);模式由 createSidebarPrefsStore() 持久化 store 提供(PropsStore<...> 注入),菜单项在设置模式的同时直接调用 startSession() / startChatSession();收起的窄栏只保留新会话图标。
  • 输入栏ui-conversationInputBar 通过 session 摘要的 agentPreset === 'chat' 判定对话模式,从而隐藏权限选择芯片。

要求

  • DeepSeek Harness 源码工作区(本插件按 0.1.1-rc.2 版结构集成)
  • Node.js 22+、pnpm

相关项目(双向互链)

License

MIT