模型服务提供商配置
A3S Code 从 ACL 读取运行时配置。配置源可以是 .acl 文件路径,也可以是
内联 ACL 字符串。JSON 和旧 HCL 配置不属于当前配置面。
基本结构
apiKey 与 api_key 都可用,baseUrl 与 base_url 都可用。仓库里只提交模板
和非敏感默认值;真实 API Key、私有端点和账号相关模型名应放在环境变量或密钥管理系统中。
服务提供商类型
内置工厂覆盖三条路径:
Coding Plan 类基础地址(例如
https://open.bigmodel.cn/api/coding/paas/v4)会正确拼接到
/chat/completions(不会加 /v1,也不会重复 /paas/v4)。
运行时不硬编码模型名。default_model 和每个会话的 model 都是
provider/model-id 形式的标识符,必须能匹配你在服务提供商配置块里声明的模型。
委派控制
max_parallel_tasks 限制有边界的同级任务扇出。auto_delegation.enabled
开启自动子智能体委派。顶层 auto_parallel = false 会覆盖
auto_delegation.auto_parallel,只关闭自动并行子智能体扇出;手动 task 扇出仍可用。
设置 allow_manual_delegation = false 时,模型可见的 task 不会注册。
存储
让 ACL 加载的会话可恢复的是 sessions_dir:设置后,每个会话都会在该目录中获得
文件会话存储,同步的 Rust Agent::session 路径会返回 AsyncSessionBuildRequired。
没有 sessions_dir 也没有显式存储时,会话不会持久化。storage_backend
(memory、file 或 custom;其他值按 file 处理)和 storage_url 会被解析并
保存在配置中,但没有任何运行时路径读取它们,因此它们既不会创建也不会禁用存储。
SDK 宿主也可以直接传
sessionStore: new FileSessionStore(...) /
opts.session_store = FileSessionStore(...)。
代理
模型 HTTP 客户端、MCP HTTP 传输(SSE 与 streamable HTTP)以及 MCP OAuth 只从显式 环境变量读取代理:
这些客户端关闭了系统代理发现,因此变量未设置就表示直连。代理 URL 无效时,客户端
构建会以 Invalid HTTP proxy URL 或 Invalid HTTPS proxy URL 失败。
私有服务提供商检查
真实服务提供商的冒烟测试应通过 A3S_CONFIG_FILE 指向本地且被 Git 忽略的 ACL 文件。
不要把 provider 值复制进命令、日志、文档、PR 或已提交 fixture。
SDK 对齐由单独的真实 provider 检查脚本覆盖:
两个 Wrapper 都会找到 default_model 指定的 Provider,再写出一份仅所有者可读的
临时 ACL 副本,其中该 Provider 的 apiKey 和 baseUrl 改为读取
A3S_OPENAI_API_KEY 与 A3S_OPENAI_BASE_URL。取值顺序依次为
A3S_<PROVIDER>_API_KEY / A3S_<PROVIDER>_BASE_URL、Provider Block、已有的
A3S_OPENAI_* 变量。DeepSeek 对抗测试等专项套件直接加载 ACL:
完整的 Node.js、Python 与 Go DeepSeek Retrieval Matrix 使用
A3S_REAL_EVAL_ROOT=/absolute/path/to/a3s;各平台命令与 Gate 见
Cross-SDK Evaluation Contract。
包含 Secret 的原始 Provider Evidence 应留在发布记录或 CI Artifact,不写入公开文档。 只有不包含 Endpoint、Header、环境变量名、Credential、Prompt 或源文本的聚合脱敏指标 才可发布。完整本地 API 表面见 API Contract。