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-checklists

Checklists

DeepSeek Harness 的会话范围检查清单:代理以树状结构跟踪工作,模型始终能看到紧凑摘要,侧边栏中的只读标签页会同步显示该摘要。

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

npx -y @deepseek-ai/dsh plugin --profile web add dsh-checklists@0.7.0
README兼容性版本
Checklist sidebar tab

兼容性与来源证明

Checklists 以 dsh-checklists 发布,当前版本为 0.7.0。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

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

版本

0.7.0stable
2026/10/22
0.6.0stable
2026/10/22
0.4.0stable
2026/10/20
查看其余 1 个版本收起版本
0.3.3stable
2026/10/20

相关插件

正在加载相关插件…

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

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

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

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

认领这个 Plugin →
报告问题

相关插件

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

Acp App@deepseek-ai/dsh-acp-appdsh ACP 配置文件包:基于 dsh-base 的仅限自动化的 JSON-RPC stdio 和进程生命周期管理Experimental Schedule Bundle@deepseek-ai/dsh-experimental-schedule-bundle为 Web 组合添加 Schedule、其任务页面和时间上下文的可选捆绑包Ab Ocrdsh-ab-ocr--- description: "外部 ocr 工具:逐页识别扫描的 PDF 或图像,仅在处理完最后一页后按顺序合并页面,并使用模型确定的标题级别保存为一个 Markdown 文档。" kind: "package-reference" ---Archive Manager@michengai/dsh-archive-manager归档、恢复、收藏和永久删除会话,并诊断损坏的会话日志。

README

dsh-checklists

Session-scoped checklists for DeepSeek Harness. The agent owns the list, the model always sees it, and a read-only sidebar tab mirrors it.

The problem this solves is not "having a list". It is having to dictate the list again every session. Here the checklist is created once, injected into the model context on every turn, and updated as work progresses — no reminders needed.

How it works

  1. The agent creates a checklist (checklist_create), optionally from a template.
  2. A compact digest of every checklist is injected into the prompt on each assembly, so the model always knows what is pending.
  3. The agent marks items as it finishes them (checklist_check).
  4. The sidebar tab shows the same tree, read-only, updated every two seconds.

If the agent forgets to mark something, you say so in chat and it fixes it.

Tools

ToolWhat it does
checklist_createCreates a list, from scratch or from a template (release, feature, debug, review)
checklist_addAppends items to an existing list, optionally under a given item
checklist_checkSets one or more items to todo · doing · done · blocked
checklist_nextReturns the next actionable leaf, its path, and how many remain
checklist_editChanges an item's text (not its state)
checklist_listFull tree with ids and states, for when the digest is truncated
checklist_deleteDeletes a list (by id or exact title)
checklist_remove_itemRemoves one item and everything nested under it
checklist_renameRenames a list; titles stay unique within the session
checklist_workspaceLists checklists from other sessions in the same workspace (read-only)
checklist_template_saveSaves a list as a reusable template for future sessions

Items are plain strings. Two leading spaces per level nest them:

["Deploy to staging", "  Smoke tests", "  Rollback plan"]

Install

dsh plugin --profile web add dsh-checklists

From a local build or tarball:

npm install
npm run build
npm pack
dsh plugin --profile dev add ./dsh-checklists-0.7.0.tgz
dsh --profile dev --dump-config        # the tool-checklist row should appear

Install into a test profile first. web and headless are distinct profiles, and so is the desktop app's desktop profile.

Configuration

Override the defaults on the plugin's entry in the profile's cordis.patch.yml:

- id: tool-checklist
  name: dsh-checklists
  config:
    maxDigestLines: 12      # lines of the injected digest
    maxItemsPerList: 200    # per-list item cap
    pruneDays: 14           # prune untouched sessions after N days (0 = never)
    nudge: steer            # steer | observe | off — see "Turn-end gate"
    workspaceView: on-demand   # off | on-demand | always — see "Workspace lens"
    workspaceViewLimit: 10     # sibling checklists returned
    # storageRoot: "D:/data/dsh-checklists"
    # templates:
    #   my-flow: ["Step 1", "  Sub-step", "Step 2"]

Data

$DSH_HOME/storages/dsh-checklist/
├─ sessions/<sessionId>.json    one document per session
└─ templates.json               templates shared across sessions

Writes are atomic (temp file + rename) and serialized per session. A corrupt document degrades to an empty list instead of failing the turn.

The package is dsh-checklists, but its storage directory keeps the dsh-checklist prefix. That path is data, not identity: renaming it would orphan every checklist already saved.

Sidebar tab

Checklist sidebar tab

Open the right sidebar, then the guide (+) and pick Checklist.

ActionHow
CollapseClick a list title, or the ▾ on any item with children
Auto-collapseWhen a new list appears, the others fold and the new one opens
Hide completedThe "Hide done" button, shown only when something is done
Copy as markdown"Copy" — paste into a PR or an issue
Edit an item's textDouble-click the text; Enter saves, Esc cancels

Item states remain agent-only: the tab cannot check anything off. The one write path is text editing, through POST /dsh-checklist/item with expectedText. If the item changed since the tab read it, the host answers 409 rather than overwriting the agent's edit.

HTTP routes

RouteMethodPurpose
/dsh-checklist/stateGETOne session's state (read-only, no-store)
/dsh-checklist/itemPOSTEdit an item's text, with a conflict guard
/dsh-checklist/nudgeGETRecent turn-end gate decisions
/dsh-checklist/workspaceGETChecklists of sibling sessions in the same workspace
/dsh-checklist/client-probeGETClient load diagnostics

Turn-end gate

A checklist only helps while it is true. The gate closes the most common gap: a turn does real work, forgets to mark it, and the list is stale by the time you look at it.

When a turn is about to close, the plugin checks exactly three things:

  1. Did the turn run a tool that changes the workspace (bash, edit, write, …)?
  2. Did it skip every checklist write?
  3. Is anything still marked doing?

If all three hold, the agent gets one short steering message before the turn ends:

Before you finish: N checklist item(s) are still marked "doing". If you completed any of them this turn, update them with checklist_check and say what proves it. If not, leave them as they are — do not mark work you did not do.

It never guesses what was completed — only that the bookkeeping was skipped. At most one nudge per turn, and none when the turn was pure conversation or the checklist already changed.

Inspect recent decisions at GET /dsh-checklist/nudge:

{ "mode": "steer", "entries": [
  { "source": "turn-stopping", "nudge": true, "steered": true,
    "reason": "1 item(s) still doing after workspace changes", "doing": 1 }
] }

nudge: observe records without interrupting; nudge: off disables the gate.

Workspace lens

Checklists stay per session. The lens is a read-only way to see the checklists of other sessions in the same project — available on request, and never part of the prompt.

ModeBehaviour
on-demand (default)The tool works; the sidebar section starts collapsed
alwaysThe sidebar section starts expanded
offNo tool, no route

Clicking an entry expands it into a read-only tree, fetched once from that session's own state route. Nothing there is editable — the lens can look, not touch.

Membership comes from disk: a session belongs to the workspace directory that contains it under $DSH_HOME/sessions/<workspace>/<sessionId>/. The host's workspace.json is only used for a friendly title, because it is not always complete — on the machine this was written on it was missing a workspace.

Nothing here is writable. To change another session's checklist, open that session: two writers on one list would give the list two truths.

Language

The panel follows the harness locale: Spanish when locale starts with es, English for everything else. If the locale service is unavailable, it falls back to English instead of breaking.

Text addressed to the model — tool descriptions, rendered results, the digest — is English and is not translated: it is prompt material, not interface copy.

Design notes

  • One writer. The agent writes state; the sidebar writes text. No optimistic state, no two-tab divergence.
  • Digest budget. Each checklist gets an equal share of the line budget. Giving the first list the whole budget starved the rest: with two lists the second showed a single line, and a third never appeared.
  • Pending first. Truncation never hides unfinished work.
  • Client plugins load through window.__ModuleLoader__ and only require('react'). No bundler needed, but a static inject of a service that never resolves parks the plugin silently — apply never runs and nothing appears. Tab types must be registered lazily (ctx.inject([...])).

Verification

npm run typecheck
npm run test      # vitest
npm run smoke     # same checks, in-process, no child processes

npm run smoke exists because some sandboxes deny spawn with EPERM, and then Vitest cannot start its workers. It covers the model, digest, store, public state and both HTTP routes (23 checks) against the compiled lib/.

Known limits

  • No reordering and no drag-and-drop.
  • No edit history (who marked what, when).
  • Text only: there is no "add a checklist item from the panel" affordance.
  • Document format is version: 1; any change must migrate.
  • The tab polls every 2 s while mounted — deliberate, the route is read-only.

License

MIT