Skip to content

Execution backends ​

English · 한국어 · 全部页面

每一个会碰文件系统或者会执行命令的工具,都要经过一个执行 backend。backend 决定这件事发生在哪里。工具集本身不变:read_file、shell、grep、git_commit 以及其余工具,不管跑在你的笔记本上、容器里,还是网络另一头的主机上,行为都完全一致。

切换 ​

/backend
/backend local
/backend docker {"image": "python:3.11-slim"}
/backend ssh {"host": "10.0.0.5", "user": "build", "key": "~/.ssh/id_ed25519"}

不带参数的 /backend 会打印当前使用的 backend。改动会立即对会话生效,包括已经在进行中的工作,从下一次工具调用开始。项目可以在 <project>/.snowpea/settings.json 的 backend 项下设定自己的默认值。

local ​

默认项。命令以你的用户身份、在会话的工作目录中、带着你的环境执行。什么都没有被隔离——这是你处理自己代码时想要的 backend,同时也是你不该把 auto 模式的任务指过去的那一个。

docker ​

/backend docker {"image": "python:3.11-slim"}
键默认值含义
imagepython:3.11-slim用来创建容器的镜像
workdir会话的 workdir在容器内的同一绝对路径上做 bind mount

容器以会话命名,在第一次工具调用时惰性创建,并在会话关闭时移除。工作目录被 bind mount 到同一个绝对路径上,因此模型推理时用的路径在容器内外是一样的。其余的一切——装好的软件包、网络、环境——都属于那个容器。

这正是适合 auto 模式的 backend。agent 想装什么就装什么,想弄坏什么就弄坏什么,容器扔掉即可。

它需要一个正在运行的 Docker 守护进程。没有的话,这个 backend 会如实报告失败,而不是悄悄回落到 local。

ssh ​

/backend ssh {"host": "10.0.0.5", "port": 22, "user": "build", "key": "~/.ssh/id_ed25519"}
键含义
host主机名或地址
port默认 22
user远程用户
key私钥路径
passwordkey 的替代方案
cwd远程工作目录,默认是远程主目录

命令通过 SSH 执行,文件读写走 SFTP。agent 写出来的文件只存在于远程主机上——本地不会镜像任何东西,在 ssh backend 下的一次 write_file 不会动你自己的磁盘。强烈建议使用密钥认证;写进会话配置里的密码,说到底就是配置文件里的一个密码。

确认自己此刻在哪里 ​

诚实的测试方法是直接问:

bash
snowpea -c "run hostname and tell me what it printed"

在 local 下是你的机器,在 docker 下是容器 id,在 ssh 下是远程主机。既然 agent 对文件系统的全部视野都要经过 backend,这件事它不可能弄错。

不会跟着走的东西 ​

backend 管的是工具执行,不是守护进程。无论某个会话用的是哪个 backend,会话、记忆、审批队列、调度器和 gateway 都留在你机器上的守护进程里。网络类工具——web_search、web_extract、浏览器工具、媒体工具和 MCP server——是从守护进程运行的,而不是从 backend 主机。

下一步 ​

Headless —— 在脚本里用上这一切。

MIT licensed. The manual is generated from the product repositories — see the banner on each page.