使用文件

你動嘴,命令讓 agent 去敲。

操作手冊——故事在首頁。這裡只管:怎麼裝、怎麼配、怎麼用、證據包裡有什麼。

docs
01 · 安裝

不用你裝,讓 agent 裝。

正確姿勢是你下指令,agent 敲命令。Witness 本體是 CLI(wit),驅動你系統裡的 Edge/Chrome(沒有時才回退到內建 Chromium)——不需要雲端帳號、不要 key。

對你的 agent 說一句
安裝 witness:執行 `npm i -g github:wookat/witness`,
用 `wit --version` 驗證一下。需要 Node 18+。

裝到你機器上的是什麼

wit 命令列——錄製器、session 渲染器、轉寫器、MCP server 四合一。配置持久化到專案的 .witness/config.json;doubao-ime 引擎的憑證快取在 ~/.witness/doubao-creds.json。證據永遠落在當前專案的 .witness/sessions/。

教不認識它的 agent

倉庫自帶 skills/witness/SKILL.md——現成的技能檔案,放進 CLAUDE.md / .cursor/rules/ / AGENTS.md,之後說「幫我錄一段」就能觸發整套流程。查看 ↗
agent 實際執行的命令
# 透明起見——你的 agent 在背後敲的是:
npm i -g github:wookat/witness
wit --version
配置
02 · 配置

預設零配置;想調再調。

即時 ASR 引擎

wit config asr 持久化到專案的 .witness/config.json;--asr / WIT_ASR 單次覆蓋。agent 也能透過 set_asr MCP 工具自己切。
auto         doubao-web → doubao-ime → sr
doubao-web   標點最好(預設首選)
doubao-ime   句級時間戳、數字 ITN 更好
sr           瀏覽器 SpeechRecognition(離線備援)
off          不要即時字幕(只出終稿)

可選 key 與環境變數

一個都不配也能跑——這些是增強項不是必需項:
OPENAI_API_KEY   whisper-1 詞級時間戳
ZHIPU_API_KEY    GLM-4 糾錯 + 語義證據關聯
WIT_ASR          單次錄製覆蓋引擎
WIT_NO_BODIES=1  不抓回應體(敏感應用)
WIT_CDP=<埠>    開 CDP 口,agent 可接管錄製中的
                 瀏覽器親自當測試者
錄製● REC
03 · 使用

三句話,就是完整閉環。

你和 agent 的對話
你 → "幫我錄一段 http://localhost:5173"
agent → 執行 `wit start`,託管瀏覽器彈出 你 → 正常使用產品,看到什麼說什麼,順手標記問題 你 → 點工具列 ■(或對 agent 說「停了」) 你 → "按剛才錄的把問題修了"
agent → 讀 session.md,照證據動手
你的部分 —— 在瀏覽器裡

說 + 指

說話         每句觀察 → 帶時間戳的 SAY
Ctrl+點擊    標記元素(selector + 截圖 + DOM 快照)
M            檢視模式:懸停點選 / 拖曳圈選區域
N            切分新問題邊界(可選)
P            暫停/繼續——證據和麥克風一起凍結
■ / Alt+Shift+R   停止
agent 的部分 —— 它會跑的命令

CLI 全表面

wit start <url>       開錄(由 agent 發起)
wit list / open       瀏覽 session
wit transcribe <dir>  重跑轉寫
wit correct <dir>     LLM 潤飾(原文保留)
wit associate <dir>   LLM 給每段話挑證據
wit recover <dir>     崩潰重建
wit mcp [dir]         MCP 服務拉證據
wit config asr …      引擎:auto|doubao-web|doubao-ime|sr|off
證據包
04 · 你得到什麼

一個證據包,兩種讀者。

給人:可視化回放。給 agent:能直接修問題的結構化交接。

.witness/sessions/<時間戳>/
├─ review.html → 給人看 —— 時間軸回放:語音+截圖+事件對齊,點哪跳哪
├─ SEGMENTS.md → 給 agent —— 語音段索引:原話+嫌疑元素+掛圖(先讀;段≠問題,歸組歸 agent)
├─ keyframes/ → rrweb 回放渲染的每段關鍵幀(wit keyframes)
├─ segments/NN.md → 給 agent —— 每段一包:逐段原話+死點擊+報錯+截圖引用
├─ PROMPT.md → 給 agent —— 交接文件:教它怎麼讀這份證據
├─ session.md → 給 agent —— 全量時間軸檔案(深挖時用)
├─ events.jsonl → 原始事件流(真實一次錄製 1189 條)
├─ transcript.json → 終稿轉寫,帶句級時間戳
├─ audio.webm → 錄音本體,可 seek
├─ shots/ → 截圖——標記元素帶紅框、圈選是裁切圖
├─ bodies/ → 請求/回應體
├─ dom/ → 關鍵時刻的 DOM 快照
├─ rrweb.jsonl → 全量回放流
└─ session.json → 元資料:url、時長、ASR 引擎、事件數

PROMPT.md

給不認識 Witness 的 agent 的說明書。教它讀格式:因果縮排、「無反應也是證據」、元件鏈定位、沒有 SAY 不許猜意圖。

session.md

證據時間軸本體。每個 SAY 區塊帶你的原話 + 那一秒頁面發生的一切。

wit mcp

把 session 變成 stdio MCP server,12 個工具:list_segments · segment_detail · session_overview · list_says · session_md · events_around · get_errors · get_shot · get_dom_state · get_body · get_asr · set_asr。
交接
05 · 怎麼對 AI 說

三種方式把證據交出去。

最省事

指個路徑

"我錄了一段,證據在
.witness/sessions/<ts>,
讀 session.md 把裡面的問題修了。"
對任意 agent

貼 PROMPT.md

這個檔案自帶閱讀指南——把內容連同目錄路徑一起貼給任何 agent,不需要它認識 Witness。
常駐用法

配 MCP

{ "mcpServers": { "witness": {
  "command": "wit", "args": ["mcp"]
} } }
agent 按需拉證據,還能自己切 ASR 引擎。

反過來讓 agent 去錄:"用 witness 錄一下 http://localhost:5173,我會邊說邊指出問題"。開了 WIT_CDP 之後,agent 甚至可以親自當測試者在錄製中的瀏覽器裡操作。

演示■ STOP
06 · 兩分鐘上手

拿演示頁開錄。

官網自帶一個故意做壞的小產品——死按鈕、console 報錯、錯誤回應,全都等著被抓:

terminal
wit start https://witness.zalize.com/demo-app.html --duration 60
# 點一下 Pay 按鈕,說一句「點了沒反應」,停 → wit open 看回放