前言¶
用 DeepSeek Harness(DSH)編排智能體時,工作往往分散在多個客戶端裏。若在 MonkeyAI 桌面端已經開了一段對話,回到 DSH 裏繼續時,常見做法是複製歷史上下文、重新描述任務,既費時也容易丟細節。社區插件 dsh-monkeyai-sessions(維護者 Artenx)把 MonkeyAI 的會話目錄和完整對話歷史接到 DSH Web 客戶端:瀏覽設備上的會話、打開某條會話閱讀全貌,並直接下發新指令,與 MonkeyAI 側已進行中的輪次對齊,無需整段粘貼上下文。
這是什麼¶
dsh-monkeyai-sessions 是 DSH 的 Web 客戶端插件(dsh.client.platform: web),在 Harness 側邊欄掛載遠程貢獻,通過 MonkeyAI OAuth(授權碼 + PKCE)拿到授權後,訪問運行時提供的設備列表、會話列表與消息通道。授權結果由 DSH 寫入其憑證存儲;Host 側完成交換,面板只負責連接與操作。
倉庫:https://github.com/Artenx/dsh-monkeyai-sessions
社區目錄頁:https://www.skillhub.cn/plugins/Artenx/dsh-monkeyai-sessions
核心功能¶
下面功能均來自項目 README 與 package.json 說明,並在 README 中註明已在 DSH 0.2.2-rc.1 Web profile 與真實 MonkeyAI runtime 上做過端到端驗證。
授權與連接¶
插件通過已註冊的 monkeyai-desktop 公開客戶端申請 device:connect、session:read、session:control。OAuth state 與 PKCE verifier 保持在 DSH Host 進程內。
面板提供三種連接方式(按便利程度排列):
- Sign in(默認):在面板填寫 MonkeyAI 服務器 origin、賬號郵箱與密碼;Host 在服務端完成登錄、授權請求、批准與 code 交換,瀏覽器無需回傳回調。適合手機或其它無法訪問本機 loopback 的環境;密碼僅用於請求,不存儲,成功後面板清空密碼字段。
- Browser authorization(loopback):Host 監聽
127.0.0.1隨機端口,MonkeyAI 重定向到http://127.0.0.1:<port>/oauth/callback;瀏覽器與 Host 同機時回調頁把 code 回傳給面板完成授權。 - Paste callback(scheme):使用
monkeyai-desktop://oauth/callback重定向,用於拒絕 loopback 的環境。
未連接時面板顯示連接卡片;已連接後顯示工具欄(賬號、設備、一併刷新設備與會話的 Refresh、斷開),會話以卡片展示;打開會話後顯示緊湊標題欄(返回、標題、模型切換)、審批卡片(以普通按鈕展示選項而非原始 JSON)、Enter 發送的輸入區。
設備列表調用賬號級目錄 GET /api/v1/endpoints(無 runtime-API 頭),展示已註冊設備並按 online 標記在線狀態,跳過已撤銷項。通過 device-code 授權的無頭 runtime 設備可能不在該目錄中,可在面板 「Device missing?…」 用手動 machine ID 添加,條目保存在瀏覽器存儲併合並進設備選擇器。
會話瀏覽與接續¶
- 完整歷史:經運行時 HTTP 讀通道加載(
POST {http_base}/read/session,_monkeyai/session/messages,游標分頁),而非有界 ACPsession/load回放,長會話可看到包括最新回覆在內的全部輪次。 - 實時同步:掛載會話並具備與 MonkeyAI 客戶端相同的
historyHTTP能力後,訂閱 ACP live 更新;在 MonkeyAI 桌面端開始的 assistant 流式塊會即時出現在面板。大塊持久化回覆觸發history_changed時,按游標做 HTTP 增量刷新。 - 狀態與控制:會話標題旁狀態徽標反映輪次狀態(running / idle / error / interrupted),由
_monkeyai/session/state通知驅動;桌面端發起的輪次在 DSH 中同樣顯示爲 running。輪次進行中時輸入區提供停止按鈕(session/cancel);模型切換走 live 連接上的_monkeyai/session/model/set。 - 展示:Assistant 消息做輕量 Markdown 渲染(代碼塊、行內代碼、粗體、標題、列表)。
回覆流式返回;可在不離開 DSH 的情況下停止進行中的輪次或切換模型。
開發與引擎要求¶
- 目標 DSH:
>=0.2.2-rc.1 <0.3.0(engines.dsh) - Node.js:
>=24.9.0 - 許可證:MIT
- 當前包版本(
package.json):0.1.12
安裝與啓用¶
插件以 當前 DSH 進程的權限 運行;安裝前建議閱讀倉庫源碼與 MIT 許可證,並只在信任的 MonkeyAI 服務器上授權。
從 npm 安裝(發佈後)¶
dsh plugin --profile web add dsh-monkeyai-sessions
從插件市場索引添加¶
在 DSH 中:Plugins → Experimental plugins 啓用 Custom plugin indexes,打開 Discover,添加索引源:
https://artenx.github.io/dsh-monkeyai-sessions/index.json
從本地構建包安裝¶
在插件源碼目錄執行:
npm install
npm run build
npm pack
dsh plugin --profile web add ./dsh-monkeyai-sessions-0.1.12.tgz
說明:README 中的本地示例包名爲 dsh-monkeyai-sessions-0.1.12.tgz,與當前 package.json 版本一致;若你本地 npm pack 產出文件名不同,請替換爲實際文件名。
安裝與聯調需在 Web profile 下使用(--profile web)。
典型用法¶
經過安裝並啓用插件後,可按下面順序操作(界面文案以英文面板爲準,邏輯與 README 一致)。
- 在 DSH Web 客戶端打開本插件面板,填寫 MonkeyAI 服務器 origin(與你在桌面客戶端使用的地址一致)。
- 任選一種授權方式完成連接:Sign in、Browser authorization 或 Paste callback。
- 在設備列表中選擇目標設備(若設備未出現在列表,展開 Device missing?… 按 machine ID 添加)。
- 使用 Refresh 同時拉取設備與會話;點擊某條會話卡片進入對話視圖。
- 閱讀完整歷史;若桌面端正在跑一輪,狀態徽標會顯示 running,可直接在輸入框發送新指令或點擊停止。
- 需要換模型時使用標題欄中的模型切換器;審批類交互在審批卡片上點選選項按鈕。
新建會話等次要操作收折在 details 區域,避免主界面雜亂。
適用場景與注意¶
適合誰:已在 MonkeyAI 客戶端上跑 agent / 會話,希望在 DSH 同一瀏覽器工作區裏查看歷史、補發指令、停止輪次或改模型,而不反覆複製上下文的重度用戶。
環境:插件聲明爲 Web 客戶端;README 驗證環境爲 DSH 0.2.2-rc.1 web profile。Node 與 DSH 版本需滿足 engines 約束。
安全與信任:Sign in 模式下密碼經 Host 轉發用於 OAuth 流程,插件說明其不持久化密碼;Grant 存放在 DSH credential store。請僅對你控制的 MonkeyAI 實例授權。
生態說明:DSH 社區插件目錄(如 SkillHub)爲獨立站點,與 DeepSeek / 幻方無官方從屬關係;本插件來自社區維護者 Artenx,非官方內置能力。
結尾¶
dsh-monkeyai-sessions 把 MonkeyAI 的設備與會話接到 DSH Web 側:OAuth 登錄、完整歷史、直播式同步與輪次控制合在一個面板裏,減少「換工具就丟上下文」的摩擦。查閱說明與源碼可從目錄頁或 GitHub 進入: