我在使用工作树和tmux并行运行3-5个Claude Code会话。总是搞不清哪个代理需要输入,哪个又卡在权限上。<p>于是我开发了Smith:一个可以查看所有代理、其状态,并快速跳转到需要你关注的代理的界面。<p>如果这听起来对你有帮助,可以注册获取早期访问权限。
返回首页
最新
嘿,HN
我是卢克。
我快速构建了nono,超出了我的预期,这是对openclaw混乱局面的回应,但它的用途不仅限于openclaw。
问题是:AI代理在你的机器上执行代码。提示注入、幻觉或被攻击的工具可能会读取~/.ssh,泄露凭证,甚至更糟。应用级沙箱可能会被它们所沙箱化的代码绕过。
我在安全领域待了很长时间(几年前我开始了一个叫做sigstore的项目),见过这种模式很多次。
解决方案:nono使用用户空间无法逃脱的操作系统级隔离:
Linux:Landlock LSM(内核5.13+)
macOS:Seatbelt(sandbox_init)
在沙箱 + exec()之后,没有系统调用可以扩展权限。内核会拒绝。
它的功能:
nono run --read ./src --allow ./output -- cargo build
nono run --profile claude-code -- claude
nono run --allow . --net-block -- npm install
nono run --secrets api_key -- ./my-agent
文件系统:按目录或文件进行读/写/允许
网络:完全阻止(计划进行每主机过滤)
秘密:从macOS钥匙串 / Linux秘密服务加载,作为环境变量注入,执行后清零
技术细节:
用Rust编写。约2000行代码。在Linux上使用landlock crate,在macOS上使用原生FFI调用sandbox_init()。秘密通过keyring crate处理。所有路径在授予时进行规范化,以防止符号链接逃逸。
Landlock ABI v4+为我们提供TCP端口过滤。旧内核回退到完全的网络允许/拒绝。macOS Seatbelt配置文件动态生成,类似Scheme的DSL字符串。
限制:
macOS:目前允许所有读取以使可执行文件正常工作。下一个版本将收紧。
Linux:Landlock并不覆盖所有内容(直到最近的内核才有UDP过滤,没有系统调用过滤——那是seccomp的领域)
尚不支持Windows(还没?)
起源:
为OpenClaw构建这个(处理Telegram/WhatsApp消息的AI代理平台)。需要真正的隔离,而不是“请不要读取这个文件”的隔离。因为每个代理运行器都有这个问题,所以进行了通用化。
GitHub: [https://github.com/lukehinds/nono](https://github.com/lukehinds/nono)
文档: [https://docs.nono.dev](https://docs.nono.dev)
网站: [https://noto.sh](https://noto.sh)
Apache 2.0。希望能收到关于安全模型的反馈,特别是来自那些与Landlock或Seatbelt合作过的人。话虽如此,代码需要好好整理,我对此并不特别自豪,所以请多包容我!
在看到关于AI机器人(如OpenClaw、Moltbot、Clawdbot)的讨论后,我相信用户界面(UI)将会发生重大变化。<p>点击和输入的时代已经结束。<p>语音将成为主要的交互界面。<p>用户界面将会根据需求进行自适应。<p>每一台电脑上都将有一个AI代理层。<p>由于隐私问题,“类似Shazam”的过滤器将会限制未经授权的语音捕捉。<p>这样说有道理吗?
几个月前,我开玩笑地将“Human”添加为OpenCode的LLM提供者,没想到作为LLM的体验相当痛苦。但这对理解真实代理的开发却意外地有帮助。
所以我想不让任何人掉队!我制作了一个小型开源游戏——《你是一个代理》(You Are An Agent)——你可以在youareanagent.app上找到,分享这种(有用的?)挫败感。
这有点荒谬。让我告诉你一些完全必要的功能,我们有:
- 一个完整的WASM架构的Linux虚拟机,可以在浏览器中运行,用于代理编码层面
- 一个糟糕的桌面模拟和一个漂亮的Excel模拟,用于我们的计算机使用层面
- 一个可爱的WebGL CRT模拟(我认为这是第一个在Safari上支持正确DOM 2D桶形扭曲的模拟?老实说,我本想利用现有的,而不是自己编写,但找不到让我满意的)
- 一个MCP服务器模拟器,完整模拟非品牌的Jira/Confluence/...连接
- 当然,还有一个完整的WebGL示波器音乐模拟器,用于引导序列
告诉我你的想法!
代码(如果你想添加一个关卡):[https://github.com/R0bk/you-are-an-agent](https://github.com/R0bk/you-are-an-agent)
(如果你想浪费20分钟——我花了太多时间整理我对代理开发的杂乱思考):[http://robkopel.me/field-notes/ax-agent-experience/](http://robkopel.me/field-notes/ax-agent-experience/)