liangyi
Health Uyari
- License — License: MIT
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Low visibility — Only 8 GitHub stars
Code Gecti
- Code scan — Scanned 12 files during light audit, no dangerous patterns found
Permissions Gecti
- Permissions — No dangerous permissions requested
Bu listing icin henuz AI raporu yok.
One idea, two opposing expert views, one synthesized decision. A Claude Code workflow for adversarial product development — inspired by the I Ching.
两仪 · Liangyi
一念生两仪,两仪成决策。 AI 产品开发工作流:在关键决策点用两个结构性不同的 AI 产出对抗性输出,由人处理张力并做最终决策。
它对抗的是一件具体的事——AI 悄悄溶解掉人的独立判断。不是让流程崩掉,而是让流程顺利跑完,只是跑出来的不是你要的。
在线体验 → (部署后填链接) 把你的想法输进去,看它走完全部 13 步。
它解决什么
一个人拿着一个想法去问 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 在两个边界决策点停下来问人,每处给两份旗舰模型的建议。
在线入口本地起:python3 web/server.py,然后打开 http://127.0.0.1:8765。
十三步
P0 忠实精炼 把原始想法精炼一遍,不改逻辑、不扩展、不质疑
P1.0 生成对抗角色 两个结构性对立的专家角色,带假对立检测
P1A 专家 A 出方案 ┐ 互不可见,坐标不同
P1B 专家 B 出方案 ┘
P1.4 融合成 v1 执笔窗口合成单一立场
P2A 投资人批判 市场与商业逻辑 → 2A-fix 改出 v2
P2B 零上下文单盲复审 只拿到正文的陌生读者 → 2B-fix 改出 v3
P2C 知情复审 对照 v1 与 v3 查方向漂移 → 2C-rollback 回退,改出 v4
P2D 拆台专家 只攻前提,不挑细节 → 2D-fix 分级判定,改出 v5
批判步和修改步交替,每一次批判来自一个新开的、坐标不同的窗口;每一次修改都由同一个执笔窗口完成——分歧在审查环节,不在修改环节,否则方案会变成多个 AI 的拼贴。
最后一步给每条拆台论据分级(打不打前提 × 具体性高不高),按规则走四种收场之一:
| 收场 | 条件 |
|---|---|
| 产出 v5 | 没有致命论据,方向站得住 |
| 回 P1 重做 | 两条以上致命论据,方向被推翻,整链重跑 |
| 回 P2 重压 | 大部分批判打前提但没被证死,成品当新初稿只重跑批判 |
| 结构性死锁 | 第二轮仍撞同一堵墙,停下出报告 |
最多两轮、单链 $3 封顶。
为什么是这几个模型
选型分两件事判:坐标判不判得了(硬规则)、能力够不够用。
底模坐标两个维度。维度 A · 冲突偏向:A1 规范优先(有一份独立于任务的成文规范压过任务——Claude、Gemini)/ A2 权限优先(规范是「谁说了算」的权限链——GPT)/ A3 任务优先(没有独立规范层,奖励全部来自任务完成度——DeepSeek、Kimi、GLM)。维度 B · 语料文化:B1 英文母语 / B2 中文母语 / B3 跨文化双核。
后训练目标未公开的厂商不进入任何组合(Qwen、豆包、MiniMax)——手上有可用的 key 也不用,这是自我约束的证明。
| 窗口 | 默认模型 | 坐标 | 承担 |
|---|---|---|---|
| 执笔 | claude-sonnet-5 | A1·B1 | 写初版并执行全部修改 |
| 专家 A | claude-sonnet-5 | A1·B1 | P0 精炼、P1 出方案 |
| 专家 B | deepseek-v4-pro | A3·B3 | 独立出方案,看不到 A |
| 投资人批判 | claude-sonnet-5 | A1·B1 | 新开窗口,没有作者包袱 |
| 单盲复审 | glm-5.3 | A3·B2 | 零上下文,只收方案正文 |
| 知情复审 | claude-sonnet-5 | A1·B1 | 对照 v1 与 v3 |
| 拆台 | deepseek-v4-pro | A3·B3 | 必须由任务优先坐标承担——有规范层的底模会在最关键那一刀上把攻击软化掉 |
默认:Claude × 4 + DeepSeek × 2 + GLM × 1。跨维度是硬规则,具体模型可替换。 在线演示用的是同结构的便宜档:GPT × 4 + DeepSeek Flash × 2 + GLM Flash × 1,一条链实测 8–10 分钟、$0.07–0.09。
六条核心机制
- 四轴 divergence —— 任何一对窗口都应在 AI 身份、角色、上下文、范围四个维度不同
- P2 链跨底模坐标至少一维 —— 同坐标 = 假覆盖。代码在开跑前检查,不过不开跑
- 单盲 = 零上下文 —— 给了背景它就开始猜意图。窗口主动拒绝任何注入历史的尝试
- 作者 ≠ 批判者 —— 执笔窗口负责所有修改,批判和复审各自新开
- Linear 链路防认知过载 —— 一次处理一条批判,四条齐上会逼人同时持有四个框架
- 知情复审查的是漂移,不是错漏 —— 细节错漏属于 2A;它问的是响应完前两轮后有没有从最初定位偏移
项目结构
engine/ 13 步链条的可运行实现:编排、窗口隔离、路由、检测器、trace
prompts/ 每一步的提示词,在线入口共用这同一批文件
test_guarantees.py 76 条结构保证测试
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 条真实运行上跑通(含一次完整回溯对照);76 条结构保证测试锁住机制而不是措辞;循环的四条出口用真实判定书离线驱动过。
没验到:四条出口没有一次真实运行走完第二轮;判定与复判同属一家模型,跨厂商复核没做;回溯案例只有一个项目、跑一次。
还有一条要写在明处:拆台那一步的判定不稳定。同一个场景、同一份待判文档,三次运行分别判出「打中前提 5 条 / 致命 0」「5 / 2」「0 / 0」。整条链上唯一能推翻方向的判断点,自己就在骰子上。细节见 docs/evaluation.md。
作者
夏文博 · AI 产品经理 · 方法论建立于 2026-04-18 一整天的讨论。MIT License。
Yorumlar (0)
Yorum birakmak icin giris yap.
Yorum birakSonuc bulunamadi