前言¶
DeepSeek Harness(DSH)的默認 PTC 模式每次執行都會從新環境開始,模型需要重新發送準備代碼,這導致在連續對話中效率較低。dsh-ptc-plus 插件爲 PTC 模式提供了會話綁定的原生平替 REPL,它保留會話中的變量、函數、導入和結果,使後續調用可以直接複用狀態。
安裝與啓用¶
該插件依賴 Node.js ^22.19.0 || >=24.0.0 和支持 TypeScript PTC 模式的官方 DSH。
安裝到指定的 profile 後,重啓 DSH 並選擇 PTC 模式即可使用:
dsh plugin --profile <profile> add dsh-ptc-plus
核心功能¶
該插件主要解決 PTC 模式下狀態隔離帶來的重複勞動問題,並提供代碼編輯與工具擴展能力。
- 狀態跨調用:保留會話中的變量、函數、導入和結果,讓模型在後續調用中直接複用上一次的計算狀態。
- 代碼修訂:通過
edit_run_code接口僅提交修改內容,插件會重新執行完整的 cell,無需重新發送整段代碼。 - 模塊語法支持:支持靜態
import、export語法,允許在 cell 中直接編寫模塊代碼。 - 特殊值保留:能夠保留
undefined、BigInt以及循環引用等 JSON 無法完整表達的值。 - 工具查找與說明:允許在代碼中查找可用工具,並查看參數說明。
- 自動摘要補充:自動補充
run_code.description摘要,避免因缺少摘要導致的校驗失敗。 - 自動轉換工具調用:當模型發出合法的頂層工具調用時,插件會自動將其轉換爲
run_code執行。 - 路徑解析:按會話記錄的項目目錄解析文件路徑、模塊和默認子進程目錄。
- 源碼定位:將執行錯誤對應到 cell 源碼位置,並在末尾缺少閉合符等特定情況下給出編輯建議。
- 界面展示:在 REPL 頁籤展示保留的變量、定義來源和有界值預覽。
- 綁定草稿:使用
/binding編寫草稿,在輸入框上方審閱後保存,啓用後可跨會話使用。 - 工作臺:在工作臺運行未保存源碼,擁有獨立的臨時狀態,與 Agent 會話狀態分開。
- 狀態恢復:從會話記錄恢復可驗證的狀態,用於跨重啓的連續開發。
典型用法¶
複用計算狀態
在第一次調用中讀取文件並解析依賴:
import { readFile } from 'node:fs/promises';
const manifest = JSON.parse(await readFile('package.json', 'utf8'));
return manifest.dependencies;
在後續調用中直接複用 manifest 變量,無需重新發送讀取代碼:
return Object.keys(manifest.dependencies);
修訂代碼
當需要修改一處錯誤時,只需提交修改內容:
edit_run_code({ edits: [{ old_string: 'deps.length', new_string: 'deps' }] })
編寫綁定草稿
使用 /binding 命令編寫草稿,在輸入框上方預覽並保存:
/binding new 創建 textTools,清理文本首尾空白,保留內部空格
適用場景與注意¶
適用場景
適合需要連續編寫和調試代碼的開發者,特別是使用模塊化語法、需要處理特殊 JavaScript 值或頻繁修正代碼的場景。
注意事項
1. 權限要求:該插件面向 danger-full-access 設計,代碼可直接訪問 Node.js 與操作系統,插件不另加沙箱。僅在可接受此權限的環境中使用。
2. 社區性質:這是社區插件,與 DeepSeek 或 DSH 無隸屬、無背書。
3. 恢復限制:無法保證所有狀態都能跨重啓恢復,恢復不會重做或撤銷歷史外部操作。
4. 預覽限制:值預覽有大小和類型限制,無法可靠讀取的對象會顯示“不可讀取”。
5. 初始化狀態:綁定的啓用配置不等於初始化一定成功,具體失敗會在執行結果中說明。
總結¶
dsh-ptc-plus 通過提供會話綁定的原生平替 REPL,顯著提升了 DSH PTC 模式下的開發連續性和代碼調試效率。開發者可以在同一會話中保持狀態,利用編輯接口快速修正錯誤,並利用綁定草稿功能管理可複用的代碼片段。