前言¶
用 DeepSeek Harness(DSH)做開發,常遇到兩種交替出現的需求:有時希望智能體自己查資料、改文件、跑命令,完整走一遍 agent 循環;有時只想要一段簡潔回答,控制權留在自己手裏。
改 agent preset 可以改變行爲,但那是會話級的替換,會話進行到一半並不合適。dsh-autonomy 補的就是這個缺口:它改變的是當前會話的自主級別,而不替換會話的 model、preset、history、sandbox 或 permission policy。DSH 生態的思路是「一切皆插件」,這個能力也是以插件形式接入的。
下面介紹這個插件的安裝、用法與邊界。
這是什麼¶
dsh-autonomy 是由 JinkaiLiu 維護的 DSH 插件,許可證爲 MIT,package 當前版本爲 0.1.2。一句話定位:不離開當前 DeepSeek Harness 會話,在 Chat 與 Agent 兩種模式之間切換。
包內含一個 DSH host plugin 和一個瀏覽器 client bundle(web 平臺,注入 @deepseek-ai/dsh-client-ui-conversation),通過 dsh plugin 命令一次性添加到指定 profile。
核心功能¶
常駐切換控件:在 Web composer 上方的專用行提供常駐的 Chat | Agent 控件,不覆蓋文本輸入區,也不佔用 composer 工具行的空間。
狀態跟隨會話:模式選擇綁定當前會話,重載、恢復後保持,並通過持久會話日誌跟隨 fork。
Chat 模式三層防護:
- 限制智能體繼承到的工具面;
- 移除最終模型請求中的全部工具 schema,包括保留的 Code Mode transport;
- 對未通告或來自記憶的工具調用做執行守衛。
Chat 模式還會附加一段簡短系統指令,讓模型直接以文本作答,需要執行時提示用戶切換到 Agent。由於請求中不帶工具 schema、執行門再攔一層,這個模式可以降低意外 token 消耗。
Agent 模式還原:切回後恢復原始 DSH 工具集與執行策略。
切換即時生效:每次有效切換(包括進行中的 turn 期間)都會即時寫入 DSH 內置命令日誌。這條記錄既驅動 UI 狀態,也即時改變策略門控,不用等下一次模型調用。
命令入口:提供 /autonomy chat 與 /autonomy agent 兩個命令。
安裝與啓用¶
運行環境要求 Node.js ^22.19.0 或 >=24.0.0。版本兼容方面,已發佈的 0.1.1 支持 DSH 0.1.0-rc.6+ 與 0.1.1-rc.1+ API 家族;當前開發線額外支持重新設計的 0.1.2 家族,並經 0.1.2-alpha.5 與 0.1.2-rc.1 驗證。
先確認 DSH CLI 可用,不需要全局安裝:
npx @deepseek-ai/dsh --version
從 npm 安裝並啓動:
npx @deepseek-ai/dsh plugin --profile web add dsh-autonomy
npx @deepseek-ai/dsh web
如果安裝時 DSH Web 已在運行,需要用 Ctrl+C 停止後重啓,現有進程不會熱加載新裝的插件。默認端口被佔用時,可以停掉舊進程,或換個端口啓動:
npx @deepseek-ai/dsh web --port 3081
從本地 checkout 安裝時,先構建再以絕對路徑添加:
pnpm install
pnpm run build
npx @deepseek-ai/dsh plugin --profile web add /absolute/path/to/dsh-autonomy
npx @deepseek-ai/dsh web
注意:從 GitHub 源安裝,需要在對應 profile 裏允許該包的 prepare 構建腳本後重試;npm 發佈版或打包 tarball 自帶構建產物,不需要安裝期構建權限。
卸載時從同一 profile 移除,再重啓 DSH Web:
npx @deepseek-ai/dsh plugin --profile web remove dsh-autonomy
npx @deepseek-ai/dsh web
插件不保留獨立的數據庫或配置目錄。移除後,歷史 /autonomy 記錄仍留在會話日誌中,但不再生效。
典型用法¶
兩種切換方式:點擊 composer 上方的 Chat 或 Agent 按鈕;或者運行命令:
/autonomy chat
/autonomy agent
需要調整默認行爲時,在 profile 的 cordis.patch.yml 中覆蓋 id 爲 autonomy 的配置項:
- id: autonomy
config:
defaultMode: agent
chatGuidance: >-
You are in Chat mode. Answer directly in text. Do not use tools or take actions.
Ask the user to switch to Agent mode when the request requires execution.
denyMessage: >-
Chat mode does not allow tool execution. Switch to Agent mode to use tools.
defaultMode 默認爲 agent,chatGuidance 與 denyMessage 的默認措辭與上面示例等價。
想參與開發的話,倉庫提供兩個檢查腳本:
pnpm run check
pnpm run pack:check
適用場景與注意¶
適合的人羣:經常需要在同一個會話裏,於「讓智能體幹活」和「只要一個回答」之間來回切換的開發者;尤其是希望壓低意外 token 消耗、又不想重建會話上下文的情況。
幾個邊界需要提前知道:
- 切到 Chat 只阻止尚未通過執行門的工具調用,不會取消已運行的工具體,也不會回滾之前的副作用。想讓當前操作跑完,不需要任何動作;要取消當前 turn,使用現有的 Stop 控件。
- Chat 模式不削弱、也不替代 DSH 的 sandbox 與 permission policies。Agent 模式恢復的是原始工具行爲,工具能做什麼仍由既有策略決定。
- 插件本身不做網絡請求、不收集遙測、不讀取 provider 憑證、不讀寫工作區文件,模式變更僅通過 DSH 既有的會話命令日誌記錄。
兩個常見問題的處理:
- 裝完看不到切換控件:重啓 DSH Web 進程,確認插件已加入
webprofile,然後刷新瀏覽器。 - 提示
unknown command: /autonomy:Web client 加載了但 host bundle 沒有加載,停掉所有舊的 DSH 進程,再以同一 profile 啓動。
安全提醒:安裝任何第三方 DSH 插件,都會以 DSH 進程的權限執行其代碼。在包含敏感數據的環境裏,安裝前應先審查源碼與包內容。dsh-autonomy 爲 MIT 許可,源碼公開可查。
小結¶
dsh-autonomy 把「會話的自主級別」變成了一個隨手可切的開關:上下文不動、策略不換,需要答案時切 Chat 省下工具執行的開銷,需要執行時切回 Agent 恢復完整能力。
項目地址:https://github.com/JinkaiLiu/dsh-autonomy ;社區目錄頁:https://www.skillhub.cn/plugins/JinkaiLiu/dsh-autonomy 。目錄是獨立維護的社區站點,與 DeepSeek、幻方沒有官方從屬關係。