Envd
通过环境交互协议提供文件、命令、进程和端口操作的原生守护进程。
Envd(a13n-envd)通过 stdio、HTTP(S) 或向外建立的反向 WebSocket 连接提供环境交互协议(EIP)。
通过 Harness 环境 provider 连接 agent,也可以直接使用 Python EIP 客户端。
选择使用方式
| 使用场景 | 从这里开始 |
|---|---|
| 使用 Harness UI | Harness UI 执行权限 |
| 不连接模型,试用本地 EIP 环境 | Local Envd 示例 |
| 安装版本匹配的原生可执行文件 | 安装 |
| 运行 agent 开发容器 | 沙箱镜像 |
| 运维自己的守护进程或 EIP 传输 | 配置与传输 |
| 排查访问问题或缺失的方法 | 执行边界与故障排查 |
| 通过环境 provider 连接 | Remote Envd |
| 实现 EIP 客户端或 provider | Python EIP 客户端 |
| 管理会话、保留输出和结果不确定的操作 | 会话与输出 |
提供的功能
- 读取、写入、搜索和传输文件。
- 运行命令、发送输入、读取输出和停止进程。
- 检查端口并等待端口开放。
- 可选:观测和控制共享桌面(电脑操作)。
- 检查操作结果、取消工作和查看错误。
- 查询不同平台与配置下可用的操作。
一个守护进程服务于一个设备(Device)和多个独立会话(Session)。每个会话分别管理自己的操作、进程、保留输出、传输和执行证据。工作目录是默认值,不是访问边界。彼此不信任的工作负载需要由宿主(Host)提供独立的外层边界;EIP 会话之间不相互隔离工作负载。
试用 Local Envd
仓库中的环境 provider 示例通过私有 Envd 设备执行文件操作,无需模型、云账号或服务器。在仓库根目录运行:
cargo build --locked --package a13n-envd
cd examples/environment-provider
uv sync --locked
uv run environment-provider-example local_envd \
--executable ../../target/debug/a13n-envd示例创建自己的工作目录,通过 stdio 启动私有守护进程,为适配器创建一个会话,并验证关闭适配器后该目录仍然保留。随后由示例的 LocalEnvdProviderRuntime 关闭守护进程。接入 agent 时,通过 DynamicEnvironmentCapability 向 Harness 提供一个新建的 Local Envd 适配器;Harness 集成介绍了这条边界。Host 可以在多个适配器之间复用 LocalEnvdProviderRuntime,但每个适配器都会打开独立会话。
需要设置执行身份、Sandbox 目录授权、出站网络模式、可执行文件根目录、shell 配置或限制时,在运行时上配置 LocalEnvdLaunchConfiguration。Envd 管理会话 worker;Host 管理外层容器或虚拟机隔离。参见执行边界和会话凭据引用。
生命周期与归属
设备发现不会打开会话。会话准备会检查固定的 cwd、必需方法和就绪状态。单个适配器的取消或失败不能关闭健康的共享设备。参见守护进程生命周期。
参考主题
| 主题 | 指南 |
|---|---|
| 构建匹配版本的二进制文件 | 构建匹配版本的二进制文件 |
| 安装已发布的二进制文件 | 安装已发布的二进制文件 |
| 隔离行为 | 隔离行为 |
| 独立运行的最小配置 | 独立运行的最小配置 |
| 启用命令 | 启用命令 |
| 传输通道配置 | 传输通道配置 |
| 在本仓库中验证 | 在本仓库中验证 |
| 故障排查 | 故障排查 |
| 参考资料 | 参考资料 |