前言¶
DeepSeek Harness(DSH)的 agent 通常跑在本機或桌面環境裏:改代碼、跑命令、走審批,都在同一臺機器上完成。人離開電腦時,若仍想用手機發一句話讓 agent 繼續幹活,並把進度、長輸出和權限確認收回到聊天窗口,就需要一條「IM → DSH 會話」的通道。
常見做法是自建回調服務、內網穿透或獨立橋接進程,對沒有公網 IP 的環境並不友好。維護者 Warrenz23 的 dsh-channel-hub(分類:客戶端)走另一條路:利用飛書官方 WebSocket 長連接,由本機主動連出,事件沿連接回傳,無需公網 IP、無需 ngrok。插件當前在 GitHub 上星標爲 0,版本 0.2.0,許可證 MIT;社區目錄頁見 SkillHub 條目,源碼與文檔在 GitHub 倉庫。
下面介紹它是什麼、能做什麼,以及如何安裝與啓用。
這是什麼¶
dsh-channel-hub 把飛書(Lark)變成 DSH 的遠程控制台:在手機上對機器人說一句話,本機 DSH agent 開始執行;進度、審批、長輸出在飛書聊天裏完成。
架構上,飛書客戶端經官方 API 的長連接接到插件,插件再對接本機 DSH 的會話、工具與審批。README 用一句話概括:不需要公網 IP,不需要內網穿透,不需要獨立橋接進程。
裝好後插件自帶 DSH 技能 feishu-channel。你可以直接對 agent 說「幫我連接飛書」「飛書機器人不回我了」「換個飛書應用」,agent 會按順序調用 CLI(均支持 --json 與退出碼),例如:
node bin/cli.mjs status --json
node bin/cli.mjs setup --app-id … --app-secret …
node bin/cli.mjs allow feishu:oc_…
核心功能¶
以下能力均來自倉庫 README 與 package.json 描述,未在資料中出現的細節不寫。
| 能力 | 說明 |
|---|---|
| 圖形化控制台 | 瀏覽器填憑證 → 點連接 → 一鍵授權,不必手改 JSON、不必爲配置再重啓一次 |
| 聊天即會話 | 一個飛書聊天窗口對應一個 DSH 會話,重啓後可接上歷史 |
| 圖片 / 語音 / 文件 | 圖片經宿主准入成爲 durable 附件;語音有轉寫則轉文字,否則存音頻並告知 agent;PDF 等按附件轉交 |
| 進度與長輸出 | 「會變大」的卡片:從「已收到」長到最終答案;長輸出按段落切分,不切斷代碼塊 |
| 審批與提問 | agent 要權限時推送帶按鈕的審批卡,也可在聊天裏用 /approve / /deny 或回 1 / 2;ask_user_question 可變爲可點選擇卡 |
| 聊天命令 | /new /status /stop /approve /deny /id /help,不消耗模型回合 |
| 可靠性 | 平臺重投去重、同窗口嚴格串行、出站失敗進磁盤隊列並指數退避 |
| 默認安全 | 白名單爲空則誰都不回;未授權用戶只收到引導 |
內核與平臺解耦:會話路由、串行隊列、回合等待、審批競速、出站重試在內核;飛書適配器主要實現 sendText / sendCard / updateCard 與入站回調。README 明確:不做個人微信(無官方機器人 API;參考實現走逆向協議有封號風險)。
運行環境:Node >= 22.13.0;依賴 @larksuiteoapi/node-sdk。
安裝與啓用¶
1. 飛書側準備(摘要)¶
在 飛書開放平臺 創建企業自建應用,開啓機器人能力,記錄 App ID 與 App Secret。開通權限(含 im:message、im:message:send_as_bot、im:resource 等)、事件訂閱選 使用長連接接收事件,訂閱 im.message.receive_v1 與 card.action.trigger,併發布應用。完整勾選表見倉庫 docs/quickstart.md。
2. 裝進 DSH¶
有 dsh 命令行時(README 原文):
dsh plugin add /path/to/dsh-channel-hub # 本地目錄
dsh plugin add dsh-channel-hub # 已發佈到 npm
dsh plugin add github:you/dsh-channel-hub # GitHub
無 dsh CLI 或桌面版直接給文件夾時,在插件目錄執行(Node 22.13+):
node bin/install.mjs
腳本會(冪等):複製到 ~/.dsh/profiles/desktop/node_modules/dsh-channel-hub、向 ~/.dsh/profiles/desktop/cordis.patch.yml 插入一行、生成 ~/.dsh/channel-hub/config.json 模板。兩條安裝路線只選一條即可。
3. 控制台三步¶
重啓 DSH 讓插件加載,然後:
node bin/cli.mjs ui
在 Edge/Chrome 應用窗口打開 http://127.0.0.1:17867/?token=...(默認端口 17867,僅監聽 127.0.0.1):
- 粘貼 App ID / App Secret,點「驗證並保存」;
- 點「連接」,建立 WebSocket 長連接;
- 在飛書給機器人發消息後,在頁面點「允許」,把 peer 寫入白名單。
憑證與開關寫入 ~/.dsh/channel-hub/config.json;優先級爲 環境變量 > config.json > cordis.patch.yml。白名單鍵 security.allowPeers:空數組表示誰都不回。
日常體檢:
node bin/cli.mjs doctor
典型用法¶
- 遠程發任務:授權後的飛書窗口裏,除命令外的文字都會交給 agent;工作目錄由
agent.cwd控制,換目錄用/new。 - 看狀態與中斷:
/status查看會話與隊列;/stop中斷當前輪次。 - 配白名單:聊天裏
/id看 peer id,或控制台點「允許」,或node bin/cli.mjs allow feishu:oc_xxx。 - 環境變量(資料中列出的部分):
DSH_HUB_FEISHU_APP_ID、DSH_HUB_FEISHU_APP_SECRET、DSH_HUB_FEISHU_MODE、DSH_HUB_CWD、DSH_HUB_ALLOW_ALL=1、DSH_HUB_STATE_DIR等。
數據目錄 ~/.dsh/channel-hub/ 含 config.json、sessions.json、outbox.json、日誌與可選 journal/。刪掉 sessions.json 不會刪除 DSH 內會話,僅下次會新開映射。
適用場景與注意¶
適合誰:已在用 DSH 桌面/本機 agent,希望用飛書手機或桌面端遠程觸發任務、收進度、在 IM 裏點審批,且不想維護公網回調或穿透的人。
務必知曉:
- 插件以 當前 DSH 進程的權限 運行 agent 與工具;安裝前請自行閱讀源碼與 MIT 許可證,確認憑證與白名單策略可接受。
- 控制台與
/api/*帶 token,僅本機管理面,不是公網服務。 - 羣聊默認
groupMentionOnly: true,需 @ 或提到助手才響應;security.allowAll不建議在羣聊開啓。 - 語音轉寫依賴宿主可選服務;桌面版默認 profile 可能無
speechToText,會退回音頻附件模式。 - DSH 生態理念是「一切皆插件」;SkillHub 爲社區目錄,與 DeepSeek / 幻方無官方從屬關係。
結尾¶
dsh-channel-hub 用飛書長連接把 IM 和本機 DSH 接在一起:無公網 IP 也能收事件,可視化配置與白名單、進度卡與審批卡把遠程協作收進一個聊天窗口。更細的 10 分鐘清單見倉庫 docs/quickstart.md,分發與上架見 docs/distribute.md。
- 目錄頁:https://www.skillhub.cn/plugins/Warrenz23/dsh-channel-hub
- GitHub:https://github.com/Warrenz23/dsh-channel-hub