Covonaut 是面向生产环境的 Go Agent 框架,纯 Go 实现,以 MIT 协议开源。覆盖 Agent 开发的完整链路:Agent Loop(含上下文自动压缩、指数退避重试)、工具系统、多 Agent 交接、图引擎(DAG 与 Pregel 两种执行模型)、会话树、可观测性,以及 A2A(Agent-to-Agent)、ACP(Agent Client Protocol)、AG-UI(Agent-User Interaction Protocol)、A2UI(Agent-to-UI)四套协议。
配套的终端 UI 采用 Elm 架构与差分渲染,不依赖任何第三方 TUI 框架;其中的聊天层通过自有的消息类型与订阅接口与 Agent 核心解耦,并不直接依赖具体实现。
v1.1.2 更新要点
本次版本重心在终端对话层与 steering 队列。
1. 旁问消息的渲染与中断
主任务运行期间,用户往往想顺带问一个不打断主流程的问题。这类「旁问」在 v1.1.2 中获得了完整的终端侧支持。
聊天渲染层为标记为 side 的消息单独开辟分支:用户侧渲染为「side ▌」前缀,助手侧渲染为「side 」前缀,错误侧沿用错误样式并加上 side 标记。助手侧的旁问同样经过 Markdown 渲染,并支持流式输出(生成中以暗色纯文本呈现)以及回复完成后的耗时摘要。
中断层面新增 CanInterrupt 配置项(返回布尔值),配合内部谓词判断当前是否处于可中断状态:主 Agent 空闲、但仍有旁问在运行时,Esc 与 Ctrl+C 依然会触发中断回调,从而关掉旁问而不影响主任务。
需要说明的是,这一版提供的是渲染与中断两条原语,旁问的创建与调度由上层终端应用组合实现。
2. 工具输出改为 off / on / full 三档
此前全局 verbose 是一个布尔开关,只有「展开」与「不展开」两种状态。本次将其换成三档策略:
- off:连续的工具调用折叠成一行组摘要,工具头与详情一并隐藏
- on:显示工具头(名称、参数预览、状态),详情保持折叠
- full:展开全部工具组并显示完整存储输出
配套接口相应调整:原有的 ToggleVerbose 保留为高频的快捷键路径,在 on 与 full 之间切换,off 只能通过 SetVerboseLevel 设置;Verbose 查询现在报告当前是否为 full;另新增只读的 VerboseLevel 查询。
3. 折叠视图中按需展开被隐藏的工具
在 off 档下,工具正文默认不可见,搜索命中项可能落在折叠区域之内。新增 RevealThroughMessage,可按消息序号临时展开包含该消息的折叠工具组,传入 -1 即还原,用于在折叠视图里定位与跳转到命中内容。
4. 思考片段的显示策略细化
思考内容渲染器新增 Stream 选项:当该选项为 false 时,处于流式生成阶段的消息不显示思考内容,避免推理过程占满屏幕,消息完成后再按既定策略显示。
Mode 的语义也做了收敛:
- hide:完全不显示(片段仍保留在消息里)
- summary / collapsed:每个片段显示一行摘要
- truncated:每个片段只显示前 8 行,随后提示剩余行数
- full:展开全部片段
truncated 由此从「等同非 full」变为真正的截断显示。另外,渲染器为空时直接返回,避免空指针。
5. 取消运行后清理待注入的 steering
新增 ClearSteering 与 SteeringPending 两个接口,以及 steering 队列的 Clear 方法。Run、Continue、Resume 三条执行入口在运行上下文被取消时都会调用 ClearSteering,使一次被打断的运行不会把尚未注入的 steering 消息带进下一轮对话。
安装与升级
需要 Go 1.25+,执行以下命令即可升级到本版本:
go get github.com/covoyage/covonaut@v1.1.2
核心运行时位于 agentcore 子包,终端相关能力位于 tui 子包。项目同时提供可运行示例,涵盖最小对话、TUI 演示与多协议(A2A、ACP)示例。
相关链接
- 源码仓库:https://github.com/covoyage/covonaut
- Release:https://github.com/covoyage/covonaut/releases/tag/v1.1.2
- 开源协议:MIT