Preface¶
When coding or running workflows in DeepSeek Harness (DSH), the built-in todo_write binding is confined to a single agent session: it replaces the entire table, uses three states, and the plan vanishes when the session ends. To maintain the same task list across multiple machines or workspaces, or to allow humans and agents to co-edit the same records, todo lists need to be persisted outside the conversation, accompanied by a clear set of handover and closure rules. Below is an introduction to the community plugin dsh-global-todo (maintainer LUgABeEEE), categorized as a workflow. It uses a single JSON file to host the list and supports step plans, session read-back, and manual confirmation of “completion.”
What is this¶
dsh-global-todo is a cross-session todo plugin for DSH: you and the agent read and write the same JSON file together. With one click, you can hand over a specific todo (including steps) to a new session or an existing bound conversation. When an agent declares completion, the entry enters a pending review state, requiring manual confirmation or rejection before it is considered truly closed.
Comparison with the built-in todo_write as described in the README:
Built-in todo_write |
dsh-global-todo | |
|---|---|---|
| Ownership | Single agent session | Cross-session, cross-workspace, file held by you |
| Write Method | Full table replacement | Field-level updates, writable by both human and agent |
| Creation Time | Not recorded | createdAt, immutable, displayed in UI |
| Context | Title + Status | Description, documents, URLs, etc. |
| Handover | — | One-click: reuse bound session or start new session |
| Storage | Session event log | JSON file that can be cat‘d, diffed, and backed up |
The current package version is 0.12.13 (see repository package.json), licensed under MIT. The GitHub repository has approximately 3 stars and 2 forks (based on directory page clues).
Core Features¶
Single File JSON as the Entire List¶
The list is not buried in session logs. You can directly view, compare, commit to version control, or place it on a NAS or another machine.
Steps: Execution Plan within a Todo¶
A single todo supports a maximum of 20 steps, each with 200 characters (LIMITS defined in lib/model.js). Each step is { text, done }, representing checkable lines within the same work unit, not subtasks with independent IDs.
- Add row-by-row in the panel via “More fields → Steps”.
- Check steps in the details view; the list row displays e.g.,
steps 2/5. - During Hand-off, the dispatched prompt lists step numbers, with completed items prefixed by
[Done]. - Exports to Markdown as nested
- [ ]; imports can read them back.
Evidence Sentence (Evidence)¶
evidence stores the original quote captured when creating the todo (up to 300 characters). global_todo_capture requests this from the model, and global_todo_add can write it; details are displayed in In the author’s words as a quote block. Manually created todos lack this field. Markdown exports include Original Quote:.
One-Click Handover and Four Modes¶
Handover is not about pasting large blocks of instructions: the plugin checks the working directory and passes the todo’s steps as a numbered plan to the target session. The details panel allows viewing the bound session status and opening the conversation.
Session Read-back¶
When a handover is advanced in a different conversation, you can see “what it just said” without switching windows. GET /api/global-todo/session?id= returns alive, dir, and the tail of the last assistant message (bounded: approx. 200 sessions in memory, 400 chars per tail, sourced from assistant/message; not persisted to disk, lost upon Host restart). No tail indicates the current process has not seen speech from that session yet.
Pending Review: “Done” is a Declaration, Not the End¶
After an agent calls global_todo_done (or the watcher triggers on a clean turn), the record becomes done with review: { pending: true }. The list displays Needs review, and the top bar shows a Review count.
| Action | Effect |
|---|---|
| Confirm done | Keeps done, removes the pending flag, activity stream records the confirmer |
| Send back | Returns to open; clears doneAt and completion records; adds reopened activity; Title, description, steps, attachments, and progress notes are preserved |
Markdown Import and Export¶
JSON is the round-tripable authoritative format. Markdown facilitates human reading, diffing, and manual editing (manual edits to doing or cancelled in the list will become open upon import, as there is no “in progress” state).
Export example structure:
- [ ] Title
Priority: High · Due: 2026-10-21T18:00 · Tags: Release, Docs
Original Quote: ...
Description: First line
- [x] A step
- Export: More actions → Export Markdown, or
GET /export?format=md(grouped: Incomplete / Completed / Archived). - Import: More actions → Import (
.md), orPOST /import { markdown }; Markdown lacks IDs, so it will not overwrite existing records, always creating new ones.
Field labels are in Chinese (Priority / Due / Tags / Original Quote / Description / Attachments / #). Unparseable dates are discarded; lines without - [ ] will cause a rejection with a reason provided.
Weekly Report¶
More actions → This week (GET /report?days=7) derives “what was moved this week and whether it landed in files” based on completion records, without storing extra data. Fields include: finished, sessions, created, pendingReview, files (lists up to 12 paths, fileCount is the total). days greater than 90 is clamped to 90; missing or non-positive values default to 7 days.
Installation and Activation¶
Environment requirements (from README and package.json):
- DeepSeek Harness 0.2.x (
engines.dshis>=0.2.0-rc.1 <0.3.0, development and verification targeted0.2.1-rc.2; Host version mismatch will skip this bundle). - Node >=22.19.0.
Official installation command:
dsh plugin add dsh-global-todo
After installation, the global todo interface can be used in the DSH panel. The repository also provides a CLI: dsh-global-todo-doctor (npm run doctor / tools/doctor.mjs) for environment checks. For a shorter introduction, see the repository’s 5-minute quickstart and Chinese README.
Typical Usage (Reproducible Flow)¶
- Install Plugin (see command above), ensure Host version is within the
engines.dshrange. - Create or Capture Todo in Panel: Use the capture flow (
global_todo_capture/global_todo_add) if original quote evidence is needed; fill in steps, due dates, tags, etc. in “More fields”. - Handover Execution: Select the handover method in details (reuse bound session or new session), agent proceeds by numbered steps; view Session read-back in details if necessary.
- Agent Closure: Trigger
global_todo_doneupon completion; you Confirm done or Send back in Review. - Backup and Collaboration:
cat, diff, and git commit the JSON file; use Export Markdown for readable summaries and Import to batch add from Markdown.
The panel also supports inbox confirmation, due reminders, multi-select status, etc.; baseline screenshots for each state are in the repository’s docs/screenshots/.
Use Cases and Notes¶
Who it is for: Those who need to share the same todo list across multiple DSH sessions and workspaces; those who want agents to execute planned steps with mandatory human confirmation for “completion”; those who want to put lists into git/NAS and Markdown workflows.
Permissions and Security: The plugin runs with the current dsh process permissions and can read/write the JSON and related APIs you configure. Please read the GitHub source code and the MIT license before installation, and assess whether it is suitable for production use yourself.
Ecosystem Note: The DSH community plugin catalog (e.g., the entry on SkillHub) is an independent site with no official affiliation with DeepSeek / High-Flyer; installation sources should adhere to the commands given in the README. Do not construct installation URLs that do not appear in the documentation yourself.
Conclusion¶
dsh-global-todo transforms todos from “temporary plans in a single session” into “a JSON file you own,” addressing common gaps in human-agent collaboration through step planning, one-click handover, session read-back, and pending review closure. To learn more, visit the plugin’s Catalog Page, Project Homepage, and GitHub Repository.