尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

如何用服务端插件与沙箱限制 Agent:PenguinHarness 安全执行后端解析

如何用服务端插件与沙箱限制 Agent:PenguinHarness 安全执行后端解析 如何用服务端插件与沙箱限制 AgentPenguinHarness 安全执行后端解析【免费下载链接】penguin-harness Unified and Stable RSI Platform项目地址: https://gitcode.com/gh_mirrors/pe/penguin-harnessPenguinHarness 是一个开源、本地优先的多 Agent 应用自动开发平台让 Agent 在真实服务器上跑命令、读写文件。很多新手最担心的一件事是Agent 会不会误删文件、越权联网本文带你完整解析它的答案——用服务端插件扩展能力、用沙箱做内核级隔离、再用命令策略兜底防误操作三层机制组合出一套可落地的 Agent 安全执行方案。为什么 Agent 执行需要围栏Agent 执行任务时通常会调用 shell 工具跑命令安装依赖、改文件、访问网络。对新手来说风险很直观误写文件一条rm -rf或写错路径就可能毁掉工作区之外的内容越权联网本应离线运行的命令偷偷把数据发出去读到敏感路径密钥、令牌等文件被 Agent 顺手读走PenguinHarness 把安全能力拆成两层插件负责实现隔离机制策略负责声明允许什么。插件是可插拔的服务端包策略则是数据化的规则——改配置即生效不用改代码。服务端插件能力如何插进平台PenguinHarness 的插件库位于 plugins/ 目录每个插件就是一个 npm 包一份plugin.json清单、一个图标加上它携带的内容——技能教 Agent 做事的 SKILL.md或钩子脚本。钩子挂在 Agent 循环上的小脚本钩子是最容易上手的扩展点。它们只是纯 Node 脚本harness 在 Agent 主循环的固定节点如用户发话前、任务结束后把它们作为子进程拉起通过 stdin 传入{ hook, session_id, trace_path }再从 stdout 读回一段 JSON 答案详见 plugins/README.md。内置的目标模式goal和持续学习continual-learning插件就是这么实现的。模块注册往sandbox.providers插槽里塞后端更底层的扩展走模块系统。插件用与平台自身相同的装饰器写法Component、Bind等声明自己提供了什么——沙箱后端只需贡献到sandbox.providers插槽注册时带上它实现的隔离维度宿主在启动时按签名校验后自动挂载无需重启见插件契约 packages/core/src/plugin/index.ts。沙箱后端三个维度的隔离策略沙箱的类型词汇表定义在 packages/core/src/plugin/sandbox.ts 中一共三个维度维度含义fs-write限制文件写入所有后端的保底能力network断网或只允许本机 localhostmask-paths把指定路径含读取对进程隐藏失败即关闭fail-closed设计接口约定非常关键后端的confine方法必须返回已被约束的 argv否则直接抛错——把原始 argv 原样返回是被明令禁止的见 SandboxProvider 接口。同时约束被明确定义为仅改写 argv后端自己从不执行任何东西。这意味着后端探测失败时命令宁可不跑也绝不少隔离一点照跑。Linux 上的 bubblewrap 挂载顺序以最完整的 sandbox-bwrap 后端为例它按固定顺序组装挂载后挂载覆盖先挂载只读世界整个根文件系统只读挂/dev、/proc进程随父进程退出可写区/tmp用 tmpfsworkspace-write模式下把工作区和会话草稿目录重新绑定为可写断网--unshare-net创建空网络命名空间路径掩码最后用 tmpfs //dev/null盖住敏感路径——必须放最后否则会被第 1 步的只读绑定重新暴露它甚至自带 bubblewrap 二进制x64 / arm64按 URL 与 SHA256 锁定部署机器无需apt install也就杜绝了某台机器缺程序导致沙箱悄悄失效。各平台后端怎么选后端平台覆盖维度sandbox-bwrapLinux全部三个sandbox-seatbeltmacOSsandbox-exec全部三个sandbox-wslWindowsWSL2 非特权账户全部三个sandbox-dshLinux / macOS / Windows仅fs-write跨平台保底服务会按策略路由到声明了对应维度的后端你声明了断网它就绝不会把策略交给只会管文件写入的 DSH 后端未实现的维度不可能被静默丢弃。Windows 后端尤其值得新手注意它在 WSL2 发行版里关闭了 interop——实测中interop 开启时 Windows 进程能逃逸所有命名空间断网照样上网。命令策略项目级防事故护栏沙箱管物理边界命令策略管行为习惯。它是一张 deny 规则表由 withCommandPolicy 包裹住审批回调命中规则的命令直接返回forbidden连全部放行模式都拦得住更不会打扰你去点确认。对新手友好的几个设计查得全不仅检查启动命令exec_command连往已运行的 shell 里敲字的input_command也检查——否则先开 bash 再输危险命令就绕过了规则查得准会把引号、转义剥掉后再匹配rm -rf /、rm -rf /这类惯用伪装写法都能识别规则是数据配置放在项目的.project_config.toml的[command_policy]段随项目走、可随时编辑默认规则集在新项目创建时种子化command-policy-defaults.ts归属项目而非 Agent安全策略属于项目防止 Agent 改写自己的状态区来解锁自己源码里有一段非常诚实的注释command-policy.ts命令策略是防事故护栏不是安全边界——shell 是图灵完备的靠文本匹配永远挡不住运行时拼出来的命令。真正的硬边界是沙箱两者是互补关系。官方文档对两者的说明见 packages/docs/content/configuration.zh.md 与 packages/docs/content/tools.zh.md。上手三步给 Agent 上安全锁安装沙箱后端在应用插件页把对应平台的沙箱插件如penguinharness/sandbox-bwrap安装到目标项目应用自动重组、无需重启手写的话就是往项目的.project_config.toml加一行[plugins]配置调整沙箱设置设置 → 插件 → Sandbox 卡片里选择后端程序路径、探测超时等参数改动在下一条命令生效配置命令策略编辑项目.project_config.toml的[command_policy]段启用或新增 deny 规则下次上下文开启时即生效之后每个被拦截的操作都会在轨迹观测中留痕——你能看到每一轮的工具调用、耗时与审批决定出了问题可回放定位。小结机制解决什么特性服务端插件可扩展的隔离后端可插拔、数据化、免重启热加载沙箱bwrap / Seatbelt / WSL / DSH文件、网络、路径的硬边界fail-closed按维度路由绝不静默降级命令策略习惯性危险命令优先于一切审批模式项目所有、Agent 改不动对新手而言记住一句话就够让沙箱当保安让命令策略当门禁。两者都不是为了束缚 Agent 干活而是让你敢把它放到服务器上跑起来。【免费下载链接】penguin-harness Unified and Stable RSI Platform项目地址: https://gitcode.com/gh_mirrors/pe/penguin-harness创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表