DC娱乐网

为什么用 Go 写 AI Agent,covo-agent 的选型思考

在 AI Agent 领域,Python 几乎是默认选项,Go 语言的是比较少见的。但 covo-agent 选择了 G
在 AI Agent 领域,Python 几乎是默认选项,Go 语言的是比较少见的。但 covo-agent 选择了 Go,这并非标新立异,而是一系列工程考量叠加后的结果,接下来就讲下选型的逻辑取舍。
一份克制的依赖清单选型的收益,往往最先体现在依赖清单上。covo-agent 的直接依赖只有大约十五个:自研的 TUI 库 covonaut、命令行框架、WebSocket 库、可观测性组件以及纯 Go 实现的 SQLite 驱动等。
没有庞大的运行时,没有框架全家桶,也没有层层嵌套的间接依赖。对于一个要长期稳定运行的工具来说,这种克制本身就是一种很大的优势。
交叉编译零负担Go 生态里,SQLite 的集成方式通常有两种方式:一是借助 CGO 调用原生 SQLite,二是使用纯 Go 实现。covo-agent 选择了后者,将 SQLite 的 C 实现转换为 Go,不依赖 C 编译器。
这个选择的直接收益是交叉编译变得极其简单:在任意平台上,一条命令即可分别产出 Linux、macOS、Windows 的目标二进制,无需为每个平台准备对应的 C 工具链,也不会出现"换台机器就编译不过"的问题。对一个需要跨平台分发、还要被接入 CI 的工具来说,这一点是实打实的便利。
单二进制部署依赖克制与无 CGO 叠加的最大优势就是编译产物是单个二进制文件。
这意味着部署时不需要安装解释器、不需要拉取依赖、不需要配置运行环境,把文件放到目标机器上即可运行。对于个人开发者而言,降低了试用的门槛;对于团队来说,减少了环境不一致带来的维护成本。
并发模型与资源占用Agent 的工作负载天然是并发密集型的,多个工具调用可能并行进行,流式输出持续推送,消息平台的桥接需要同时维护多条连接。Go 的 goroutine 与 channel 模型,恰好适合处理这类大并发的 I/O 任务。
作为编译型语言,Go 的资源占用与启动速度对于此类工具来说是一个非常大的优势,不会因为运行时开销而拖慢工具的运行。
小结需要承认的是,Go 在 AI 与 LLM 相关的库生态上,确实不如 Python 丰富。但在 Agent 开发的场景,核心并非训练与推理,而是编排、工具调用、上下文管理与流程控制等。这些恰恰是 Go 擅长的工程领域。Go 的类型安全、部署简单、并发高效这些工程化收益,对 agent 来说最合适不过了。