dsh-channel-hub:用飛書長連接遠程驅動本機 DSH

前言

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):

  1. 粘貼 App ID / App Secret,點「驗證並保存」;
  2. 點「連接」,建立 WebSocket 長連接;
  3. 在飛書給機器人發消息後,在頁面點「允許」,把 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
羽毛球分组比赛记分
小程序二维码

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

小夜