DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins

dsh-todo-progress-guard

Todo Progress Guard

保持 todo_write 进度同步的 DSH 宿主插件:在回合中提醒代理,并在回合正常结束时完成搁置的任务。

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add dsh-todo-progress-guard@1.0.2
README兼容性版本

兼容性与来源证明

Todo Progress Guard 以 dsh-todo-progress-guard 发布,当前版本为 1.0.2。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
any
发布来源
npm
Registry 更新时间
2026/10/28

版本

1.0.2stable
2026/10/28

相关插件

正在加载相关插件…

最新版
1.0.2
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
33 kB
文件数
10
Surface
any
许可证
MIT
发布源
npm
GitHub
★ 1
周下载
0
最近提交
2026/10/28
查看源码 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题

相关插件

继续浏览 productivity-workflow 分类下经过校验的插件。

Web All@linxin666/dsh-web-allDSH Web UI 全家桶聚合插件:一键安装全部功能插件(task-board / pet / web-ui-settings / skin-center / community-plugins / compat shim)。compat 桥接层已并入本包(src/client),无需独立 compat npm 包。Remotedsh-remoteDeepSeek Harness 的远程工作助手:连接 SSH(密码/密钥/代理/键盘交互、多跳 ProxyJump),从 ~/.ssh/config 列出主机,选择远程工作区,使用 21 个 rw_* 工具对其进行操作,支持感知冲突的镜像同步、内嵌 PTY tRewind Plugindsh-rewind-plugin窗口内对话回溯与工作区文件恢复Model Router@ljwei-stak/dsh-model-routerDeepSeek Harness Desktop 的统一 DS Bot 工作区:模型和 Bot 路由、私有库、录制的桌面流程以及范围限定的远程计算机控制。

README

dsh-todo-progress-guard

English | 中文

Gives the DeepSeek Harness (DSH) todo list a way to advance on its own: it nudges the model to refresh todo_write during multi-step tool work, and completes stranded tasks when a turn ends normally.


The problem

DSH's todo_write replaces the whole list, and the list is only a session projection:

// @deepseek-ai/dsh-tool-todo
apply: (state, event) => {
  if (event.type === "todo/write") return event.data.todos;
  if (event.type === "turn/start") return null;
  return state;
}

So the panel only changes when the model calls todo_write again. Long tool-heavy turns show two familiar symptoms:

  1. Frozen mid-turn — the model writes a plan once, then runs dozens of bash / read / edit calls while its attention stays on tool output. The panel keeps showing the first item as in_progress for the rest of the turn.
  2. Stuck after the answer — the model finishes the work and answers in a step with no tool calls, so it never gets to send one last todo_write. The turn is over and the panel still reads 1 in progress · N pending.

This bundle closes both gaps with one Host-side Cordis plugin. It changes no DSH core package and invents no new session event types.

Two mechanisms

1. Mid-turn reminder (tools/post-execute)

When the current turn owns an incomplete todo list and the model spends several steps or tool calls without calling todo_write, the plugin injects one context message (source.kind = "todo-progress-reminder", form: "notice", rendered as a collapsible injected row in the chat stream) after the last tool result of that step.

The body repeats the current list verbatim, because todo_write replaces the whole list — the model can copy it forward without re-reading distant history:

Task progress reminder (1/3 completed; 2 step(s) / 4 tool call(s) since the last todo_write):
1. [completed] Recon the repository
2. [in_progress] Implement the fix
3. [pending] Run the test suite
If any task above is now completed or in progress, call `todo_write` with the COMPLETE
updated list in your next step. It can run in parallel alongside your next tool call at no
extra step cost, or mark every finished task `completed` before your final reply.

2. Turn-end completion (agent/turn-stopping)

As a turn ends normally — before turn/end is written, while the turn is still legitimately open — any leftover in_progress / pending items are written back as completed through one final todo/write snapshot. The panel can never outlive the work it describes.

Install

The Web UI is the recommended path: open Plugins → Install and paste any spec below. It adds the dependency and selects the bundle, so the patch applies immediately with no restart:

github:LaochenFEIZHAI/dsh-todo-progress-guard   # straight from GitHub (this repository)
/absolute/path/to/dsh-todo-progress-guard        # a local checkout; edits take effect immediately
dsh-todo-progress-guard                          # from npm once published

The CLI only installs the package (dsh plugin is a pnpm passthrough and does not select bundles):

dsh plugin --profile web add github:LaochenFEIZHAI/dsh-todo-progress-guard

After that, enable dsh-todo-progress-guard once in the Plugins page (equivalent to adding it to dsh.profile.bundles in ~/.dsh/profiles/<name>/package.json); only then is the bundle's cordis.patch.yml applied.

Configuration

Defaults are usable as-is. To tune them, override this row's config by id in the profile's own cordis.patch.yml (a patch layer replaces config wholesale, so restate all three keys):

- id: todo-progress-guard
  config:
    stepThreshold: 2
    callThreshold: 5
    autoCompleteOnTurnEnd: true
FieldDefaultMeaning
stepThreshold2Remind after this many model steps without a todo_write
callThreshold5Remind after this many other tool calls without a todo_write (needs at least one step)
autoCompleteOnTurnEndtrueComplete leftover items when a turn ends normally

The two thresholds are OR-ed: whichever is reached first reminds. At most one reminder per step, and counters reset at every turn boundary. Invalid values (non-positive integers, non-booleans) fall back to the defaults instead of failing activation.

Safety boundaries

Completion only happens when the turn really did work. The plugin appends nothing when:

  • the turn was aborted (signal.aborted) or the last assistant message was interrupted;
  • a next step is already queued (agent.inbox.nextStep is non-empty) — the turn is not over;
  • the step called ask_user_question or exit_plan_mode — the turn is waiting on a human, who alone can decide whether the work is done;
  • every item is already completed;
  • the list was just created and no other tool ran yet — that is a stated plan, not a result.

The plugin only appends todo/write events, never rewrites history, and always writes inside a legitimately open turn, so it stays compatible with the durable-log invariants owned by @deepseek-ai/dsh-tool-todo.

Compatibility

  • Requires the Host sessions and sessionProjections services; the plugin stays inactive where they are absent (plain inject semantics) instead of failing the composition.
  • Verified on DSH 0.2.0-rc.2. Every extension point it uses — additionalContexts on tools/post-execute, agent/turn-stopping, and the todos projection — is public contract there.
  • Zero runtime dependencies: the plugin imports no DSH package, so a link: checkout and a registry install behave identically. (Exporting a Schemastery Config would break link: installs, because a symlinked realpath cannot resolve DSH packages; configuration is therefore validated inside the plugin.)

Development

npm test        # node --test; 13 cases cover reminders, completion and every boundary

The tests drive the real plugin code through a minimal Host stand-in (session log + todos projection + tool waterfall) and import nothing from DSH.

License

MIT