dsh-feishu-bridge:用飛書遠程驅動本機 DeepSeek Harness

前言

跑在本機的 DeepSeek Harness(DSH)適合需要真實文件系統、本地工具鏈和可控權限的開發場景,但人一旦離開電腦,就很難繼續往同一條會話裏發指令、看進度。常見做法包括自建帶公網入口的網關、內網穿透,或在雲端再跑一套 Agent——每條路徑都會多出部署和維護成本,還容易和 DSH 網頁裏那條「標準 Session」脫節。

honor-99/dsh-feishu-bridge 走另一條路:複用你本機已有的 lark-cli 授權,用飛書 WebSocket 長連接收消息、用 CLI 回消息,在 DSH 裏創建並驅動與網頁端同鏈路的真實會話。DSH Web UI 與飛書聊天記錄對應的是同一份會話記錄,無需公網 IP 或內網穿透。本文按官方 README 說明定位、安裝與配置要點;插件當前星標爲 0,屬社區客戶端類插件,與 DeepSeek / 幻方無官方從屬關係。

這是什麼

維護者 honor-99(npm 包名 @honor-99/dsh-feishu-bridge,版本 0.1.3,許可證 MIT)。分類爲 客戶端 插件。

一句話:用手機或桌面飛書給本機 DSH 發任務,入站走 lark-cli event consume im.message.receive_v1 --as bot,出站走 lark-cli im +messages-send / +messages-reply --as bot;會話經 ctx.sessionController.create / prompt / cancel / rename,與網頁端同一套鏈路。DSH 側日誌爲標準的 session.v4.jsonl.zstd,飛書側爲普通聊天;綁定關係落在 ~/.dsh/feishu-bridge/state.json。

架構與數據流

入站是機器人長連接消費,不依賴你給機器配公網地址。出站以 markdown 消息爲主,過長內容會按 chunkLimit(默認 3200 字符)分片。

插件源碼按職責拆分(README 目錄表):

文件 作用
index.js 插件入口:apply(ctx, config)、配置解析、生命週期
bridge.js 路由、指令、會話事件鏡像回飛書
lark.js 長連接消費者(斷線指數退避)+ 一次性 CLI 調用
store.js 飛書會話 ↔ DSH sessionId 持久化
util.js 日誌、文本提取、分片

會話映射規則要點:

  • 與機器人的單聊(p2p):一個 Session,長期複用。
  • 羣裏 @ 機器人:整羣一個 Session(受 groupSessions 影響,默認按話題 thread 分裂)。
  • 話題羣某話題:按 thread_id 一個 Session。
  • 只有 thread_id 參與分鍵;root_id 用於發送定位,不參與分鍵。

核心能力

遠程對話與同一份記錄

任意文本會交給當前綁定的 DSH 會話執行;模型輸出、工具調用(可選 showTools)、結束狀態實時回到飛書。因爲是普通 Session,你在 DSH 網頁側邊欄看到的會話與飛書裏對話的是同一條線。

工具授權與選項式提問

DSH 工具需要授權時會走 approval/request waterfall。插件只接管映射表裏屬於飛書會話的請求,避免飛書發起的任務在沒人應答時靜默卡住;其餘請求 next() 交回網頁端。

  • 飛書側可用 /approve、/reject,或卡片按鈕、短回覆 1/2、y/n 等。
  • feishuApprovals: false 可關閉接管。
  • 超時 approvalTimeoutMs 默認 600000 ms,按拒絕處理。

同樣可接管 user-questions/request,把 ask_user 的選項渲染爲編號列表與交互卡片;feishuQuestions、cardButtons、questionFreeText 等配置控制行爲。若要用卡片按鈕,須在飛書開放平臺訂閱回調事件 card.action.trigger 併發布版本,否則 CLI 會報 failed_precondition,插件會停止對該事件的重試(數字回覆仍可用)。

附件與白名單

attachments: true 時可接收飛書圖片與文件。allowOpenIds 爲飛書 open_id 白名單:留空表示拒絕所有人;未授權者在單聊可收到配對提示(unpairedReply)。換飛書應用後 open_id 會變,需重新收集並寫入白名單。

飛書內指令

除直接發任務文本外,README 列出的指令包括:/new、/stop、/approve、/reject、/status、/doctor、/model、/models、/title、/cwd、/sessions、/resume、/help 等,用於會話管理、自檢與模型切換。

安裝與啓用

適用 DSH 版本:0.2.1-rc.5(開發者預覽期,插件 API 可能變化)。依賴 Node ≥ 22、lark-cli(README 寫明 1.0.96 已驗證),以及宿主側 sessionController 與 workspaceRegistry。

從 npm 安裝(推薦):

dsh plugin --profile web add @honor-99/dsh-feishu-bridge

若 bundle 未被自動選中,在 DSH 裏用 plugin_manager 完成安裝與選擇:

plugin_manager  action: install_bundle   target: @honor-99/dsh-feishu-bridge

README 也給出從 GitHub 克隆後以本地絕對路徑安裝的方式,供開發調試;profile 會記爲 link:<路徑>,改源碼重載插件即生效。

安裝後請在 cordis.patch.yml 的 config 中至少配置工作目錄與白名單(改完可在「插件」面板關/開一次使之生效)。示例字段:

cwd: '/path/to/your/project'
allowOpenIds:
  - 'ou_xxxxxxxx'

cwd 決定 Agent 工作目錄並複用該路徑的 workspace。其餘常用鍵包括:identity(bot / user,默認 bot)、groupRequiresMention(默認 true)、acknowledge(收到任務先回「已收到」)、feishuApprovals、chunkLimit 等,完整表格見 GitHub README。

lark-cli 與飛書應用準備

插件不保存 App Secret;憑據經 lark-cli 落在系統鑰匙串。換應用或重授權時,README 區分四種意圖(auth login、profile add、config remove + config init --new、config strict-mode),並給出標準流程:開放平臺開機器人、事件訂閱選長連接、訂閱 im.message.receive_v1(需要按鈕時再加 card.action.trigger)、具備 im:message 相關權限後發佈;本機 lark-cli config init 或 profile add 綁定,用 lark-cli doctor 驗證 bot: ready。

lark-cli 路徑可自動探測;也可在配置裏用 nodePath + cliScript 或 cliCommand(默認 lark-cli)顯式指定。

典型用法

  1. 本機安裝並啓用 DSH 與插件,配置 cwd 與 allowOpenIds。
  2. 確保 lark-cli auth status 中 bot 就緒,插件啓動後消費 im.message.receive_v1。
  3. 在飛書單聊機器人發送項目相關任務;需要新上下文時用 /new,查看狀態用 /status 或 /doctor。
  4. 工具彈授權時在飛書回覆 /approve 或點卡片;長時間無操作注意 approvalTimeoutMs 會按拒絕處理。
  5. 在 DSH Web UI 打開同一會話,可覈對與飛書一致的回合與工具軌跡。

離線調試可使用包內 npm run selftest(scripts/selftest.mjs):僞造飛書事件並真實回寫飛書。

適用場景與注意

適合: 已有 DSH + lark-cli、希望用手機或飛書羣遠程觸發本機 Agent,且希望飛書與網頁共用標準 Session 的個人或小團隊開發者。

務必注意:

  • 插件以當前 DSH 進程權限在本機執行工具與讀寫 cwd;安裝前請閱讀源碼與 MIT 許可證,僅將信任的用戶 open_id 列入白名單。
  • 社區目錄頁:SkillHub 插件條目;源碼與細節以 GitHub 倉庫 爲準。
  • 現階段無圖形化配置表單,改 cordis.patch.yml 後需在插件面板重載;換飛書應用後記得更新白名單,必要時刪除 ~/.dsh/feishu-bridge/state.json 與 welcome.json 以清空綁定。

結尾

dsh-feishu-bridge 把飛書消息接到 DSH 的標準會話鏈路上,用長連接取代公網入口,並把授權與提問接回聊天裏,降低「人不在電腦前就斷了 Agent」的摩擦。若你正在用 DSH 做本地智能體開發,又已經使用飛書協作,可以按上文安裝命令與 README 配置項做一次最小閉環驗證。

  • 目錄頁:https://www.skillhub.cn/plugins/honor-99/dsh-feishu-bridge
  • GitHub:https://github.com/honor-99/dsh-feishu-bridge
羽毛球分组比赛记分
小程序二维码

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

小夜