前言¶
在 DeepSeek Harness(DSH)里,批准(approval/request)和向用户提问(user-questions/request)都必须等人回应。用户一旦暂离界面,会话往往长时间挂在这两类交互上;即使用户已经离线,Host 侧仍可能反复等待。被超时或策略最终拒绝的交互,若只返回一条拒绝说明,用户事后很难集中复核,AI 也缺少「用户补批后再续办」的固定入口。
社区插件 dsh-user-attention-and-todo-inbox(维护者 DX12xyz,分类:工作流,MIT,当前 bundle 版本 1.5.0)把「用户是否在界面旁」做成可门控的三态,并把被最终拒绝的批准/提问收进持久化待办收件箱,供右栏复核后由 AI 通过 todo_list / todo_get / todo_execute 一次性续办。目录页:https://www.skillhub.cn/plugins/DX12xyz/dsh-user-attention-and-todo-inbox。
这是什么¶
一张插件卡下有两个可独立开关的组件包,没有共享模块,关掉其中一个另一个仍可单独加载:
| 组件 | Loader 行 | 包名 | 职责 |
|---|---|---|---|
| 用户注意力 | user-attention |
@local/dsh-user-attention-core |
online / away / offline 状态机;对批准与提问做门控、暂离多轮提醒、最终拒绝;提供 userAttention 服务 |
| 待办收件箱 | todo-inbox |
@local/dsh-todo-inbox |
收下被最终拒绝的交互;右栏待办页与三个 AI 工具;todoInbox 服务 |
仓库根目录即 bundle 包 @local/dsh-user-attention-and-todo-inbox;两个组件通过 bundledDependencies 随 bundle 分发,根目录 npm pack 可产出单个自包含 tgz。技术细节见仓库内 TECHDOC.md。
核心功能¶
人类交互门控¶
- 在线:批准与提问按 DSH 默认流程呈现。
- 暂离:对
approval/request、user-questions/request按配置多轮提醒(等待间隔次数为awayRetryCount + 1);重试耗尽后按approvalTimeoutAction/questionTimeoutAction做最终拒绝,策略为reject或enqueue。 - 离线:立即拒绝,不呈现、不提醒、不重试。
当策略为 enqueue 且待办组件可用时,最终拒绝与入队同时发生:交互在拒绝的同时写入待办收件箱,模型侧说明会追加提示——已进待办,用户批准/回答后应调用 todo_execute,不要自行重试。
仅启用用户注意力、关闭待办时:门控照常,但 enqueue 不生效,设置页不显示自动入队相关选项。
待办收件箱与 AI 工具¶
todo_list:列出当前会话(或按工具参数)待办。todo_get:查看单条详情。todo_execute:在用户于右栏完成复核后,由 AI 执行批准或取回答案;支持批量,一次最多 10 条,默认串行,首个失败即停。
一次性授权:todo_execute 执行前通过 registerGrant(callId, todoId, sessionId) 登记 grant;门控侧 takeApprovalGrant(callId) 命中后对本次新 callId 直接放行(allowed-once),不再弹出第二张审批卡;TTL 5 分钟,取出即删。
界面与配置要点¶
- 输入框下方状态胶囊:在线/暂离/离线、手动标记、暂离倒计时,可点击切换。
- 暂离重试与最终拒绝时页面顶层提醒条(含提示音)。
- 输入框上方待办高亮条;右侧栏待办页分「待审核 / 已操作 / 失败 / 历史」,四个分段共用「本会话 / 全部会话」作用域。
- 插件卡详情合并设置页:自动入队、批准/提问超时策略、优先推荐;待办可用且自动入队开启时可见「释放并删除待办缓存」(对应
POST /api/todo-inbox/purge)。
常用配置(bundle 补丁默认值,保存后写入 profile 覆盖层;Loader 对 config 为整体替换,覆盖块须写全该行字段):
| 设置 | 行 | 补丁默认 | 说明 |
|---|---|---|---|
| 自动入队 | user-attention.todoAutoEnqueue |
开 | 关则超时不再入队 |
| 批准超时 | user-attention.approvalTimeoutAction |
enqueue |
reject / enqueue |
| 提问超时 | user-attention.questionTimeoutAction |
enqueue |
reject / enqueue |
| 优先推荐 | user-attention.preferRecommended |
关 | 识别 (Recommended) / (推荐) 时按推荐项回答 |
| 空闲判定 | user-attention.idleTimeoutMs |
300000 |
毫秒,判定暂离 |
| 暂离重试 | user-attention.awayRetryCount |
5 |
0–5 |
| 轮询间隔 | todo-inbox.pollIntervalMs |
2000 |
待办 Client 轮询 |
| 待办上限 | todo-inbox.maxTodos |
200 |
超出后不再自动入队 |
持久化路径(Host):$DSH_HOME/.user-attention/state.json、$DSH_HOME/.dsh-todo-inbox/state.json,只读历史 $DSH_HOME/.dsh-todo-inbox/history.json。
安装与启用¶
装完后刷新页面(Client 模块在重载后生效);首次安装或新增 Loader 行需重启一次 DSH。下文以 Web profile(web)为例。
方式一(推荐):DSH 插件页 →「安装插件」,安装源填 https://github.com/DX12xyz/dsh-user-attention-and-todo-inbox,或 git 简写 github:DX12xyz/dsh-user-attention-and-todo-inbox,按提示重启/刷新。
方式二:命令行从 git 源安装
dsh plugin --profile web add github:DX12xyz/dsh-user-attention-and-todo-inbox
方式三:本地目录(改代码或离线目录树):
dsh plugin --profile web add "link:<仓库根目录绝对路径>"
方式四:离线 tgz(在仓库根执行 npm pack,再安装产出文件):
cd <仓库根目录>
npm pack
dsh plugin --profile web add "file:<仓库根目录>/local-dsh-user-attention-and-todo-inbox-1.5.0.tgz"
卸载:
dsh plugin --profile web remove @local/dsh-user-attention-and-todo-inbox
卸载后若 profile 的 cordis.patch.yml 仍残留 - id: user-attention 或 - id: todo-inbox 覆盖行,Loader 会报找不到包并跳过,建议手动删除这些行。
典型用法¶
- 按上一节安装并刷新;确认插件列表出现一张插件卡、其下
user-attention与todo-inbox两行可独立开关,且输入框下方出现状态胶囊。 - 用户暂离时,AI 发起的批准/提问经门控提醒;耗尽后若配置为
enqueue,条目进入右栏「待审核」。 - 用户在待办页批准、拒绝或回答;需要 AI 续办时,在来源会话让模型调用
todo_list/todo_get了解队列,再在用户完成复核后调用todo_execute(批量 ≤10)。 - 在合并设置页调整超时策略、自动入队与优先推荐;仅改待办行
pollIntervalMs、maxTodos时,可改 profile 补丁或调POST /api/todo-inbox/config(待办行字段暂无合并设置页 UI)。
适用场景与注意¶
适合:长时间开着 DSH Web 界面、会话里频繁出现批准与提问;希望暂离/离线时有确定拒绝结果,而不是无限等待;希望超时拒绝的交互可集中复核,并由 AI 在一次性授权下续办。
注意:
- 插件 Host 半身以当前 DSH 进程权限运行,安装前请阅读源码与 MIT 许可证,并理解上述数据文件落盘位置。
- 社区目录 skillhub.cn 为独立站点,与 DeepSeek / 幻方无官方从属关系;DSH 生态遵循「一切皆插件」,本 bundle 是社区工作流类扩展,非官方应用商店预装项。
- 只开待办、关注意力时,待办仍可工作,bundle 设置页顶部会有橙色说明;只开注意力、关待办时无待办消费者,
enqueue策略无效。
结尾¶
用户注意力与待办收件箱把「人在不在」变成三态门控,并把最终拒绝的人类交互收进可复核队列,补齐 DSH 里「等人回话」与「事后续办」之间的缺口。进一步了解实现与 API 见 GitHub 仓库 README 与 TECHDOC: