前言¶
DeepSeek Harness(DSH)在本地或 Web GUI 裏跑 Agent 時,工具調用、文件讀寫、子代理都齊全,但對話入口通常綁在終端或瀏覽器。團隊日常在飛書溝通,想從手機給 Agent 派任務、看結果,常見做法是自建飛書開放平臺應用:申請應用、配事件回調、找公網地址收 webhook,再自己把消息轉進 DSH。鏈路長、運維成本高,進程重啓還容易丟消息。
dsh-lark-link 是社區維護的 DSH 客戶端插件,把 DSH Agent 與飛書/Lark 做成雙向橋接。掃碼即可完成應用創建與認證,出站 Outbox 與入站 WAL 雙持久化降低消息丟失風險,切換模式、權限、模型走飛書單選卡片,不必記一長串命令拼寫。
這是什麼¶
dsh-lark-link(npm 包名同名,當前版本 0.5.2)由維護者 amlyczz 發佈,分類爲客戶端插件,GitHub 倉庫 26 stars、5 forks,許可證 MIT。插件以 Cordis bundle 形式併入 DSH profile,橋接層負責飛書 SDK 適配、消息入站出站、會話管理與卡片交互;底層仍是原生 DSH session,可與 DSH Web GUI 共用同一套聊天、流式輸出與工具面板。
項目爲社區插件,與 DeepSeek、飛書或 Lark 無隸屬關係。SkillHub 目錄頁:https://www.skillhub.cn/plugins/amlyczz/dsh-lark-link
核心功能¶
下面按已文檔化的能力分組說明。
認證與連接¶
/lark setup 掃碼創建飛書應用,自動訂閱消息事件並申請羣聊與表情相關權限,README 稱約 30 秒可完成上線;也可通過環境變量 DSH_LARK_APP_ID、DSH_LARK_SECRET 走手動通道。憑據寫入 DSH credentials 服務,不進普通配置文件。
連接側有 probe 驅動的受控重連、QuotaGovernor 配額熔斷(窗口過期後自動解除並重連)、斷連補償,以及環境代理自動規避。
出站零丟失(Outbox)¶
出站消息走持久 Outbox:JSONL 存儲、at-least-once 投遞、冪等鍵、分航道並行、失敗條目離隊不阻塞整條隊列、週期清理。進程被 kill、插件熱更或 dsh 重啓後,未發出的回覆會自動續投;橋命令的回覆同樣走 Outbox。
入站請求補發(Inbound WAL)¶
用戶消息在 Agent 處理到一半時若插件或 DSH 崩潰,重啓後會按 WAL 對賬並重新觸發該條用戶消息,而不是靜默丟棄。有次數上限與時間窗以防空轉;/status 可查看待補發條數。
多模式 Agent 與權限¶
支持 standard、code、minimal、cordis 等 preset,以及 GUI 自建的 preset。飛書發 /mode 彈出單選卡片切換,默認 code(一次執行多步工具調用)。/permission 卡片切換隻讀、工作區寫、Full access 三種權限,默認 danger-full-access。
卡片化命令與 DSH 原生命令¶
/model、/mode、/permission 均爲單選按鈕卡片,模型列表按供應商分組。/goal 可在飛書啓動長任務閉環,支持 pause、resume、clear;/new、/resume、/workspace 管理會話與工作區;/doctor 生成 ZIP 診斷包(session log、脫敏配置、ISSUE.md 模板);/lark-config key=value 熱改配置並持久化。
命令分流規則:橋特有命令由橋處理;DSH 已註冊命令(如 /compact)原生執行;/goal、未知 /xxx、普通文本原樣注入 Agent。skill 無需前綴,直接描述任務即可。模型通過 ask_user_question 提問時,會轉成飛書意圖確認卡片(選項、多選、自定義輸入)。
多媒體進出¶
入站:飛書圖片存入 attachment 供視覺模型讀取;文件做有界文本提取後寫入提示詞。出站:模型可通過 lark_send_local_file 回傳本地圖片或文件(工作區白名單、大小校驗、格式自動降級)。
展示與交互¶
回覆自動檢測 Markdown,複雜內容用 CardKit 卡片渲染(標題、列表、代碼塊、表格),純文本走文本消息。/lark-config streaming.enabled=true 可熱開 CardKit schema 2.0 流式卡片逐字輸出,默認關閉。收到消息可隨機表情回執,完成時打 DONE 類 emoji(僅使用飛書實測有效的表情)。
Web GUI 複用與會話隔離¶
每個飛書會話對應獨立 Agent 實例,工作區、模型、模式按會話持久化。/resume 用極簡卡片恢復歷史會話,支持點選、序號或 id 前綴,並提取會話真實標題,減輕跨重啓 live session 衝突。橋接會話自動歸入對應工作區,Web 面板可查看 Outbox 與補發計數。
訪問控制¶
allowlist 限定可對話的 open_id;groupPolicy 控制羣聊觸發策略(open 免 @、mention、keywords、reply);denyList 可按命令前綴拒絕。默認 groupPolicy=open,羣聊可直接說話觸發。
安裝與啓用¶
前置條件:Node.js ≥ 24,已全局安裝 DeepSeek Harness(npm i -g @deepseek-ai/dsh)。
通過 DSH 官方 dsh plugin 機制安裝,包以 bundle 格式分發,安裝後併入 profile 的 dsh.profile.bundles 層:
dsh plugin --profile web add dsh-lark-link@latest --ignore-scripts
--ignore-scripts 用於跳過飛書 SDK 傳遞依賴 protobufjs 的 postinstall,在 pnpm 11 安全策略下避免非零退出碼;若環境已全局放行可省略。--profile web 指定安裝到 web profile,與 GUI 共用同一 profile 時保持 web。
升級示例:
dsh plugin --profile web update dsh-lark-link --latest --ignore-scripts
若鏡像 dist-tags.latest 未刷新導致報 Already up to date,可先查官方源版本再顯式安裝:
npm view dsh-lark-link versions --registry https://registry.npmjs.org
dsh plugin --profile web add dsh-lark-link@<新版本號> --ignore-scripts
安裝後重啓 dsh web 生效。啓動與橋接:
dsh web
在 GUI 輸入框或終端執行:
/lark setup # 掃碼創建飛書應用,面板顯示二維碼
/lark start # 啓動橋接
飛書搜索機器人發任意消息,收到表情回執且收到完整回覆即表示端到端連通。
DSH 側生命週期命令:
/lark setup
/lark start|stop|restart|status
/lark uninstall-clean # 清除憑據與狀態目錄
典型用法¶
切換模式與模型:在飛書發送 /mode 或 /model,點選卡片即可,無需手打 preset 或模型 id。
長任務:/goal 整理本週會議紀要並寫入工作區 啓動自主執行;中途 /goal pause、/goal resume;結束或放棄用 /goal clear。
會話與工作區:/new 在當前工作區新開會話;/resume 從卡片選歷史會話;/workspace /path/to/project 切換工作區根目錄。
熱改羣聊策略:
/lark-config groupPolicy=mention
/lark-config streaming.enabled=true
/lark-config agentPreset=standard
排障:飛書發 /doctor 獲取 ZIP 診斷包,或 /status 查看連接、Outbox、補發與會話健康。
發圖或文件:直接在飛書發送,圖片走視覺模型,文件提取文本後進 Agent 上下文。
常用配置項¶
以下均可通過 /lark-config 熱改,立即生效並持久化:
| 配置鍵 | 默認 | 說明 |
|---|---|---|
groupPolicy |
open |
羣聊觸發:open / mention / keywords / reply |
groupKeywords |
["lark","bot"] |
keywords 模式觸發詞 |
agentPreset |
code |
Agent preset |
permissionMode |
danger-full-access |
權限模式 |
streaming.enabled |
false |
CardKit 流式卡片 |
reactions.enabled |
true |
表情回執 |
allowlist |
[] |
open_id 白名單,空表示不限制 |
denyList |
[] |
命令前綴拒絕列表 |
workspaceRoot |
空 | 橋會話工作區根,空爲 process.cwd() |
attachments.retentionHours |
168 |
入站媒體保留小時數,0 爲永久 |
attachments.dir |
空 | 入站媒體目錄覆蓋,空爲系統 tmpdir |
適用場景與注意¶
適合已在用 DSH、希望把 Agent 入口放到飛書(尤其移動端)的團隊或個人:研發在羣裏問代碼問題、運維收 /status 健康信息、負責人用 /goal 驅動長任務,都無需守着終端。
安裝前建議閱讀 GitHub 源碼與 MIT 許可證。插件以當前 dsh 進程權限運行,默認 Full access(沙箱全訪問、審批 never),生產環境應結合 allowlist、groupPolicy、permissionMode 收緊範圍。插件狀態爲 beta;CI 在 push/PR 時跑類型檢查、264 項測試與構建。
鏈接¶
- SkillHub 目錄:https://www.skillhub.cn/plugins/amlyczz/dsh-lark-link
- GitHub:https://github.com/amlyczz/dsh-lark-link
- npm:https://www.npmjs.com/package/dsh-lark-link