A3S Code
A3S Code 是一个 Rust 编码 Agent Runtime(a3s-code-core)。需要一套带工具、权限、
子任务、工作区搜索以及会话保存和恢复的 Agent 循环时,可以把它嵌进 IDE、Runner、
服务端或桌面应用。
默认 profile 是 local-code:Agent 循环、工作区工具、策略、事件,以及纯 Rust
的 a3s-vec 词法检索。read 对 JPEG/PNG/GIF/WebP 返回图片附件;OpenAI 兼容路径
在工具结果里保留 image_url。项目规则写在 AGENTS.md,Worker 放在
.a3s/agents/。
设计规则
想构建自己的产品,使用 Rust crate、Node.js 包、Python 包,或配合原生桥接程序 使用 Go module。它们输出同一套事件,因此不同界面不需要各写一套 Agent Loop。
先选使用方式
主要能力
v9.0.0 新增内容
v9.0.0 同时包含以 v8.7.0 打 tag 的改动。那个 tag 从未发布,所以这些改动首次在 这里发布。
变更
- 事实日志控制。 事实日志是唯一的编码控制来源。
send、stream、附件回合、resume_run与精确恢复都通过折叠它选择下一步转移。已保存的模型回合不会再次 发送给模型,循环检查点也不决定下一次模型调用。确认和提问停靠到回答事实出现。 缺失的工具结果在恢复时执行一次。steer 是另一条user.message事实。工具轮次 上限会在下一次补全中发送空工具列表,而不是插入合成的用户消息。参见 架构。 - Go 模块主版本升到 v9。 请导入
github.com/A3S-Lab/Code/sdk/go/v9。 - a3s-vec 词法 FTS。 工作区 FTS 通过
a3s-vec-ftsfeature 使用纯 Rusta3s-vec0.1.8(a3s_vec_fts_v1)。发布包不再附带原生 FTS sidecar。较早的磁盘 FTS generation 不兼容,会重建。 - 沙箱。 Core 需要
a3s-sandbox0.2.1。 - 更薄的构建。 精简编码构建不再链接
a3s-flow;具名 Flow 能力投影需要dynamic-workflowfeature(包含在advanced-harness中)。web_fetch的 PDF 文本提取放在web-fetch-pdf之后(包含在local-code中)。serverprofile 为local-code+s3+telemetry。 web_search成功契约。 级联依次尝试 API、HTTP/RSS、headless(headless 只在 启用headless-searchfeature 的构建中可用,已发布的 SDK 包都不启用它)。非空可用行 以complete或partial成功;结构门槛只决定是否继续级联。JSON 输出保持结果 数组。空结果、未知引擎和无效参数仍然是错误(#161)。
新增
- Meta Harness。 宿主在同一份事实日志上组合有序的
components:内置system、tools、budget、compact、infer,以及来自HostHarnessRegistry的host:<id>挂载。Node.js 与 Python 暴露Harness;Go 暴露SessionOptions.Harness。不传harness时保持默认树。参见 Meta Harness。 - 仅限宿主的
CompletionAttestor(#160)。 Rust 宿主可以安装SessionOptions::with_completion_attestor。它接收变更 digest,以及每个被修改路径 及其内容 digest(MutatedPathRecord),并可以在完成门禁判定前返回验证报告。 门禁仍然要求一份 Passed 且绑定 digest 的报告。 - Go 规划覆盖。 Go
Session暴露SetPlanningMode与ClearPlanningModeOverride,与 Node.js、Python 一致。
移除
- 文件系统优先的 Agent 模式:
servefeature、AgentDir主 Agent 约定 (instructions.md、schedules/、tools/)、cron 守护进程以及AgentDirScriptTool。Worker 与子 Agent 的agent_dirs扫描仍然保留。
修复
- 设置了显式
HTTP(S)_PROXY时,MCP HTTP 传输、OAuth 与模型 HTTP 客户端会遵守NO_PROXY/no_proxy(#171)。参见服务提供商。 - Python
SessionOptions.verifier_enabled提供 getter 和 setter(#163)。 - 滚动上下文压缩在摘要遗漏原始
## Goal时会重新固定它(#174)。
更早的版本记录在 CHANGELOG 中。
安装
当你要把 A3S Code 嵌入自己的产品时,安装 SDK 包:
Python 包需要 CPython 3.10 或更新版本,每个平台提供一个 abi3 Wheel。Wheel 平台、
Go 桥接程序和 Bootstrap 流程见 SDK 与 API。
要安装 a3s CLI(它以独立版本线发布 a3s code 终端应用),运行对应平台的安装脚本:
脚本会选择当前系统与架构对应的发布包并校验 SHA-256。也可以使用
brew install a3s-lab/tap/a3s 或 cargo install a3s。已发布的 CLI(0.17.1)
固定 a3s-code-core =8.7.0 的 9.0 之前提交;其含义见 A3S Code TUI。
配置
A3S Code 使用 ACL。不要把真实 API Key、私有模型端点、本地配置路径或 tenant/user 标识提交到仓库;提交只通过环境变量解析凭据的模板。
auto_parallel = false 只关闭自动并行子智能体扇出。手动 task 调用和 SDK
session.tasks(...) 扇出仍然可用,除非你单独关闭手动委派。
本地 session 持久化需要把 storage_backend = "file" 和 sessions_dir 配对;
SDK 嵌入场景也可以直接传 typed FileSessionStore。
使用 TUI
9.0.0 的终端客户端是 a3s-code-tui crate。在 Code 仓库中构建并运行:
没有 --config 时,它会合并 <home>/.a3s/config.acl 与从 Workspace 向上找到的最近
一个 .a3s/config.acl,再应用 A3S_DEFAULT_MODEL。它提供 /help、/model、
/clear 和 /exit,每个提示在一个新会话中运行一次事实日志 send,该会话复用
工作区的 tui-turn 事实日志。参见
A3S Code TUI。
Rust Runtime 快速开始
Rust 构建以异步为先。同步 Agent::session 只在记忆和其他必需资源已经初始化时
可用;需要异步初始化的选项会返回 CodeError::AsyncSessionBuildRequired。会话选项中的
MCP 管理器在发现工具时始终走异步路径。
session.tool(...) 这类调用来自你的应用,而不是模型。把它们开放给用户之前,应在
应用中完成访问控制。
使用 SDK
接着看
- 架构 说明事实日志控制、内核包装和调用边界。
- Meta Harness 说明宿主如何组合编码 Actor。
- A3S Code TUI 说明 9.0.0 终端客户端、配置层,以及它与
a3sCLI 的关系。 - SDK 与 API 说明 Go 模块和桥接程序的安装方式;后续 Go 示例会与 Node.js、Python 一起出现在各通用章节中。
- 会话 介绍创建、流式输出、运行状态、保存、恢复和取消。
- 工具 介绍直接调用、错误类型、结构化输出和 QuickJS Program。
- 安全、Hook 与 验证 介绍执行前、执行中和执行后的检查。
- 工作区检索介绍显式语义开关、切块、生命周期、质量指标和 CPU-only 安全默认值。
- 任务 与 编排 介绍子 Agent 和固定工作流。
- Memory 与 持久化 介绍跨会话信息和任务恢复。
- 文件系统约定 覆盖
AGENTS.md、ACL、Skill 与.a3s/agents/worker。 - API 契约 列出经过集成测试的 Node.js API。