关于 Fable Mode
Fable Mode 是面向 AI 编码 Agent 的开源控制平面,在允许写入工作区前要求限时审议、提交证据并接受对抗性审查。它提供 MCP 服务和可选 Agent Skill,同一软件包也支持直接 JSON 传输。
主要功能
- 01写入前的限时审议
- 02证据凭据与不变量记录
- 03五向量红队审查
- 04封存验证记录
- 05可选 AI 证据裁定
适用场景
- 01在编码任务中管控工作区写入
- 02要求 Agent 为主张提供证据
- 03允许修改前对代码进行红队审查
MCP 相关
其 stdio MCP 服务让客户端通过 `fable_session` 等工具管理会话并查看状态。软件包也支持无需 MCP 主机的直接 JSON 传输。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
14收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| tag | enum | 否 | 用于真值校准的认知分类标签。PROVEN | HYPOTHESIS | UNKNOWN |
| code | string | 否 | 要针对 anti-slop 门禁进行审计或验证的源代码内容(HTML、JSX、CSS 或 TSX)。 |
| name | string | 否 | 自动化流水线规范的名称标识符。 |
| tree | object|array|string | 否 | 用于双曲嵌入的树层级邻接列表或嵌套字典。 |
| claim | string | 否 | 要在认知账本中跟踪的事实、假设陈述或未知参数。 |
| edges | array|string | 否 | 用于构建 Causal DAG 的有向边字典列表。 |
| gamma | number | 否 | Active Inference softmax 的策略精度逆温度 gamma(默认值为 16.0)。 |
| label | string | 否 | 压缩 CAS 节点的可选标签或描述。 |
| nodes | array|string | 否 | 用于构建 Causal DAG 的节点字典列表。 |
| action | enum | 是 | 要执行的 Fable 会话操作。create_session | set_timer | get_status | telemetry | advance_phase | log_epistemic_item | record_invariant | log_refinement_cycle | unlock_execution | checkpoint_session | restore_session | list_sessions | compile_delegation_contract | compress_payload | decompress_payload | view_slice | accumulate_payload | flush_accumulator | get_compression_stats | system3_dialectical_synthesis | system3_causal_simulate | system3_evolve_paradigms | system3_induce_axioms | system3_meta_reflect | system3_tri_level_orchestrate | system3_hyperbolic_embed | system3_kripke_verify | system3_active_inference | system3_proof_oracle | track_file_change | get_session_lineage | inspect_plan | verify_proof | record_visual_mockups | validate_event_history | set_goal_rubric | evaluate_goal_rubric | get_goal_rubric | register_automation_pipeline | red_team_code_review | record_breakage_report | verify_red_team_remediation | cortical_define_lobe | cortical_list_lobes | check_auto_update | apply_auto_update | evolve_cortex | audit_anti_slop | infer_design_brief | generate_design_tokens | generate_awwwards_scaffold | validate_preflight_design | list_design_archetypes | scrape_web | scrape_youtube | scrape_reddit | scrape_x | scrape_github | scrape_arxiv |
| axioms | array|string | 否 | 用于证明 oracle 的参考公理名称或字符串列表。 |
| domain | string | 否 | 不变量或皮层可塑性巩固的领域边界。 |
| states | array|string | 否 | 主动推断 POMDP 的隐藏状态标识符列表。 |
| target | string | 否 | 用于研究抓取操作的目标 URL、ID、subreddit、repo、论文 ID、账号名或搜索查询字符串。 |
| worlds | array|string | 否 | Kripke 结构的世界/状态定义列表。 |
| actions | array|string | 否 | 主动推断 POMDP 的控制动作标识符列表。 |
| cas_ref | string | 否 | CAS 引用 URI(cas://<sha256_hex>)或 64 位字符哈希值。 |
| content | string | 否 | 要存储/压缩到内容寻址存储(CAS)的原始文本内容或负载。 |
| context | object|string | 否 | 用于证明预言机的假设类型上下文字典 {name: type}。 |
| d_prior | array|string | 否 | 主动推断的先验初始状态信念分布 D。 |
| formula | string | 否 | 用于对照 Kripke 结构进行验证的 CTL/模态公式字符串(例如 'AG(safe)'、'EF(goal)')。 |
| mockups | array|string | 否 | 用于记录视觉模型的概念字典列表。 |
| payload | string | 否 | 用于自适应批次累加器或 CAS 存储的微型负载文本。 |
| root_id | string | 否 | 双曲树嵌入或初始世界的根节点 ID。 |
| task_id | string | 否 | 用于皮层可塑性巩固或会话谱系的任务标识符。 |
| a_matrix | array|string | 否 | 主动推断的观测似然矩阵 A [O x S]。 |
| criteria | array|string|object | 否 | 用于目标分数评估的标准指针列表或评分标准条目的 JSON 字符串。 |
| end_line | integer | 否 | 窗口化行切片查看的结束行号(1 起始,包含该行)。 |
| evidence | string | 否 | 支持该主张的源文件、命令输出、行号或 URL。 |
| metadata | object | 否 | 附加到累积微型负载的可选元数据字典。 |
| policies | array|string | 否 | 用于预期自由能评估的候选动作序列策略列表。 |
| archetype | enum | 否 | 用于设计令牌或脚手架的高级美学原型标识符。cyber_obsidian_monolith | haute_editorial_modernism | swiss_precision_vignelli | kinetic_spatial_hud | neo_nordic_warmth | cold_chromatic_luxury |
| base_step | number | 否 | 双曲树嵌入的基本测地步长距离(默认值为 1.0)。 |
| curvature | number | 否 | 庞加莱流形的截面曲率 c > 0(默认值为 1.0)。 |
| dimension | integer | 否 | 庞加莱球流形的维度(默认值为 2)。 |
| file_path | string | 否 | 用于文件变更跟踪或证明验证的目标文件路径。 |
| objective | string | 否 | 推理会话的高层目标或问题陈述。 |
| rationale | string | 否 | 满足认知门槛后解锁代码执行的理由。 |
| rubric_id | string | 否 | 目标评分标准的标识符。 |
| b_matrices | object|string | 否 | 用于主动推理的状态转移矩阵 B [Action -> S x S]。 |
| focus_area | string | 否 | 正在进行关键性重新评估的特定子系统、组件、算法或接口。 |
| model_name | string | 否 | System 3 仿真中因果 DAG 模型的名称。 |
| next_phase | enum | 否 | 会话要推进到的目标阶段。Phase 1: Epistemic Grounding & Live Research | Phase 2: Invariant Specification & Blueprint | Phase 3: Adversarial Red-Teaming & Falsification | Phase 4: Subagent Fleet Delegation | Phase 5: Multi-Tier Verification & Gatekeeping | Phase 6: Final Walkthrough & Reporting |
| proof_type | enum | 否 | 确定性证明类型。ast | receipt | file_sha256 | formal_logic | vector_coordinates |
| start_line | integer | 否 | 窗口化行切片查看的起始行号(从 1 开始,包含该行)。 |
| change_type | enum | 否 | 文件变更的分类。modified | created | deleted | slated |
| evaluations | array|object|string | 否 | item_evaluations 的别名:标准评估更新的列表或字典。 |
| force_flush | boolean | 否 | 立即将缓冲的微负载强制刷新到复合帧中。 |
| generations | integer | 否 | 要运行的进化代数(默认值为 3)。 |
| node_labels | object|string | 否 | 节点 ID 到可读标签的可选映射。 |
| observation | string | 否 | 用于主动推理信念更新的当前感官观察。 |
| target_code | string | 否 | 源代码字符串输入。禁用从源代码字符串动态执行目标代码;此操作需要单独的沙箱执行器。 |
| target_name | string | 否 | 用于红队审查的目标模块、类或函数的标识符或名称。 |
| transitions | array|object|string | 否 | Kripke 结构的转换列表或邻接字典。 |
| user_prompt | string | 否 | prompt 的别名:描述所需 Web 体验的高层设计提示词。 |
| code_snippet | string | 否 | 源代码字符串输入的替代别名。已禁用从源代码字符串动态执行目标;这需要单独的沙箱执行器。 |
| diff_summary | string | 否 | 文件更改、差异或计划编辑的简要摘要。 |
| observations | array|string | 否 | Active Inference POMDP 的观测标识符列表。 |
| prior_report | object|string | 否 | 用于核验修复情况的先前红队故障报告字典或 JSON 字符串。 |
| session_name | string | 否 | Fable 会话的唯一标识符或名称。 |
| target_score | number | 否 | 目标综合目标分数阈值(默认值为 0.95,最小值为 0.0,最大值为 1.0)。 |
| thesis_title | string | 否 | 用于 System 3 辩证综合的论题范式标题。 |
| artifact_path | string | 否 | 蓝图制品、证明或基准测试脚本的绝对文件系统路径,用于记录完善过程。 |
| c_preferences | array|string | 否 | 用于 Active Inference 的观测先验偏好分布 C。 |
| evaluator_cmd | string | 否 | evaluator_command 的别名:候选评估器的 shell 命令或工具调用。 |
| failure_count | integer | 否 | 用于三级认知档位仲裁的历史失败次数。 |
| failure_modes | array|string | 否 | 批评中识别出的对抗性失效模式列表。 |
| generator_cmd | string | 否 | generator_command 的别名:候选生成器的 shell 命令或工具调用。 |
| initial_world | string | 否 | 用于 Kripke 模型检验的初始世界 ID。 |
| interventions | object|string | 否 | Pearl do-operator 干预的字典:{node_id: value}。 |
| mutation_rate | number | 否 | 遗传突变概率(默认值为 0.15)。 |
| phase_summary | string | 否 | 上一阶段已完成的发现或交付物的简要摘要。 |
| pipeline_name | string | 否 | 自动化流水线名称的备用别名。 |
| pipeline_type | string | 否 | 自主流水线的类型(默认值为 'closed_loop')。 |
| target_metric | string | 否 | 用于敏感性和结构脆弱性分析的目标 KPI 节点 ID。 |
| contradictions | array|string | 否 | 需要运用 TRIZ 原理解决的参数权衡/矛盾列表。 |
| crossover_rate | number | 否 | 遗传交叉率概率(默认值为 0.80)。 |
| dials_override | object | 否 | 可选的离散拨盘覆盖值:方差(1-10)、运动(1-10)、密度(1-10)。 |
| invariant_name | string | 否 | 正式不变量的标识符或标题(例如 'INV-01: Zero-Deadlock Ring Buffer')。 |
| max_iterations | integer | 否 | 停止前的最大闭环迭代次数(默认值为 10)。 |
| seed_paradigms | array|string | 否 | 可选的初始范式定义列表,用于初始化基因池。 |
| task_objective | string | 否 | 用于目标评分标准的任务目标或预期结果。 |
| population_size | integer | 否 | 进化基因池的种群规模(默认值为 12)。 |
| refinement_type | string | 否 | 重新思考与优化循环的类型(例如 'archetype_exploration'、'triz_resolution'、'adversarial_falsification'、'benchmark_probe'、'failure_mode_analysis')。 |
| remediated_code | string | 否 | 修复后的源代码字符串输入。禁止从源代码字符串动态执行目标,且需要单独的沙箱执行器。 |
| subagent_prompt | string | 否 | 要验证的子 Agent 委派提示词或契约文本。 |
| target_resource | string | 否 | 用于证明验证的目标资源(文件路径、回执 ID)。 |
| task_complexity | number | 否 | 用于三级认知仲裁的任务复杂度指数 [0.0, 1.0]。 |
| antithesis_title | string | 否 | 反题/对抗性批评的标题。 |
| broken_scenarios | array|string | 否 | 红队评审期间发现的失效攻击场景列表或 JSON 字符串。 |
| formal_statement | string | 否 | 绝不能违反的数学或形式化契约规范。 |
| item_evaluations | array|object|string | 否 | 项目评估映射、列表或 JSON 字符串,包含 pointer_id、satisfied、score、evidence_receipt_id。 |
| selected_concept | string | 否 | 所选视觉概念原型的标识符。 |
| target_threshold | number | 否 | 用于终止流水线迭代的目标阈值分数(默认值为 0.95)。 |
| custom_hypotheses | array|string | 否 | 自定义对抗性假设/攻击向量的列表或 JSON 字符串。 |
| evaluator_command | string | 否 | 用于候选评估器的 Shell 命令或工具调用。 |
| generator_command | string | 否 | 用于候选生成器的 Shell 命令或工具调用。 |
| max_debate_rounds | integer | 否 | 用于综合的辩证辩论轮数上限(默认值为 4)。 |
| objective_weights | object|string | 否 | 跨 10 个帕累托维度的可选权重字典。 |
| archetype_override | string | 否 | 对 Haute 美学原型的可选覆盖值。 |
| auto_log_epistemic | boolean | 否 | 是否自动将检索到的研究发现记录为 Fable Session 认识论账本中的 [HYPOTHESIS] 候选项,以便后续交叉验证。 |
| proof_or_rationale | string | 否 | 用于证明不变量成立的证明概要、理由说明或归納論証。 |
| thesis_description | string | 否 | 论文候选方案的核心架构说明及假设。 |
| affected_invariants | array|string | 否 | 受此文件更改影响的不变量名称列表或字符串。 |
| time_budget_minutes | number | 否 | 不可变的外部权限时间预算,单位为分钟。set_timer 只能更改内部的节奏计时器。 |
| include_line_numbers | boolean | 否 | 是否在行切片中添加行号。 |
| contradiction_density | number | 否 | 用于认知模式切换的矛盾密度指数 [0.0, 1.0]。 |
| epistemic_uncertainty | number | 否 | 用于仲裁的认识论不确定性指数 [0.0, 1.0]。 |
| critique_or_bottleneck | string | 否 | 受到审查的关键缺陷、漏洞、边缘情况、内存/延迟瓶颈或假设。 |
| terminal_probe_results | string | 否 | 支持此次改进的实时实证探测输出、基准测试数据、延迟数据或性能分析统计数据。 |
| architectural_refinement | string | 否 | 根据批评得出的具体架构演进、优化或算法变更。 |
| target_residual_threshold | number | 否 | 用于收敛的目标残余矛盾分数阈值(默认值为 0.15)。 |
详细介绍
Fable Mode 是面向 AI 编码 Agent 的开源控制平面。
它让 Agent 深思熟虑、提供证据,并经受对抗性审查,然后才允许其写入你的工作区。门禁由机制强制执行,而非依赖提示词建议:没有计时器、没有证明,就没有写入权限。
演示
KERR // ORRERY
一个独立的 HTML 文件。原生 WebGL、零库、零外部资源,也无需构建步骤。
https://github.com/user-attachments/assets/8287bbfe-e3ee-4dcf-ba0f-f9ff22ae79bd
最终版本前拒绝了 7 次渲染 · 捕获了 2 个错误 · 通过了 10/10 项红队探测
Fable Mode 概览
https://github.com/user-attachments/assets/27f4f8a2-b1bb-4398-a08c-bc9fd93d69d7
快速开始
会话启动时处于锁定状态。信心不会解除锁定。
- 使用以下任一选项安装 MCP 服务。
- 如果需要完整工作流,可添加可选的 Agent Skill。
- 让你的 Agent 使用 Fable Mode 完成一项具体的编码任务,并选择时间预算。
新会话启动时,执行权限处于锁定状态:
{
"action": "create_session",
"session_name": "demo-refactor",
"objective": "Refactor the parser without changing public behavior",
"time_budget_minutes": 2
}
随后,Agent 会记录证据和一条不变量。在权限计时器和证明前提满足之前,提前发起的 unlock_execution 请求会被拒绝。你可以随时使用 get_status 查看当前阶段、剩余时间、证据数量和锁定状态。
同一套门禁会保护每个阶段:为声明提供证据收据、通过五向量红队蜂群审查代码,并密封记录已验证的内容。
一个软件包,两种 Agent 环境
Fable 以一个 PyPI 软件包的形式发布。同一个软件包包含运行时、stdio MCP 服务和完整的 Agent Skill。安装过程明确可控,因此安装 MCP 服务不会悄悄启用工作区指令。
请在 Agent 将要处理的项目中运行设置命令:
uvx --from fable-engine==1.3.9 fable-mode setup --yes
这会在隔离的 uv 环境中解析固定版本的软件包,并将内置技能复制到 .agents/skills/fable-mode。使用 --dry-run 预览,或使用 --target <dir> 指定其他技能目录。若要进行持久安装,请使用:
python -m pip install fable-engine
fable-mode setup --yes
然后,只选择与 Agent 环境相匹配的调用方式。
原生 MCP 客户端
将 fable-engine 作为 stdio 服务运行。例如:
// Claude Code: claude mcp add fable-engine -- uvx --from fable-engine==1.3.9 fable-engine
// Cursor or another JSON-configured client:
{
"mcpServers": {
"fable-engine": {
"command": "uvx",
"args": ["--from", "fable-engine==1.3.9", "fable-engine"]
}
}
}
可联网的 Shell 沙箱,无 MCP 主机
同一软件包还提供直接 JSON 传输。将一个 fable_session
参数对象通过管道传给 fable-mode call:
printf '%s\n' '{"action":"create_session","session_name":"demo","objective":"Verify this change","time_budget_minutes":2}' \
| uvx --from fable-engine==1.3.9 fable-mode call
该命令使用 JSON Lines:每个输入行包含一个 fable_session 参数对象,每个输出行包含一个 JSON 结果。完整工作流期间请保持该进程运行,以便权限计时器和会话留在同一个可信运行时中。单行管道适用于单次检查调用。每条 uvx 命令都可以解析独立环境;如果沙箱会在多次调用之间保留 Python 环境,则更适合使用 pip install。会话数据会持久保存在该环境之外的 Fable 数据目录中(可通过 FABLE_DATA_DIR 覆盖)。
Python 3.10+,无运行时依赖。已发布到 PyPI,名称为 fable-engine。
技能激活仍需显式进行
setup 是统一的安装方式。较旧的 install-skill 命令仍作为兼容别名保留,仅用于安装技能。fable-engine 和 pip install fable-engine 都不会自行将指令写入工作区。
工作原理
- 思考 — 由时间锁定的推理。计时器结束前,Agent 不能写入。
- 举证 — 声明需要真实证据(工具回执、哈希值、不变量)。
- 攻击 — 红队群组会尝试破坏代码。
- 编写 — 只有到这时,工作区才会解锁。
可选:AI 证据裁定器
会话中的证据由 AI Agent 编写,因此 Fable 可以选择让外部审核模型在工作区解锁前审核这些证据。仅使用标准库,只进行一次有界 HTTPS 调用,不需要本地模型,也几乎不占用额外 RAM。默认关闭;强制执行时会在失败时关闭。它会增加伪造证据的成本,但无法保证欺骗绝无可能,机械门控仍是主要判定依据。设置方法和诚实的局限说明: AI 证据裁定器。
它不是什么
- 不是对代码完美无缺的保证。这是一套可检查的工作流,而非保证。
- 不是更长的提示词。锁由引擎强制执行,而非由措辞决定。
- 不会造成框架锁定。它支持 MCP,可与当前 Agent 并行运行。
文档
贡献
欢迎提交问题和拉取请求。请参阅 CONTRIBUTING.md。
MIT 许可证 · 由 REX 构建
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。