AcpAgent Client 1.3.0
v1.2.0 之后 main 上落地的一项重构与两项修订。仍是源码 release:打包轮(R8:Windows zip / 安装器、macOS 构建、干净机验收)还没做,需要自行构建,步骤见下。
变更
R7.5 组合根拆分(纯重构,行为零变化)
lib/app/workbench_controller.dart 原是 2645 行的单一 ChangeNotifier(103 个公有方法、83 处通知全落一个对象)。这一轮把它拆成组合根 + 8 个对象:组合根只剩接线与生命周期(356 行);ShellState / WorkspaceState / AgentsState / AuthState / ComposerState 按画板分组管本地态,SessionController / TurnController 驱动协议(会话生命周期与一轮对话),SessionIndex 是本地索引 sessions.json 的内存镜像,共用的通知与错误边界收成 GuardedNotifier mixin。依赖只允许单向(turn → session、session → index / agents / workspace、shell / workspace → files),反向一律走组合根在构造时接的回调,没有子对象 import 组合根;screen / 无头驱动 / 单测直接访问子对象,组合根不留转发门面。
「零变化」是量出来的:lib/ui / lib/theme / lib/projection / lib/bridge / rust/ / test/fixtures / pubspec.yaml 零 diff;test/ 只改引用路径(用例数与 expect( 数不变);每一步拆分之后,三份 fake-agent 无头实跑报告(R3 / R5 / R6 三条路径,隔离数据目录)与基线逐字段等价,比对脚本随基线入库在 rounds/round-7.5/baseline/。scripts/validate.ps1 新增两道门:lib/app 行数门(组合根 ≤ 450、其余 ≤ 900)与依赖方向门(附录 B 之外的 import 不许),13 项变 15 项。
按区域订阅(阶段 B)先量后动:一次 session/update batch 只触发壳级 build 一次,未过阈值,本版不动;数字记 rounds/BACKLOG.md。
修复
- markdown 渲染器认行内 HTML 的
<br>(含<br/>/<br />,大小写不敏感):GFM 表格单元格装不下真换行,agent 普遍拿<br>换行,此前整列显示成字面<br>(实机:pi 的扩展清单表格)。只认这一个标签,其余行内 HTML 照旧原样显示。 - 深色下 agent 图标与应用标记看不见:registry 的
icon.svg与内置条目的图标都是fill="currentColor"的单色 SVG,flutter_svg 不给SvgTheme时把currentColor当纯黑,深色下就是黑底黑标;现在给它一个随主题走的取值(SvgTint.mark)。应用自己的标记AppLogo去掉const,换主题时才会重建。
其它
- 三处版本号(
pubspec.yaml、rust/Cargo.toml的 workspace、sidecar/zed-agent-acp/Cargo.toml)一并抬到 1.3.0:exe 元数据、smoke 报告与调试面板的coreVersion、registry 下载的 User-Agent、sidecar--version与它在 ACPinitialize里报给客户端的 agent 版本,都跟着变。
怎么构建
前置:Rust stable、Flutter stable、flutter_rust_bridge_codegen、VS 2022「使用 C++ 的桌面开发」、Node >= 22。详见 CLAUDE.md「本地开发」。
powershell -File scripts/fetch-upstream.ps1 # 按 pins/upstream.json 填充 vendor/upstream/
powershell -File scripts/validate.ps1 # 编译 + 测试 + 契约检查 + lib/app 两道门
powershell -File scripts/build.ps1 # flutter build windows --release
powershell -File scripts/build-sidecar.ps1 # Zed Agent sidecar(冷编译约 50 分钟,可选)sidecar 缺了不报错,只是 agent 列表里没有 Zed Agent。Windows 首发,macOS / Linux 在 R8。
许可证
GPL-3.0-or-later(见 LICENSE)。rust/ 与 sidecar/ 里复制改写或转写自 Zed 的文件各自在文件头标注了上游路径与 commit,汇总在 NOTICE——同一份文件也列出 ACP 规范 / rust-sdk / registry(Apache-2.0)、随包字体(OFL-1.1)与图标的来源,以及商标声明。开源、不商用。上游钉版本在 pins/upstream.json。
已知限制(1.2.0 的几条仍然成立):R8 打包与发布未开始;session/load 重放不带回轮边界;sidecar 未带 languages crate(构建机缺 VS Spectre 缓解库组件);深色模式属实现先行,画板 07 没画切换按钮、深色页面画板未出。本版新增一条:换主题后,const 构造又在 build 里读颜色 token 的少数自写 widget(registry 条目的标签与占位菱形、卡片头的折叠箭头、文件面板的空态等)会停在切换前的颜色,直到那块界面被重建;已记 rounds/BACKLOG.md,与 AppLogo 那条是同一个机制。
Full Changelog: v1.2.0...v1.3.0