起因
做 jindbg 的时候,Windows 侧的问题解决了,但 Linux 侧还卡在同一个地方:AI agent 需要的是「无头 + 守护进程 + 持久化」,而 radare2 的原生交互模型是给人用的交互式 shell。
之前社区的做法是在 r2 外面套一层 Python 包装器(我自己的旧版本叫 r3),靠外部进程维持会话。但这层包装器要自己维护命令解析、状态同步、异常恢复,越写越像在重新实现一个 r2。
这次换了思路
不再在外部包装,直接把持久化会话能力做进 radare2 本身:
- 上游仓库:
radareorg/radare2(当前 master 为 6.2.0) - 开发分支:
r2-agent - 旧的外部 Python 包装器归档到
legacy/r3/,只作经验参考
目标很明确:agent 每次新开一个 bash 调一条命令,都能连回同一个常驻的 r2 状态,不需要任何外部守护进程。
文档结构
项目把设计过程完整留痕——这也是从 jindbg 学到的,改上游代码比写新代码更需要对后来者交代清楚:
| 文档 | 内容 |
|---|---|
PROJECT.md | 项目说明与目标 |
docs/agent-daemon-design.md | 设计草案 |
docs/PLAN-v1-agent-daemon.md | v1 开发方案 |
README-AI.md | 面向 AI agent 的安装、使用与能力边界说明 |
最后那份 README-AI.md 是个有意思的尝试:既然目标用户是 agent,那就该有一份写给 agent 看的说明文档,把能力边界讲明白,避免它在做不到的事情上反复试错。
现在的状态
v1 进行中,分支上还在改。
这是二次开发项目,不是官方 radare2。上游版权归 radareorg 所有(LGPLv3),本仓库只包含为 agent 场景新增的改动与设计文档。