ΓDocsInteractiveNet

02 · 既有工作与空白

目标:说清楚"别人做到哪、我们借什么、我们不重复什么"。 结论先行:交互网运行时已经很成熟(HVM2/Inpla/Vine),多 Agent 编排也很成熟(Temporal/LangGraph/Ray),但"以交互网为语义核心的 Agent 基础设施"是空白。

2.1 交互网实现谱系

项目 模型 实现/语言 并行/分布 Effects 对我们的价值
BOHM 1.1(Asperti 等,1996) 最优 λ / sharing graph OCaml 顺序 无 最优归约的工程基线;读回/括号处理
PECLR 并行最优 λ — 多机 无 并行归约的实验
Optiscope(etiamz) Lévy-optimal λ Rust/C 顺序 C 后门 现代最优归约器;可视化/教学参考
Inpla(Sato,至 2026 v0.13.4) 交互网作为编程语言 C + pthreads 多线程共享内存 内置算术/IO 有限 规则语法、内置构造子、复用注解、基准
HVM1 交互组合子 Rust 多线程 有限 早期工程经验
HVM2(2024) 扩展交互组合子 Rust + CUDA 多核/GPU 通过 Bend 编译 内存布局、原子链接、work stealing、MIPS 基准
HVM3 Interaction Calculus Haskell + C 单机 原生数/IO 接口 IC 语义、CALL 交互、编译器
HVM4 Interaction Calculus 单文件 C 单机 原生数/字符串/IO 极简可嵌入运行时;最新交互表
Bend 高层语言 → HVM Rust/TS 继承 HVM 有 语言设计、编译到网、2026 的 proof/laws 方向
Vine / Ivy / IVM 高层 IN 语言 + 低层 IC 语言 + 运行时 Rust 单机 有限 分层语言设计(Vine → Ivy → IVM)
ingpu GPU 交互网求值器 CUDA GPU 无 GPU 后端可行性
Linr 并行 IN 服务器 — 服务器 有限 服务化
GoI Visualizer / hvmvis / netties 教学/可视化 Web — — 交互设计参考;我们要做得更完整

从 HVM2 借什么

HVM2 论文(Taelin 2024)的几个关键工程决策,直接适用于我们的纯核:

  1. 64-bit term 编码:tag | label | value,一个 word 表示一个节点/变量/数字;缓存友好。
  2. 线即原子变量:每个端口是一个原子 word;连接用 CAS,实现 lock-free 的"原子链接"。
  3. redex bag + work stealing:每个 worker 有本地 bag;空闲时偷取;减少全局锁。
  4. 交互即小函数:annihilate/commute/erase 是极轻的 C 过程;没有解释器开销。
  5. 原生数字/全局定义:避免 Church 编码的性能灾难。
  6. GPU 内核:同一套规则可以映射到 CUDA;我们 v1 不做 GPU,但 IR 要保留可能性。

论文报告的数字(用于建立量级预期,不是我们的目标):Apple M3 Max 单线程 400 MIPS、16 线程 5,200 MIPS;RTX 4090 32,768 线程 74,000 MIPS。

从 Inpla 借什么

  • "交互网作为编程语言"的规则语法:agent、rule、net 的写法;内置算术/比较;列表/树编码。
  • 复用注解(reuse annotations):在规则里显式标注哪些 cell 可以被复用,减少分配;这是工程上很实用的优化。
  • 多线程调度:每个 core 一个线程 + 共享堆;对我们的单机运行时是直接参考。
  • 基准方法:n-queens、Ackermann、排序;我们应建立可比的纯网基准。

从 Vine/Ivy/IVM 借什么

  • 分层:Vine(高层,函数/命令式混合)→ Ivy(低层 IC 语言)→ IVM(运行时)。这正是我们 Ainet Flow → Ainet Core → AIN IR → aind 的思路。
  • 低层语言的可读性:Ivy 的语法比裸组合子友好,适合作为调试/手写 IR 的目标。
  • 运行时独立:IVM 可以单独 benchmark,不被高层语言绑死。

从 Bend 借什么

  • "语言 → 网"的编译管线:函数、ADT、模式匹配、递归如何降级到交互组合子。
  • 2026 的 proof/laws 方向:Bend 现在强调用 LAWS.bend + 证明来约束 AI 生成的代码。这与我们的"Agent 协议/预算/能力"约束是同一类问题:把意图变成可机器检查的约束。我们不做定理证明器,但会借鉴"law/contract 作为一等公民"的产品思路。
  • GPU 优先:Bend 的目标是 CPU 如 C、GPU 如 CUDA;我们的 Agent 层是 I/O 密集,不跟它拼纯算力。

2.2 理论与并发扩展谱系

工作 贡献 对 AIN 的影响
Lafont 1989 交互网、强合流、通用性 纯核
Lafont 1997 交互组合子(γ/δ/ε)、通用性 最小指令集
Lamping 1989 最优 λ 归约 共享/复制语义
Gonthier–Abadi–Lévy 1992 geometry of optimality 读回/括号的理论
Asperti–Guerrini 1998 最优实现的系统化 工程取舍
Asperti–Laneve 1994/1996 interaction systems 规则/类型的抽象
Mackie 1995/1998 GoI machine、YALE 抽象机设计
Fernández–Mackie 1998 交互网与项重写 编码/等价
Mazza 2006 multiport IN、π 演算编码、并发语义 同步扩展的理论基础
Alexiev 1999 / Khalil 2003 多 principal port、amb 早期 multiport 探索
Dal Lago–Tanaka–Yoshimizu 2017 并发交互的 geometry 多 token 语义
Aschieri–Genco 2019 MLL proofs as concurrent programs 并发类型
Gimenez–Moser 2016 交互的复杂度 代价模型
Huber–Yi 2025 OCaml 中的 IN 编码 工程参考
Borner 2025 最优交互与真实世界 I/O effects + optimality 的结合

结论:标准交互网适合"纯计算 + 并行";要做 Agent,必须引入 同步(multiport)、效果(effects)、位置(locations)、失败(supervision)。这些在理论上都有先例,但还没有人把它们打包成一个 Agent 运行时。

2.3 多 Agent 基础设施现状

类别 代表 核心抽象 缺什么
持久化执行 Temporal、DBOS、Restate、Inngest、AWS Step Functions workflow/activity、事件重放、重试 没有并发图语义;共享/复制靠代码;能力边界弱
Actor/监督 Erlang/OTP、Akka、Orleans actor、mailbox、supervision tree 动态拓扑强,但缺少"图重写"的结构化共享与形式化并发
分布式任务 Ray、Dask、Beam task/actor、数据流 面向数据/计算,不面向有状态 Agent 协议
Agent 编排 LangGraph、AutoGen、CrewAI、OpenAI Agents SDK graph state、conversation、handoff 语义是框架约定;重放/权限/成本不统一
工具协议 MCP tool/resource/prompt 只解决"怎么调工具",不解决"谁可以调、何时调、成本多少"
Agent 互操作 A2A agent card、task/message 跨组织协议;本地执行语义仍由框架决定
可观测 OpenTelemetry、LangSmith/Langfuse span/trace 时间线,不是因果图;难以做结构 diff

它们各自做对了什么

  • Temporal:把"确定性工作流 + 副作用 activity + 事件历史重放"做成了产品。Ainet 的 durability 直接借鉴:交互日志 = 事件历史,effect = activity。
  • Erlang/OTP:supervision tree、let-it-crash、mailbox 隔离。Ainet 的 Supervisor/Error cell 借鉴其语义。
  • Ray:分布式任务调度、对象存储、actor。Ainet 的 remote wire/placement 借鉴其工程。
  • LangGraph:显式图状态 + checkpoint;证明了"图"是 Agent 开发者能理解的抽象。Ainet 把图从"控制流图"下沉到"数据流/重写图"。
  • MCP/A2A:工具与 Agent 的接口标准化。Ainet 把它们作为 effect adapter,而不是核心语义。

它们共同缺什么

  1. 语义级并发:DAG 只是依赖;没有"哪些步骤可以并行、为什么、代价多少"的形式化。
  2. 确定性重放:Temporal 有,但 Agent 框架大多没有;且 effect 的因果结构没有被类型约束。
  3. 能力安全:工具注册表是全局的;prompt injection 可以越权。
  4. 结构化共享:相同子结果/上下文没有一等公民;缓存是字符串键。
  5. 可解释轨迹:日志/span 不是图;无法回答"这个输出由哪些消息/工具/共享节点推出"。
  6. 成本感知调度:多数框架没有预算类型,也没有跨 Agent 的成本优化。

2.4 可视化与教学现状

项目 形态 优点 不足
GoI Visualizer 动态 GoI 抽象机模拟 理论准确 面向研究者;交互有限
hvmvis HVM 交互组合子 live 实时、可编辑 偏工具;缺少课程/讲解
netties 交互网 playground 轻量、直观 功能少;无 λ/最优/Agent
Interaction Combinator Live 网页 live 低门槛 同上
Bend/HVM playground 语言级 能跑真实程序 不解释图重写过程
Optiscope 最优 λ 可视化 深度 桌面/研究者向

空白:没有一个"从零到 Agent"的完整课程,把图重写 → 组合子 → λ → 最优 → 类型 → 并发 → Agent串起来,并且用同一个运行时驱动动画与生产。

2.5 定位:我们做什么不同的事

一句话定位

Interaction nets are the assembly language of agent orchestration. 交互网是 Agent 编排的汇编语言;Ainet 是它的语言、运行时与调度网络。

三个差异化

  1. 语义下沉,而不是再包一层

    • 别人:DAG/消息队列 + 约定。
    • 我们:图重写 + 强合流 + 线性能力 + 显式 effect。并发/共享/权限都是语义的一部分。
  2. 确定性 + 可视化是同一件事

    • trace 就是网的变化;调试器就是教材的渲染器;重放就是重新点火。
    • 这让"可解释性"不是事后拼日志,而是运行时原生输出。
  3. 成本是一等公民

    • 每个规则/effect 有成本向量;预算可以随端口传递;调度器在预算下优化。
    • 对 LLM Agent,这是从"能跑"到"可运营"的关键。

我们明确不做的

  • 不与 HVM/Bend 拼纯数值性能;需要时把纯子网编译到它们。
  • 不做通用 BPMN/工作流产品;只做 Agent 的计算底座。
  • 不做"全自动 Agent 社会"的叙事;先解决单团队、可审计、可重放的编排。
  • 不做跨公网拜占庭共识;v1 是受信集群。

2.6 竞争与风险

风险 说明 缓解
HVM 生态下沉 HVM/Bend 可能自己长出 Agent 层 我们做他们不擅长的:effects、分布、类型、成本;保持 IR 兼容
Temporal/LangGraph 足够好 大多数团队不需要新模型 从"高保证/高成本/强审计"场景切入(金融、医疗、合规、研究)
学习曲线 开发者不愿学新语言 Flow DSL + TS/Python SDK + 可视化编辑器;Core 只给需要的人
理论不完整 同步/effect 的合流证明困难 先实现子集,明确假设;用属性测试 + golden trace 兜底
性能不达标 Agent 是 I/O 密集,网开销可能显著 纯核零开销;Agent cell 批量处理;effect 异步;基准驱动

2.7 可复用的资产清单

资产 用途 许可注意
HVM2/HVM4 论文与代码 内存布局、原子链接、规则表 检查仓库 LICENSE(HVM 为 MIT/Apache 双许可,需确认版本)
Inpla 规则语法、复用注解、基准 检查 LICENSE(BSD 类)
Vine/Ivy/IVM 分层语言设计 检查 LICENSE
interaction-net-resources 文献索引 BSD-3-Clause(仅 README)
Lamping/Asperti 论文 算法与理论 论文版权;只引用,不复制大段
Temporal/LangGraph 文档 durability/checkpoint 设计 只借鉴概念

实现前由负责人做一次 license audit,记录在 docs/08-decisions.md 的 ADR 中。

在 GitHub 编辑本文