dsh-global-todo
キュレーションリスト掲載メンテナンス: 活発lugabeeee/dsh-global-todo
Cross-session todo list for DeepSeek Harness: one JSON file a person and an agent both write to, with step plans that ship as a numbered hand-off, session read-back, and a human confirmation before an agent says done.
$ dsh plugin add dsh-global-todo11
スター
5
フォーク
JavaScript
言語
MIT
ライセンス
2026-10-14
作成日
2026-11-04
最終プッシュ
README
中文 · English
dsh-global-todo · 全局待办
一份跨会话的待办清单:一个属于你的文件,你和 Agent 读写同一份,一键交给某个对话继续干。
三件会话级计划做不到的事——第一件是这个插件最要紧的一条:
- Agent 说「做完了」不算数,两个入口都只是声明。它自己在工具里报完成是一种,交给的会话干净收尾、 宿主替它收尾是另一种;两条路都只把记录送进待确认。人点「确认完成」才算完成,点「退回清单」 就回到清单里、完成记录一并清掉。会话级计划没人问这一句:Agent 把表一改,事情就算结束了。
- 一个 JSON 文件就是全部。能
cat、能 diff、能提交进仓库、能放 NAS、换机带走——不藏在任何会话日志里。 - 交接是一个按钮,不是一段话。四种模式、会先检查工作目录,待办自己的步骤会作为编号计划一起交出去。

dsh plugin add dsh-global-todo
在线主页(22 秒排版演示)· English · 5 分钟上手 · 常见问题 · 每个条件状态都有基线图 · 设计说明 · 交给 Superagent
它补的是哪个缺口
DSH 自带的 todo_write 属于某一个 agent 会话:整表替换、三个状态、会话一关计划就翻篇。
社区里解决这件事的插件分成两派:一派擅长把活派给 Agent(自动续跑、绑定会话),
一派能收真正的文档附件。这个插件把两件事放在同一条记录上:
自带 todo_write |
dsh-global-todo | |
|---|---|---|
| 归属 | 一个 agent 会话 | 你——跨会话、跨工作区 |
| 写入方式 | 整表替换 | 逐字段,人和 Agent 都能写 |
| 加入时间 | 不记录 | createdAt 只写一次,处处可见 |
| 上下文 | 标题 + 状态 | 描述 + 文档与地址 |
| 交给 Agent | 无 | 一键:复用已绑定会话,或新开一个 |
| 标成完成 | Agent 改了就算 | 进「待确认」,人点头才算完成 |
| 存储 | 会话事件日志 | 一个 JSON 文件,能 cat、能手改、能 diff、能备份 |
完成确认:没有一条记录能自己变成「完成」
这是它最容易被记住的一条,也是它和所有「让 Agent 自己报进度」的清单最不一样的地方:
Agent 说「做完了」,只是它说了这句话。 记录写完是 done,同时带上
review: { pending: true };行上有「待确认」徽标,顶部有带计数的筛选,直到人回答为止。
两个入口都受同一条规则管,因为它们同样只是声明:
| 「做完了」从哪来 | 记录变成 | 谁来回答 |
|---|---|---|
Agent 调 global_todo_done,或把状态改成 done |
done + 待确认 |
人 |
交给的会话干净收尾,宿主自动收尾(turn/end 是 completed) |
done + 待确认 |
人 |
| 你自己在面板里点完成 | done |
已经是人 |
- 回答只有两个:「确认完成」清掉标记,动态里记下是谁确认的;「退回清单」回到
open, 清空doneAt与完成记录,动态里加一条reopened。标题、描述、步骤、附件、进展一条不删。 - 自动收尾也走这个门。宿主替 Agent 写的那份完成记录本来就更薄——只有最后一段回复和这一轮 改过的文件——它更没理由自己算数。
- 只有干净收尾才是候选:
error、aborted、interrupted、max-tokens一律留着未完成。 一轮失败的任务挂着「完成」标签,是让整份清单不可信的唯一起点。
规则在代码里只有一个实现:completeTodo、applyPatch 和状态改写共用 lib/model.js 里那个
by === 'agent' 判断,面板和十一个工具都走它。
0.9 / 0.10 补了什么(以及再往前两版)
五件这两份 README 一直没讲的能力:会话回读与原话是 0.9 的,Markdown 与本周报告是 0.10 的, 步骤是 0.8 的。每一个都改变了记录能装什么,或者改变了事后能拿它做什么。 (还有一件是 0.7 的「待确认」,它现在就是开头那条规则,不在这里当新功能讲。)
步骤:待办里的一份计划
一条待办最多 20 个步骤、每步 200 字(lib/model.js 的 LIMITS)。步骤是 { text, done }——
一条工作里的一行,不是有自己 id 和状态的子任务。
- 加:新增表单的「更多字段」→ 步骤,一行一步。
- 勾:详情里每步一个勾选框;行上显示「步骤 2/5」。
- 交出去:派发提示词会把步骤编号,已完成的加
[已完成]前缀。 - 导出:Markdown 里写成缩进的
- [ ],导入时读回来。
原话:这条是从哪句话来的
evidence 是抓取时那条待办来自的原话,逐字引用,最多 300 字。global_todo_capture 会向模型要它,
global_todo_add 也收,详情里以引用块显示在「原话」下面;你自己敲的条目没有这一项。
它只为一件事存在:没有出处的一次抓取,过几天看起来就像一句观点。Markdown 导出里也有这一行(原话:)。
会话回读
派发是在另一个对话里开工,所以详情要能回答「它说了什么」,不用切过去。
GET /api/global-todo/session?id= 返回 alive、dir 和最后一条 assistant 消息的 tail;
详情里就是「会话回读」:在跑 / 已休眠、最后一句,以及一个打开该对话的按钮。
tail 有上限、只在内存里:200 个会话、每个 400 字,来自每条 assistant/message。不落盘,宿主一重启就忘。
查不到 tail 是正常情况——这个进程没见那个对话说过话。
Markdown 进与出
JSON 导出是往返格式;Markdown 是拿来读、diff、手改的那份:
- [ ] 标题
优先级: 高 · 截止: 2026-10-21T18:00 · 标签: 发布, 文档
原话: …
描述: 第一行
- [x] 一步
| 方向 | 入口 | 行为 |
|---|---|---|
| 出 | 更多操作 → 导出 Markdown,或 GET /export?format=md |
按「未完成 / 已完成 / 已归档」分组,元数据缩进在每条下面 |
| 入 | 更多操作 → 导入(选 .md),或 POST /import { markdown } |
走正常 create 新建;Markdown 没有 id,所以永远不会覆盖已有记录 |
解析是容错的:不认识的行直接忽略,日期解析失败就丢掉那一项,整份文件里没有一行 - [ ] 会明确报错。
字段标注固定是中文(优先级 / 截止 / 标签 / 原话 / 描述 / 附件 / #),导入按同一套读。
本周报告
更多操作 → 本周报告(GET /report?days=7)回答「这一周动了什么、有没有落到代码上」。
全部从完成记录推出来,不存任何东西。
| 字段 | 含义 |
|---|---|
finished |
窗口内完成的条目,最新在前,带完成者和说明 |
sessions |
这些完成来自多少个不同的对话 |
created |
窗口内新增的条数 |
pendingReview |
已完成但还没人回答的条数 |
files |
触及的文件,按次数排序——列 12 个,fileCount 是总数 |
days 超过 90 会被压到 90;缺省或非正数按 7 算。
截图




每个「只在特定情况下出现」的面板状态都有一张固定基线图,由同一套预览渲染、同一支工具拍摄,改样式时可以直接对比:
| 状态 | 图片 |
|---|---|
| 清单为空 | panel-empty.png |
| 筛选无结果 | panel-filtered.png |
| 收件箱(待确认) | panel-inbox.png |
| 待确认(Agent 完成) | panel-review.png |
| 到点提醒 | panel-reminders.png |
| 批量选择 | panel-select.png |
图都由 npm run screenshots(内部串起 npm run preview)生成:先把真实的客户端半区渲染成静态
HTML(不依赖宿主、零依赖),再以 1280×720 拍进 docs/screenshots/。Playwright 不是依赖——工具
借的是 DSH profile 里已经装好的那份,或 DSH_PLAYWRIGHT 指向的那份。
手机档同一支工具拍:npm run screenshots:mobile 先按 390×844 渲染同一棵组件(夹具会把面板的
实测宽度答成 390,所以窄屏分支是真的被执行,不是把桌面布局缩小),再拍进 docs/screenshots/mobile/。
每张图显示什么状态、什么时候重新生成,见 docs/screenshots/README.md。
环境要求
エージェント・自動化・ワークフロー の他のプラグイン
archify
by tt-a1i
Turn any idea, plan, or codebase into a beautiful interactive diagram. An agent skill for Claude Code, Codex, and more.
openviking
by volcengine
Self-evolving Context Database for AI Agents. Unify Agent Memory, Knowledge RAG and Skills.
learn-harness-engineering
by walkinglabs
Harness engineering beginner tutorial, from 0 to 1
browserskill
by tencent
Let AI agents use your real, logged-in browser without interrupting your work. CLI + extension for browser automation across any shell-capable AI agent.
