有人在本地跑了个自动写代码的机器人,让它无限循环干活。结果这玩意儿继承了他电脑里的所有密钥——云账号、私库权限、SSH钥匙串,一个不落。
这不是科幻片开场,是某个开发者的日常困境。
![]()
这种被称为"Ralph"的设计极简:一个提示词塞进while循环,让编码代理死磕待办列表,直到所有任务通过测试。探索性项目、原型实验里,这种笨办法出奇地好用。但代价是残酷的——你必须给代理开--dangerously-skip-permissions(或--yolo、--yes,取决于你用哪家CLI),也就是全程无人值守、全权放行。
ralph-workflow这个新项目,想给这头野兽造个笼子。
一图读懂:安全悖论
想象一个场景:你的AI程序员24小时不休息,自动拉需求、写代码、跑测试、提交commit。听起来很美?问题是它跑在你本地shell里,能摸到的一切它都能摸。
原文画出了这个危险三角:
【核心图:权限继承链】
主机shell → 代理继承全部凭证 → 单一恶意工具调用或提示注入 → 整个工作站沦为爆炸半径
这不是"模型会不会使坏"的信任问题。原文说得直白:「问题不在于你不信任模型——问题在于模型会针对它获得的任何shell执行工具调用。」
ralph-workflow的解法是把整个开发环境塞进隔离舱。不是修改循环本体,而是重构它运行的上下文。
隔离舱的3道锁
执行npx ralph-workflow后,交互流程会问4个问题:用哪家编码CLI(Claude Code、Codex、Gemini、OpenCode)、是否启用Dev Container、选哪个基础镜像、要不要生成限定范围的GitHub PAT。然后往你的仓库丢3样东西:
第一,.devcontainer/配置。凭证转发的环境变量被显式置空,VS Code的git认证助手在容器内禁用,主机的钥匙串留在主机。
第二,单仓库细粒度PAT(如果你要)。写入.ralph/token,被gitignore,权限只绑这个仓库。循环就算发疯,也碰不到你的其他私库。
第三,scripts/ralph/目录——循环本体:ralph.sh、prompt.md模板、prd.yaml待办列表、progress.txt日志。一个最小启动包。
【图片插入点】
循环的纪律:为什么一次只干1件事
运作机制被设计得近乎刻板。prompt.md指示模型:从prd.yaml选最高优先级任务,只实现这1个,跑类型检查+测试,提交,停止。bash循环再唤起它处理下一个。全部任务标记passes: true时,模型回复COMPLETE,循环退出。
这种"一次一故事"的纪律,刻意避免代码助手把上下文窗口撑爆。每次变更连带更新prd.yaml和追加progress.txt,形成可恢复的检查点。杀掉进程、重启,它从git历史断点续传。
容器不是可选项,是架构假设。原文警告:「temptation is to skip the container because 'my Dockerfile is fine' or 'I trust the agent.'」——temptation,诱惑,那种"我省事我聪明"的侥幸心理。但安全模型不建立在信任上,建立在边界上。
快速启动:从空目录到隔离环境
原文给了1条复制即用的命令链:
```bash npx ralph-workflow ```
4个问答后,你得到的是1个被3道锁加固的沙箱:凭证隔离、权限最小化、可审计的循环日志。自动写代码的野兽还在跑,但再也咬不到你主机上的任何东西。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.