dsh-plugin-feishu-chat:在 dsh web 裏直接查看飛書 bot 私聊記錄的客戶端插件

前言

如果你用 OpenClaw 獨立網關(openclaw gateway --profile dsh)來服務飛書 bot,會遇到一個具體的問題:你與 bot 的對話記錄只存在於網關寫入的 agent 會話文件裏,dsh web 的頁面看不到。想回看一段對話,要麼登服務器翻文件,要麼自己寫腳本解析。

dsh-plugin-feishu-chat 解決的就是這件事:它把會話文件裏的記錄鏡像到 dsh web 頁面上,提供一個帶自動刷新的查看面板。下面介紹它的功能、原理和安裝方法。

這是什麼

dsh-plugin-feishu-chat(包名 dsh-feishu-chat-viewer,版本 1.0.0)是一個給 DeepSeek Harness Web(dsh web)用的客戶端插件,由 scubiry-glitch 維護,許可證爲 MIT。它在會話頭部操作區增加一個 💬 飛書 按鈕,點擊彈出面板,即時展示你與飛書 bot 的私聊記錄。

數據流向是這樣的:

飛書 ←長連接→ OpenClaw 獨立網關 (agent dsh)
                  │ 對話寫入
                  ▼
        agent 會話文件 sessions/*.jsonl
                  │ 讀取(node 半身,同源路由)
                  ▼
    dsh web ──/feishu-chat.json──▶ 瀏覽器面板(客戶端插件)

核心功能

  • 在會話頭部操作區增加 💬 飛書 按鈕,點擊彈出面板展示與飛書 bot 的私聊記錄;
  • 面板每 5 秒自動刷新,按鈕帶消息數角標(角標 30 秒刷新);
  • 數據來自 OpenClaw 獨立網關寫入的 agent 會話文件 sessions/*.jsonl;
  • 不依賴 OpenClaw 網關進程存活,只要會話文件在,歷史記錄就能看;
  • 面板展示完全不受網關模型配置影響:模型不可用時只是 bot 不再產生新回覆,網關進程崩潰也不影響已落盤的會話文件;
  • 通過同源路由訪問,無論頁面通過 127.0.0.1:3080、局域網還是 Cloudflare 隧道打開,都不會有跨源/CSP 問題。

工作原理

插件本體跑在 dsh web 裏,分成兩個半身:

1、node 半身在 dsh web 進程內註冊同源路由 /feishu-chat.json,負責讀取 agent 會話文件並返回數據;

2、瀏覽器半身負責渲染面板,直接請求同源的 /feishu-chat.json 拿數據。

因爲是同源路由而不是外掛的獨立端口,瀏覽器側不會碰到跨源限制,這是它能在各種訪問方式下穩定工作的關鍵。反過來,如果用了跨源地址(比如硬編碼 127.0.0.1:18791),面板會報 Failed to fetch。

安裝與啓用

官方提供一鍵腳本安裝,先克隆倉庫,再執行安裝腳本,最後重啓 dsh web:

git clone https://github.com/scubiry-glitch/dsh-plugin-feishu-chat.git
cd dsh-plugin-feishu-chat
./install.sh            # 安裝到 /root/.dsh/profiles/ 並寫入 cordis.patch.yml
pm2 restart dsh-web     # 重啓後刷新頁面

如果不想用腳本,也可以手動安裝,分三步:

# 1. 把包放進 web profile 的 node_modules(真實目錄,勿放 npx 緩存目錄!)
mkdir -p /root/.dsh/profiles/node_modules/dsh-feishu-chat-viewer/lib
cp -r lib package.json /root/.dsh/profiles/node_modules/dsh-feishu-chat-viewer/

然後在 /root/.dsh/profiles/web/cordis.patch.yml 追加:

- insert:
    - id: feishu-chat-viewer
      name: 'dsh-feishu-chat-viewer'

最後重啓:

pm2 restart dsh-web

經過上面的步驟,刷新頁面即可在會話頭部看到 💬 飛書 按鈕。插件依賴 dsh-auth-gate 0.7.2(見 package.json)。

配置

三個可調項:

項 位置 默認值
會話目錄 SESS_DIR lib/index.js 頂部常量 /root/.openclaw-dsh/agents/dsh/sessions
刷新間隔 lib/client.js 面板 5s / 角標 30s
展示條數 MAX_MSGS lib/index.js 100

如果你的獨立網關用了別的 profile 名,改 SESS_DIR 指向對應目錄即可。

故障排查

幾個常見症狀和處理方式:

症狀 原因 處理
插件按鈕不出現 頁面緩存了舊 bundle 強刷(Cmd/Ctrl+Shift+R);確認 window.__DSH_BOOT__ 裏有插件 id
面板顯示 Failed to fetch 用了跨源地址 必須用同源 /feishu-chat.json
啓動崩潰 ERR_PACKAGE_PATH_NOT_EXPORTED package.json 的 exports 缺 . 入口 保留 ".": "./lib/index.js"
包被”憑空刪除” 包放在了 npm/npx 緩存目錄,被 GC 清理 放到 /root/.dsh/profiles/node_modules/(profile 自有目錄)

其中”包必須放在 profile 自有目錄”和”exports 保留 . 入口”這兩點,手動安裝時最容易踩,建議先覈對再做。

適用場景與注意

這個插件適合的畫像很明確:用 OpenClaw 獨立網關服務飛書 bot、同時日常開着 dsh web 頁面的開發者。它不改變對話發生的位置——飛書裏該怎麼聊還怎麼聊,它只負責讓記錄在 web 頁面上可見、可回看。

安裝前有兩點提醒:

1、插件以當前 dsh 進程的權限運行,安裝前應檢查源碼與許可證。本項目許可證爲 MIT,倉庫公開,可以直接審閱 lib/index.js 和 lib/client.js;

2、手動安裝時嚴格按上面的路徑放置包,避免被 GC 清理或啓動報錯。

結尾

dsh-plugin-feishu-chat 做的事不復雜:把 OpenClaw 獨立網關落盤的會話文件,通過同源路由鏡像到 dsh web 頁面上,配一個自動刷新的面板。它體現了 DSH「一切皆插件」的思路——頁面能力缺口,用一個客戶端插件補上即可。

  • 目錄頁:https://www.skillhub.cn/plugins/scubiry-glitch/dsh-plugin-feishu-chat
  • GitHub:https://github.com/scubiry-glitch/dsh-plugin-feishu-chat

需要說明的是,skillhub.cn 是獨立的社區插件目錄,與 DeepSeek / 幻方沒有官方從屬關係。

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

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

小夜