開源 · MIT · 本機優先

你開口,
Witness 補全 證據。

像平時一樣體驗產品、用嘴說出哪裡不對——「這個按鈕點了沒反應」。Witness 把你說的每句話焊死在那一秒的因果證據上,然後把證據包交給你的 AI 編碼 agent。

$
↑ 丟給你的 AI agent——它裝完就能幫你錄
裝的是 wit CLI——錄製·渲染·MCP 一體 · Node 18+ · 系統 Edge/Chrome · 免 key
00:00REC
01 · 問題

Agent 看不到你眼睛看到的。

人一眼就能注意到「這個按鈕捲動時收縮得很奇怪」,但把這個感受寫給 AI agent,要十分鐘截圖、圈元素、組織 prompt——寫出來的東西還是丟掉了為什麼。說話是最便宜的標註通道,只是從來沒有人幫它做過記錄儀。

00:18
02 · 實錄

一次點擊,全部後果歸檔。

這是一段真實錄製——說話、標記、點了沒反應的按鈕、儲存。下面的 Pay 按鈕點了什麼都沒發生,而這個「沒有發生」被如實記為證據。

localhost:5173/checkout
PLAYWRIGHT 實錄 · 一鏡到底
3條記錄線
12個 MCP 工具
0雲端 key 依賴
17項測試通過
MIT開源授權
03 · 運作原理

三條記錄線,一條時間軸。

wit start <dev-url> 打開一個託管瀏覽器。從那一刻起三條流並行記錄——零手動:

01 / 語音

你說的話

全程錄音 + 真串流 ASR(doubao-web → doubao-ime → 瀏覽器 SR 自動備援)。工具列下即時出字幕——想到什麼說什麼,一段話可以報多個問題。
02 / 操作

操作 + 因果爆發鏈

每次點擊擷取隨後 ~1.8s 的後果:請求、回應、console 錯誤、DOM 變化。點擊後什麼都沒發生,本身就是證據。
03 / 狀態

頁面演變

rrweb 全量 DOM 回放 + 事件驅動截圖 + 週期 DOM 快照。任何一秒的頁面狀態都能倒回去看。
wit start <url>→瀏覽 + 說話→Ctrl+點 / M 標記→■ 停止→證據包
全部遙控器——就這麼多。
說+瀏覽 想到什麼說什麼——這是主輸入
Ctrl+點擊 標記元素:selector + 元件鏈 + 紅框截圖
M inspect 模式:懸停點選,或拖曳圈選區域
N 切一個新問題邊界——一段錄多個問題
P 暫停/繼續:暫停期證據與麥克風全凍結
■/Alt+Shift+R 停止,寫入整個證據包
01:12
04 · 產出

你的話,變成證據錨點。

每段語音成為時間軸上的一個區塊,掛載該時刻的因果事實——「因果爆發鏈」。點開一句話看看:

session.md — interactive點一句話展開它的證據
SCROLLy=3936
MUTbutton.feedback · data-collapsed: false → true
MUTbutton.feedback · data-collapsed: true → false
└─ 屬性在邊界處來回抖動
CLICKbutton#submit “提交” · @482,701
└─ 點擊後 1.8s 頁面無任何反應——這本身就是證據
CLICKa[href="/orders"] “訂單”
NET →GET /api/orders?page=1
NET ←200 /api/orders · items: []
└─ 回應內容已擷取 → bodies/req_0041.json
01:48SAY ×3
05 · 兩種受眾

人看回放,Agent 讀結構。

給人看

給 AI agent

06 · 拉取,不是推送

wit mcp——把證據變成 API。

session 不是一坨死檔案,而是一個 stdio MCP server。接進任何支援 MCP 的 agent,它按需查詢精確的證據:

list_says

全部語音片段 + 時間戳——問題錨點。

events_around

按時間窗+類型過濾的原始事件。

get_dom_state

離某個時間點最近的完整 DOM。

get_errors

console 錯誤、頁面異常、HTTP ≥400。

get_shot / get_body

按需取截圖幀和回應內容。

session_md

要全文時回傳渲染好的時間軸。

get_asr / set_asr

agent 自己查、自己切語音引擎——配置環裡不需要人。

……共 12 個註冊工具——session 是可查詢的 API,不是一坨死檔案。

證據包自描述、零廠商鎖定。兩條路,按 agent 能力選:

PROMPT.md → 貼上

每個 session 自帶交接檔案:格式說明、頁面詞表、修復規則。貼進任何會跑命令的 agent——它就知道該怎麼讀證據、先複述清單再動手。

wit mcp → 接入

支援 MCP 的 agent 直接連 stdio server:12 個工具按需挖證據,不用把整包塞進上下文。Devin 還有原生 skill 驅動全流程。
支援 DevinClaude CodeCursorCodexWindsurf任何 MCP 客戶端
02:31STOP ■
08 · 原則

證據不說謊。

本機優先,零配置

系統 Edge/Chrome + 免費串流 ASR(doubao-web → doubao-ime → 瀏覽器 SR 備援,wit config asr 可切)。不需要任何 API key;LLM 只是可選增強層,永遠不是主流程。

原話不改寫

你的語音逐字寫進 events.jsonl。合併、糾錯、語義關聯都只是展示層建議——原始證詞永遠可稽核。

證據 ≠ 意圖

點擊和捲動是事實不是抱怨。沒有語音錨點時,明確告訴 agent:永遠不要從行為推斷 bug。

隱私工程化

密碼欄位四通道遮罩;POST 內容自動脫敏憑證欄位;P 暫停期全部凍結包括麥克風;敏感應用可用 WIT_NO_BODIES。
03:05

手寫一份 bug 報告也行,發段錄影也行。各自落到哪一步:

手寫的報告一段錄影Witness
報一個問題的成本≈10 分鐘:截圖、圈選、組織語言幾分鐘——但每次回放都要重看說一句話,證據已掛好
agent 能直接修嗎只覆蓋你記得寫下的全是像素,需要人重新推導session.md + events.jsonl + MCP
「點了沒反應」容易漏寫影片裡根本看不出來顯式記為證據
點擊的因果後果——~1.8s 內 請求/回應/console/DOM
回到那一秒的頁面—影片 ≠ DOMrrweb 全量回放
資料留在本機—看傳到了哪永遠在 .witness/sessions
10 · 誰在用

給所有「眼睛就是最後一道 QA」的人。

獨立開發 × agent

你寫的你點一遍,邊點邊說。agent 拿到的是可直接動手的證據包——從發現到修復不出一個 session。

視覺與動效走查

卡頓、閃爍、版面跳動——截圖永遠說不清的東西。說出哪裡動了,DOM 變化已經掛好了。

QA 與產品驗收

一個功能一條 take,N 鍵切問題邊界。session 交給 agent,或者把 review.html 掛進工單。

開源維護者

讓報 bug 的人發一段 wit 錄製,而不是一張截圖:selector、console、網路請求一次到齊。
04:02SAY ×8
11 · 常見問題

你想問的,先答了。

需要裝什麼?

Node 18+ 和系統 Edge/Chrome——優先用你機器上的真瀏覽器,找不到才裝內建 chromium。npm i -g github:wookat/witness,完事。

有什麼資料會離開本機?

證據包全部落在本地 .witness/sessions/(自動 gitignore)。即時字幕按你選的引擎串流麥克風音訊(預設 doubao-web);--asr sr 走系統/瀏覽器辨識,--asr off 直接不要即時字幕。終稿轉寫走 bcut(免費)或你自己的 OPENAI_API_KEY 走 whisper——--no-transcribe 可全跳過。LLM 糾錯/關聯只有顯式傳 flag 且有 key 才跑。

支援哪些 agent?

能跑 CLI 的 agent 就能讀 session.md + PROMPT.md。支援 MCP 的(Devin、Claude Code、Cursor、Codex……)直連 wit mcp——12 個查詢工具按需挖證據,而不是一次性塞全文。Devin 另有原生 skill 驅動錄製全流程。

密碼出現在頁面裡怎麼辦?

密碼欄位四通道遮罩;POST 內容自動脫敏憑證欄位;P 隨時全凍結(含麥克風);敏感應用設 WIT_NO_BODIES=1 直接不存回應內容。

可以說什麼語言?

--lang 設辨識語言(預設 zh-CN,如 en-US、zh-TW)。原話永遠逐字寫入——辨識錯字保留可稽核,LLM 糾錯只是可選的展示層。

只能錄 localhost 嗎?

任何 URL——託管瀏覽器就是你的真實瀏覽器,登入照樣用。不過在本地開發站上最鋒利:agent 修的時候能同時看到原始碼。

錄到一半當機 / 被我結束了,全沒了嗎?

events.jsonl 逐行串流寫入,最多丟最後幾百毫秒。wit recover <dir> 隨時從事件流重建 session.md、review.html、PROMPT.md。

收費嗎?

MIT 開源,無帳號、無必需 key。免費 ASR 是預設鏈路;付費模型全是自帶 key 的可選增強。

12 · 上手

三句話,跑通整個閉環。

你下指令,agent 敲命令。Witness 本體是 CLI(wit)——agent 驅動它開託管瀏覽器錄製,結束後產出本地證據包:人看 review.html,agent 走 session.md/PROMPT.md/wit mcp。Node 18+、系統 Edge/Chrome、不上雲、不要 key。

你×agent
安裝 witness
npm i -g github:wookat/witness
幫我錄一段 http://localhost:5173
wit start ✓ · 託管瀏覽器彈出,等你說問題
你正常使用產品——看到什麼說什麼,標記問題,點 ■
按剛才錄的把問題修了
讀 session.md → 複述問題清單 → 你確認 → 修復