Agen:RWKV 作者设计的极简 Agent 状态机语言
> 来源: github.com/BlinkDL/Agen
> 作者: BlinkDL(Bo Peng,RWKV 作者)
> 数据集: imbue2025/Agen-codes-1k
> 研究时间: 2026-03-30
🎯 一句话版本
Agen 是 RWKV 作者 BlinkDL 设计的一种极简编程语言,专门用来写 agent 循环和状态机——用规则匹配驱动状态转换,UTF-8 符号做变量绑定,让 AI 更容易生成和理解 agent 逻辑。
🏗️ 设计哲学
Agen 的核心假设:agent 的逻辑本质上是状态机——检查状态 → 匹配规则 → 执行动作 → 回到检查。
Python 写这种逻辑需要 for + if/continue + 手动状态管理。Agen 把它提炼成两步循环:
Step 1: 找到第一个匹配的规则
├── 没有匹配 → 停止
└── 超过 step_limit → 报错
Step 2: 执行代码块 → 回到 Step 1
📝 语法速览
| 语法 | 含义 |
|---|---|
| `(a=b)` | 规则:当 a 等于 b 时匹配 |
| `(a=b)➜` | 规则 + 立即转换 |
| `■ ◆ ▲ ▼ ◀ ▶` | Slots(变量绑定占位符) |
| `a.b` | dict 取值或属性访问 |
| `{...}` | 显式表达式 / map 字面量 |
| `a=b, c=d` | 多赋值 |
| `Ø` | null |
UTF-8 符号是刻意的设计——给 AI 写的语言,不需要照顾人类的键盘习惯。
🎮 示例:NPC 日程模拟
(npc=Ø)
npc={name:emma, location:home}
agenda=[wake_up, open_stall, close_stall]
log=[], i=0
(task=Ø, i≠{len(agenda)}) ➜ task={agenda.{i}}, i+=1
(npc=■, ■.location=◆, ■.name=▲)
(task=wake_up)
log+=[{time:dawn, scene:◆, text:▲ wakes up}]
task=Ø
(task=open_stall)
◆=market_square
log+=[{time:morning, scene:◆, text:▲ opens the stall}]
task=Ø
等效 Python 约 20 行 for/if/continue。Agen 版更紧凑,状态转换更直观。
🤖 核心示例:Claude Code 风格的 Agent Loop
s01.agen 实现了一个简化版 Claude Code 核心循环:
(messages=■, response=◆)
(■=Ø) ➜ ■=[{role:user, content:{query}}], phase=model
(phase=model)
(◆=Ø) ➜ ◆={QUERY(messages=■)}
■+=[{role:assistant, content:{◆.content}}]
(◆.stop_reason=tool_use) ➜ phase=tool, i=0, results=[]
phase=done
(phase=tool)
(i≠{len(◆.content)}, ◆.content.{i}=▲, output=▼)
(▲.type≠tool_use) ➜ i+=1
(▼=Ø) ➜ ▼={BASH(command={▲.input.command})}
results+=[{type:tool_result, tool_use_id:{▲.id}, content:▼}]
▼=Ø, i+=1
■+=[{role:user, content:{results}}]
phase=model, ◆=Ø
三个状态:model → tool → done,规则匹配驱动转换。参考了 learn-claude-code 项目。
增强版 s03.agen 加了 todo 提醒:每 3 轮工具调用没更新 todo 就自动插入提醒——用一个 rounds_since_todo 计数器和一条规则实现。
📊 与 Python 的对比
| 维度 | Agen | Python |
|---|---|---|
| **代码量** | ~1/3 | 基准 |
| **状态转换** | 规则匹配,隐式 continue | if/continue,显式控制流 |
| **变量绑定** | Slots(■ ◆ ▲),模式匹配 | 手动赋值 |
| **AI 可读性** | 高(结构化,紧凑) | 中(冗余但通用) |
| **人类可读性** | 低(需学符号系统) | 高 |
| **生态** | 新生(1k 数据集) | 完整 |
🔍 作者背景
BlinkDL = Bo Peng(彭博),中国 AI 开源社区的重要人物:
- RWKV 作者——RNN + Transformer 混合架构,线性复杂度、常量空间、无限上下文
- RWKV-7 "Goose" 是最新版本,已有推理模型
- 中国开源 AI 模型领域的标志性人物之一
他做 Agen 的动机和 RWKV 一致:为 AI 优化,而不是为人类习惯优化。RWKV 为 AI 推理优化了架构(线性注意力),Agen 为 AI 编程优化了语法(状态机 + UTF-8 符号)。
💡 与我们的关联
1. Agent 循环的本质确实是状态机
我们的 OpenClaw agent 工作流(消息到达 → LLM 处理 → 工具调用 → 结果返回 → 继续)本质上就是一个状态机。Agen 把这种模式显式化了。
2. 与 Lobster 工作流语言的方向一致
之前讨论过"把确定性编排抽取到 Lobster(工作流引擎),保留 LLM 做创造性工作"。Agen 的思路类似——用一种简洁的 DSL 描述 agent 的控制流,而不是全部扔给 LLM。
3. "给 AI 写的语言"是一个趋势
jj(给 agent 优化的版本控制)→ Agen(给 agent 优化的编程语言)→ 工具链正在围绕"AI 是主要用户"重新设计。
4. 但实用性存疑
- 生态太新(只有 1k 数据集)
- 符号系统的学习成本对人类不友好
- Python 虽然冗余,但 AI 已经非常擅长写 Python
- 核心问题:AI 真的需要一种新语言吗?还是说更好的 Python agent 框架就够了?
5. 数据集的价值
Agen-codes-1k 的 1000 个 agent 循环样本,对理解 agent 编程模式有参考价值——即使不用 Agen 语言本身。
📊 评分
| 维度 | 评分(/10) |
|---|---|
| 创新性 | 8.5 — "给 AI 设计的编程语言"方向新颖 |
| 技术深度 | 7.0 — 语言设计清晰但简单,没有类型系统/错误处理 |
| 实用性 | 5.5 — 生态太早期,1k 数据集,实际采用门槛高 |
| 作者背景 | 9.0 — RWKV 作者,有持续产出的记录 |
| 与我们的相关度 | 6.0 — 概念有启发,但我们不太可能切换到 Agen |
| **综合** | **7.0** |
报告由深度研究助手自动生成 | 2026-03-30
来源: GitHub / HuggingFace / RWKV