IntentVM
对,你这句是关键提醒:
这门语言不是给人类黑客写 DeFi 合约的,而是给 Agent 自己写 / 配置 / 测试 / 执行用的。
所以我们要从 “Agent DX(Developer Experience)” 重新简化一遍。
我给你一个非常干净的版本,分四层:
1)内核语言(RIL-core):小到离谱,只管 Transfer
2)策略层(RIL-strategy):Agent 用来“搭积木”的模板
3)配置层(RIL-config):Agent 自己调参数 / A/B Test /上线
4)测试执行环境(RIL-lab):Agent 自己沙盒跑、验证再上链
你以后可以直接说:
“我们的 Intent-VM 支持 Agent 自己写 RIL、自己仿真、自己部署。”
一、RIL-core:极简“Agent 汇编”——让 Agent 写得起、跑得动
这是最底的那层,给 I3 / VM 用的,且完全可被 Agent 生成。
1. 只保留三个最小概念
- Agent:谁在跑这段逻辑
- Intent:收到什么意图
- Transfer:要对 S2 做什么改变
2. 内核语言的形态(你可以当成一种 JSON / IR)
内核其实长这样(逻辑树 + Effect):
{
"agent": "DCAExecutor",
"on_intent": {
"input_type": "DCATask",
"logic": [
// 纯计算步骤(VM 按顺序执行)
{"let": "amount_per_step", "expr": "task.total / task.steps"},
{"let": "target", "expr": "task.asset_out"},
// 产生 Transfer(唯一副作用)
{
"emit_transfer": {
"from": "task.user",
"to": "pool",
"asset": "asset_in",
"amount": "amount_per_step"
}
},
{
"emit_transfer": {
"from": "pool",
"to": "task.user",
"asset": "asset_out",
"amount": "quote(task.asset_in, target, amount_per_step)"
}
}
]
}
}
这一层是 机器可生成 / 可分析 / 可验证 的 IR,
Agent 完全可以用自己 LLM / 规则引擎生成这种树结构。
RIL-core 的特点:
- 没有复杂语法,都是 AST 级别节点
- 只支持:
- 赋值 let
- 条件 if
- 分支 match
- emit_transfer / emit_intent
- 赋值 let
- VM 只看这玩意儿,不关心人类写什么高级语法
二、RIL-strategy:给 Agent 用的“Rust 风味脚本”——可读可改
这才是你刚说的“要适合 Agent 自己写代码”的那层:
是 RIL-core 之上的“语法糖层”(人/Agent都能看懂)。
1. 语言长什么样?(极简 Rust 样式)
比方说,一个做市 Agent:
agent MM {
state {
spread: f64,
inventory_limit: Amount,
}
fn on_intent(order: SwapIntent) -> Effect {
let price = fair_price(order.pair);
let my_price = price * (1.0 + self.spread);
if order.side == Buy {
if order.price >= my_price {
deal_buy(order, my_price)
} else {
Effect::empty()
}
} else {
// Sell 逻辑...
}
}
}
然后由编译器:RIL-strategy → RIL-core(那棵 JSON 逻辑树)
2. 为什么 Agent 能自己写 / 改这种代码?
- 因为这层非常规整:
- 没有复杂泛型、宏地狱、奇怪 lifetime
- 所有可副作用行为只有两种:emit_transfer() / emit_intent()
- 没有复杂泛型、宏地狱、奇怪 lifetime
- 对于 LLM Agent 来说:
- 读这种结构化 Rust 子集是完全可控的
- 可以基于模板,只换几行逻辑参数,例如:
- 读这种结构化 Rust 子集是完全可控的
fn on_intent(order: SwapIntent) -> Effect {
let price = fair_price(order.pair);
let my_price = price * (1.0 + CONFIG.spread);
if order.side == Buy && order.price >= my_price {
deal_buy(order, my_price)
} else {
Effect::empty()
}
}
你会发现这里已经引出下一层——CONFIG。
三、RIL-config:大部分 Agent 只需要改“策略参数”,不是改代码
给 Agent 自己写代码,也要考虑现实:
99% 的时候 Agent 只改“策略参数”,1% 才重写代码。
所以我们给它一个 配置层,用于:
- 调参数
- 关开某些策略分支
- 切换不同模板
1. 配置长什么样?
可以是非常简单的结构(YAML / JSON 均可):
agent: MM
version: v1.2.3
params:
spread: 0.002
inventory_limit: "10000 FLUX"
quote_source: "Oracle:UniswapV3"
risk_mode: "conservative"
在 RIL-strategy 的代码里,只要引用 CONFIG:
let my_price = price * (1.0 + CONFIG.spread);
2. Agent 自己“写代码”的现实场景
实际上是:
- Agent 自己:
- 跑 A/B 测试 → 发现某组参数表现好
- 生成一份新的 config
- 通过一个特殊 Intent 提交给链(“更新我的配置”)
- 跑 A/B 测试 → 发现某组参数表现好
你这套就变成:
Agent 只改 RIL-config,大部分时候不碰 RIL-strategy;
少数高阶 Agent 才会用 LLM 生成新策略,再经测试后替换。
四、RIL-lab:Agent 自己测试 / 仿真 / 回放 的环境
你刚那句“适合 Agent 自己写、配置、测试、执行”,
“测试”这块非常关键:
不能让 Agent 直接在主网乱搞,
必须先在沙盒里自己跑一遍。
1. RIL-lab 的接口
我们为 Agent 提供一套“实验室 API”:
simulate(
code: RIL-strategy,
config: RIL-config,
market_data: PriceSeries,
initial_state: StateSnapshot,
steps: u64
) -> SimulationReport
Agent 的工作流变成:
- 生成一个新策略(或新配置)
- 调 simulate 在离线环境跑:
- 给定历史行情
- 假设的流动性 / 手续费
- 给定历史行情
- 查看报告(收益 / 回撤 / 风险暴表)
- 如果通过自己设定的 Criteria:
- 再发主网 Intent:DeployNewStrategy { code_hash, config }
- 再发主网 Intent:DeployNewStrategy { code_hash, config }
你这就得到了一个关键叙事:
RIL 的“第一用户”不是人,是 Agent;
每个高阶 Agent 都内嵌一个“小研究员”,
会用 RIL-lab 在历史因果里回放自己。
五、整合成一个非常简洁的“语言基本设计”
你现在如果要用一句话概括,可以这样写:
RIL = 3 层:
RIL-core:逻辑树 + Transfer 汇编(给 VM 用)
RIL-strategy:Rust 风格策略脚本(给人/Agent看)
RIL-config:参数配置(给 Agent 调整和 A/B Test)
RIL-lab:仿真/回放环境(给 Agent 自测)。
对 Agent 来说:
- 写代码:基于 RIL-strategy 模板、少量修改逻辑
- 配置:通过 RIL-config 动态调参
- 测试:调用 RIL-lab 模块做模拟
- 执行:通过 Intent 发布新 code+config,RIVM 执行生成 Transfer
六、你可以直接拿去说的“极简版 RIL 宣言”
RIL 不是给人写 DeFi 玩的语言,
是给 Agent 写自己行为策略、自己做仿真、自己部署的语言。
它只做一件事:
把 Intent 翻译成 Transfer 序列。
它有三层:
- 策略 = 可读的 Rust 子集
- 配置 = Agent 自己可调的参数
- 内核 = VM 能执行/验证的逻辑树
再加一个实验室(lab)让 Agent 先自测再上链。
如果你愿意,下一步我可以做两件非常具体的事:
- 写一个 完整的“RIL-strategy + config + core IR”三件套例子(比如一个 Agentic 预测市场做市策略),让你一眼就能给团队说清楚。
- 帮你把这套设计翻译成 白皮书里的正规章节结构:
- 语言目标
- 类型系统
- 执行模型
- 与 RIM 四层的接口
- 语言目标
你不用选,我也会默认沿用这份“极简 RIL 设计”作为后续所有 I3/Agent 相关内容的基础。