前言¶
跑在本機的 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)顯式指定。
典型用法¶
- 本機安裝並啓用 DSH 與插件,配置
cwd與allowOpenIds。 - 確保
lark-cli auth status中 bot 就緒,插件啓動後消費im.message.receive_v1。 - 在飛書單聊機器人發送項目相關任務;需要新上下文時用
/new,查看狀態用/status或/doctor。 - 工具彈授權時在飛書回覆
/approve或點卡片;長時間無操作注意approvalTimeoutMs會按拒絕處理。 - 在 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