DSH Taskify:在 DSH Web 中固定任务范围与硬约束

前言

DSH 的插件生态强调「一切皆插件」。在 DSH Web 中运行 Coding Agent 类任务时,开头写下的范围与限制可能随着轮次增加而被弱化或忽略。Taskify 是一个 DSH Web 插件,目标是不修改 composer 中的原始 Prompt,把“这次只做什么”和“哪些不能动”作为持续边界带入后续轮次。

下面介绍 GearVoid/dsh-taskify 的定位、核心机制、安装方式和注意事项。

这是什么

dsh-taskify 是一个 DSH Web 插件,用于为当前 Session 建立任务边界:

  • 用 Focus 固定当前任务的执行范围;一个 Session 最多一个 Focus。
  • 用 Persistent Anchors 保留用户明确说出的硬约束;一个 Session 可以有多个 Anchors。
  • 不改写 composer 中的原始 Prompt,也不替用户自动发送。
  • 项目位于 GitHub 仓库 GearVoid/dsh-taskify,许可证为 MIT。

核心机制

Focus:固定本次最多做到哪里

Focus 回答的问题是:“这次最多做到哪里?”

  • 可以由用户手写,也可以来自 AI 建议。
  • AI 给出的 Focus suggestion 只是草稿,必须由用户确认后才成为当前 Session 的 Focus。
  • 用户可以对 Focus 执行 Set、Edit、Pause、Resume 或 Clear。

Persistent Anchors:保留明确硬约束

Persistent Anchors 回答的问题是:“哪些东西不能变?”

  • Anchors 从当前 Prompt 或草稿中提取用户明确说出的硬约束。
  • 每个 Anchor 必须带有来自当前草稿的 exact evidence。
  • 偏好或弱化表达不会升级成硬约束;anchors: [] 是合法成功结果。
  • 用户可以对单个 Anchor 执行 Pause、Resume、Remove,也可以 Clear All。

提取保护

  • Literal Lock:保护代码块、行内代码、路径、URL、IP/端口、版本、CLI 和常见标识符。
  • Provenance:evidence 必须是当前草稿的精确子串。
  • Concrete Claim Guard:防止 Anchor 凭空加入新路径、URL、CLI、版本或明显代码标识符。

状态与后续轮次

  • Host 是权威状态;Client 只是可丢弃快照缓存。
  • Revision/CAS 会拒绝过期写入。
  • Durable replay:当 DSH persistence provider 确认 flush 时,状态可通过已知事件重放恢复;失败或不可确认时会明确降级。
  • Session isolation:状态按精确 session id 隔离;新 Session 和 fork 默认不继承 Focus 或 Anchors。
  • 后续轮次通过 DSH 官方 systemPrompt.context 获得 active Focus 与 active Anchors;paused 项不会进入上下文。

安装与更新

使用 Web profile 安装指定版本:

dsh plugin --profile web add github:GearVoid/dsh-taskify#v0.4.1

执行完成后启动 Web:

dsh web

已列出的兼容环境如下:

  • DeepSeek Harness 启动器:0.1.2-rc.1
  • DSH 核心插件 API:0.1.2-rc.1
  • DSH Web Client API:0.1.2-rc.1
  • Node.js:^22.19.0 || >=24.0.0
  • pnpm:11.x(本仓库使用 11.19.0

典型用法

先写原始任务,再点击 Taskify,确认边界,最后发送原始 Prompt。

1、在 composer 中写原始任务。
2、点击 Taskify,让插件建议 Focus 并提取 Anchors。
3、对 Focus 做确认、编辑或忽略;检查 Anchors。
4、发送原始 Prompt。
5、后续轮次中,active Focus 与 active Anchors 持续进入上下文。

示例输入:

把 dashboard 卡片布局改得更紧凑、整齐一点,后端别动,不要新增依赖,也别顺手改其他功能

生成结果可以是:

Focus
调整 dashboard 卡片布局,使其更紧凑、整齐

Anchors
不修改后端
不新增依赖
不处理其他功能

这里的原始 Prompt 保持不变。

适用场景与注意

适合在多轮任务中持续保留“范围”和“硬约束”的场景,例如只调整某个模块、不动后端、不新增依赖、不扩展到邻近功能。

需要注意以下边界:

  • Taskify 是持续的 model guidance,不是 sandbox、policy engine 或机械拦截层。
  • 当前不包含文件写入拦截、依赖安装拦截、自动 rollback、Git baseline、semantic diff audit、native /goal replacement、watchState/polling/WebSocket、多 Client 实时同步、自动任务完成判断。
  • Focus suggestion 不自动生效;只有用户确认后才会成为当前 Session 的 Focus。
  • Anchors 只提取明确约束,不会把偏好或弱化表达升级成硬规则。
  • 修改尚未发送的草稿只会使 pending/armed request 失效,不会删除 active Focus 或 Anchors。
  • 新 Session 和 fork 默认不继承 Focus 或 Anchors。
  • 插件以当前 dsh 进程权限运行。安装前应检查源码与许可证。
  • DSH 仍处于 Developer Preview,未来版本可能带来兼容性变化。

参考

  • GitHub:https://github.com/GearVoid/dsh-taskify
  • 目录页(来自插件线索,未在当前抓取资料中逐项核实):https://www.skillhub.cn/plugins/GearVoid/dsh-taskify
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜