Skip to main content

Files API

Files API 浏览 Runtime 当前工作目录(cwd)中的文件,不是任意主机文件访问接口。它面向运维、调试与控制台展示场景,让外部客户端通过 HTTP 浏览 Agent 的工作区,无需 SSH。API 为只读,不提供上传、写入或删除能力。
任何持有有效 API key 的调用方都可以读取 cwd 下的全部内容,包括 agents.yaml.env、MCP server 凭证。生产部署前必须配置 ZERONE_AGENT_HTTP_API_KEY,并以最小文件权限运行容器,避免把凭据挂载进 Agent 可浏览目录。

端点一览

所有端点遵守相同的约束:
  • /v1/*x-api-key 鉴权保护(如已配置)。
  • 路径参数 path 是相对 cwd 的子路径,禁止 .. 逃逸、绝对路径和 null byte。
  • cwd 内的 symlink 若解析后逃出 cwd,会被拒绝。

GET /v1/files

Query 参数

响应(200)

Entry 字段

entries 数组排序稳定:directory 优先,再按 name 字典序(区分大小写)

错误响应

示例

GET /v1/files/content

单文件流式下载,支持 HTTP Range。必填 query 参数 path 为相对 cwd 的文件路径。 成功响应(200)的响应头:
响应不设大小上限——任何大小的文件都会被流式返回。

Range 请求

支持单段 Range,返回 206 Partial Content
支持的 Range 格式: 多段 Range(如 bytes=0-99,200-299)回退为 200 全文件返回。

错误响应

示例

HEAD /v1/files/content

GET 相同的 query 参数和响应头,但没有响应体。用于下载前预查 Content-Length / Content-Type,或验证文件是否存在(404 与 200 区分)。

路径安全

所有 path 参数都经过统一的 safeResolve 检查:
  1. 拒绝 null bytepath\0 返回 400
  2. 拒绝绝对路径:如 /etc/passwd 返回 400
  3. 拒绝路径遍历:如 ../sub/../../ 返回 400
  4. 拒绝 symlink 逃逸:cwd 内的符号链接若解析后指向 cwd 外,下载时返回 400;列表时省略 target 字段。
这些是底层一致性约束,与是否配置鉴权无关。

范围边界

Files API 不提供:
  • 文件上传、写入、删除(只读)
  • 文件搜索或 glob
  • 目录打包(tar/zip)
  • 文件变更通知
  • 内容脱敏
  • 多根目录(cwd 是唯一根)

相关