agent.acl
agent.acl 是模型、provider、队列、存储、Skill 目录和 worker 目录的版本化运行配置。
SDK 宿主可以用 Agent.create("agent.acl") 显式传入任意 .acl 文件。
a3s code TUI 并不要求仓库根部存在 agent.acl。它先读取 ~/.a3s/config.acl,
再读取从 workspace 向上找到的最近的 .a3s/config.acl,并把 workspace 层合并覆盖到
用户层之上。--config <path> 会替换这两层。格式一致,发现方式和作用范围不同。
基础配置
apiKey / api_key 和 baseUrl / base_url 都是可接受别名。运行时不硬编码
模型名;default_model 和 session 级 model 覆盖必须匹配这里声明的
provider/model-id。
把 token 通过环境变量注入,不要写进 agent.acl。配置文件进入仓库后,它就是产品行为的一部分,应该像代码一样审查。
目录发现
skill_dirs 指向可复用技能目录,也是 ACL 配置加载技能文件的唯一方式。agent_dirs
在自动扫描的 .a3s/agents 与 .claude/agents 目录之外追加 worker/subagent 目录。
它们最先加载,因此自动目录中的同名定义会替换它们。
project_doc_max_bytes 限制个人文件加上从仓库根到 workspace 的指令链总大小;后备文件名
会在 AGENTS.override.md 和 AGENTS.md 之后查找。自动委派决定运行时是否为匹配的
worker 规划一次 task 调用;allow_manual_delegation = false 会完全移除 task 工具。
两者都不会取消父 session 的权限策略、工具可见性或验证要求。评分规则见
任务。
会话存储
对于没有显式收到 SDK sessionStore 或文件型 session store 目录的 session,
sessions_dir 会创建一个本地 FileSessionStore。没有 sessions_dir 也没有 SDK
store 时,session 不会被持久化。目录无法打开时 session 初始化失败。storage_backend
与 storage_url 会被解析,并在重写配置时保留,但它们不会选择或创建 session store。
配置边界
- 配置决定“可以连接什么”和“默认如何运行”,不决定“模型能越过权限门”。
- 目录路径应相对 workspace,避免依赖个人机器绝对路径。
- 自动委派需要和
agents/的描述质量一起调优;低质量 description 会让运行时错误分派。 - 高风险工具即使被目录发现,也应继续走 HITL 或 allow-list。