xout - X 会话
xout 不提问,而是呈现可证伪的对比对(pair),让用户使用唯一的动词“画 X”来收敛 Claude Code 的配置(8 轴假设空间,共 6,561 种组合)。 会话运行时零 LLM 调用、零外部网络调用——所有进展均基于本地仅追加事件账本。
执行规则
在任何会话开始前,必须先运行
python3 "${CLAUDE_PLUGIN_ROOT}/scripts/xout_plugin.py" status
以检查是否存在待复审(recheck)的横幅。如果存在,请用一行文字告知用户。
会话以交互式(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次画X会话 |
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 的激活操作仅通过上述启动器(launcher)的
enable --grant完成,且只添加一行@import。仅在用户明确同意时才执行。 - 回滚也仅使用上述启动器的
undo命令(仅移除那一行)。 - 在应用之前,可以使用
conflicts [路径]查看与项目规则文件(CLAUDE.md/AGENTS.md/.cursorrules)冲突的行,格式为 file:line。XOUT.md 的前言已声明,正面冲突时项目规则优先。 - 规则是否实际改变了模型的选择,由
probe命令衡量——这是一个在会话外部调用外部运行器(默认claude -p)的 opt-in 命令,仅当用户请求时才执行,收据仅保留在~/.claude/xout/probes/目录中。
禁止事项
- 不得代用户画 X——X 是用户的证伪行为。
- 不得直接编辑 CLAUDE.md 或 settings.json——这违反了 xout 的所有权协议。
- 不得摘要或编辑 pair 的文本内容展示——原文本身即是测量工具。