你已經可以用 Python 提交 DeepSeek Harness 任務,卻不確定是否要放棄 Web UI。
最快解法:先不要遷移關鍵流程。截至 2026 年 8 月 18 日,DeepSeek Harness Python SDK 已在 PyPI 以預發布版本提供;它的定位是讓 Python 程式透過 JSON-RPC 啟動受控執行時、提交任務並讀取會話結果,而不是取代 Web UI 或把 Agent 重寫成普通 Python 函式庫。現在適合隔離試驗與自動化原型,不適合未鎖版本、未設回退就替換生產工作流。可核對 PyPI 套件元資料 與 官方 Python SDK 教學。
這篇適合三類讀者:
- Python Agent 開發者:想從程式呼叫 DeepSeek Harness。
- 自動化工程師:需要結構化結果、通知流與會話生命週期控制。
- 技術負責人:要判斷這個預發布 SDK 是否值得進入團隊試點。
值班提醒: 官方儲存庫仍把 DeepSeek Harness 標為 developer preview,並明確警告可能出現相容性破壞變更。不要把「能安裝」當成「已經穩定」。詳見 官方儲存庫的開發者預覽聲明。
01 先看清楚:這不是另一個模型 API 包裝器
目前 PyPI 的套件名稱是 deepseek-harness-sdk,但 Python 匯入模組仍是 deepseek_harness。它會安裝同版本的 deepseek-harness-runtime-bin,再由 DeepSeekHarness 啟動一個以標準輸入輸出溝通的 JSON-RPC 執行時。官方說明也指出,預設啟動的是內置的 dsh-jsonrpc-agent,並透過 DSH_CORDIS_CONFIG 注入預設組合。
因此,這個 SDK 能帶來的變化不是「Python 取代 TypeScript」,而是多了一個編排層:
| 調用方式 | 適合的工作 | 你要承擔的控制責任 |
|---|---|---|
| Web UI | 互動式任務、人工審批、可視化觀察 | 操作者、瀏覽器工作階段、手動紀錄 |
dsh |
終端機操作、除錯、人工執行腳本 | Shell 環境、退出狀態、日誌保存 |
deepseek-harness-sdk |
Python 排程、批次任務、CI 原型 | 會話 ID、結果解析、重試與回退 |
| 低階 JSON-RPC | 自訂平台整合、事件級控制 | 協定相容、通知順序、執行時管理 |
你仍然要處理 API 金鑰、工作區權限、模型路由和執行時故障。SDK 只是讓這些控制點可以由 Python 統一管理。
02 Python 開發者先得到一條可編排入口
官方教學要求 Python 3.10 或更新版本,目前列出的執行平台包括 Linux x64、Linux arm64,以及 macOS 14 或更新版本的 arm64。教學同時說明,使用已發布套件時,目標主機不需要系統 Node.js;Node.js 主要留給從原始碼建置 runtime 或參與專案開發的人。相關條件可在 官方 Python SDK 教學的環境說明 中核對。
這對你有三個實際意義。
第一,你可以把 Agent 放入既有 Python 排程器、測試框架或內部服務,不必先建立一套新的 Web 操作流程。
第二,Python 程式取得的不只是文字回覆。官方 RunResult 包含 session_id、final_response、finish_reason、events、notifications 和 session_root。這些欄位足以支撐初步的任務狀態記錄與失敗分類。欄位定義可參考 PyPI 頁面的 SDK 使用說明。
第三,runtime 仍然是 Harness 的一部分。你的 Python 程式不是直接取代 Agent 核心,而是透過 JSON-RPC 驅動它。這意味著 Cordis 組合、工具權限和工作區邊界仍然決定實際風險。
03 Web UI 不必立即退場
Web UI 和 SDK 解決的是不同操作問題。Web UI 仍適合:
- 任務描述經常變動;
- 需要人工批准檔案修改或 Shell 指令;
- 你要即時看見 Agent 的工具呼叫;
- 排錯時需要保留視覺化流程。
Python SDK 則適合:
- 每次輸入格式相近的批次檢查;
- 由測試結果或 Issue 自動產生任務;
- 把
final_response寫入資料庫或 CI 報告; - 需要以 session ID 續跑或隔離不同工作。
可以用以下條件做選擇:
| 你的現況 | 建議行動 | 不要急著做的事 |
|---|---|---|
| 人工審批仍是必要步驟 | 繼續使用 Web UI | 不要硬改成無人值守 |
| 有重複任務,但仍需人工覆核 | 保留 Web UI,增加 SDK 輔助 | 不要刪除原有入口 |
| 任務、輸入、驗收都已固定 | 在隔離環境完全程式化 | 不要直接連到生產工作區 |
| 需要跨環境遠端持續執行 | 先評估宿主機與回退方案 | 不要只看 Python 安裝是否成功 |
換句話說,SDK 是增加第二條入口,不是要求你在 Web UI 與 Python 之間做立即性的二選一。
04 自動化工程師要先設計會話邊界
最容易被低估的不是 pip install,而是會話生命週期。
官方教學指出,DeepSeekHarness 會延遲啟動 runtime,並在 context manager 結束前重用該執行時。若你重用相同的 Harness 和 session ID,會保留由該會話擁有的 Bash 狀態,包括工作目錄、匯出的環境變數和 Shell 函式;若要建立獨立任務,就必須使用新的 session ID。
這裡有三個限制:
-
同一會話續跑,不等於重新開始。
第二次呼叫可能承接前一次的檔案狀態、Shell 狀態和對話脈絡。對除錯很有用,對平行批次任務卻可能造成污染。 -
根會話事件,不等於全部通知。
RunResult.events只包含根會話事件;如果你要追蹤子 Agent 或巢狀生命週期,應讀取notifications或使用on_notification。 -
final_response有明確活動區間。
Session.run()管理的是從提示進入 durable inbox 到整個 Agent 回到 idle 的活動區間。finish_reason可能是completed、max-tokens或error。它反映的是該區間的結束狀態,不是單純的 HTTP 成功或失敗。
如果你的系統只保存一段文字,日後很難回答「Agent 改了什麼」、「是哪個子 Agent 發出通知」或「這次是完成還是達到 Token 上限」。
05 Agent 團隊應從最小組合開始
官方 jsonrpc-agent 範例刻意移除終端介面、主控台記錄器、審批 UI 和使用者提問工具,讓標準輸出專門保留給 SDK 協定。示例提供 Bash、讀取、寫入、編輯、子 Agent 和待辦事項等能力;另一個 minimal 組合則使用持久 Bash 與檔案編輯工具。可先閱讀 官方 jsonrpc-agent 範例說明。
這代表你可以先從「只讀分析」開始,而不是一開始就讓 Agent 修改正式專案。
建議試點路徑如下:
第一步:固定版本與執行平台
在獨立 Python 虛擬環境安裝指定預發布版本。不要使用未鎖定的最新版標籤。記錄 Python 版本、作業系統、runtime wheel 和模型端點。
第二步:建立一次性工作區
使用測試倉庫、容器或可刪除副本。官方範例的檔案工具和 Bash 權限可能觸及 runtime 可見的路徑,不適合直接指向含有機密資料的工作目錄。
第三步:先做只讀任務
先驗收「列出專案結構、分析失敗測試、提出修改建議」。這能檢查 API 金鑰、模型路由、工作區和結果回傳,但不會把檔案修改風險一次引入。
第四步:再做可回復修改
把任務限定在測試分支或 disposable checkout。每次執行前記錄 Git 狀態,執行後比較 diff,並把 session_root 下的 JSONL 會話資料保存到獨立目錄。
第五步:驗證續跑與隔離
用相同 session ID 續跑一次,確認對話與 Shell 狀態是否符合預期;再用新的 session ID 執行另一個任務,確認兩者沒有互相讀取不應共享的狀態。
第六步:才評估自訂 Cordis 組合
當最小組合通過驗收後,再加入自訂工具、模型路由、壓縮策略或持久化設定。每加入一個插件,就新增一項回歸測試,不要把多個變更綁成一次升級。
06 平台團隊要評估的不是 Python,而是交付邊界
目前 runtime wheel 的設計降低了目標主機對系統 Node.js 的依賴。官方 runtime 文件指出,生產 carrier 是按平台與架構提供的單檔 Node 執行檔;macOS 還包括 node-pty 所需的 spawn helper。這不代表所有平台都自動可用,而是你仍要核對 wheel 是否涵蓋目標系統與架構。相關打包方式見 官方 SDK runtime 文件。
平台試點至少要記錄以下項目:
DEEPSEEK_API_KEY的注入方式;DEEPSEEK_BASE_URL是否指向官方端點或內部代理;DSH_MODEL、DSH_SYSTEM_PROMPT與模型路由來源;DSH_CWD和DSH_SESSION_ROOT的權限;- runtime wheel 與 Python SDK 是否同版本;
- 日誌目錄的保留、清理與存取權;
- runtime 無法啟動時,是否能回到原 Web UI 或腳本。
官方範例列出的 Bash timeout 是 300 秒、編輯器輸出上限是 16,000 個字元,而 minimal 組合預設不啟用 context compaction。這些不是抽象規格,而是會直接影響長任務、巨型 diff 和失敗重試的驗收條件。
如果團隊打算把試點放在遠端 Mac,先把宿主環境、登入方式、工作區清理和日誌保存寫進 runbook,再挑選適合的地區與交付方式。你可以參考 CALMVPS 的 Mac 雲端環境入口,確認測試主機如何配合會話目錄與回退方案。
07 生產運維者應採取鎖版本試點
截至 2026 年 8 月 18 日,PyPI 顯示最新發布為 0.1.0rc7,並將其標記為 pre-release;頁面明確說明該版本可能不適合生產使用。官方 Harness 儲存庫同日仍標示為 developer preview,並警告會有相容性破壞變更。正式穩定版時間、長期相容承諾和未來 API 形態目前都不能提前下結論。
你可以用這份清單判斷是否達到試點門檻:
- [ ] 已在獨立 Python 虛擬環境固定
deepseek-harness-sdk版本。 - [ ] 已確認目標平台屬於官方教學列出的支援範圍。
- [ ] 已使用可刪除工作區,不含正式金鑰與客戶資料。
- [ ] 已分別驗證相同 session ID 續跑、不同 session ID 隔離。
- [ ] 已保存
final_response、finish_reason、notifications和session_root。 - [ ] 已測試模型端點失敗、runtime 啟動失敗和任務超時。
- [ ] 已保留 Web UI 或原腳本作為回退路徑。
- [ ] 已為每個自訂 Cordis 組合建立最小回歸任務。
- [ ] 已指定誰負責 runtime、wheel 和環境變數更新。
如果以上有兩項以上無法完成,先不要把 SDK 接入關鍵 CI 或自動修改流程。
08 常見判斷集中處理
DeepSeek Harness Python SDK 的真正價值
它把 AI Agent 從「人手開啟介面」推進到「程式提交、會話追蹤、結果處理」。但它仍依賴 Harness runtime、Cordis 組合和工作區權限,所以不是一般的模型 Client。
Python SDK 與 Web UI 的選擇
需要視覺操作、人工批准和即時觀察時,Web UI 仍然更合適。需要排程、批次和結構化回傳時,Python SDK 更合適。兩者可以並存,遷移應該由任務穩定度決定,而不是由新套件的發布日期決定。
Node.js 是否仍是必要條件
對使用已發布 wheel 的目標主機,官方教學明確寫明不需要系統 Node.js。若你要自行建置 runtime,則屬於另一種交付路徑,不能用一般使用者的安裝結論代替。
會話記錄怎樣留存
官方範例使用 DSH_SESSION_ROOT 保存未壓縮 JSONL。這讓你能回看模型請求和工具呼叫,但也意味著記錄可能包含程式碼、路徑、環境資訊或敏感提示,必須納入權限與保留政策。
09 目前方案與 Mac 方案的差別
如果你把 SDK 直接放在個人工作站或臨時 Windows 主機上,常見缺點是:環境不長期在線、POSIX 工具鏈不一致、背景任務容易因登出或休眠中斷,還要自行處理版本、權限與檔案隔離。官方 minimal 組合也明確指出持久 PTY 需要 POSIX 環境,並不支援 Windows Agent 介面。
若你的目標是短期測試、遠端持續執行或需要固定的 macOS arm64 環境,先準備一個可控的 Mac 宿主環境,通常比在現有工作站上反覆修補執行環境更容易驗收。需要臨時算力或隔離測試時,才考慮租用 Mac;長期穩定重負載、需要實體介面或必須完全掌控硬體時,自購設備可能更合適。
在目前階段,最合理的動作是:鎖定版本,保留原流程,建立隔離工作區,完成只讀與可回復任務驗收。等穩定承諾和相容策略更清晰後,再決定是否擴大到團隊級自動化。若你要先規劃遠端 Mac 的工作區、連線方式與驗收流程,可先整理宿主環境、登入權限、工作區清理和日誌保留政策,再決定是否把試點放到長時間在線的執行環境。
最後更新於 2026 年 8 月 18 日;資料核實自 PyPI 發布歷史、官方 Python SDK 教學、官方 SDK runtime 文件、jsonrpc-agent 範例與 DeepSeek Harness 儲存庫。