前言¶
DeepSeek Harness (DSH) 的原生目标系统主要通过对话命令(如 /goal)或模型工具(create_goal / get_goal / update_goal)进行操作。这种操作方式在 Web 界面中缺乏直观的视觉反馈,且需要记忆具体的命令或 API 调用方式。
dsh-goal-mode 插件为 DSH 的 Web 界面引入了可视化的 Goal 模式,将原本隐匿在命令行的操作转化为“看得见、点得动”的界面组件,降低了使用门槛。
插件定位¶
- 名称:dsh-goal-mode
- 功能:为 DeepSeek Harness Web 界面提供可视化 goal 模式
- 维护者:xlennart
- 分类:客户端
- 许可证:MIT
核心功能¶
该插件在 DSH Web 界面中通过两个主要入口提供功能:
-
完整生命周期目标栏
插件在 Composer 输入框上方注册了conversation.input.dock条目,替换了原有的内置 goal 条。根据状态不同,它展示不同的内容:
- 无目标时:显示◎按钮,点击展开“设定目标”创建表单。
- 有目标时:显示状态标签、目标文本、轮次进度条(n/上限)以及“已达上限”徽标。
- 操作按钮:提供暂停(⏸)、恢复(▶)、编辑(✎,支持多行)、完成(✓)、清除(🗑)和收起功能。
- 完成态:显示完成横幅及“开始新目标”按钮。 -
多行编辑与创建
目标内容采用多行文本框实现,支持自动换行和拖动高度调整,用户可通过Ctrl+Enter提交。在创建表单中,用户可同框设置轮次上限。 -
Composer 工具行入口
在输入框左侧工具栏(conversation.input.left)添加目标入口按钮和阶段色点(绿=进行中 / 黄=暂停 / 红=阻塞)。点击可展开或收起目标栏。目标栏支持折叠为内容自适应的胶囊形态。 -
设置与持久化
- General 设置开关:在settings.general.item中提供“在输入框工具行显示目标入口”的开关,设置项通过ui-goal-mode段落持久化。
- 独立目标设置页:在settings.section中提供独立的“目标”设置页,展示当前会话状态、轮次和紧凑预览,长目标可展开查看。 -
零空闲干扰
在未设置目标时,Composer 上方不渲染任何内容(除非显式打开创建表单),保持界面整洁。
安装¶
安装前请确保已安装 DeepSeek Harness Web GUI(web profile)0.2.0-rc.2 及以上版本。
插件提供两种形态,推荐使用形态 A(正式插件包):
dsh plugin --profile web add <tgz 路径>
安装后刷新页面或重启进程即可生效。
使用与原理¶
- 形态:形态 A 为独立 npm 包结构(
dsh.plugin.json+cordis.patch.yml+ 构建产物),使用dsh plugin add安装;形态 B 为动态插件源码,可在会话内通过cordis_define+cordis_run加载(保留用于调试)。 - 数据存储:目标数据存储在会话日志中,通过
goal/change事件进行持久化,插件只负责展示与操作。 - 技术实现:使用
useProjection('goal')进行实时数据投影,操作通过ctx.remote.goals通道进行,支持乐观并发。
注意事项¶
- 版本兼容:需要 DeepSeek Harness Web GUI 0.2.0-rc.2 及以上版本(插件 0.2.0 对应 0.2.0-rc.2)。
- 架构变化:从 0.2.0 版本开始,插件不再发布运行库不变式伴生文件(
./invariant)。在 0.2 纪律下,插件仅包含槽位注册与设置表单投影,没有可独立分叉的观测点。 - 权限:插件以当前 DSH 进程权限运行,安装前建议检查源码与许可证。
参考资源¶
- GitHub 仓库:https://github.com/xlennart/dsh-goal-mode-enhance
- 插件目录:https://www.skillhub.cn/plugins/xlennart/dsh-goal-mode-enhance