航海日誌:把 AI 會話整理成可審計的報告

前言

在 DeepSeek Harness 裏跟 AI 幹了一個小時,活幹完了,有人問「剛纔做了什麼」,你可能答不上來。想答上來,得翻會話日誌——那是幾千行原始事件:turn/start、tool/call、tool/result、審批、重試、上下文壓縮。沒人會讀那個東西。

「航海日誌」替你讀完,整理成幾頁紙。打開任意一個聊過的會話,頂部會出現「航海日誌」標籤:這趟航行的成績單、一輪一輪的時間線、文件和工具的排行榜,都在上面。想存檔,可以導出爲 HTML 文件或 Markdown,發給誰都能直接打開。

它是什麼

xh0915/dsh-voyage-log 是一個 DeepSeek Harness 雙端插件,維護者是 xh0915,分類爲 admin-security。它的核心是讀取 Harness 自帶的會話日誌,按輪次、工具、文件、token 等維度統計,生成一份可審計的「航海報告」,並支持導出爲自包含的 HTML 或 Markdown。

插件不會編造任何數字:所有數據都來自 Harness 自帶的 sessionQuery,讀取、整理、生成報告全在本地完成,不上傳任何內容。

它能回答哪些問題

  • 聊了多久、走了幾輪、調用了多少次工具、失敗幾次。
  • 哪個文件被改得最多、哪個文件被讀了很多次卻沒改。
  • 哪個工具調用最多、哪個工具失敗最多。
  • 哪一輪最耗時,慢在哪個工具上。
  • 用了多少 token(輸入、輸出、緩存讀取分開算)。
  • 哪一步發了請求卻始終沒收到結果——會明確標成「沒有回執」,不會悄悄消失。

頁面上有什麼

關鍵數字:時長、輪數、工具調用次數、失敗次數、改了哪些文件、讀了多少文件、燒了多少 token。插件不會給出費用數字,因爲會話日誌本身不記錄價格。

時間線:按時間順序一輪一輪還原:你說了什麼、AI 回了什麼、調用了哪個工具、耗時多久、結果是什麼、是否失敗、審批過沒過、哪裏重試、哪裏壓縮了上下文、這一輪怎麼結束的。

排行榜:三張表——文件改/讀次數、工具調用/失敗次數、各模型回覆次數。

任務清單:顯示這次會話裏最近一次寫入的待辦面板。

導出:可以複製一段 Markdown 摘要,或下載/打印成一個 HTML 文件。那個文件是自包含的:樣式內聯、不引用外部資源、不含腳本,可以直接歸檔或轉給別人。

安裝與啓用

需要 Node.js 22.19 或更高(24 也可以),以及 DeepSeek Harness 0.1.0-rc.6 或更高。

git clone https://github.com/xh0915/dsh-voyage-log
cd dsh-voyage-log
pnpm install
pnpm run build
dsh plugin --profile web add .

然後重啓 Web Harness。隨便打開一個聊過的對話,頂部會出現「航海日誌」標籤,點進去就是這次的報告。

pnpm run build 必須在 add 之前跑。這個包沒有安裝期構建腳本(pnpm 10 會攔下未批准的 prepare),跳過這一步,插件會「裝上了卻加載不出來」。

卸載:

dsh plugin --profile web remove dsh-voyage-log

配置與隱私

默認情況下,插件會對敏感內容做脫敏處理。在 Harness 配置文件中可以調整:

dsh-voyage-log:
  redactSecrets: true   # 顯示前先把密鑰類內容塗掉,默認開啓
  maxTurnEvents: 240    # 每一輪最多列幾行,範圍 20–5000

脫敏規則包括:私鑰塊、JWT、GitHub / AWS / Google / Slack / npm / PyPI / Stripe / DeepSeek 形式的密鑰、Bearer 認證頭、URL 裏的賬號密碼、api_key = … 賦值、郵箱等,全部替換成 «已脫敏»。報告裏會記錄一共塗掉多少處、命中了哪些類別。只是長得像密鑰的東西不會被誤傷:process.env.X、${TEMPLATE}、foo.bar.baz、全大寫常量、很短的字符串都原樣保留。

脫敏默認開啓。如果你手動關掉,報告會寫明「這次沒有脫敏」,不會假裝做過。

技術細節

客戶端半邊不貢獻任何 prompt、工具或會話事件——ctx.typert.register() 只發布反射元數據。這個插件只是在你自己數據上加的一層界面。

目錄結構大致如下:

  • package.json:dsh.bundle.patch + dsh.client、腳本、peer 依賴
  • cordis.patch.yml:把宿主插件行掛進 profile
  • dsh.plugin.json:註冊表清單
  • src/index.ts:宿主入口(Config、Remote 服務、Typert 清單)
  • src/runtime.ts:voyage.build(sessionId) —— 讀日誌、整理、返回
  • src/fold.ts:整理引擎——原始事件 → 輪次、行、彙總
  • src/redact.ts:本地脫敏
  • src/schema.ts:Zod 線上契約
  • src/contract.ts:宿主與客戶端共享的嚴格 InvocationDescriptor
  • src/typert.ts:宿主反射清單
  • src/client/index.tsx:客戶端入口(掛 Remote、註冊標籤頁)
  • src/client/view.tsx:航海日誌視圖
  • src/client/report.ts:Markdown 摘要 + 自包含 HTML 報告
  • src/client/styles.ts:主題令牌樣式表(跟隨 Harness 明暗)
  • src/client/locales.ts:中文 / 英文文案
  • tests/:整理、脫敏、接口、報告單元測試
  • build.mjs:esbuild 雙構建——宿主 ESM + 客戶端 CJS

開發檢查:

pnpm run check   # 類型檢查 + lint + 測試 + 構建

適用場景與注意

這個插件適合需要清晰回溯 AI 會話過程的開發者、運維和產品負責人。它可以幫你快速定位耗時瓶頸、工具失敗原因、文件變更範圍以及 token 消耗。

插件以當前 DSH 進程的權限運行,安裝前建議檢查源碼與許可證(MIT)。所有數據處理都在本地完成,不會上傳任何內容。

結尾

「航海日誌」把一次 AI 會話幹了多少活,算成幾頁紙。它不猜測費用,不逐字記錄流式輸出,不多抓一個字節,不上傳任何東西,也不丟內容。對於需要可審計和可追溯的智能體工作流,它是一層直接的界面。

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

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

小夜