Kamra PMS
Try Kamra — the open-source, AI-native hotel PMS. Front desk, direct booking, housekeeping, folios and GST billing. One-tap demo logins for every role.
两仪 Liangyi · 跨厂商多 Agent 产品想法优化工作流
Translation pending
BusinessPython · HTMLGitHub @wenboxiaOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Loading the full README. The saved excerpt is shown below.
线上实跑录屏(hitl 档,时间压缩):选一个示例想法 → 第 1 轮判回 P1 → 第 2 轮整链重跑 → 每轮两个停点各做一次决定 → 交付 v5 两仪 Liangyi · 跨厂商多 Agent 产品想法优化工作流 一个产品想法进去,一份经过四轮独立批判的方案出来。7 个上下文互相隔离的角色 Agent 分属三家厂商、按底模坐标分工:想法先被忠实重述,两位对立专家互不可见地各出方案并融合,再依次经过投资人批判 → 零上下文单盲复审 → 方向漂移诊断 → 前提拆台,最后按论据严重度决定交付,还是回到起点重跑、只重跑批判。 为什么要这样做:单个模型自己写、自己审,审不出自己的盲区。 一念生两仪,两仪成决策。 https://liangyi-five.vercel.app —— 把想法输进去,看它走完全部 13 步;第 1 轮判回退时,第 2 轮接着跑。页面带三个示例:订阅管理助手、线上报错诊断助手、VoyageGuard 出行气象决策 Agent(作者自己的项目)。 演示档用三个坐标各不相同的便宜模型(gpt-5.6-luna · deepseek-v4-flash · glm-4-flash),单轮约 6–10 分钟、约 $0.1。每个 IP 每天可新开 3 条链。Read the full README ↗
一个产品想法进去,一份经过四轮独立批判的方案出来。7 个上下文互相隔离的角色 Agent 分属三家厂商、按底模坐标分工:想法先被忠实重述,两位对立专家互不可见地各出方案并融合,再依次经过投资人批判 → 零上下文单盲复审 → 方向漂移诊断 → 前提拆台,最后按论据严重度决定交付,还是回到起点重跑、只重跑批判。
为什么要这样做:单个模型自己写、自己审,审不出自己的盲区。
| 阶段 | 做什么 | |
|---|---|---|
| 01 | 精炼与对抗生成 | P0 忠实重述想法;P1.0 生成两个对立角色并做假对立检测;两位专家互不可见各出方案,执笔者融合成 v1 |
| 02 | 四轮独立批判 | 投资人批判 → 单盲复审 → 漂移诊断 → 前提拆台。每轮批判新开窗口,每轮修改都由同一个执笔窗口完成 |
| 03 | 分级判定与回退 | 拆台论据按「打不打前提 × 具体性高不高」分级,按规则走三个出口:回 P1 整链重跑 / 回 P2 重跑批判 / 结束交付。第 2 轮窗口全部新开,两轮封顶 |
一念生两仪,两仪成决策。
https://liangyi-five.vercel.app —— 把想法输进去,看它走完全部 13 步;第 1 轮判回退时,第 2 轮接着跑。页面带三个示例:订阅管理助手、线上报错诊断助手、VoyageGuard 出行气象决策 Agent(作者自己的项目)。
演示档用三个坐标各不相同的便宜模型(gpt-5.6-luna · deepseek-v4-flash · glm-4-flash),单轮约 6–10 分钟、约 $0.1。每个 IP 每天可新开 3 条链。
拿着一个想法去问 AI,AI 会顺着你说;再问一次,还是顺着说。三轮之后方案很漂亮,但里面没有一处被认真反对过——方案的边界是被 AI 的顺从画出来的,不是被人的判断画出来的。
| 直接问一个模型 | 两仪 |
|---|---|
| 同一个模型既写方案又评价方案 | 写与审分开开窗口;专家 B、单盲复审、前提拆台来自与执笔者不同的厂商、不同对齐路线 |
| 意见一次性全给,要同时权衡好几个框架 | 四轮批判线性推进,一次只处理一轮,执笔者逐条决定采纳与否;全部修改由同一个执笔窗口完成,方案不会变成多个 AI 的拼贴 |
| 越改越偏,没人发现方向漂了 | P2C 拿 v1 和 v3 对照专查漂移,2C-rollback 回退 |
| 前提错了也会被打磨得很漂亮 | P2D 专攻方向前提;执笔者给每条论据分级,2 条以上致命论据就判回 P1,带着原始想法整链重跑第 2 轮 |
| 看不见它为什么这么改 | 每一步读了哪些文件、写出哪份产物、token、成本进 trace,模型返回推理过程时一并记下;逐条修改理由进 decision-log |
对抗式方案生成 → 四轮独立批判 → 分级判定与路由;7 个角色 Agent 按底模坐标分到三个模型槽位。
| 维度 | 怎么做 | 代码 |
|---|---|---|
| Loop | 确定性编排 13 步;2D-fix 之后按分级规则走三个出口(回 P1 整链重跑 / 回 P2 重跑批判 / 结束交付)。第 2 轮窗口全部新开,两轮封顶,开第 2 轮前累计花费达 $3 就不开。命令行和网页走同一套路由 | orchestrator.py route() advance() run_chain() |
| 多 Agent 编排 | 7 个角色 Agent 按职责固定分属三个模型槽位,各槽位按「冲突偏向 × 语料文化」两维坐标跨厂商选模型;开跑前校验 3 条硬规则,违反即拒跑 | config.py check_hard_rules() |
| 上下文隔离 | 每个角色一个独立 messages 数组;单盲窗口每次调用都从空列表开始、不写回历史,续跑补历史时跳过它,显式注入历史会抛异常 | window.py |
| HITL | 2 个必停点(2C-rollback、2D-fix),每一轮都停。2C 人判「这还是我想要的吗」,不判方案优劣;2D 人判拆台打中的是前提,还是框架内能消化,选「前提确实错了」就走回 P1 出口 | gate.py PRESETS interact.py digest.py |
| 状态管理 | 断点续跑:接着最后一轮走,跳过已有产物的步骤,并把它们的对话补回执笔窗口,保证修订始终出自同一个执笔者 | orchestrator.py restore() · run.py --resume |
| Trace | 每步一行:轮次、窗口、模型、输入文件、产物、token、成本、耗时,模型返回推理过程时一并记下;逐条采纳/不采纳/回退的理由进 decision-log;每轮判定与收场原因写进 run.json | trace.py |
P0 忠实性与 2A/2B-fix 范围扩大化两个影子检测器在所有档位后台运行(gpt-5.6-luna,各 3 票取多数),只记录不打断。
底模坐标两个维度。维度 A · 冲突偏向:A1 规范优先(有一份独立于任务的成文规范压过任务——Claude、Gemini)/ A2 权限优先(规范是「谁说了算」的权限链——GPT)/ A3 任务优先(公开材料里找不到独立于任务的规范层,奖励设计围绕任务完成度——DeepSeek、Kimi、GLM)。维度 B · 语料文化:B1 英文母语 / B2 中文母语 / B3 跨文化双核。
| 角色 Agent | 槽位 | 正式档模型 | 坐标 | 承担 |
|---|---|---|---|---|
| 专家 A | anchor | claude-sonnet-5 | A1·B1 | P0 精炼、P1.0 生成角色、P1 出方案 |
| 专家 B | divergent_a | deepseek-v4-pro | A3·B3 | 独立出方案,看不到 A |
| 执笔 | anchor | claude-sonnet-5 | A1·B1 | 融合出 v1,并执行全部修改 |
| 投资人批判 | anchor | claude-sonnet-5 | A1·B1 | 新开窗口,没有作者包袱 |
| 单盲复审 | divergent_b | glm-5.3 | A3·B2 | 零上下文,只收方案正文 |
| 知情复审 | anchor | claude-sonnet-5 | A1·B1 | 对照 v1 与 v3 查方向漂移 |
| 前提拆台 | divergent_a | deepseek-v4-pro | A3·B3 | 必须由任务优先坐标承担(开跑前强制)。设计理由:有规范层的底模会在最关键那一刀上把攻击软化掉 |
| 槽位 | 正式档(命令行默认) | 演示档(网页) |
|---|---|---|
| anchor | claude-sonnet-5 · A1·B1 | gpt-5.6-luna · A2·B1 |
| divergent_a | deepseek-v4-pro · A3·B3 | deepseek-v4-flash · A3·B3 |
| divergent_b | glm-5.3 · A3·B2 | glm-4-flash · A3·B2 |
3 条硬规则,开跑前校验,违反即拒跑:
「单盲必须零上下文」由 window.py 在运行时保证:单盲窗口每次调用都从空消息列表开始;续跑补历史时跳过它;显式调用 inject_history() 会抛 ZeroContextViolation,有测试锁定。
最后一步给每条拆台论据分级:打中前提的记 K 级,具体性高的记 H 级,两者兼有的是致命论据。出口规则由人在系统外定死:「致命论据 ≥ 2 回 P1」和第 2 轮兜底写进 2D-fix 的提示词,三个出口的完整规则写成代码 route()。执笔者按规则分级并写下【判定】;判回 P1 就开第 2 轮整链重跑;交付了 v5 的,代码再按分级表复核——第 1 轮致命论据 ≥ 2 仍回 P1,打前提的论据占比 ≥ 60% 回 P2 重压。
| 出口 | 条件 | 之后 |
|---|---|---|
| 回 P1 · 整链重跑 | 第 1 轮致命论据 ≥ 2,方向被推翻;或 hitl 档人判前提确实错了 | 第 2 轮:全部窗口新开,用原始想法从 P0 重跑,P1.0 生成的对抗角色沿用 |
| 回 P2 · 重跑批判 | 第 1 轮交付了 v5,但打前提的论据占比 ≥ 60% | 第 2 轮:上一轮 v5 当新一轮 v1,P0/P1 产物沿用,四轮批判及对应修订重跑 |
| 结束 · 交付 v5 | 其余情况;第 2 轮仍判回 P1 时由终止条件兜底改判为交付 | 输出 v5 |
最多两轮;开第 2 轮前累计花费已达 $3 就不再开。hitl 档在 2D 停点多一个选项「前提确实错了」:第 1 轮选它走回 P1 出口,第 2 轮选它这条链以判定书收场。
This is the beginning of the README. Read the rest at the original. Read the full README ↗