xout - X 會話
xout 不是提問,而是呈現可反證的對比配對,讓使用者僅以「X 標記」這個單一動作,就能收斂 Claude Code 設定(8 軸假設空間,共 6,561 種組合)。 會話執行期間 LLM 呼叫次數為 0,外部網路呼叫次數也為 0 — 所有進程都發生在本機的僅附加事件帳本上。
執行規則
任何會話開始前,務必先執行
python3 "${CLAUDE_PLUGIN_ROOT}/scripts/xout_plugin.py" status
確認是否有等待覆審的橫幅,如果有,則直接向使用者傳達一行橫幅內容。
會話以互動(chat)模式進行:
- 執行
python3 "${CLAUDE_PLUGIN_ROOT}/scripts/xout_plugin.py" pair取得 JSON。核心欄位為pair.left_text/pair.right_text/pair.pair_id。 - 將兩個行為本文原封不動顯示給使用者,並詢問要對哪一個標記 X。
- 僅在使用者明確選擇後,執行
python3 "${CLAUDE_PLUGIN_ROOT}/scripts/xout_plugin.py" strike <left|right|both|pair> --pair-id <pair_id>記錄選擇。 - 重複步驟 1-3,直到回應 JSON 中的
session_complete為 true。 - 完成後,顯示
rules的 8 行內容,並詢問是否套用。只有在使用者回答「是」時,才執行enable --grant。
如果使用者想直接在終端機操作,可引導輸入 xout(或 uvx xout)一行指令 — 因為使用同一個帳本,無論在哪裡開始或中斷,都能接續。
| 參數 | 執行方式 | 指令 | 說明 |
|---|---|---|---|
(無)或 chat | 前景重複 | 上述互動迴圈(pair -> 使用者選擇 -> strike) | 若有未完成會話則接續,否則開始新的 15 次標記會話 |
status | 前景輸出 | python3 "${CLAUDE_PLUGIN_ROOT}/scripts/xout_plugin.py" status | 摘要顯示著陸/啟用/繼續/判定狀態 |
sessions | 前景輸出 | python3 "${CLAUDE_PLUGIN_ROOT}/scripts/xout_plugin.py" sessions | 列出最近會話 |
doctor | 前景輸出 | python3 "${CLAUDE_PLUGIN_ROOT}/scripts/xout_plugin.py" doctor | 本地診斷安裝、資料、重播 |
enable | 前景輸出 | python3 "${CLAUDE_PLUGIN_ROOT}/scripts/xout_plugin.py" enable --grant | 明確要求時,在 CLAUDE.md 中加入一列 @import 擁有權 |
undo 或 rollback | 前景輸出 | python3 "${CLAUDE_PLUGIN_ROOT}/scripts/xout_plugin.py" undo | 僅移除 xout 加入的那一列 @import |
如果上方狀態輸出包含「等待覆審 N 件」橫幅
在開始會話前,向使用者傳達一行橫幅內容,並告知可在終端機使用 xout recheck 進入覆審。是否接受由使用者決定 — 不要代替使用者做決定。
會話結束後
- 產出僅存放於
~/.claude/xout/專屬目錄(XOUT.md + manifest.json + settings.xout.json)。 - 啟用使用者 CLAUDE.md 僅透過上述啟動器的
enable --grant進行,且只會加入一列 @import。只有在使用者明確同意時才執行。 - 回滾也僅使用上述啟動器的
undo(僅移除那一列)。 - 套用前,可使用
conflicts [路徑]顯示與專案規則檔案(CLAUDE.md/AGENTS.md/.cursorrules)衝突的行,以 file:line 格式呈現。XOUT.md 前言已說明,正面衝突時專案規則優先。 - 規則是否確實影響選擇,由
probe測量 — 這是一個在會話外部呼叫外部執行器(預設claude -p)的選擇性指令,僅在使用者要求時執行,收據只保留在~/.claude/xout/probes/。
禁止事項
- 不要代替使用者標記 X — X 是使用者的反證行為。
- 不要直接編輯 CLAUDE.md 或 settings.json — 這違反 xout 的擁有權合約。
- 不要摘要或編輯配對本文再顯示 — 原始全文才是測量工具。