claudeers.
// Claude Skills

liangyi

One idea, two opposing expert views, one synthesized decision. A Claude Code workflow for adversarial product development — inspired by the I Ching.

// Claude Skills[ cli ][ api ][ web ][ mobile ][ claude ]#claude#adversarial-review#agent-skills#claude-code#claude-skill#i-ching#liangyi#multi-model#skills◷ MIT$open-sourceupdated 10 days ago

Install with your AI

Paste into Claude Code, Cursor, or any agent — it reads the repo and wires the tool into your project.

Install and set up liangyi (git-clone project) into my current project.
Found on https://claudeers.com/liangyi
Repo: https://github.com/wenboxia/liangyi
Homepage/docs: https://liangyi-five.vercel.app
Detected install method: git-clone → git clone https://github.com/wenboxia/liangyi
Category: skills. Platforms: cli, api, web, mobile.
Read the repo's README for exact setup and env vars, then install it and wire it into my project.

Claudeers Health Verdict:
unknown; community-verified: false. Confirm the source before running anything.
// or clone
git clone https://github.com/wenboxia/liangyi

// compatibility

Platformscli, api, web, mobile
Operating systems—
AI compatibilityclaude
LicenseMIT
Pricingopen-source
LanguageHTML

Get your FREE $2.50 API credits to access TickAtlas financial data ↗

两仪 · Liangyi

一念生两仪,两仪成决策。

一个想法进去,一份经过四轮对抗审查的方案出来。

  • P1 对抗式方案生成:两位底模坐标不同的专家各自独立出方案,由执笔者融合成 v1。
  • P2 四轮批判链:投资人批判 → 零上下文单盲复审 → 方向漂移检测与回退 → 前提拆台与致命论据分级。执笔与四轮批判各开独立窗口,互不共享上下文;单盲复审、前提拆台与专家 B 来自与执笔者不同的厂商、不同对齐路线。
  • 多出口循环:拆台判定驱动回退——回 P1 整链重跑、回 P2 重压批判链、结构性死锁退出,两轮封顶。
  • HITL 节点:在方向回退与拆台判定两个关键节点提供人工判断选项,auto / hitl 两档可切换。

为什么要这么做:单个模型自己写、自己审,审不出自己的盲区。

在线体验 → https://liangyi-five.vercel.app 把你的想法输进去,看它走完全部 13 步(演示档,每人每天 3 次)。

English


它解决什么

一个人拿着一个想法去问 AI,AI 会顺着他说。再问一次,还是顺着说。三轮之后方案很漂亮,但里面没有一处被认真反对过——方案的边界是被 AI 的顺从画出来的,不是被人的判断画出来的。

两仪把这件事拆开:出方案的和批判的必须是不同坐标的模型,四轮批判来自四个新开的窗口,每一轮只处理一条,最后由人(或规则)判「这还是我想要的吗」。

快速开始

pip install -r requirements.txt
cp .env.example .env        # 填四个 key:OpenRouter / DeepSeek / Moonshot / Zhipu
python3 -m engine.run --check                              # 预检:硬规则 + provider
python3 -m engine.run -s scenarios/what-to-wear.yaml       # 跑一条完整的链

跑完看结果:

python3 -m engine.inspect runs/<运行目录>                 # 每步谁在跑、花了多少
python3 -m engine.inspect runs/<运行目录> --diff idea-v1.md idea-v5.md

两个档位:--mode auto 全自动一次不停;--mode hitl 在两个边界决策点停下来问人,每处给两份旗舰模型的建议。

网页同样支持两档。 选「人工判断」后,链条会在「方向漂移回退」(2C)和「拆台判定」(2D)两处停下: 给你看诊断或分级表、「你当初要 X,现在变成 Y」的摘要,三个选项与终端一致,可附一段指令; 选「接受」不多花一次模型调用,改指令则那一步重跑一次。顾问材料包可下载,自己去问 GPT / Claude。 运行中可以停止、继续、失败时只重试那一步,跑完可下载整份运行记录。

在线入口本地起:python3 web/server.py,然后打开 http://127.0.0.1:8765。

十三步 · 状态机

auto 档(全自动一次不停)

flowchart TB
  classDef anchor fill:#F0EEE6,stroke:#B0AEA5,color:#141413
  classDef divA fill:#E4ECF2,stroke:#8FA3B3,color:#141413
  classDef divB fill:#E8F0E6,stroke:#8FB08F,color:#141413
  classDef hitl fill:#FBEFE9,stroke:#D97757,stroke-width:2px,color:#141413
  classDef route fill:#FFF4D6,stroke:#C9A227,color:#141413
  classDef exitA fill:#F8DADA,stroke:#B04141,color:#141413
  classDef exitB fill:#DCEEF3,stroke:#3E7A8C,color:#141413
  classDef exitC fill:#E9E8E4,stroke:#666,color:#141413
  classDef done fill:#141413,stroke:#141413,color:#FAF9F5
  SEED([原初想法]) --> P0[P0 忠实精炼<br/>anchor]
  P0 --> P10[P1.0 生成对抗角色<br/>anchor · 假对立检测]
  P10 -. 假对立 → 重生成 ≤1 次 .-> P10
  P10 --> P1A[P1A 专家 A<br/>anchor]
  P10 --> P1B[P1B 专家 B<br/>divergent_a · 与 A 互不可见]
  P1A --> P14[P1.4 融合 → v1<br/>anchor 执笔]
  P1B --> P14
  P14 --> P2A[P2A 投资人批判<br/>anchor · 新窗口] --> AF[2A-fix → v2<br/>执笔]
  AF --> P2B[P2B 零上下文单盲<br/>divergent_b · 只见正文] --> BF[2B-fix → v3<br/>执笔]
  BF --> P2C[P2C 知情复审<br/>anchor · 对照 v1/v3 查漂移]
  P2C --> CR[2C-rollback → v4<br/>执笔按诊断自判回退]
  CR --> P2D[P2D 拆台<br/>divergent_a · 只攻前提] --> DF[2D-fix → v5<br/>执笔分级判定]
  DF --> R1
  R1{致命论据 ≥ 2?<br/>K 级 × 具体性高}
  R1 -- 否 --> V5[产出 v5]
  R1 -- 是 · 第 1 轮 --> EA[出口 A · 回 P1<br/>整链重跑]
  R1 -- 是 · 第 2 轮 · 议题重叠 ≥ 60% --> EC([出口 C · 结构性死锁])
  R1 -- 是 · 第 2 轮 · 重叠 < 60% --> FORCE[终止条件兜底<br/>强制产出 v5] --> V5
  V5 --> R2{K 占比 ≥ 60%<br/>且第 1 轮?}
  R2 -- 是 --> EB[出口 B · 回 P2<br/>v5 当新初稿]
  R2 -- 否 --> END([结束])
  EA -. 新一轮 · 窗口全新开 .-> P0
  EB -. 新一轮 · 只重跑批判链 .-> P2A
  class P0,P10,P1A,P14,P2A,AF,BF,P2C,CR,DF anchor
  class P1B,P2D divA
  class P2B divB
  class R1,R2 route
  class EA exitA
  class EB exitB
  class EC exitC
  class END,V5 done

hitl 档(只有 ★ 处不同:两个停点各有三个选项,「前提错了」直接接出口 A)

flowchart TB
  classDef anchor fill:#F0EEE6,stroke:#B0AEA5,color:#141413
  classDef divA fill:#E4ECF2,stroke:#8FA3B3,color:#141413
  classDef divB fill:#E8F0E6,stroke:#8FB08F,color:#141413
  classDef hitl fill:#FBEFE9,stroke:#D97757,stroke-width:2px,color:#141413
  classDef route fill:#FFF4D6,stroke:#C9A227,color:#141413
  classDef exitA fill:#F8DADA,stroke:#B04141,color:#141413
  classDef exitB fill:#DCEEF3,stroke:#3E7A8C,color:#141413
  classDef exitC fill:#E9E8E4,stroke:#666,color:#141413
  classDef done fill:#141413,stroke:#141413,color:#FAF9F5
  SEED([原初想法]) --> P0[P0 忠实精炼<br/>anchor]
  P0 --> P10[P1.0 生成对抗角色<br/>anchor · 假对立检测]
  P10 -. 假对立 → 重生成 ≤1 次 .-> P10
  P10 --> P1A[P1A 专家 A<br/>anchor]
  P10 --> P1B[P1B 专家 B<br/>divergent_a · 与 A 互不可见]
  P1A --> P14[P1.4 融合 → v1<br/>anchor 执笔]
  P1B --> P14
  P14 --> P2A[P2A 投资人批判<br/>anchor · 新窗口] --> AF[2A-fix → v2<br/>执笔]
  AF --> P2B[P2B 零上下文单盲<br/>divergent_b · 只见正文] --> BF[2B-fix → v3<br/>执笔]
  BF --> P2C[P2C 知情复审<br/>anchor · 对照 v1/v3 查漂移]
  P2C --> CR[2C-rollback → v4<br/>执笔]
  CR --> H1{{★ HITL ① 停下等你<br/>诊断 + 「当初要 X → 现在变成 Y」}}
  H1 -- 接受 --> P2D
  H1 -- 指定回退 / 指定保留<br/>带指令重跑 --> CR
  P2D[P2D 拆台<br/>divergent_a · 只攻前提] --> DF[2D-fix → v5<br/>执笔分级判定]
  DF --> H2{{★ HITL ② 停下等你<br/>分级表 + 判定}}
  H2 -- 按判定走 --> R1
  H2 -- 框架内改<br/>带指令重跑 --> DF
  H2 -- ★ 前提错了 --> EA
  R1{致命论据 ≥ 2?<br/>K 级 × 具体性高}
  R1 -- 否 --> V5[产出 v5]
  R1 -- 是 · 第 1 轮 --> EA[出口 A · 回 P1<br/>整链重跑]
  R1 -- 是 · 第 2 轮 · 议题重叠 ≥ 60% --> EC([出口 C · 结构性死锁])
  R1 -- 是 · 第 2 轮 · 重叠 < 60% --> FORCE[终止条件兜底<br/>强制产出 v5] --> V5
  V5 --> R2{K 占比 ≥ 60%<br/>且第 1 轮?}
  R2 -- 是 --> EB[出口 B · 回 P2<br/>v5 当新初稿]
  R2 -- 否 --> END([结束])
  EA -. 新一轮 · 窗口全新开 .-> P0
  EB -. 新一轮 · 只重跑批判链 .-> P2A
  class P0,P10,P1A,P14,P2A,AF,BF,P2C,CR,DF anchor
  class P1B,P2D divA
  class P2B divB
  class R1,R2 route
  class EA exitA
  class EB exitB
  class EC exitC
  class END,V5 done
  class H1,H2 hitl

图源:docs/visualizations/build_flow_mmd.py(两图共用主体,改一处两边同步)。

图例:灰 = anchor(执笔 / 专家 A / 投资人 / 知情复审)· 蓝 = divergent_a(专家 B / 拆台)· 绿 = divergent_b(单盲)· 橙边 = HITL 停点(auto 档自动通过,hitl 档停下等你)· 虚线 = 回边。 两个档位走的是同一张图:auto 在两个橙边节点按执笔者判定直接通过;hitl 在那里停下,三选一后接着走。 P0 忠实性和 2A/2B-fix 的范围扩大化两个检测器在所有档位后台运行,只记录不打断。

槽位正式档(CLI 默认)演示档(网页)
anchorclaude-sonnet-5 · A1·B1gpt-5.6-luna · A2·B1
divergent_adeepseek-v4-pro · A3·B3deepseek-v4-flash · A3·B3
divergent_bglm-5.3 · A3·B2glm-4-flash · A3·B2

批判步和修改步交替,每一次批判来自一个新开的、坐标不同的窗口;每一次修改都由同一个执笔窗口完成——分歧在审查环节,不在修改环节,否则方案会变成多个 AI 的拼贴。

最后一步给每条拆台论据分级(打不打前提 × 具体性高不高),按规则走四种收场之一:

收场条件
产出 v5没有致命论据,方向站得住
回 P1 重做两条以上致命论据,方向被推翻,整链重跑
回 P2 重压大部分批判打前提但没被证死,成品当新初稿只重跑批判
结构性死锁第二轮仍撞同一堵墙,停下出报告

最多两轮、单链 $3 封顶。

为什么是这几个模型

选型分两件事判:坐标判不判得了(硬规则)、能力够不够用。

底模坐标两个维度。维度 A · 冲突偏向:A1 规范优先(有一份独立于任务的成文规范压过任务——Claude、Gemini)/ A2 权限优先(规范是「谁说了算」的权限链——GPT)/ A3 任务优先(没有独立规范层,奖励全部来自任务完成度——DeepSeek、Kimi、GLM)。维度 B · 语料文化:B1 英文母语 / B2 中文母语 / B3 跨文化双核。

后训练目标未公开的厂商不进入任何组合(Qwen、豆包、MiniMax)——手上有可用的 key 也不用,这是自我约束的证明。

窗口默认模型坐标承担
执笔claude-sonnet-5A1·B1写初版并执行全部修改
专家 Aclaude-sonnet-5A1·B1P0 精炼、P1 出方案
专家 Bdeepseek-v4-proA3·B3独立出方案,看不到 A
投资人批判claude-sonnet-5A1·B1新开窗口,没有作者包袱
单盲复审glm-5.3A3·B2零上下文,只收方案正文
知情复审claude-sonnet-5A1·B1对照 v1 与 v3
拆台deepseek-v4-proA3·B3必须由任务优先坐标承担——有规范层的底模会在最关键那一刀上把攻击软化掉

默认:Claude × 4 + DeepSeek × 2 + GLM × 1。跨维度是硬规则,具体模型可替换。 在线演示用的是同结构的便宜档:GPT × 4 + DeepSeek Flash × 2 + GLM Flash × 1,一条链实测 8–10 分钟、$0.07–0.09。

六条核心机制

  1. 四轴 divergence —— 任何一对窗口都应在 AI 身份、角色、上下文、范围四个维度不同
  2. P2 链跨底模坐标至少一维 —— 同坐标 = 假覆盖。代码在开跑前检查,不过不开跑
  3. 单盲 = 零上下文 —— 给了背景它就开始猜意图。窗口主动拒绝任何注入历史的尝试
  4. 作者 ≠ 批判者 —— 执笔窗口负责所有修改,批判和复审各自新开
  5. Linear 链路防认知过载 —— 一次处理一条批判,四条齐上会逼人同时持有四个框架
  6. 知情复审查的是漂移,不是错漏 —— 细节错漏属于 2A;它问的是响应完前两轮后有没有从最初定位偏移

项目结构

engine/          13 步链条的可运行实现:编排、窗口隔离、路由、检测器、trace
  prompts/       每一步的提示词,在线入口共用这同一批文件
  test_guarantees.py   83 条结构保证测试
web/             在线入口:一步一个无状态请求,运行目录整个来回传
scenarios/       场景文件(seed + 可选预写角色)
docs/            方法论本体、评测方法、实测案例
retrospective/   一次回溯对照用的封存判据
experiments/     2026-04 到 05 的六次手工实验档案

深一层的材料

想知道看
方法论本体、判据、红线docs/liangyi-workflow-refined.md
拿一个真实项目倒回去重跑的对照docs/case-voyageguard.md
凭什么信上面那个案例的数字docs/evaluation.md
引擎每一步谁在跑、两个档位差在哪engine/PIPELINE.md
二十条方法论合规检验,含失败项engine/VALIDATION.md
全自动变种为什么是实验工具不是产品形态docs/liangyi-auto-variant.md

验到了什么、没验到什么

验到了:链条在 13 条真实运行上跑通(含一次完整回溯对照);83 条结构保证测试锁住机制而不是措辞;循环的出口 A(回 P1)、B(回 P2)用真实判定书离线驱动过。

没验到:出口 A、B 没有一次真实运行走完第二轮;结构性死锁出口 C 需要议题重叠度参数,当前编排器不传,真实运行不可达、也没有测试用例;判定与复判同属一家模型,跨厂商复核没做;回溯案例只有一个项目、跑一次。

还有一条要写在明处:拆台那一步的判定不稳定。同一个场景、同一份待判文档,三次运行分别判出「打中前提 5 条 / 致命 0」「5 / 2」「0 / 0」。整条链上唯一能推翻方向的判断点,自己就在骰子上。细节见 docs/evaluation.md。

作者

夏文博 · AI 产品经理 · 方法论建立于 2026-04-18 一整天的讨论。MIT License。

// faq

What is liangyi?

One idea, two opposing expert views, one synthesized decision. A Claude Code workflow for adversarial product development — inspired by the I Ching.. It is open-source on GitHub.

Is liangyi free to use?

liangyi is open-source under the MIT license, so it is free to use.

What category does liangyi belong to?

liangyi is listed under skills in the Claudeers registry of Claude-compatible tools.

6 views
★ 25 stars
unclaimed
updated 10 days ago

// embed badge

liangyi on Claudeers
[![Claudeers](https://claudeers.com/api/badge/liangyi.svg)](https://claudeers.com/liangyi)

// retro hit counter

liangyi hit counter
[![Hits](https://claudeers.com/api/counter/liangyi.svg)](https://claudeers.com/liangyi)

// reviews

// guestbook

0/500

// related in Claude Skills

🔓

An agentic skills framework & software development methodology that works.

// skillsobra/⟨Shell⟩★ 292,190◷ MIT[ claude ]
🔓

Public repository for Agent Skills

// skillsanthropics/⟨Python⟩★ 178,324[ claude ]
🔓

💫 Toolkit to help you get started with Spec-Driven Development

// skillsgithub/⟨Python⟩★ 138,919◷ MIT[ claude ]
🔓

AI coding assistant skill (Claude Code, Codex, OpenCode, Cursor, Gemini CLI, and more). Turn any folder of code, SQL schemas, R scripts, shell scripts, docs,…

// skillsGraphify-Labs/⟨Python⟩★ 123,800◷ MIT[ claude ]
→ see how liangyi connects across the ecosystem