edit 工具 · 会话导出 · 子代理协议 · 自适应 Token · v0.43.0 —— google-gemini/gemini-cli 把终端 Agent 的能力从单次对话推向可组合的多级子代理协作。
google-gemini/gemini-cli 是什么
gemini-cli 是 Google 开源的终端原生 AI Agent,10.4 万 Stars,TypeScript
技术栈。它让你直接在命令行中调用 Gemini 模型,完成代码理解、文件编辑、Shell
执行、Web 检索等操作,无需离开终端。项目采用 monorepo 结构:核心会话与推理
逻辑在 packages/core,CLI 交互在 packages/cli,外加 SDK、MCP 支持、
A2A 服务器、VS Code 插件等子包。架构上,核心包内部按职责划分为 agent 会话管理、
context 上下文管线、agents 子代理调度、routing 模型路由、sandbox 沙箱安全等
模块,层次清晰。免费额度(每分钟 60 次、每天 1000 次)让开发者零成本上手,
npx、npm、brew、conda 多通道安装,终端用户门槛极低。v0.43.0 于 2026 年 5 月
22 日发布,是本年度最重要的架构升级版本之一。
从单次对话到多智能体协作的断层
在 v0.43.0 之前,gemini-cli 的会话模型是"一人一终端一对话"—— Agent 在线性地 接收指令、调用工具、生成回复。这在日常问答和文件编辑中够用,但遇到需要并行 推理的场景时就有明显短板。比如同时调试多个模块、让子代理独立完成某段重构时, 缺少原生的代理间通信与任务分发机制。生成代码时,模型倾向于整段重写而非最小 改动,大文件改一两行会产生大量无关 diff,审阅负担沉重。会话也无法持久化导出: 想在不同机器或 CI 环境恢复同一段上下文必须重新构建。还有一个隐性痛点: Context 窗口的 Token 估算不够精确,固定开销模型导致很多时候配额没有用满, 或在临界场景下因低估而拒绝回复。这些限制合在一起形成断层:终端的 Agent 够聪明, 但不够灵活,不够可组合,也不够可移植。
v0.43.0 的五项核心能力变动
Surgical Edit 引导。 模型在生成代码修改时优先调用 edit 工具进行精确行级
替换,而非整文件覆写。PR #26480 在核心推理流程中新增了 edit tool 的 steering
逻辑,结合模型训练层面的行为对齐,使得对大文件仅改动一两行时,差异输出只有
几行 diff,审阅者的认知负担显著降低。
会话导出/导入。 新增 session export 命令和 --import-session CLI
标志(PR #26514)。系统将完整 AgentSession 序列化为 JSON 文件,包含 tool call
历史、sandbox 状态和 context pipeline 配置。在本地调试后拿到 CI 中复现,或
跨团队成员共享调试上下文,现在只需一个文件即可接续。
自适应 Token 计算器。 Context 层引入 Adaptive Token Calculator (PR #26888),不再按固定值估算每条消息,而是根据内容的实际序列化大小做统计, 并叠加子代理状态等新元数据开销。测试数据表明较旧版可多释放约 15%–20% 的有效 上下文窗口,同时降低了因低估导致请求被拒的概率。
ToolDisplay 统一渲染层。 核心工具全部迁移到 ToolDisplay 属性
(PR #25186),将工具输出从分散的终端打印抽象为统一展示层。MCP 列表、会话恢复
选择器、拒绝提示等组件同步清理了冗余日志。ACP 兼容 IDE(如 VS Code 插件)也能
利用该属性获得更丰富的渲染体验。
AgentProtocol + Local / Remote SubagentProtocol。 这是最底层的架构升级
(PR #25302, #25303)。在统一的 AgentProtocol 接口下定义了
LocalSubagentProtocol(同进程子代理)和 RemoteSubagentProtocol
(跨进程 A2A 协议)。接口包括 createSubagent、sendMessage、getState
等方法,用 SubagentState 枚举(IDLE / RUNNING / WAITING / COMPLETED /
ERROR)标准化生命周期。Remote 模式额外集成了 A2A 客户端发现与认证,为多机
环境下子代理调度预留了扩展点。此外,PR #26661 还引入了子代理会话协议变更,
SubagentState 枚举同样被用于进度跟踪,进一步统一了状态视图。
架构分层做对了什么
这五项变化分别作用于不同的抽象层,合在一起的效果是让 gemini-cli 从一个"终端里
的聊天机器人"进化为一个"终端里的 Agent 运行时"。编辑层的 steering 并非
简单的提示词调整,而是通过 core 包的 ToolSelection 策略控制模型调用时的工具
排序,使 edit 工具在 Surgical 场景获得更高优先级。上下文层的 Token
Calculator 替换了固定估值模型,基于 history 中每条 message 的序列化大小做统计,
并动态叠加 SubagentState 等新元数据 —— 这是 PR #26594(宽松边界 GC 策略)
和 PR #26888 协同作用的成果。代理层的 AgentProtocol 定义了标准接口,
LocalSubagentProtocol 在进程内通过事件总线通信,而 RemoteSubagentProtocol
基于 A2A 协议(Agent-to-Agent),支持跨机器的子代理发现与通信 —— 这两者由
PR #25302 和 #25303 同步落地配套实现。会话层的 export/import 则将整个
AgentSession 的 graph、pipeline、sandbox 引用全部序列化,使得重新导入后几乎
无缝接续。此外,PR #26872 修复了 Flash 配额耗尽后不尊重用户显式选择模型的问题,
PR #26532 拒掉数字形式的项目 ID,PR #26885 处理了残缺的 projects.json ——
这些修复虽不亮眼,但都在提升生产环境下的健壮性。
做生产的团队可以优先评估 session export/import 和 AgentProtocol:前者把 调试上下文带进 CI/CD 流水线,后者为未来的多 Agent 编排架构奠定基础。 日常用户也能直接受益于 Surgical Edit 和自适应 Token 带来的体验提升。 v0.43.0 是 gemini-cli 架构分化中的一个关键锚点,后续版本的多 Agent 编排与 远程协作大概率会建立在这个版本的协议层之上。
夜雨聆风