Install
openclaw skills install @xincen0725/triangulate三视角共识决策引擎 V1.0.0:拜占庭共识×3 + 管理层调度 + 执行层并发,适用于方案选型、诊断、研究、计划等任意复杂任务
openclaw skills install @xincen0725/triangulate将拜占庭多视角共识架构泛化为通用思考/执行框架。
┌──────────────────────────────────────────┐
│ Layer 6: renderer.py 输出渲染层 │
│ Layer 5: orchestrator.py 编排层 + 状态机 │
│ Layer 4: consensus.py 共识引擎 │
│ Layer 3: dispatcher.py 执行调度层 │
│ Layer 2: decomposer.py 管理层拆解 │
│ Layer 1: adapters/ 输入适配层 │
├──────────────────────────────────────────┤
│ schemas.py 数据契约 (Pydantic v2) │
│ state_machine.py 显式状态机 (10 状态) │
│ saga.py 事务回滚 (Saga 模式) │
│ circuit_breaker.py 可执行熔断器 │
│ idempotency.py 幂等性保证 │
└──────────────────────────────────────────┘
| 模块 | 文件 | 职责 |
|---|---|---|
| 数据契约 | schemas.py | 所有 Pydantic Schema:UserInput, DecisionResult, SubTask, TaskDAG, ExecutionReport, FinalReport 等 |
| 状态机 | state_machine.py | 10 状态显式状态机 + Guard 条件 + 检查点持久化 |
| 编排器 | orchestrator.py | 顶层控制器,状态机驱动 5 阶段流程,全局异常捕获 |
| 输入适配层 | adapters/__init__.py | Layer 1:校验输入 + 关键词提取 + 模板推断 |
| 拆解器 | decomposer.py | Layer 2:策略→TaskDAG,循环依赖检测,并行约束 |
| 调度器 | dispatcher.py | Layer 3:并发执行 + 退避重试 + 熔断器 |
| 共识引擎 | consensus.py | Layer 4:统一 DecisionResult 比较 + 分歧管理 |
| 渲染器 | renderer.py | Layer 6:纯渲染 FinalReport → Markdown |
| Saga | saga.py | 副作用管理 + 逆序回滚 |
| 熔断器 | circuit_breaker.py | 将自然语言熔断条件转为可执行逻辑 |
| 幂等性 | idempotency.py | SHA-256 输入哈希 + 缓存,防重复执行 |
| 契约测试 | tests/contract_tests.py | Schema 边界值测试 |
| Saga 测试 | tests/saga_tests.py | 回滚机制测试 |
| 共识测试 | tests/consensus_tests.py | 共识判定逻辑测试 |
from orchestrator import TriangulateOrchestrator
from adapters import InputAdapter
from decomposer import TaskDecomposer
from dispatcher import ExecutionDispatcher
from consensus import ConsensusEngine
from renderer import ReportRenderer
# 完整配置(Saga 回滚 + 幂等性缓存 + 熔断保护)
orchestrator = TriangulateOrchestrator(
input_adapter=InputAdapter(strict_mode=True),
decomposer=TaskDecomposer(enforce_parallel=True),
dispatcher=ExecutionDispatcher(global_timeout=300),
consensus_engine=ConsensusEngine(),
renderer=ReportRenderer(),
enable_saga=True, # Saga 事务回滚
enable_idempotency=True, # SHA-256 幂等性缓存
enable_circuit_breaker=True, # 6 条可执行熔断规则
)
# 支持多种输入格式
report = orchestrator.run("分析数据库选型")
report = orchestrator.run({"task_description": "分析数据库选型", "importance": 4})
# 查看工作流进度(含 Saga/熔断/幂等性状态)
progress = orchestrator.get_progress()
print(f"Phase: {progress['phase']}, Degraded: {progress['degraded']}")
print(f"Breaker: {progress['breaker']}, Idempotency: {progress['idempotency']}")
# Markdown 渲染
renderer = ReportRenderer()
print(renderer.render_markdown(report))
# 多次 run 之间需 reset
orchestrator.reset()
report2 = orchestrator.run("另一个任务")
# 部署时注册 sessions_spawn 创建的 session ID(Saga 回滚用)
orchestrator._auto_register_session("session-abc", "strategy")
orchestrator._auto_register_session("session-def", "execution")
一个视角有盲区,两个视角有偏差,三个独立视角 ≥ 2/3 一致则可信。
决策层 (3个独立agent/视角)
↑ 任务指令 ↓ 共识结果
管理层 (任务拆解 + 调度 + 报告汇总)
↑ 可并行子任务 ↓ 执行报告
执行层 (N个并发 sessions_spawn)
三层各司其职:
| 判断标准 | 示例 |
|---|---|
| 重要性 ≥ 4(1-5分) | 技术选型、方案决策 |
| 需 ≥ 3 独立信息源交叉验证 | 研究调研、数据核实 |
| 有多个可行方案需对比 | 架构设计、技术栈选择 |
| 决策可能产生长期影响 | 系统设计、投资决策 |
| 常规思路卡住 > 2次 | 疑难问题诊断 |
| 用户直接要求深度分析 | /deep /tri 模式 |
简单问答不触发 — 日常查询直接回答。
| 档次 | 执行器 | 决策者 | 适用场景 |
|---|---|---|---|
| 🥇 全量 | 2-3 | 3 | 重大决策、方案选型、深度调研 |
| 🥈 平衡 | 1-2 | 2 | 一般复杂任务、多源验证 |
| 🥉 轻量 | 1 | 1 | 快速多视角检查 |
| 🎯 子技能调度 | 1 | N(按技能数) | 需要调用外部 SKILL.md 完成子任务 |
选择: 简单问答→不触发 / 2-5步→轻量或平衡 / ≥5步或重要性≥4→全量 / 需复用已有技能→子技能调度
子代理 Prompt 标准:所有
sessions_spawn的 task 参数必须遵循 AGENTS.md 五段模板(角色定义 → 上下文 → 任务 → 约束 → 输出格式)。以下示例已对齐此标准。
任务类型:[参考视角模板库]
任务描述:[一句话]
重要性:[1-5]
推荐配置:[全量/平衡/轻量]
需管理层拆任务:[是/否]
需执行层:[是/否]
推荐视角模板:[模板编码,如T-01,或空着用默认]
task: "[System: 角色定义] 你是一位严格的批判型分析者,专门评估方案的盲区和风险,不受现有共识影响。
[Context: 上下文状态] 当前正在对以下任务进行三视角共识分析的第一轮评估:
[任务描述]
[Task: 具体任务] 基于你的视角,独立评估以下方面并输出统一 DecisionResult JSON:
① 值得投入资源吗?(1-5分,说明理由)→ importance
② 推荐什么配置档次?→ config: "全量"/"平衡"/"轻量"/"子技能调度"
③ 有什么被忽略的风险或盲区?→ risks[]
④ 你推荐从什么角度切入?→ top_findings[]
[Constraints: 约束条件] 你的评估必须严格、批判、与主视角独立。不要受已有共识影响。严格遵循自己的判断。
[Output: 输出格式] 输出以下统一 JSON 格式:
{
\"agent_id\": \"B\",
\"importance\": <1-5>,
\"config\": \"全量\",
\"reasoning\": \"<≥10字的推理说明>\",
\"risks\": [\"<风险1>\", \"<风险2>\"],
\"top_findings\": [\"<结论1>\", \"<结论2>\"],
\"confidence\": <0.0-1.0>
}"
task: "[System: 角色定义] 你是一位务实型分析者,专注于评估方案的实际产出价值和落地可行性。
[Context: 上下文状态] 当前正在对以下任务进行三视角共识分析的第一轮评估:
[任务描述]
[Task: 具体任务] 基于你的视角,独立评估并输出统一 DecisionResult JSON:
① 实际产出价值多大?(1-5分)→ importance
② 推荐什么配置档次?→ config
③ 最小可行方案是什么?→ top_findings[]
④ 如果只能产出核心结论 → top_findings[]
[Constraints: 约束条件] 你的评估必须务实、实事求是,关注最小可行方案。不受其他视角影响。
[Output: 输出格式] 输出以下统一 JSON 格式:
{
\"agent_id\": \"C\",
\"importance\": <1-5>,
\"config\": \"平衡\",
\"reasoning\": \"<≥10字的推理说明>\",
\"risks\": [],
\"top_findings\": [\"<结论1>\", \"<结论2>\"],
\"confidence\": <0.0-1.0>
}"
由 consensus.py 执行:
✅ ≥2/3 维度一致 → CONSENSUS → 采纳
⚠️ 分歧 → DIVERGENCE → 自动重试(最多 2 轮)
❌ 连续 2 轮分歧 → FALLBACK_TO_USER → 转交用户全权裁定
由 decomposer.py 执行,自动拆解为 TaskDAG + 循环依赖检测。
task: "[System: 角色定义] 你是一个管理型AI agent,负责将复杂任务拆解为可并行执行的子任务,并分配资源和约束。
[Context: 上下文状态] 以下是决策层第一阶段共识结果,需要拆解为可执行的工作包:
主任务:[阶段一共识结果]
配置档次:[全量/平衡/轻量]
[Task: 具体任务] 将主任务拆解为 2-5 个可并行执行的子任务。
每个子任务需包含:
- 子任务编号
- 明确的子目标(可验证的完成标准)
- 输出格式要求
- 最大 token 预算
[Constraints: 约束条件]
- 子任务之间不能有数据依赖(必须可并行)
- 每个子任务规模相当
- 总量不超过配置档次的上限
[Output: 输出格式] 为每个子任务输出一条完整的 `sessions_spawn` 指令,每条指令遵循五段模板"
由 dispatcher.py 执行,支持并发 + 退避重试 + 熔断。
每个执行器一个 sessions_spawn(context: isolated),用 sessions_yield 等待。
管理层汇总:去重、归类、标注质量评分(1-5)。
决策者B、C独立审阅汇总报告,各自筛选最佳结论(≤3条)。 共识检查后进入输出。
由 renderer.py 渲染(保留原始格式):
═══════════════════════════════════════
🔺 Triangulate 分析报告
───────────────────────────────────────
📌 任务:[描述]
⚙️ 配置:[档次] | 执行器×N | 决策者×N
🧩 视角:[模板编码]
📊 核心结论
① [来自共识]
② [来自共识]
③ [来自共识]
🔍 分歧点(如有)
- [说明]
⚠️ 不确定性
- [局限与不确定因素]
═══════════════════════════════════════
按领域分类,失效用。优先在库中查找,找不到则用「视角自创建」规则实时生成。
| 编码 | 模板名 | A视角 | B视角 | C视角 |
|---|---|---|---|---|
| T-01 | 技术方案选型 | 架构师(可扩展/长期维护) | 安全运维(稳定/安全/成本) | 产品用户(效率/体验/迭代) |
| T-02 | 代码审查 | 功能正确(逻辑/边界条件) | 性能安全(漏洞/敏感数据) | 可维护性(命名/测试/文档) |
| T-03 | 系统架构设计 | 性能规模(吞吐/延迟/扩展) | 可靠容错(灾备/SLA/恢复) | 开发体验(迭代速度/调试) |
| T-04 | API设计 | 调用者(易用/一致/文档) | 实现者(可维护/向后兼容) | 安全(认证/限流/数据保护) |
| T-05 | 数据库选型 | 存储模型(关系/文档/图) | 查询模式(延迟/并发/聚合) | 运维(备份/扩展/生态) |
| T-06 | AI/ML方案 | 模型(精度/延迟/可解释) | 数据(质量/标注/管道) | 部署(成本/监控/迭代) |
| T-07 | 测试策略 | 功能覆盖(边界/回归) | 性能(负载/压力/稳定) | 安全(渗透/注入/认证) |
| T-08 | 工具框架选型 | 功能(满足度/成熟度) | 生态(社区/文档/插件) | 成本(学习/迁移/许可) |
| T-09 | 部署架构 | 弹性(自动扩缩/负载) | 安全(隔离/审计/访问控制) | 成本(预留/按需/Spot) |
| T-10 | 重构方案 | 目标(解耦/可测/可读) | 风险(回归/兼容/迁移) | 节奏(渐进/大爆炸/分阶段) |
| 编码 | 模板名 | A视角 | B视角 | C视角 |
|---|---|---|---|---|
| A-01 | 问题诊断 | 主诊断(最可能路径) | 怀疑论(不是这个原因) | 类比学派(相似案例跨域匹配) |
| A-02 | 数据解读 | 统计(信号vs噪声/显著性) | 因果(相关≠因果/混淆变量) | 实务(商业/实际意义) |
| A-03 | 不确定性评估 | 概率(最可能/乐观/悲观) | 影响(错了代价多大) | 对冲(减轻/转移/承受) |
| A-04 | 风险评估 | 可能性(概率/频率) | 严重度(影响范围/深度/时间) | 可控度(预防/检测/响应) |
| A-05 | 根因分析 | 流程(系统化缺陷/规范) | 人为(判断/沟通/认知偏差) | 环境(外部/不可控/黑天鹅) |
| A-06 | 成本分析 | 直接(可见/可算) | 隐性(机会/延迟/维护) | 长期(累积/折旧/置换) |
| A-07 | 优劣势对比 | 优势(护城河/独特性) | 劣势(短板/依赖/风险) | 时效(何时过期/被替代) |
| A-08 | 决策审计 | 前提假设(如果错了会怎样) | 过程偏差(确认偏误/锚定) | 替代方案(没选的后来怎样) |
| 编码 | 模板名 | A视角 | B视角 | C视角 |
|---|---|---|---|---|
| B-01 | 战略规划 | 短期(0-3月: 生存/执行) | 中期(3-12月: 增长/卡位) | 长期(1-5年: 愿景/护城河) |
| B-02 | 竞品分析 | 自身(优势/劣势/资源) | 对手(战略/动作/短板) | 市场(趋势/替代/新进入者) |
| B-03 | 产品设计 | 用户(需求/痛点/体验) | 技术(可行/可维护/时间) | 商业(收入/成本/市场) |
| B-04 | 市场进入 | 产品(差异化/竞争力) | 渠道(触达/合作/效率) | 受众(需求/支付意愿/忠诚) |
| B-05 | 投资财务 | 基本面(价值/护城河/壁垒) | 技术面(趋势/估值/情绪) | 风险(下行/流动性/分散) |
| B-06 | 定价策略 | 用户(价值感知/支付意愿) | 竞品(锚定/差异化) | 成本(覆盖/利润率/弹性) |
| B-07 | 商业模式评估 | 收入(规模/持续性/多样性) | 成本(结构/杠杆/可变) | 壁垒(模仿/替代/衰退) |
| B-08 | 增长策略 | 获客(渠道/效率/留存) | 转化(漏斗/优化/AB) | 规模化(瓶颈/组织/成本) |
| B-09 | 并购合作 | 战略契合(互补/协同/控制) | 财务(估值/回报/整合成本) | 文化(团队/流程/冲突) |
| B-10 | 供应链运营 | 成本(采购/物流/库存) | 效率(周期/瓶颈/自动化) | 弹性(中断/替代/冗余) |
| 编码 | 模板名 | A视角 | B视角 | C视角 |
|---|---|---|---|---|
| H-01 | 团队人事 | 能力(技能/经验/成长) | 文化(契合/冲突/多样化) | 组织(结构/角色/冗余) |
| H-02 | 沟通冲突 | 己方(利益/情绪/目标) | 对方(利益/动机/底线) | 关系(长期/信任/面子) |
| H-03 | 谈判准备 | 己方(底线/目标/替代方案) | 对方(底线/需求/替代方案) | 第三方(影响/牵制/协同) |
| H-04 | 绩效评估 | 成果(量/质/时间) | 过程(方法/努力/协作) | 成长(学习/挑战/潜力) |
| H-05 | 组织变革 | 必要性(为什么/及时性) | 阻力(谁/失去/如何化解) | 执行(节奏/沟通/支持) |
| H-06 | 招聘面试 | 硬技能(技术/领域/深度) | 软技能(沟通/协作/韧性) | 潜力(学习力/文化/自驱) |
| 编码 | 模板名 | A视角 | B视角 | C视角 |
|---|---|---|---|---|
| P-01 | 职业规划 | 短期(1-3年: 技能/机会) | 中期(3-7年: 方向/积累) | 长期(7-15年: 愿景/价值) |
| P-02 | 学习规划 | 能力(技能缺口/路径) | 兴趣(动力/持续/方向) | 机遇(行业/网络/可能性) |
| P-03 | 时间精力管理 | 价值(产出/杠杆/优先级) | 精力(波峰/恢复/节奏) | 系统(习惯/自动化/少决策) |
| P-04 | 生活决策 | 短期(快乐/稳定/收入) | 中期(成长/积累/探索) | 长期(遗憾最少/复利/意义) |
| P-05 | 习惯养成 | 动机(为什么要/紧迫性) | 能力(门槛/拆分/渐进) | 环境(触发/奖励/社交) |
| P-06 | 健康平衡 | 身体(运动/睡眠/饮食) | 心理(压力/社交/边界) | 系统(习惯/环境/支持) |
| 编码 | 模板名 | A视角 | B视角 | C视角 |
|---|---|---|---|---|
| S-01 | 赛事预测 | 数据(积分/状态/交锋) | 赔率市场(期望/波动/异常) | 场外(伤病/赛程/士气) |
| S-02 | 球员评估 | 数据(效率/贡献/稳定性) | 场景(体系/角色/适配) | 趋势(年龄/伤病史/潜力) |
| S-03 | 策略分析 | 己方(优势/战术/执行) | 对方(弱点/模式/调整) | 全局(规则/裁判/环境) |
| 编码 | 模板名 | A视角 | B视角 | C视角 |
|---|---|---|---|---|
| C-01 | 内容创作 | 创作者(框架/信息/结构) | 编辑(精炼/逻辑/一致性) | 读者(可读/吸引/理解门槛) |
| C-02 | 营销策略 | 信息(核心/差异化/信任) | 渠道(触达/转化/成本) | 受众(画像/需求/同理心) |
| C-03 | 品牌定位 | 产品(功能/品类/价格) | 形象(人格/故事/调性) | 用户(认知/联想/忠诚) |
| C-04 | UX/UI设计 | 用户(任务/场景/心智模型) | 界面(信息架构/交互/视觉) | 技术(性能/可及/迭代) |
| 编码 | 模板名 | A视角 | B视角 | C视角 |
|---|---|---|---|---|
| E-01 | 爬虫工程 | 架构(目标站点/反爬策略/规模) | 链路(请求/解析/存储/去重) | 运维(频率/IP/稳定性/监控) |
| E-02 | 渗透测试 | 攻击者(信息收集/入口/横向/提权) | 防御者(日志/检测规则/响应) | 风险(影响面/修复难度/优先级) |
| E-03 | 逆向工程 | 二进制(结构/算法/混淆/RTTI) | 行为(数据流/通信/意图) | 防御(加固/检测/溯源/反反编译) |
| E-04 | LLM/Agent系统 | 模型(能力边界/幻觉/上下文) | 架构(工具调用/记忆/编排) | 安全(越狱/注入/Prompt泄露) |
| E-05 | 量化金融 | 策略(因子/回测/过拟合) | 风控(止损/回撤/杠杆/流动性) | 执行(延迟/滑点/交易成本) |
| E-06 | 文学创作 | 结构(起承转合/节奏/伏笔/悬念) | 人物(弧光/动机/可信度/成长线) | 市场(读者/平台/变现/IP运营) |
| E-07 | 短视频制作 | 脚本(钩子/节奏/信息密度) | 视觉(构图/配乐/特效/剪辑节奏) | 算法(完播率/互动/平台推荐) |
源自 codex 的「主技能派发子技能」模式。适用于需要多个已有技能协作完成的任务。
管理层识别子任务 → 映射到外部 SKILL.md
↓
执行层为每个子技能创建一个 sessions_spawn
↓
每个子任务 task 中传入 skill_path 参数
↓
子 agent 自行读取 SKILL.md 执行
↓
管理层合并所有子技能输出
task: "你是 Claw 的子任务执行器。
请基于以下技能路径完成任务:
技能路径: skills/<子技能目录>/SKILL.md
任务范围: [具体说明这个子技能的 scope]
步骤:
1. 读取 SKILL.md 了解完整流程
2. 按技能定义执行任务
3. 输出结果(格式不限,但必须完整)
限制:
- 不修改技能文件
- 不跨越 scope 边界
- 完成后返回摘要"
子技能调度模式可跳过或结合决策层:
如果库中找不到合适模板,用以下规则即时生成:
给任意任务X生成三个视角:
A = 主流视角(最直接的、最可能的、主流的答案)
B = 批判视角(质疑前提、考虑失败、找反例)
C = 第三维视角(跨域类比、长期影响、非常规角度)
示例 — 评估第三方支付风险:
自创建视角:
A — 技术:集成复杂度、API质量、文档、SLA
B — 业务:费用结构、用户影响、迁移成本
C — 运维:监控告警、故障恢复、技术支持
也可在预置模板上微调 — 如把T-01的A视角改成「可维护性」,就适配了不同侧重的选型。
| 关键词 | 推荐模板 |
|---|---|
| 选型/对比/方案/框架/工具 | T-01 / T-08 |
| 诊断/调试/问题/故障/bug | A-01 / A-05 |
| 设计/架构/系统/重构 | T-03 / T-10 |
| 数据/分析/报告/指标 | A-02 / A-03 |
| 风险/安全/合规 | A-04 / T-02-B |
| 战略/规划/路线图 | B-01 |
| 竞品/竞争/市场 | B-02 / B-04 |
| 产品/体验/交互 | B-03 / C-04 |
| 投资/估值/收购 | B-05 / B-09 |
| 定价/收入/变现 | B-06 / B-07 |
| 团队/招聘/人事 | H-01 / H-06 |
| 爬虫/反爬/数据采集 | E-01 |
| 渗透/漏洞/安全测试 | E-02 |
| 逆向/反编译/脱壳/分析 | E-03 |
| 大模型/Agent/LLM/Prompt | E-04 / T-06 |
| 量化/交易/回测/因子 | E-05 / B-05 |
| 小说/写作/剧本/故事 | E-06 / C-01 |
| 短视频/剪映/视频 | E-07 |
| 谈判/冲突/沟通 | H-02 / H-03 |
| 职业/学习/成长 | P-01 / P-02 |
| 健康/精力/习惯 | P-05 / P-06 |
| 生活/决策/选择 | P-04 |
| 预测/比赛/赛事 | S-01 / S-02 |
| 写作/内容/营销 | C-01 / C-02 |
| 品牌/定位 | C-03 |
多个匹配时按「具体>通用」选。都不匹配→视角自创建。
book-full-dimension-internalization 是 triangulate 的特化实例:
Triangulate
└─ book-full-dimension-internalization
├ 视角固定为知识学习的三个维度
├ 输出格式固定为知识文件
└ 添加熔断:预算上限 + 余额告警
由 circuit_breaker.py 提供可执行实现:
| 条件 | 处理 | 实现 |
|---|---|---|
| 子任务失败 > 50% | 重新分配或降级执行 | check_task_failure_rate() |
| 共识分歧 > 2轮 | 转交用户全权裁定 | check_consensus_divergence() |
| 执行器超时 | 跳过该执行器,其他照常汇总 | check_executor_timeout() |
| 用户中途打断 | 立即停止,返回已有结果 | check_user_interrupt() |
| 全局超时 | 立即停止 | check_global_timeout() |
| Token 预算超限 | 降级到轻量配置 | check_token_budget() |
sessions_spawn / sessions_yield 工具可用,否则退化为单线程本技能在以下场景自动激活(无需手动指令):
激活判断:决策需要 ≥ 2/3 共识才能推进,或复杂度需要多视角交叉验证。 非激活场景:简单是与否的决策、经验已知的常规操作。
| 场景 | 示例 |
|---|---|
| 需要多视角决策 | 三角验证 triangulate |
| 方案选型争议 | 帮我决策 哪个方案好 |
| 复杂问题诊断 | 从多个角度分析 多维评估 |
通过 idempotency.py 提供:
from idempotency import IdempotencyGuard
guard = IdempotencyGuard(ttl_seconds=1800)
result, is_cache_hit = guard.execute_or_cache(
user_input,
executor_fn=lambda: orchestrator.run(user_input),
)
# is_cache_hit=True → 直接返回缓存,不重复执行副作用
| 状态 | 说明 |
|---|---|
| IDLE | 初始状态 |
| INPUT_VALIDATION | 输入校验中 |
| STRATEGY | 决策层定策略 |
| DISPATCH | 管理层拆解 |
| EXECUTE | 执行层并行 |
| REVIEW | 决策层审阅 |
| RENDER | 输出渲染 |
| DONE | 正常完成 |
| CANCELLED | 用户中断 |
| FAILED | 系统异常 |