前言¶
在 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: