前言¶
在 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