工作区后端
工作区后端决定内置工作区工具从哪里读写文件。默认后端是以会话工作区为根目录的 本地文件系统。四种 SDK 都提供显式本地后端、S3 兼容对象存储后端,以及可选的 HTTP/JSON 远端 Git 配置。Node.js 与 Python 使用后端对象,Go 使用值配置。
当宿主负责工作区放置时使用这组能力:本地开发、浏览器或容器工作区、对象存储 工作区、托管会话等。Rust 宿主还可以通过实现工作区 trait 提供自己的后端;见 宿主提供的后端。
特性开关
本地后端和远端 Git 始终编译在内。S3 后端受 Cargo 特性 s3 控制,server 和 full
特性都包含它(core/Cargo.toml);Core 的默认特性集只有 local-code。
能力矩阵
download 只为可写的本地根目录注册。code_symbols、code_navigation 和
code_diagnostics 只有在后端携带代码智能提供者时才注册;默认本地后端没有提供者。
对象存储不能执行本地进程。不要承诺 S3 工作区上可以直接运行命令,除非宿主通过 MCP 或 A3S Box 额外提供隔离后的执行能力。
本地后端
显式本地后端适合宿主希望本地与远程会话都使用同一组选项接口的场景。
本地下载目标
可写的本地后端还会注册 download。工具接收公网 HTTP(S) url,并且只能写入工作区
相对 file_path;省略路径时会推断并净化文件名。S3 和其他非本地后端不会注册它,因为
相邻原子临时文件、取消清理、符号链接检查和最终提升都依赖本地文件系统语义。
overwrite 默认 false。传输默认使用 512 MiB 的 max_bytes 上限和 300 秒
timeout,硬上限分别是 8 GiB 与 3600 秒。Range 并发会自适应选择,也可以明确限制为
1–4 个连接;expected_sha256 可要求在提升目标前匹配 64 位十六进制摘要。传输与元数据
细节见工具。
S3 后端
S3WorkspaceBackend 会把内置文件工具指向任意 S3 兼容服务,包括 AWS S3、MinIO、
RustFS、Cloudflare R2 和 Backblaze B2。
Rust crate 需要启用 s3 feature。
S3 搜索需要显式启用。启用后,grep / glob 会降级为对象列表和有上限的下载。
当存储桶较大或端点会限流时,应配置 maxObjectsScanned、
maxGrepBytesPerObject 和 searchConcurrency。
S3 选项
Go 在 S3BackendConfig 上提供同一组字段:Bucket、Prefix、
AccessKeyID、SecretAccessKey、Endpoint、Region、SessionToken、
ForcePathStyle、MaxReadBytes、SearchEnabled、MaxObjectsScanned、
MaxGrepBytesPerObject 与 SearchConcurrency。Go 还接受 RequestTimeoutMS,即单次 S3
请求的超时时间;Node.js 和 Python 后端不提供该选项。
远端 Git
remoteGit 会在 workspaceBackend 之上挂载 HTTP/JSON Git 提供程序。它用于没有
本地 .git 目录的非本地工作区。
remoteGit 必须和 workspaceBackend 一起传;单独传入会被拒绝。
不要把远端 Git 凭据写入 agent.acl 或智能体目录。应由宿主通过环境变量或密钥
管理系统注入。
远端 Git 选项
Go 在 RemoteGitBackendConfig 上提供同一组字段:BaseURL、RepoID、
BearerToken、ClientCertPEM、ClientKeyPEM、RequestTimeoutMS、
MaxDiffBytes 与 MaxLogEntries。
宿主提供的后端
Rust 宿主可以实现 WorkspaceFileSystem(read_text、write_text、list_dir),并可
选实现 WorkspaceCommandRunner、WorkspaceSearch 和 WorkspaceGit,用自己的存储支撑
session。这些 trait 都是 Send + Sync,并从 crate 根导出。WorkspaceServices::builder
初始只具备读写能力;每挂载一个服务,就会启用对应的能力和工具。
挂载 .command_runner(...) 提供 bash,.search(...) 提供 search,.git(...) 提供
git,.code_intelligence(...) 提供代码智能工具。非本地后端保留自己的命令执行器:原生
Bash 沙箱只适用于本地 workspace,因此宿主需要自行约束它执行的命令。效果隔离从不复用
宿主提供的后端。Node.js、Python 和 Go SDK 不暴露自定义后端。
选择后端
- 普通开发机和 CI 检出使用默认本地工作区。
- 宿主希望总是传入带类型的后端对象时,使用
LocalWorkspaceBackend。 - 工作区状态必须落在对象存储中时,使用
S3WorkspaceBackend。 - 非本地工作区仍需要内置
git工具时,追加remoteGit。 - 当前后端不能直接运行命令时,通过 MCP 或 A3S Box 提供执行能力。