← Back
deillusion

deillusion/Aha-Engine

View on GitHub ↗
Stars
409
Forks
4
Watchers
409
Open issues
0
Contributors
1
Language
JavaScript
License
Other
Default branch
master
Created Sep 10, 2026Updated Sep 29, 2026

Star growth

Today—
This week—
This month—

Star history will appear here once this repo has been tracked for a couple of days.

README

Varina:以更高维度视角突破直觉盲区,探索复杂系统的额外解空间

A Document/Code-Grounded Cognitive Exploration & Orthogonal Mechanism Design Engine
专为游戏机制设计、产品规则系统、数值边界推演与复杂架构权衡量身定制的多视角认知推演与机制共创引擎。


为什么需要 Varina?

如果一个设计问题已经有清晰的几条已知路径(例如方案 A 还是方案 B、自建还是采购),你不需要 Varina——任何人类决策者或常规大模型(如 ChatGPT / Codex)都能迅速给出优缺点对比。

但在现实世界中,复杂系统的底层运转规则是极其错综复杂的,这意味着它们拥有极其广袤的解空间。而在庞大的解空间中,存在大量概率生成模型靠直觉完全无法触达的高阶解法。

概率模型的直觉盲区与“方便面修桌子”定律

  • 直觉的局限:当一张木桌破损了一个角,单模型按概率自回归预测,只会顺着人类高频统计共识给出“木工腻子、锯末胶水、环氧树脂、更换木板”等常规答案。
  • 物理真实的解空间:在物理因果的真实世界里,修补结构的本质需求仅仅是“多孔纤维基质 + 渗透性固化粘合剂 + 表面打磨”。方便面碎块 + 502 胶水 就能以极低成本完成高强度的结构复原。
  • 大模型的死穴:以“下一个 Token 最大似然预测”为核心的概率生成模型,天然只能沿着直觉共识与语料众数滑行。靠概率模型的常规直觉对话,永远不可能自发想出“用方便面修桌子”。
  • 面对复杂规则死锁时的崩塌:当面对资源死锁、数值通胀、长效激励博弈等复杂难题时,普通大模型只会滑向平庸的“各退一步”、公文套话抹平矛盾(“齐德龙东强”),或者生造空洞的伪系统工程黑话(“双账本回路”、“归因迁移机制”)来掩盖因果链条的贫瘠。

一次设计探索怎样进行

以「2–4 人、十分钟的合作玩法,怎样让有限资源始终带来有意义的选择」为例。启动深度探索后,Varina 会先确定问题和资料,再反复进行发散、核查与整理,最后才形成方案:

  1. 锁定问题与约束。 保留你的原始提问,区分「单局不超过十分钟」这类明确要求和系统自己提出的待验证猜想,避免推演中悄悄改变题目。
  2. 查看已有资料。 如果工作区里有玩法规则、数值表或实现文件,先读取与问题有关的部分。读不到的内容保持未知,不把猜测写成项目事实。
  3. 一轮发散。 多个创意席位面对同一个问题,但各自拿到不同的思考任务卡:有的检查隐藏前提,有的寻找失效边界,有的尝试删掉规则。它们提出可讨论的机制、反例和需要核查的主张。
  4. 核查并更新。 对涉及项目资料的主张查证出处,标明支持、反驳或未知;把重复说法合并,把不同机制和重要反例连同成立条件写入观点板,核查结果写入事实账本。
  5. 带着新结果进入下一轮。 新一轮席位会看到更新后的观点板和事实账本,并重新抽取思考任务卡,继续挑战、修正或延伸已有观点。例如第一轮发现某种资源分配可能产生固定最优策略,第二轮就能针对它寻找反例或改造规则,而不是从零回答原题。第 3–5 步最多进行五轮;若连续两轮没有新增或实质合并的观点,且没有阻断性的未知项,就可以提前结束。
  6. 形成可比较的方案。 循环结束后,从整理后的观点中组合出方向不同的候选规则,写明每套方案怎样运转、需要防住什么问题、必须承受什么代价;未核实的依赖继续标出。你可以在同一会话中继续追问或补充约束。

循环的关键是:本轮提出想法 → 核查与整理 → 将结果交给下一轮继续推演。第三步使用的「思考任务卡」就是 Varina 的认知算子;它们决定从哪里切入问题,事实核查和观点整理则决定下一轮从哪里继续。

关键能力:认知算子如何改变推演

算子是一张具体的思考任务卡。它不是给模型一个「创意家」之类的身份,而是要求它完成可检查的动作:找出一个被默认的前提、构造足以改变结论的反例、倒推失败原因,或删掉不必要的规则。每张卡都要求讲清推导及适用边界;空泛地说「换个角度想」不算完成。

当前深度探索使用 src/operators.mjs 中的 40 个通用算子,分成八类。下面用同一个「十分钟合作玩法的资源取舍」问题说明它们可能打开的方向;这些是提问示意,不是一次真实运行的输出。

算子类别 代表算子 对同一问题追问什么
前提 隐藏前提 是否默认玩家始终愿意共享资源?这个前提失效后,合作规则还能运转吗?
结构 因果倒置 是资源稀缺产生了合作,还是合作方式制造了表面上的资源稀缺?怎样区分?
对抗 失效边界 玩家数或资源量到哪里时,分配选择会退化成固定套路?
反演 反向目标 如果不再追求资源利用率最高,是否能换来更有趣的团队决策?代价是什么?
连接 机制移植 其他领域的分配规则能否移进玩法?哪些部分必须因玩家行为而改造?
简化 根本删减 删掉一条资源规则后,核心取舍是否仍在?如果在,这条规则为何存在?
演化 适应退化 玩家熟悉规则后会怎样绕开取舍?这种变化可能在第几局出现?
主体 激励错位 团队奖励会不会让个人把风险留给队友?分叉发生在哪个动作上?

一次探索按轮运行多个创意席位。每个席位从不同类别抽取三张算子卡,在同一份问题、约束和已核实背景上思考。这样产生的是不同机制、反例和待核查假设,而不是把八段回答简单拼在一起。算子也不保证每个方向都有效:重复、低信息或无法成立的想法会在后续整理中被淘汰;涉及项目事实的主张要经过核查。

算子是生成思路的方法,交付给设计者的仍是清楚的规则、理由和边界,不要求读者掌握算子术语。工作台会显示各席位抽到的卡,方便回看一个方向从何而来。

一次探索会留下什么

围绕同一个设计问题,Varina 会逐轮整理以下成果:

成果 你可以用它做什么
事实账本 查看项目资料支持或反驳了哪些主张,以及哪些仍未知、资料变化后哪些已过期。可回看引用文件和行号。
观点板 查看机制、反例、隐藏前提等原子观点及其失效条件。后续追问可在这些观点上继续修订。
候选方案 比较方向不同的机制组合。每套方案列出核心机制、必要的防守补丁和不可避免的代价。
未解决问题 知道哪些选择仍取决于资料、测试或设计者的判断。

例如,上面的合作玩法问题可能同时导向「资源由团队共同决定」与「资源由个人持有、使用时产生团队影响」等不同方向。这里的例子只说明比较方式;实际方案取决于你的约束和项目资料。Varina 不替你选唯一赢家,也不会把缺乏依据的方向硬凑成固定数量的方案;通常尝试给出 2–3 套,必要时可以更少。

探索结束后继续在同一会话追问某个方案,默认复用已有观点和事实;如需重新发散,可显式输入 /varina。开启 Varina 时,系统仍会先完整运行并显示普通 ReAct 回答,再将回答解析为初始观点板继续发散;只有问候等显然没有探索空间的请求才会询问是否仍要强制启动。

开始使用

需要 Node.js 22 或更高版本。项目没有第三方 npm 运行时依赖。真实模型模式需要配置可用的模型与 API Key;离线模拟模式适合熟悉界面和流程,不能用来评价真实模型的设计质量。

Web 工作台

在项目目录运行:

npm start

打开 http://127.0.0.1:27333,点击「新对话」,选择你的项目工作目录和运行模式。真实模型模式下,在「模型设置」中配置服务商、模型和密钥,然后提出设计问题。输入框旁的「Varina 探索」开关只控制常规回答完成后的增量推演,不改变常规回答使用的 prompt、工具或 ReAct 过程;触发后可以查看算子分配、观点板、事实账本和候选方案。

首次进入一个资料较完整的项目,可以输入 /init 生成工作区根目录的 VARINA.md,记录稳定的项目概念和边界。项目定义发生明显变化时可再次运行 /init;普通资料变化不需要反复初始化,Varina 会按问题读取当前文件。

CLI

# 在指定项目中对话
npm run run -- --workspace D:/my-creative-project

# 不调用外部模型的流程演示
npm run demo -- --workspace D:/my-creative-project --prompt "设计一个十分钟内持续产生资源取舍的合作机制"

# 继续已有会话
npm run run -- --session session-xxxx-xxxx --workspace D:/my-creative-project

在交互式会话中输入 /exit 或 /quit 退出。

作为 MCP 工具接入

Varina 也可以通过 stdio MCP 接入其他客户端。varina_chat 用于对话,后续调用传回 session_id 即可继续同一会话;varina_design_architecture 是显式启动设计探索的入口。旧的 aha_* 工具名仍作为兼容别名保留。

{
  "mcpServers": {
    "varina": {
      "command": "node",
      "args": ["C:/absolute/path/to/prototype/mcp.mjs"],
      "env": {
        "VARINA_WORKSPACE_ROOT": "D:/my-creative-project"
      }
    }
  }
}

如需单独调试 MCP 配置,可运行 npm run mcp:ui,打开 http://127.0.0.1:4318。

配置与项目数据

  • 可以复制 .env.example 为 .env,填写模型密钥和可选的 VARINA_WORKSPACE_ROOT、PORT;也可以在 Web「模型设置」中保存本地配置。默认模型配置见 config.example.json。可选的 TYPESAFE_API_KEY 只用于 Jev 的后置 START / ASK 决策门控;Jev 不参与聊天回答、长文本生成或 Varina 席位推演。
  • Varina 安装目录下的 .varina/data/ 保存会话与推演记录;所选工作区下的 .varina/backups/ 和 .varina/tool-results/ 分别保存写入前备份与超大工具结果。对项目文件的写入需要在当前消息中明确提出;覆盖前会备份,必要时可恢复。
  • 模型调用可能耗时并产生费用,尤其是多席位探索。资料不足、模型失败或事实核查无法完成时,应查看工作台列出的未知项及限制,而不是把所有候选方案当作已验证结论。

运行本地测试:

npm test

关于 Agent 循环、文件访问边界、重试与存储实现,见 ARCHITECTURE.md。

许可证

Varina 根据 Business Source License 1.1 发布。生产使用条件、收入门槛及转换为 Apache License 2.0 的日期,以许可证正文为准。