mcpField
F
Fable Mode

Fable Mode

本地服务
github.com/REX-codebaseAI 与智能体246 周前更新

关于 Fable Mode

Fable Mode 是面向 AI 编码 Agent 的开源控制平面,在允许写入工作区前要求限时审议、提交证据并接受对抗性审查。它提供 MCP 服务和可选 Agent Skill,同一软件包也支持直接 JSON 传输。

主要功能

  1. 01写入前的限时审议
  2. 02证据凭据与不变量记录
  3. 03五向量红队审查
  4. 04封存验证记录
  5. 05可选 AI 证据裁定

适用场景

  1. 01在编码任务中管控工作区写入
  2. 02要求 Agent 为主张提供证据
  3. 03允许修改前对代码进行红队审查

MCP 相关

其 stdio MCP 服务让客户端通过 `fable_session` 等工具管理会话并查看状态。软件包也支持无需 MCP 主机的直接 JSON 传输。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"rex-codebase-fable-mode": {
"command": "uvx",
"args": [
"fable-engine"
]
}
}
}
启动命令uvx fable-engine

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypifable-engine1.3.5

工具

14

收录的工具列表 · 更新于 2 周前

参数类型必填说明
tagenum否用于真值校准的认知分类标签。PROVEN | HYPOTHESIS | UNKNOWN
codestring否要针对 anti-slop 门禁进行审计或验证的源代码内容(HTML、JSX、CSS 或 TSX)。
namestring否自动化流水线规范的名称标识符。
treeobject|array|string否用于双曲嵌入的树层级邻接列表或嵌套字典。
claimstring否要在认知账本中跟踪的事实、假设陈述或未知参数。
edgesarray|string否用于构建 Causal DAG 的有向边字典列表。
gammanumber否Active Inference softmax 的策略精度逆温度 gamma(默认值为 16.0)。
labelstring否压缩 CAS 节点的可选标签或描述。
nodesarray|string否用于构建 Causal DAG 的节点字典列表。
actionenum是要执行的 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
axiomsarray|string否用于证明 oracle 的参考公理名称或字符串列表。
domainstring否不变量或皮层可塑性巩固的领域边界。
statesarray|string否主动推断 POMDP 的隐藏状态标识符列表。
targetstring否用于研究抓取操作的目标 URL、ID、subreddit、repo、论文 ID、账号名或搜索查询字符串。
worldsarray|string否Kripke 结构的世界/状态定义列表。
actionsarray|string否主动推断 POMDP 的控制动作标识符列表。
cas_refstring否CAS 引用 URI(cas://<sha256_hex>)或 64 位字符哈希值。
contentstring否要存储/压缩到内容寻址存储(CAS)的原始文本内容或负载。
contextobject|string否用于证明预言机的假设类型上下文字典 {name: type}。
d_priorarray|string否主动推断的先验初始状态信念分布 D。
formulastring否用于对照 Kripke 结构进行验证的 CTL/模态公式字符串(例如 'AG(safe)'、'EF(goal)')。
mockupsarray|string否用于记录视觉模型的概念字典列表。
payloadstring否用于自适应批次累加器或 CAS 存储的微型负载文本。
root_idstring否双曲树嵌入或初始世界的根节点 ID。
task_idstring否用于皮层可塑性巩固或会话谱系的任务标识符。
a_matrixarray|string否主动推断的观测似然矩阵 A [O x S]。
criteriaarray|string|object否用于目标分数评估的标准指针列表或评分标准条目的 JSON 字符串。
end_lineinteger否窗口化行切片查看的结束行号(1 起始,包含该行)。
evidencestring否支持该主张的源文件、命令输出、行号或 URL。
metadataobject否附加到累积微型负载的可选元数据字典。
policiesarray|string否用于预期自由能评估的候选动作序列策略列表。
archetypeenum否用于设计令牌或脚手架的高级美学原型标识符。cyber_obsidian_monolith | haute_editorial_modernism | swiss_precision_vignelli | kinetic_spatial_hud | neo_nordic_warmth | cold_chromatic_luxury
base_stepnumber否双曲树嵌入的基本测地步长距离(默认值为 1.0)。
curvaturenumber否庞加莱流形的截面曲率 c > 0(默认值为 1.0)。
dimensioninteger否庞加莱球流形的维度(默认值为 2)。
file_pathstring否用于文件变更跟踪或证明验证的目标文件路径。
objectivestring否推理会话的高层目标或问题陈述。
rationalestring否满足认知门槛后解锁代码执行的理由。
rubric_idstring否目标评分标准的标识符。
b_matricesobject|string否用于主动推理的状态转移矩阵 B [Action -> S x S]。
focus_areastring否正在进行关键性重新评估的特定子系统、组件、算法或接口。
model_namestring否System 3 仿真中因果 DAG 模型的名称。
next_phaseenum否会话要推进到的目标阶段。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_typeenum否确定性证明类型。ast | receipt | file_sha256 | formal_logic | vector_coordinates
start_lineinteger否窗口化行切片查看的起始行号(从 1 开始,包含该行)。
change_typeenum否文件变更的分类。modified | created | deleted | slated
evaluationsarray|object|string否item_evaluations 的别名:标准评估更新的列表或字典。
force_flushboolean否立即将缓冲的微负载强制刷新到复合帧中。
generationsinteger否要运行的进化代数(默认值为 3)。
node_labelsobject|string否节点 ID 到可读标签的可选映射。
observationstring否用于主动推理信念更新的当前感官观察。
target_codestring否源代码字符串输入。禁用从源代码字符串动态执行目标代码;此操作需要单独的沙箱执行器。
target_namestring否用于红队审查的目标模块、类或函数的标识符或名称。
transitionsarray|object|string否Kripke 结构的转换列表或邻接字典。
user_promptstring否prompt 的别名:描述所需 Web 体验的高层设计提示词。
code_snippetstring否源代码字符串输入的替代别名。已禁用从源代码字符串动态执行目标;这需要单独的沙箱执行器。
diff_summarystring否文件更改、差异或计划编辑的简要摘要。
observationsarray|string否Active Inference POMDP 的观测标识符列表。
prior_reportobject|string否用于核验修复情况的先前红队故障报告字典或 JSON 字符串。
session_namestring否Fable 会话的唯一标识符或名称。
target_scorenumber否目标综合目标分数阈值(默认值为 0.95,最小值为 0.0,最大值为 1.0)。
thesis_titlestring否用于 System 3 辩证综合的论题范式标题。
artifact_pathstring否蓝图制品、证明或基准测试脚本的绝对文件系统路径,用于记录完善过程。
c_preferencesarray|string否用于 Active Inference 的观测先验偏好分布 C。
evaluator_cmdstring否evaluator_command 的别名:候选评估器的 shell 命令或工具调用。
failure_countinteger否用于三级认知档位仲裁的历史失败次数。
failure_modesarray|string否批评中识别出的对抗性失效模式列表。
generator_cmdstring否generator_command 的别名:候选生成器的 shell 命令或工具调用。
initial_worldstring否用于 Kripke 模型检验的初始世界 ID。
interventionsobject|string否Pearl do-operator 干预的字典:{node_id: value}。
mutation_ratenumber否遗传突变概率(默认值为 0.15)。
phase_summarystring否上一阶段已完成的发现或交付物的简要摘要。
pipeline_namestring否自动化流水线名称的备用别名。
pipeline_typestring否自主流水线的类型(默认值为 'closed_loop')。
target_metricstring否用于敏感性和结构脆弱性分析的目标 KPI 节点 ID。
contradictionsarray|string否需要运用 TRIZ 原理解决的参数权衡/矛盾列表。
crossover_ratenumber否遗传交叉率概率(默认值为 0.80)。
dials_overrideobject否可选的离散拨盘覆盖值:方差(1-10)、运动(1-10)、密度(1-10)。
invariant_namestring否正式不变量的标识符或标题(例如 'INV-01: Zero-Deadlock Ring Buffer')。
max_iterationsinteger否停止前的最大闭环迭代次数(默认值为 10)。
seed_paradigmsarray|string否可选的初始范式定义列表,用于初始化基因池。
task_objectivestring否用于目标评分标准的任务目标或预期结果。
population_sizeinteger否进化基因池的种群规模(默认值为 12)。
refinement_typestring否重新思考与优化循环的类型(例如 'archetype_exploration'、'triz_resolution'、'adversarial_falsification'、'benchmark_probe'、'failure_mode_analysis')。
remediated_codestring否修复后的源代码字符串输入。禁止从源代码字符串动态执行目标,且需要单独的沙箱执行器。
subagent_promptstring否要验证的子 Agent 委派提示词或契约文本。
target_resourcestring否用于证明验证的目标资源(文件路径、回执 ID)。
task_complexitynumber否用于三级认知仲裁的任务复杂度指数 [0.0, 1.0]。
antithesis_titlestring否反题/对抗性批评的标题。
broken_scenariosarray|string否红队评审期间发现的失效攻击场景列表或 JSON 字符串。
formal_statementstring否绝不能违反的数学或形式化契约规范。
item_evaluationsarray|object|string否项目评估映射、列表或 JSON 字符串,包含 pointer_id、satisfied、score、evidence_receipt_id。
selected_conceptstring否所选视觉概念原型的标识符。
target_thresholdnumber否用于终止流水线迭代的目标阈值分数(默认值为 0.95)。
custom_hypothesesarray|string否自定义对抗性假设/攻击向量的列表或 JSON 字符串。
evaluator_commandstring否用于候选评估器的 Shell 命令或工具调用。
generator_commandstring否用于候选生成器的 Shell 命令或工具调用。
max_debate_roundsinteger否用于综合的辩证辩论轮数上限(默认值为 4)。
objective_weightsobject|string否跨 10 个帕累托维度的可选权重字典。
archetype_overridestring否对 Haute 美学原型的可选覆盖值。
auto_log_epistemicboolean否是否自动将检索到的研究发现记录为 Fable Session 认识论账本中的 [HYPOTHESIS] 候选项,以便后续交叉验证。
proof_or_rationalestring否用于证明不变量成立的证明概要、理由说明或归納論証。
thesis_descriptionstring否论文候选方案的核心架构说明及假设。
affected_invariantsarray|string否受此文件更改影响的不变量名称列表或字符串。
time_budget_minutesnumber否不可变的外部权限时间预算,单位为分钟。set_timer 只能更改内部的节奏计时器。
include_line_numbersboolean否是否在行切片中添加行号。
contradiction_densitynumber否用于认知模式切换的矛盾密度指数 [0.0, 1.0]。
epistemic_uncertaintynumber否用于仲裁的认识论不确定性指数 [0.0, 1.0]。
critique_or_bottleneckstring否受到审查的关键缺陷、漏洞、边缘情况、内存/延迟瓶颈或假设。
terminal_probe_resultsstring否支持此次改进的实时实证探测输出、基准测试数据、延迟数据或性能分析统计数据。
architectural_refinementstring否根据批评得出的具体架构演进、优化或算法变更。
target_residual_thresholdnumber否用于收敛的目标残余矛盾分数阈值(默认值为 0.15)。

详细介绍


Fable Mode

Fable Mode

先思考,再动笔的 Agent。


Python 3.10+   MIT   MCP   零依赖   490 项测试通过





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


快速开始

会话启动时处于锁定状态。信心不会解除锁定。

  1. 使用以下任一选项安装 MCP 服务。
  2. 如果需要完整工作流,可添加可选的 Agent Skill。
  3. 让你的 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"]
    }
  }
}

在 VS Code 中安装 MCP 服务

可联网的 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 都不会自行将指令写入工作区。


工作原理
  1. 思考 — 由时间锁定的推理。计时器结束前,Agent 不能写入。
  2. 举证 — 声明需要真实证据(工具回执、哈希值、不变量)。
  3. 攻击 — 红队群组会尝试破坏代码。
  4. 编写 — 只有到这时,工作区才会解锁。

可选:AI 证据裁定器

会话中的证据由 AI Agent 编写,因此 Fable 可以选择让外部审核模型在工作区解锁前审核这些证据。仅使用标准库,只进行一次有界 HTTPS 调用,不需要本地模型,也几乎不占用额外 RAM。默认关闭;强制执行时会在失败时关闭。它会增加伪造证据的成本,但无法保证欺骗绝无可能,机械门控仍是主要判定依据。设置方法和诚实的局限说明: AI 证据裁定器。


它不是什么
  • 不是对代码完美无缺的保证。这是一套可检查的工作流,而非保证。
  • 不是更长的提示词。锁由引擎强制执行,而非由措辞决定。
  • 不会造成框架锁定。它支持 MCP,可与当前 Agent 并行运行。

文档

贡献

欢迎提交问题和拉取请求。请参阅 CONTRIBUTING.md。



MIT 许可证 · 由 REX 构建

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。