dsh-feishu:在飛書 / Lark 上跑 DSH 智能體與會話底座

前言

把 DeepSeek Harness(DSH)接到 IM 裏,常見做法是自建一層消息轉發或薄封裝。飛書側還有長連接事件、互動卡片回調、羣話題與附件等細節;若還要持久會話、工作區讀寫、隔離 shell 以及對外寫入前的審批,單做一個 relay 往往不夠。

下面介紹社區插件 dsh-feishu(維護者 ycp424c):在 DSH 之上提供飛書 / Lark 機器人基礎能力,屬於 DSH 社區目錄中的「工作流」類插件。倉庫當前爲 alpha 源碼預覽,尚無獨立 npm 包或官方預編譯二進制;部署以在目標 Linux 上構建並校驗歸檔後安裝爲主。

這是什麼

dsh-feishu 一句話定位:帶持久會話、隔離工作區工具、審批卡片,以及可選職場 API 的社區 DSH 飛書 / Lark 機器人底座(倉庫描述與 README 一致)。

  • 一個實例對應一個飛書應用;共享工作區不是按用戶隔離的文件沙箱。
  • 默認可在工作區內讀寫並運行隔離 shell,能力上不只是文本聊天中繼。
  • 通用飛書工具可按羣組啓用;經這些工具的外部寫入需當前請求者審批。
  • 瀏覽器自動化、領域工作流、組織身份與內部知識庫等,README 明確應放在消費方項目中擴展。

基線環境(README 已驗證目標):Ubuntu 22.04、Linux x64、Node.js 22.19+、Python 3.10+、bubblewrap、用戶級 systemd。DSH 固定爲 0.2.1-rc.5,飛書 SDK 固定爲 @larksuiteoapi/node-sdk 1.76.0。package.json 中插件版本爲 0.1.0-alpha.3。項目代碼 MIT 許可;運行時依賴另有各自許可證(含 MPL/LGPL 組件)。

核心功能

以下均來自 GitHub README 能力列表與範圍說明。

會話與指令

  • 按應用、會話、話題區分的持久會話;支持 /status、/new,以及請求者自己的 /cancel。
  • 圖片與文件輸入、處理中 reaction、話題回覆與最終消息投遞;圖片需支持圖像的模型,普通文件以原始附件交給 agent 工具處理。

工作區與 shell

  • 工作區文件生成與隔離 shell 命令,含顯式子目錄與保留的只讀授權。

飛書工具與審批

  • 通過 toolGroups 可選十六類通用飛書工具:文檔、知識庫、雲盤、羣聊 / 討論、多維表格、權限診斷、消息 / 媒體、妙記等。
  • 綁定請求者的審批卡片、寫入回執、讀回、去重;對不確定的寫入不會自動重試。
  • 資源權限仍生效:僅有應用 scope 並不等於能訪問所有文檔或錄音;無內置 Office 解析、OCR 或音頻轉寫。

擴展

  • 面向可信應用代碼的版本化擴展契約;必選擴展須在頻道連接前就緒。

信任邊界(務必閱讀)

  • Shell 的網絡副作用不會自動變成飛書審批卡片。管理員 Web 默認僅 loopback,經 DSH 認證;私有登錄 URL 在 state/web-login-url,常用 SSH 隧道訪問。詳見倉庫 SECURITY.md。

安裝與啓用

插件不是 dsh plugin add github:… 一類一行命令安裝;流程爲:在 Linux 上構建發行包 → 校驗 SHA-256 → 解壓並用 install.py 註冊實例 → 填密鑰 → doctor → 用戶 systemd 啓服務。

1. 飛書應用與配置

  1. 創建飛書 / Lark 應用,開啓機器人能力,配置長連接消息事件與互動卡片回調。
  2. 將 examples/basic-bot/config.example.json 複製到源碼目錄外,填寫應用 ID、允許的 sender open ID、provider、model、endpoint;open ID 須屬於同一應用。
  3. 權限、羣話題、模型輸入類型、可選 toolGroups 等見 Configuration。

構建步驟(含依賴與 scripts/package-release.py)見倉庫 README「Build from source on Linux」;產物由 dist/release.json 指明歸檔文件名與 SHA-256。

2. 安裝已構建並校驗的歸檔

安裝不會自動啓動服務。密鑰寫入實例目錄 state/secrets.json(DSH_FEISHU_APP_SECRET、DSH_MODEL_API_KEY,權限 600),狀態應放在源碼庫外。

export DSH_FEISHU_INSTANCE="$HOME/.local/share/dsh-feishu"
export DSH_FEISHU_CONFIG="$HOME/dsh-feishu-config.json"
export DSH_FEISHU_ARCHIVE="$PWD/dist/$(node -p 'require("./dist/release.json").file')"
export DSH_FEISHU_RELEASE="$(basename "$DSH_FEISHU_ARCHIVE" .tar.gz)"
mkdir -p "$DSH_FEISHU_INSTANCE/releases/$DSH_FEISHU_RELEASE"
# Compare sha256sum output with dist/release.json before extracting.
sha256sum "$DSH_FEISHU_ARCHIVE"
tar -xzf "$DSH_FEISHU_ARCHIVE" -C "$DSH_FEISHU_INSTANCE/releases/$DSH_FEISHU_RELEASE"
python3 "$DSH_FEISHU_INSTANCE/releases/$DSH_FEISHU_RELEASE/scripts/install.py"   --root "$DSH_FEISHU_INSTANCE"   --release "$DSH_FEISHU_INSTANCE/releases/$DSH_FEISHU_RELEASE"   --config "$DSH_FEISHU_CONFIG" --service dsh-feishu

3. 自檢並啓動

doctor 會演練已配置的沙箱,而不只是覈對版本號:

node "$DSH_FEISHU_INSTANCE/current/scripts/doctor.mjs" "$DSH_FEISHU_INSTANCE"
systemctl --user enable --now dsh-feishu.service

典型用法

會話控制(羣內 / 私聊以實際配置爲準)

  • /status:查看當前會話狀態。
  • /new:開啓新會話上下文。
  • /cancel:由當前請求者取消進行中的請求。

帶附件的對話

  • 向機器人發送圖片或文件;處理過程中可有 reaction,結果通過話題回覆或最終消息返回。圖片模型需具備圖像能力;非圖片文件由 agent 在工作區工具中自行處理。

啓用飛書寫入類工具

  • 在配置中按文檔設置 toolGroups,爲對應羣開啓文檔、雲盤、多維表格等工具;模型發起的外部寫入會彈出綁定當前請求者的審批卡片,通過後纔有寫入回執。

擴展開發

  • 消費方實現倉庫 Extensions 中的契約;若聲明爲必選擴展,須在長連接就緒前完成加載。

運維與排錯可參考 Operations。

適用場景與注意

適合誰

  • 已在用 DSH(0.2.1-rc.5 基線),希望在飛書 / Lark 內落地帶工具與審批的智能體,並願意自行構建、部署 Linux 實例的團隊。
  • 需要羣話題、附件、可選飛書 Open API 工具組,而不是純文本 webhook 轉發的場景。

不適合或需另做項目的部分

  • README 明確:瀏覽器自動化、強領域工作流、組織 SSO、內部知識庫等應放在基於本底座的消費項目中,而非期待插件內置。
  • 其他操作系統與架構未作爲驗證目標;勿在 macOS 上直接運行爲 Linux 打好的 runtime 拷貝。

安全與權限

  • 插件以你部署時的 DSH / 進程與用戶權限 運行;默認能讀寫其工作區並執行隔離 shell。安裝前請閱讀源碼、SECURITY.md 與 THIRD_PARTY_NOTICES.md,確認許可證與信任邊界可接受。
  • 單實例單應用;多人共用實例時,工作區與 shell 副作用並非按飛書用戶自動隔離。

DSH 生態強調「一切皆插件」;SkillHub 社區目錄 爲獨立站點,與 DeepSeek / 幻方無官方從屬關係。

結尾

dsh-feishu 把 DSH 的會話、工作區工具與審批模型接到飛書 / Lark,並預留擴展契約與可選職場 API 工具組。當前仍爲 alpha 預覽,部署以 Linux 構建 + 歸檔安裝爲主;使用前完成飛書應用配置、密鑰與 doctor 自檢即可。

羽毛球分组比赛记分
小程序二维码

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

小夜