40.3 万星的 rea 让 Agent 会拆二进制,2 万的 OpenShell 给它上笼子

40.3 万星的 rea 让 Agent 会拆二进制,2 万的 OpenShell 给它上笼子

这周的 GitHub AI 榜有点分裂。一边是 morluto/rea,40.3 万星,第三方统计一周还涨了三万七,专门教 Agent 怎么把别人家的程序拆开看;另一边是 NVIDIA/OpenShell,两万星出头,专门给 Agent 造笼子,文件、系统调用、网络出口全按策略卡。一个往能力上加,一个往约束上加,恰好是今年 Agent 落地的两条主线。

星数是我刚从 GitHub API 拉的,不是抄榜单。

rea:一条命令,把 Hopper 和 Ghidra 接到 Agent 手上

rea 的定位很清楚:一个 MCP server,让你的 Agent 具备逆向工程的手艺。装法是 npx rea-agents setup,跑完会往 Claude Code、Codex、Cursor、Gemini CLI、Grok Build 里注册工具和一套配套的工作流说明,还会备份原有配置。

装完之后你在 Agent 里问“这个功能是怎么实现的”,它自己去调分析工具,把结论、代码片段和不确定的地方一起给你。

能拆的东西比想象中杂。native 二进制走 Hopper、Ghidra、IDA 或 Kuna;Go 二进制不用装 Go 就能读出编译器版本、依赖模块和构建参数;CUDA/HIP 的 GPU code object 能扒出 kernel 参数和保留的 PTX 文本;GGUF、safetensors 这类模型文件读 header 和 tensor 声明;Unity 的 IL2CPP 元数据、Godot 的 PCK 包、Rust 的 cargo-auditable、PE 证书、ELF notes、Linux 内核模块、Erlang BEAM、WASM、EVM 字节码,都在支持清单里。搞嵌入式的人看内核模块和固件这条线,会知道这不是玩具清单——.modinfo 的 key、__versions 的 CRC、签名尾,这些是刷机前要确认的东西。

我更看重的是它对输出的约定:每个结论都带证据和局限。逆向最怕的不是拆不开,是模型一本正经地猜,给你一段看着像那么回事的伪代码。它把分析放在本地跑,工具调用和结果都在你机器上,这点对不想把固件传云端的人很关键。

OpenShell:能装包能调 API,但摸不到你的 key

OpenShell 是 NVIDIA 出的,Rust 写的,Apache-2.0,现在两万星。它管的是另一头:Agent 越能干越危险。

结构分三层。Gateway 是控制面,管沙箱生命周期、策略下发和凭证;沙箱里跑一个 Supervisor,先确认隔离边界建好了,才拉起 Agent 进程;Agent 的每次出口都过 policy proxy,用 OPA 那套策略引擎逐条判。

最要紧的设计是凭证不在 Agent 手里。Agent 看到的是一层替换过的凭据,真 key 只在请求命中白名单端点时由 OpenShell 注入。也就是说,Agent 就算被提示词注入骗了,也拿不到能带走的东西。

第二个设计是策略变更先证明再应用。你改一条策略,它跑形式化验证,算出这次改动会新开哪些访问——比如连一个新主机还带着凭证、调一个新的 API 方法——这类危险的先挂起,等人工过目。这个思路比“改完直接生效,出事再回滚”靠谱得多。

门槛也摆在那:要 Docker、Podman 或者宿主机虚拟化;K8s 部署走 Helm,CNI 还得真支持 NetworkPolicy,不然网络策略是纸糊的;现在 591 个 open issue,Windows 只有 WSL2 实验性支持。

OpenShell 架构:CLI 经 Gateway 下发策略,Supervisor 在沙箱内拉起受限 Agent,出口经 Policy proxy 校验后才到外部端点
OpenShell 的执行路径:控制面只做决策,数据面只做执行,真实凭证在最后一步才被替换进去

实话

这两个项目放一起看很有意思:rea 把 Agent 的手伸到二进制层,OpenShell 把这只手按住。前者要回答的是“它说的对不对”,后者要回答的是“它做的过不过界”。上个月我们聊过 Agent 瞎报漏洞、换 CLI 就失忆那两件事(那篇在这里),本质是同一类问题:Agent 的可信度不是靠提示词,是靠外面的机制。

要泼的冷水有两盆。

第一盆给星数。rea 的 40.3 万星配 10.1 万 fork,叉星比 25%;普通项目的这个数大概在 10% 到 13%(ComfyUI 11.8%,opencode 13.4%,OpenShell 9.8%)。比例高说明很多人 fork 回去自己改,也说明这个仓库被当成模板在扩散。星数只能证明它被看见了,证明不了它好用。

第二盆给门槛。rea 的静态分析要分析引擎,机器上没有 Hopper、Ghidra、IDA,纯 JS/Electron 那部分还能跑,native 就得先装工具;Linux 上还要求有 procps 的 ps,不然 Ghidra、JADX 和固件工具根本起不来。OpenShell 更重,一条 openshell sandbox create 之后,策略得自己写 YAML,跟 OPA 那套打交道,不是装完就能用。

如果你只是想防 Agent 手滑删库,不用上 OpenShell:容器加只读挂载、出口白名单,能覆盖八成场景,成本是一下午。真要在多租户环境或者生产上跑一批 Agent,凭证注入和策略证明这两件事,自己写不出来,那时候这两万星才值钱。

至于 rea,先拿一个你自己写的 ARM64 小工具试一遍:让它拆符号、拆字符串、说出用了哪个编译器版本。对得上,再谈更复杂的目标。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注