• 简体中文
  • v6.6.0
  • 工作区后端

    工作区后端决定内置工作区工具从哪里读写文件。默认后端是以会话工作区为根目录的 本地文件系统。四种 SDK 都提供显式本地后端、S3 兼容对象存储后端,以及可选的 HTTP/JSON 远端 Git 配置。Node.js 与 Python 使用后端对象,Go 使用值配置。

    当宿主负责工作区放置时使用这组能力:本地开发、浏览器或容器工作区、对象存储 工作区、托管会话等。

    能力矩阵

    后端文件工具搜索工具命令行与本地 Git
    默认本地工作区readwriteeditpatchlsgrepglobbashgit
    LocalWorkspaceBackend与默认本地工作区相同与默认本地工作区相同与默认本地工作区相同
    S3WorkspaceBackendreadwriteeditpatchls设置 searchEnabled 后可使用降级版 grep / glob不注册
    S3WorkspaceBackend + remoteGitS3 文件工具可选降级版 S3 搜索通过远端 Git 提供 git,不提供 bash

    对象存储不能执行本地进程。不要承诺 S3 工作区上可以直接运行命令,除非宿主通过 MCP 或 A3S Box 额外提供隔离后的执行能力。

    本地后端

    显式本地后端适合宿主希望本地与远程会话都使用同一组选项接口的场景。

    Rust
    Node.js
    Python
    Go
    Rust
    use a3s_code_core::{Agent, SessionOptions, WorkspaceServices};
    #[tokio::main]
    async fn main() -> a3s_code_core::Result<()> {
    let agent = Agent::new("agent.acl").await?;
    let backend = WorkspaceServices::local("/repo");
    let session = agent
    .session_builder("/repo")
    .options(SessionOptions::new().with_workspace_backend(backend))
    .build()
    .await?;
    println!("{}", session.read_file("Cargo.toml").await?);
    session.close().await;
    agent.close().await;
    Ok(())
    }

    S3 后端

    S3WorkspaceBackend 会把内置文件工具指向任意 S3 兼容服务,包括 AWS S3、MinIO、 RustFS、Cloudflare R2 和 Backblaze B2。

    Rust
    Node.js
    Python
    Go

    Rust crate 需要启用 s3 feature。

    S3 搜索需要显式启用。启用后,grep / glob 会降级为对象列表和有上限的下载。 当存储桶较大或端点会限流时,应配置 maxObjectsScannedmaxGrepBytesPerObjectsearchConcurrency

    S3 选项

    Node.js 选项Python 选项必填作用
    bucketbucket存储工作区对象的 S3 存储桶。
    prefixprefix存储桶内的逻辑工作区根;使用 "" 表示存储桶根。
    accessKeyIdaccess_key_id访问密钥标识,通常从宿主环境读取。
    secretAccessKeysecret_access_key访问密钥,通常从宿主环境或密钥管理系统读取。
    endpointendpoint自定义 S3 兼容端点;AWS S3 默认端点可省略。
    regionregion区域;省略时默认为 us-east-1
    sessionTokensession_token使用临时凭据时的 STS 会话令牌。
    forcePathStyleforce_path_styleMinIO、RustFS 和多数非 AWS 端点通常设为 true
    maxReadBytesmax_read_bytes单次读取的大小上限;默认 10 MiB。
    searchEnabledsearch_enabled启用降级版 S3 grep / glob;默认为 false
    maxObjectsScannedmax_objects_scanned单次搜索扫描对象数上限;仅启用搜索时使用。
    maxGrepBytesPerObjectmax_grep_bytes_per_objectgrep 的单对象下载上限;仅启用搜索时使用。
    searchConcurrencysearch_concurrencygrep 时并发下载对象数;仅启用搜索时使用。

    Go 在 S3BackendConfig 上提供同一组字段:BucketPrefixAccessKeyIDSecretAccessKeyEndpointRegionSessionTokenForcePathStyleMaxReadBytesSearchEnabledMaxObjectsScannedMaxGrepBytesPerObjectSearchConcurrency

    远端 Git

    remoteGit 会在 workspaceBackend 之上挂载 HTTP/JSON Git 提供程序。它用于没有 本地 .git 目录的非本地工作区。

    remoteGit 必须和 workspaceBackend 一起传;单独传入会被拒绝。

    Rust
    Node.js
    Python
    Go

    不要把远端 Git 凭据写入 agent.acl 或智能体目录。应由宿主通过环境变量或密钥 管理系统注入。

    远端 Git 选项

    Node.js 选项Python 选项必填作用
    baseUrlbase_url远端 Git 服务的基础 URL,不带末尾斜杠。
    repoIdrepo_id与远端 Git 服务约定的不透明仓库标识。
    bearerTokenbearer_token生产环境远端 Git 服务的持有者令牌;只应在受信任开发环境中省略。
    clientCertPemclient_cert_pemmTLS 客户端证书路径;必须与客户端密钥成对设置。
    clientKeyPemclient_key_pemmTLS 客户端密钥路径;必须与证书成对设置。
    requestTimeoutMsrequest_timeout_ms单次 HTTP 调用超时,单位毫秒;默认 30000。
    maxDiffBytesmax_diff_bytesdiff 响应字节数客户端上限;默认 1 MiB。
    maxLogEntriesmax_log_entrieslog 条目数客户端上限;默认 200。

    Go 在 RemoteGitBackendConfig 上提供同一组字段:BaseURLRepoIDBearerTokenClientCertPEMClientKeyPEMRequestTimeoutMSMaxDiffBytesMaxLogEntries

    选择后端

    • 普通开发机和 CI 检出使用默认本地工作区。
    • 宿主希望总是传入带类型的后端对象时,使用 LocalWorkspaceBackend
    • 工作区状态必须落在对象存储中时,使用 S3WorkspaceBackend
    • 非本地工作区仍需要内置 git 工具时,追加 remoteGit
    • 当前后端不能直接运行命令时,通过 MCP 或 A3S Box 提供执行能力。