关于 Covonaut
Covonaut 是面向生产环境的 Go Agent 框架,纯 Go 实现、MIT 协议开源。覆盖 Agent 开发的完整链路:Agent Loop(含上下文自动压缩、指数退避重试)、工具系统、多 Agent 交接、图引擎(DAG 与 Pregel 两种执行模型)、会话树、可观测性,以及 A2A / ACP / AG-UI / A2UI 四套协议。
配套的终端 UI(TUI)采用 Elm 架构与差分渲染,不依赖任何第三方 TUI 框架。
v1.1.0 更新要点
1. Markdown 渲染改为 AST 化
渲染链路拆成两段:把 Markdown 解析成 AST,按 AST 绘制到终端单元格。支持范围如下:
- 印刷体标点替换:弯引号 ‘’“”、连接号与破折号 – —、省略号 …、书名号 «»、撇号 ’
== 高亮标记:自研行内解析器,补上 GFM 之外的 mark 语法
- 针对模型输出的一个实用处理:模型常把表格包进标记为 md / markdown / gfm 的代码围栏里,导致本该是表格的内容被渲染成代码块。现在会自动识别内含 GFM 表格的这类围栏,展开成真正的表格
2. 代码语法高亮
- 内置 16 种语言支持:Go、Python、JavaScript、TypeScript、Rust、JSON、YAML、Bash、C、C++、Java、SQL、HTML、CSS、Ruby 及纯文本
- 9 类词法单元:关键字、类型、字符串、数字、注释、函数、操作符、标点、文本
- 可插拔:语言定义抽象为
LangSpec,运行时可通过 RegisterLanguage 注册新语言
- 配色走主题系统:颜色取自主题 semantic palette,主题 JSON 可配并支持热重载,注释默认斜体
- diff 块智能上色:diff 代码块会根据
+++ / --- 头中的文件名推断语言,给增删行上色
- 按扩展名推断语言:提供
LanguageForFilename,覆盖 py/js/ts/rs/cpp/yaml 等常见扩展名
- 可开关:
SetSyntaxHighlighting(false) 可关闭着色,默认开启
3. 助手回复完成提示
助手消息新增可选 FooterChip 字段。一轮回复结束后,会在消息下方补一行暗色摘要(形如 code · deepseek-v4-flash · 5.5s),用于回显本轮的模式、模型与耗时。生成过程中不显示,避免干扰流式输出。
4. 终端渲染健壮性
- 修掉底部状态栏意外换行:写满最后一行的最后一格会触发终端的 wrap-pending(DEC xenl),光标落到幻影行后整屏滚动,留下重复状态栏和残留在旧状态行上的聊天文本。新增
preventLastRowWrap 专门兜住;同时裁剪超出终端高度的帧,避免差分渲染器与真实屏幕失同步而产生幽灵行。
- 宽度计算改为东亚宽度感知:
tui/core/width.go 现在正确处理组合记号(0 宽)、东亚宽/全角(2 格)、Ambiguous 字符(按 locale 判定 1 或 2 格)、Emoji(2 格)、base + VS16 视为一个 2 格簇、ZWJ 与变体选择符(0 宽),并透明剥离 ANSI 转义序列。Ambiguous 宽度还能从环境变量的 locale(zh/ja/ko)自动推断。
项目链接