dsh-autonomy:不離開會話,在 DSH 裏切換 Chat 與 Agent

前言

用 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 模式三層防護

  1. 限制智能體繼承到的工具面;
  2. 移除最終模型請求中的全部工具 schema,包括保留的 Code Mode transport;
  3. 對未通告或來自記憶的工具調用做執行守衛。

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.50.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 默認爲 agentchatGuidancedenyMessage 的默認措辭與上面示例等價。

想參與開發的話,倉庫提供兩個檢查腳本:

pnpm run check
pnpm run pack:check

適用場景與注意

適合的人羣:經常需要在同一個會話裏,於「讓智能體幹活」和「只要一個回答」之間來回切換的開發者;尤其是希望壓低意外 token 消耗、又不想重建會話上下文的情況。

幾個邊界需要提前知道:

  • 切到 Chat 只阻止尚未通過執行門的工具調用,不會取消已運行的工具體,也不會回滾之前的副作用。想讓當前操作跑完,不需要任何動作;要取消當前 turn,使用現有的 Stop 控件。
  • Chat 模式不削弱、也不替代 DSH 的 sandbox 與 permission policies。Agent 模式恢復的是原始工具行爲,工具能做什麼仍由既有策略決定。
  • 插件本身不做網絡請求、不收集遙測、不讀取 provider 憑證、不讀寫工作區文件,模式變更僅通過 DSH 既有的會話命令日誌記錄。

兩個常見問題的處理:

  • 裝完看不到切換控件:重啓 DSH Web 進程,確認插件已加入 web profile,然後刷新瀏覽器。
  • 提示 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、幻方沒有官方從屬關係。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜