DeepSeek Harness 插件

nguyenduclong-ict/dsh-session-progress

Star 数 ★ 3 分类 会话与消息 收录于 2026-09-13

不用再翻日志,也能随时知道 DeepSeek Harness 的会话做到哪一步了:agent 维护一份实时嵌套清单——从整个阶段到单个步骤——每一项都带权重,所以输入框下方 dock 行的进度环与百分比胶囊始终反映真实进度。悬停可看当前活动,或打开原生右侧边栏的 Session Progress 标签页,查看目标、带单项占比的加权清单、后续步骤与工作备注;会话结束时,它就是一份清晰的工作记录。

安装

# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)

dsh plugin --profile web add github:nguyenduclong-ict/dsh-session-progress

装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。

README

该插件的 README 只有英文版本。

English | Tiếng Việt


1. Purpose & Overview

Know how far a long agent session has actually got — without digging through the logs. dsh-session-progress is a real-time session progress and task tracking plugin for DeepSeek Harness (DSH / DSH Desktop): the agent keeps a live checklist of the work, the completion percentage is computed from the ticked boxes, and each session stores it as a single JSON progress document.

Topics: DSH plugin · DeepSeek Harness · session progress · weighted checklist · task tracking · JSON progress document

In long-running or complex agentic sessions it is hard to tell the overall completion status, the subtask running right now, or what comes next without sifting through a long conversation log. This plugin keeps that answer one click away:

  • A live checklist instead of a guess — the agent writes what it is doing as weighted tasks, nested from a whole phase down to a single step, and ticks them off as it goes.
  • A percentage that always matches reality — the ring and the % pill in the composer dock row are computed from the boxes (done 1 · running ½ · pending 0), so nobody does the arithmetic and the agent never writes a number.
  • A panel, not a log — the Session Progress tab in DSH's own right sidebar shows the goal, the weighted checklist with each item's share, the current activity, the next steps and the working notes.
  • Prose that reads at a glance — Overview, Current Activity, Next Steps and Key Findings / Notes are Markdown: the agent lays the state out as one fact per line, - bullets, backticks around a path or command, or a small table, instead of one wall of text.
  • A record when the session ends — the same file stands as a clean summary of what got done, and a v0.10.x Markdown progress file is migrated to JSON automatically on first read.

How it appears

The plugin renders inside DSH's own right sidebar — it does not draw an overlay of its own, so it never fights the frame for space:

Surface Where it lives
Progress ring + % pill The composer dock row under the input card, beside the context meter (hidden until a session exists)
Progress panel A native right sidebar tab named Session Progress

Clicking the composer control (or the Click to open the progress panel hint in its popover) opens that tab and reveals the right column. Being an ordinary sidebar tab, it docks, floats, splits, and follows the session exactly like Files or the document preview.

Requirement: the right sidebar tab slots (rightbar.session, sidebar.right.pane.tab) must exist in your DSH build — DSH Desktop 0.9.0 or newer.

Compatibility note (v0.11.1): progress is now stored as a JSON document instead of Markdown, and the checklist is a nested, weighted tree. Every item declares a weight, so the percentage on the ring is computed from the boxes — the agent never writes a number again. A v0.10.x Markdown progress file is migrated to JSON automatically the first time its session is read, checklist included. The composer trigger is hidden on the new-conversation screen (there is nothing to report yet), and the panel sections are drawn with the original accent-bar headings.

Compatibility note (v0.10.6): DSH Desktop 0.10.0 (harness 0.1.7) renamed the session id source and prefixed session ids with session-. The client now reads the current session through uiSession and the host accepts either id spelling, while the 0.9.x/0.10.0 shapes both stay supported.


2. The progress document

One JSON file per session (dsh-progress-<session>-<uuid>.json, in the system temp directory) holds the whole document:

{
  "version": 2,
  "title": "Ship the weighted JSON progress format",
  "status": "in_progress",
  "currentActivity": "Rewrite the host",
  "overview": "Storage moves from Markdown to JSON.",
  "checklist": [
    { "text": "Design the schema", "weight": 20, "state": "done",    "children": [] },
    { "text": "Rewrite the host",  "weight": 30, "state": "running", "children": [] },
    { "text": "Ship the panel",    "weight": 50, "state": "pending", "children": [
      { "text": "Render the tree",  "weight": 25, "state": "pending", "children": [] },
      { "text": "Show the weights", "weight": 25, "state": "pending", "children": [] }
    ] }
  ],
  "nextSteps": "1. Update the README",
  "notes": "schema = v2"
}

How the percentage is computed

weight is an item's share among its siblings, normalized so every group is worth 100%:

share(item) = share(parent) × weight(item) / Σ weight(siblings)

Both readings of the example above therefore agree: three top-level weights (20 / 30 / 50, i.e. percent of the job) and two sub-weights (25 / 25, summing to their parent's 50). An item with no weight counts as 1, and a group may not mix declared and defaulted child weights.

Progress of a node: a leaf counts 1 when done, ½ when running, 0 when pending; a group is the weighted average of its children and its own state is derived — checking a group off cascades done into its whole subtree. status is derived too (all leaves done ⇒ completed, any progress ⇒ in_progress, nothing started ⇒ starting); blocked is the only status a caller sets.

Agent-facing tools

Tool Purpose
session_progress_status Cheapest first look of a turn: the current activity, the step in progress, the pending steps after it and the plan.
session_progress_check_done Finish the step in progress: tick it, promote the next [ ] step to running, recompute the percentage.
session_progress_write Create the document (content) or patch it (checklist + checklist_mode, add, update, check, start, uncheck, remove, and the prose fields).
session_progress_read Read the whole document, or only the sections you name.

No tool accepts a percentage — it always follows the boxes.

Good to know

  • Weights are normalized, so re-weighting one item changes its siblings' shares. Read weightPercent back from session_progress_read / session_progress_status when an exact split matters.
  • An item may nest up to 6 levels; a document holds at most 400 items and should stay under ~40 KB.
  • A matcher (#3 = displayed row, #2.1 = path, or a text snippet) must resolve to exactly one item. An unknown or ambiguous matcher is refused, with the full item list, and nothing is written.
  • The panel prints each item's computed share as a % badge, so a declared weight and the number on screen can never disagree.

3. Installation Guide

For DSH Desktop

Windows (PowerShell)
cd "$env:APPDATA\dsh-desktop\harness\profiles\web"
& "$env:APPDATA\dsh-desktop\harness\.desktop-bin\pnpm.cmd" add https://github.com/nguyenduclong-ict/dsh-session-progress
macOS (Terminal)
cd "$HOME/Library/Application Support/dsh-desktop/harness/profiles/web"
"$HOME/Library/Application Support/dsh-desktop/harness/.desktop-bin/pnpm" add https://github.com/nguyenduclong-ict/dsh-session-progress
Linux (Terminal)
cd "$HOME/.config/dsh-desktop/harness/profiles/web"
"$HOME/.config/dsh-desktop/harness/.desktop-bin/pnpm" add https://github.com/nguyenduclong-ict/dsh-session-progress

Note: Restart DSH Desktop after installation to activate the plugin.


For DSH CLI (Standalone)

Run the following command in your terminal:

dsh plugin --profile web add https://github.com/nguyenduclong-ict/dsh-session-progress

Or install directly within your Cordis workspace profile:

pnpm add https://github.com/nguyenduclong-ict/dsh-session-progress

FAQ

Does the agent have to report a percentage? No. No tool call ever carries a number — the percentage follows the boxes, so re-weighting an item or ticking one updates the ring immediately.

Where is the progress stored? One JSON file per session in the system temp directory. Nothing is written into your repository, and that same file is what the panel reads back.

What happens to my v0.10.x Markdown progress file? It is migrated to the JSON schema the first time that session is read — checklist, weights and ticked boxes preserved.

Which DSH builds does it need? The right sidebar tab slots (rightbar.session, sidebar.right.pane.tab) must exist: DSH Desktop 0.9.0 or newer, or a DSH CLI/web build with the right sidebar. The composer trigger hides itself while there is no session to report on.


License

MIT © nguyenduclong-ict

内容来自项目 README(GitHub)↗

链接

同类插件

查看整个分类 →

社区评论

评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。