前言¶
在 DeepSeek Harness(DSH)裏用智能體改代碼,常見結局是:對話可以歸檔或刪掉,但倉庫裏還有未提交改動、沒 push 的提交、臨時目錄裏本會話剛寫的文件,以及長會話是否該寫交接件——這些問題不會隨關窗口自動消失。手工逐倉 git status、翻會話長度,既慢也容易漏。
dsh-closeout 是維護者 xinming-chenniang 發佈的零依賴命令行工具,並附帶一套 skill。v0.5.0 起刻意分成兩個口徑:關本會話前先給「能否歸檔/刪除、該不該交接」的結論和清單;關整個 DSH 應用前再給「能否退出、下次能否正常啓動」的自檢。兩個口徑不合並,避免關會話時冒出進程、內存類噪聲。
本包自 2026-10-21 起不包含輸入框按鈕或收口面板 UI,相關交互拆到獨立插件 dsh-button;未安裝本包時 dsh-button 會降級提示。下面按資料說明定位、檢查項、安裝與典型用法。
這是什麼¶
dsh-closeout 在 npm 上包名爲 dsh-closeout,當前版本 0.7.0,許可證 MIT,要求 Node.js >= 18。它讀取 DSH 會話庫中的事件類型與時間戳(不讀對話正文),結合 git 狀態、臨時路徑與本會話工具調用裏出現過的倉庫,輸出三檔結論和可複製的處理提示;可選生成交接件骨架或收尾報告。
社區目錄分類爲「工作流」;倉庫地址:https://github.com/xinming-chenniang/dsh-closeout ,目錄頁:https://www.skillhub.cn/plugins/xinming-chenniang/dsh-closeout 。
兩個口徑分別解決什麼¶
| 子命令 | 回答的問題 | 建議運行時機 |
|---|---|---|
closeout(默認,等價 closeout session) |
這個會話能不能關、該不該寫交接件 | 歸檔或刪除一段對話之前 |
closeout app |
整個 DSH 能不能退、下次啓動會不會起不來 | 退出應用或重啓宿主之前 |
快速體驗可用 npx,中文輸出加 --zh:
npx dsh-closeout --zh # 關本會話:能不能歸檔/刪除、該不該交接
npx dsh-closeout app --zh # 關 DSH:能不能退、退之前確認什麼
會話口徑示例輸出會給出:結論(例如「可以歸檔;先別刪」)、該不該交接、必須處理項(髒倉、本會話寫的臨時文件等),以及未啓用 --local 時標明「沒查的」項。應用口徑會區分「必須處理」(如 profile bundle 斷裂)、「順手看一眼」(待重啓、最近仍在寫的會話、末尾未收口會話)和「不用管」(運行中進程統計等)。
口徑一:關本會話(closeout)¶
檢查範圍¶
資料中列出的主要檢查包括:
- 未提交改動:對
git status --porcelain結果拆分暫存/修改/未跟蹤;只統計本會話工具調用裏碰過的倉庫,其他會話留下的改動會明說不計入。 - 相對上游領先/落後:未 push 的提交結合提交時間是否落在本會話;behind 多爲提醒;未配置上游則記入「沒查的」。
- 臨時目錄中新文件:以本會話最早一條
turn/start爲窗口起點,路徑歸屬來自本會話工具參數;跳過常見構建/緩存目錄,列表有上限。 - 會話長度與收口:調用次數、跨天、
turn/end的 reason、goal blocked 等,主要影響「該不該交接」。 - 上下文佔用:可選
--token-threshold;默認只顯示佔用,不硬編碼閾值判交接。 - 交接件是否已有:掃描
handoffs/*.md,匹配原會話:session-…等規則。 - 本機側的門(可選):
--local <工作區>時調用工作區內的規則鎖、結構衛生、規則審計腳本;未給參數則不進這項。
工具有意不讀對話正文、不依賴 atime、也不替你提交或刪文件,只給判斷與可複製命令。
結論三檔(刪除門檻高於歸檔)¶
- 可以直接歸檔或刪除:無未落盤項且交接已齊。
- 可以歸檔;刪之前先寫交接件:該交接但交接件不存在(歸檔可逆,刪除不可逆)。
- 可以歸檔;先別刪:仍有髒倉、未推提交或本會話臨時文件等。
「該不該寫交接件」與工作區 tools/sessions-handoff.mjs 同源的五條判據一致,例如調用數超過 --threshold(默認 300)、末尾未 completed、goal blocked、跨自然日且未收口、或超過 --token-threshold 等;子會話與 0 調用會話有特殊處理規則。
交接件與收尾報告¶
工作區根目錄取「向上第一處有 handoffs/ 的目錄」,否則取最近一層含 AGENTS.md 或 .git 的目錄,避免在一次性 tmp/ 任務目錄裏跑出口徑錯誤的落盤路徑。v0.7 起一個工作區只產出一份文檔:
- 有
handoffs/:寫交接件(七節結構 +原會話:)到該臺賬;沒有本地臺賬時落到~/.dsh/handoffs/<工作區名>/。 - 沒有
handoffs/:默認 stdout 打出六節收尾報告;需要留檔再用--report-out。
常用命令:
closeout --zh --handoff --task 收尾工具 # 有 handoffs/ 的工作區 → 寫進臺賬
closeout --zh --handoff --task X --dry-run # 只打印
closeout --zh --report # 默認不寫盤
closeout --zh --report --report-out 收尾報告.md # 相對路徑按工作區根
默認不覆蓋已有交接文件;覆蓋需 --force。
口徑二:關 DSH(closeout app)¶
應用口徑關注下次能否正常啓動,而不是攔你結束當前運行態。典型檢查包括:DeepSeek Harness 進程與內存(僅報告)、pending-restart.json 待重啓標記、上次重啓結果、近期有寫入的會話與末尾未收口會話、profile 裏 bundle 與 dependencies/node_modules 是否可解析、dependencies 有而 bundles 無的依賴等。可選 --local 與會話口徑相同;後臺 jobs、終端、未回答審批等宿主內存態資料標明外部讀不到,需在 UI 自行確認。
結論同樣三檔:可直接退出、退出前確認若干件事、或先別退出(存在會導致下次起不來的必須處理項)。--handoff / --report 不在此口徑產出。
應用口徑目前無專用按鈕;dsh-button 面板命令固定爲會話側的 closeout --json --zh。要查退出應用前狀態,需在終端執行 closeout app --zh,或對 agent 明確說「準備關 DSH / 退出應用前查一下」(skill 第 5 步)。
安裝與啓用¶
CLI¶
# 臨時用一次(零安裝)
npx dsh-closeout --zh
# 全局裝命令
npm i -g dsh-closeout
closeout --zh
# 開發時鏈接本地副本
cd dsh-closeout && npm link
全局安裝後可直接使用 closeout 命令;行爲與 npx dsh-closeout 一致。
Skill¶
倉庫根目錄沒有 SKILL.md,技能文件在 skills/closeout/SKILL.md。DSH 只識別 ~/.dsh/skills/<名字>/SKILL.md 這一層路徑,資料建議複製該文件到 ~/.dsh/skills/closeout/,不要把整個倉庫誤放進 skills/ 根下。裝好後對 agent 說「收尾」「收口」或「關這個會話」會走同步(可選)→ 體檢 → 交接或報告流程;說「準備關 DSH」則觸發 closeout app。
插件通過 DSH 的 bundle 機制可掛載 cordis.patch.yml(見 package.json 的 dsh.bundle.patch);具體是否在個人 profile 裏啓用 bundle,以你本機 DSH 配置爲準。
典型用法¶
關當前會話(默認會話 id 來自 $DSH_SESSION_ID 或最近寫入的會話):
closeout --zh
closeout session --zh
closeout --repo ../api --repo ../web # 可重複指定倉庫
closeout --temp ./scratch --hours 6 # 臨時目錄與窗口
closeout --session <id>
closeout --token-threshold 150000 # 默認 0:只顯示不判
closeout --cwd D:\dsh
closeout --local D:\dsh # 額外跑工作區側檢查
退出 DSH 前:
closeout app --zh
資料中的「收尾」流程統一爲:① 收尾·同步(工作區 tools/dsh-sync.*,本工具只探測提示)→ ② 收尾·體檢(closeout --zh)→ ③ 交接或報告(二選一)→ ④ 退出 DSH(closeout app --zh)。舊稱「收口」對應體檢步驟,「收工」對應同步步驟。
觸發方式還包括:輸入框「收尾」按鈕提交文案由 agent 按 skill 執行;「收口」面板由宿主 spawn closeout --json --zh 只讀展示;終端與 CI 可直接調用上述命令。
適用場景與注意¶
適合在 DSH 中頻繁開長會話、多倉庫並行、或需要 handoffs 臺賬的團隊個人工作流:關會話前一次性看見「磁盤上還沒落地的部分」和「刪除是否比歸檔多一道交接門檻」。
使用時請注意:
- 工具以當前 DSH 進程與 shell 用戶權限讀 git、會話庫和
~/.dsh配置;安裝 npm 包或啓用 bundle 前,建議在 GitHub 閱讀源碼與 MIT 許可證。 - 未加
--local時,工作區自定義規則鎖等檢查不會執行,輸出裏的「沒查的」不等於沒問題。 - 社區插件目錄 skillhub.cn 爲獨立生態站點,與 DeepSeek / 幻方無官方從屬關係;星標與版本以倉庫與 npm 發佈爲準。
結尾¶
dsh-closeout 把「關 AI 編碼會話」和「關 DSH 應用」拆成兩條可復現的體檢命令,用會話事件與 git 事實給出歸檔/刪除/交接判斷,並可按工作區形態生成交接件或收尾報告。進一步說明見目錄頁 https://www.skillhub.cn/plugins/xinming-chenniang/dsh-closeout 與倉庫 https://github.com/xinming-chenniang/dsh-closeout 。