無頭跑 DeepSeek Harness:--json 與會話續跑
Headless · --json · --session-id · CI
dsh --profile headless 不開埠。stdout 留給 --json,未知 session id 直接失敗,多輪工作拆成多次執行。
DeepSeek Harness headless 不是 Web UI
DeepSeek Harness headless 回答的問題和 npx @deepseek-ai/dsh web 不一樣。Web 會起本機介面——常見是 http://127.0.0.1:3080/——一直掛著直到你停掉。Headless 一次只跑一個任務,打出答案就結束。它不監聽埠,也不在背景留服務。這是腳本和 CI 的面,不是第一次點點看評估的面。
上游文件寫的是 dsh --profile headless。從已發布的套件出發,同一形狀是 npx @deepseek-ai/dsh --profile headless "run the tests"。釘住你核對過的版本——2026 年 9 月 28 日 npm latest 仍是 Pre-release RC——Node 和憑證仍看 安裝清單。產品是什麼,仍看 DeepSeek Harness 是什麼。瀏覽器第一小時仍看 npx 快速開始。
若 headless 套件 README 和本頁衝突,以 README 為準。
一個任務,然後結束
sh
npx @deepseek-ai/dsh --profile headless "列出頂層檔案,並引用 README 的第一個標題"
預設模式把最終答案打到 stdout。非空的推理增量打到 stderr,帶 dsh: reasoning: 標題。結束碼 0 表示完成了最終一輪;1 表示中止、出錯,或沒有可用的一輪。輪次外的失敗還會在 stderr 打 dsh: 行。
省略位置參數,或傳入單獨的 -,可以從 stdin 餵任務:
sh
{ echo "Summarize these changes:"; git diff --stat; } | npx @deepseek-ai/dsh --profile headless
空白的位置參數本身就是用法錯誤,即便管子裡有資料也不會靜默吞掉 stdin。把 - 和其他任務詞混在一起也是用法錯誤。dsh --profile headless --help 只印說明,不跑任務。
這仍是一次一發。同一次行程裡沒有互動續聊。多步工作拆成多次執行,或用下面的 --session-id 續。
--json 是機器通道,不是 Trajectory
--json 用換行分隔的 JSON 事件流替換 stdout 上的最終答案行。stderr 只留 dsh: 診斷。流以 session(這次用的身分)開頭,以 final 結束。中間可能有 status、text、thinking、tool_call、tool_result。
把它當成給監督行程看的投影,不是無損會話日誌。除終結的 final 外,字串有上限(上游寫明約 8 KiB,並帶 truncated)。失敗之後打開的持久日誌,仍走 Trajectory——怎麼讀 Trajectory 日誌 與 可觀測性入門。
格式正確的流仍可能描述一次失敗:輪次內失敗可以以 final(常常是空的)結束,並且沒有 error 事件。信 結束碼 1 和輪次結束原因。runner 在輪次外拋出的失敗會寫 error,並且沒有 final。
--session-id 拒絕默默開空歷史
每次執行預設產生新的 session-… 身分。開了 --json 時,這個 id 出現在開頭的 session 事件裡——和你啟動時的 cwd 一起記下。之後用 --session-id 續那一次對話。
未知 id 會在任務開始前直接失敗。它不會發明一份空歷史。續跑還會拒絕:記在不同工作目錄下的會話、子代理或分叉、缺少 cwd、本行程裡已有 Agent 佔著這個 id、或 headless 設定組合不了的預設。這些拒絕就是目的:CI 不該靜默開別人的對話。
從同一份可丟棄目錄續跑。若 Node 或 npx 本身起不來,仍看 npx 與埠 3080——headless 不用 3080,但壞掉的 Node 是同一道門檻。
十分鐘核對
1. 憑證和預設模型按 Web 同一套確認。Headless 不會另編一套鑑權故事。
2. 先不帶 --json 跑一個無聊任務。預期 stdout 有文字、結束碼 0。
3. 再帶 --json 跑一次。留下開頭的 session id 和啟動 cwd。
4. 在同一目錄用 --session-id 續一次。先 cd 到別處,應被拒絕。
5. 用 stdin 餵一段短任務。確認空白位置參數不會偷走那根管子。
6. CI 裡:結束碼為 0,且若用了 --json,流以 final 結束、沒有輪次外的 error,才算接受。
7. 推理裡可能帶敏感路徑時,別把 stderr 丟進共用日誌。自己改路由。
本文不是什麼
- 不是第二篇 Web 快速開始——仍看 npx 快速開始。
- 不是 0.1.7 RC 功能清單——0.1.7 RC 操作核對。
- 不是 Computer Use 或 SSH 遠端工作區教學。
- 不是在說 headless 已經生產認證。上游仍明確預覽會破相容。
接下來去哪
1. 約定與開關:你釘住的標籤上的 headless README。
2. 瀏覽器第一小時:安裝 → npx 快速開始。
3. 跑失敗之後:怎麼讀 Trajectory 日誌。
相關文章
- 2026-10-09 macOS 上跑 DeepSeek Harness:Homebrew、PATH 與完全磁碟存取 命令和其他系統一樣是 npx——Mac 上真正容易踩的是哪個 node 在 PATH、TCC 彈窗,以及第一天別開完全磁碟存取。
- 2026-09-28 DeepSeek Harness 0.1.7 RC 操作核對 v0.1.7-rc.2 仍是 Pre-release。定時任務預設關,會話日誌升到 V4,PTC 套件名改為 ptc-runtime。
- 2026-09-23 怎麼讀 DeepSeek Harness 的 Trajectory 日誌 先讀 cwd 與 agentPreset,再找沒有 tool/result 的那條 tool/call。
在入口站繼續
讀完後可前往安裝、教學與外掛目錄,完成評估閉環。