Tailr — 審查循環
Tailr 讓與你協作的人可以在瀏覽器中標記他們正在運行的開發伺服器——點擊一個元素,說明哪裡有問題——然後將所有標記一次性作為一個批次交給您。您應用這個批次,並在每個標記落地時進行回報。
以下是整個協議的規則。這些規則與 tailr init 寫入專案 AGENTS.md / CLAUDE.md 的規則相同;此插件取而代之,因此無需編輯使用者儲存庫中的任何內容。
Tailr — 來自審查者的視覺標記
審查者在瀏覽器中標記正在運行的應用程式,並將所有變更作為一個批次交給您。當 .tailr/session.json 存在時,會話即開始;如果不存在,則以長期運行的背景程序啟動一個——它必須保持運行,因此不要阻塞您的回合等待它:
npx tailr --target http://localhost:<開發伺服器埠>
它會列印一個審查 URL(通常是 http://localhost:4100)。告訴審查者使用該 URL,而不是原始埠。Tailr 會代理該應用程式並注入其覆蓋層;原始碼不會被修改。
循環是 wait → pull → 每個標記 progress → done 或 fail。
| 命令 | MCP 工具 | |
|---|---|---|
npx tailr status | tailr_status | 是否有批次等待?0 是 · 3 會話上線,無等待 · 2 無會話 |
npx tailr wait | tailr_wait | 阻塞直到「發送」被按下;0 一個批次正在等待 · 3 超時,請重新啟動 · 2 會話結束 |
npx tailr pull | tailr_pull | 租用批次,以 JSON 格式輸出 |
npx tailr progress <ref> | tailr_progress | 報告一個標記已應用 |
npx tailr done | tailr_done | 運行完成 |
npx tailr fail "原因" | tailr_fail | 返回不完整 |
每個標記都攜帶一個 ref("01")、一個 type、它所屬的 route、一個盡力而為的來源 address、一個 CSS selector、元素的文字,以及審查者的 comment。
comment— 按描述更改該元素remove— 刪除該元素text— 攜帶before/after;將文字更改為afterpoint— 攜帶頁面x/y而非元素。審查者標記了一個位置,而不是一個東西:他們可能想要在那裡放新東西,或者只是標記那個點。他們的評論會說明是哪一種。
重要的規則
- 以長期運行的背景程序執行
wait,並將其退出視為通知。切勿要求審查者告訴您批次已到達,也切勿輪詢。在每個您關閉的運行之後重新啟動它。 - 在每個標記落地時使用
progress進行回報,而不是一次性在結尾回報。審查者會在螢幕上看到它們被清除;批次處理會讓一切看起來像沒有進展。 - 始終使用
done或fail關閉運行。在您這樣做之前,審查者無法發送另一個批次。如果您遇到無法完成的情況,請使用fail並說明實際出錯的原因——Tailr 不會編造解釋,它會將他們指向您。 - 當來源地址和選擇器不一致時,請相信來源地址。
- 一個帶有
"orphaned": true的標記表示其元素在發送前已遺失。不要猜測其意圖——請向審查者提出。 - 如果一個標記不明確,請提問而不是選擇一種解釋。
- 從專案目錄執行這些命令;這是 Tailr 找到會話的方式。
從此插件執行命令
此插件註冊了 Tailr 的 MCP 伺服器,因此 tailr_status、tailr_wait、tailr_pull、tailr_progress、tailr_done 和 tailr_fail 可直接供您使用。請優先使用它們而非 CLI:它們始終存在,而 npx tailr 簡寫僅在已安裝 Tailr 的專案中才能解析。
當您確實需要使用 CLI 時,請使用完整的套件名稱,以便在尚未安裝任何東西的專案中也能運作:
npx -y @gcrft123/tailr <command>
啟動會話是唯一沒有 MCP 工具的步驟,因為會話是那些工具通訊的伺服器。以長期運行的背景程序啟動它——它必須保持運行,因此不要阻塞您的回合等待它:
npx -y @gcrft123/tailr --target http://localhost:<開發伺服器埠>
如果專案將 Tailr 作為依賴項,則純粹的 npx tailr 是等效且更簡潔的。