闲话+背景
嗯……这应该是一个系列文章,属于思绪飞扬,放飞自我吧,和管理员申请过了,可以推荐自己的项目,就厚脸皮一回 ![]()
想来想去还是从闲话开始聊吧,这两年AI 发展迅速,agent早就融入了大家的生活。 题外话啊,大家是如何学习agent的呢?正好也赶上现在AI 大跃进的时代,不学吧,肯定是要掉队的,学吗太烦,本来工作就很烦,还要被逼着学习新东西。本来是想的打不过就加入,后来一合计还是自己操刀设计一个算了。
简单回顾
咱也不是那种老实巴交写代码的人,hhh,所以在职场混的很差
。
最开始接触agent应该溯源到去年和朋友联合创业做的music AI,当时我自己设计架构,手搓的一个music tool,可以对音频按照音轨进行分层处理,然后巴拉巴拉(省略一万字),当时想做的就是绝对不是普通的AIGC,要做的是修复,完善,类似于现在AI 可以让老电影变成4K 画质这样的。我们想的做的就是完善音频,找到提供音频中不和谐的地方,经过AI 审查分析之后,给出完善建议。
当时大模型我都设计好了,都投入了训练,用的是MLX && PYtorch,可惜资本市场萎靡,项目太监了……
带着这个不甘心就继续投入AI的学习,期间做了transfermor 底层原理可交互版,ML 底层数学可交互工具(都是依靠我自己的笔记做的)
之后就去做自己的独立项目,最后上线了 crates.io 还行,反响不错,洋哥们儿用的也不亦乐乎。
然后就到了今天介绍的主角,GoAgentX
技术选型
我本身是后端开发,熟悉Rust,Golang。不想用python 做的原因,是看起来不舒服,用着也不是很舒服。然后就在Rust 和Go里抉择,Rust 用起来得心应手,就是效率忒慢,编译速度太劝退人了,用go还有另一个原因,有个HR竟然说我不懂GO,没有GO项目,作为一个有操守的技术人,就必须选择Go,消灭一切质疑的声音。
从 Python 痛苦到 Go 重生
最开始我也和很多人一样,从 Python 入门。先是搭了个本地知识库,用 vector database + Ollama。第一次跑通的时候还挺兴奋的:文档切分、embedding、入库、查询……Ollama 居然真的能回答我的本地笔记内容!
但兴奋没持续多久。
当我想加 tool calling、多步推理、跨会话记忆、多agent协作的时候,一切都崩了。Python 在并发场景下又慢又乱,内存管理一塌糊涂,工作流逻辑变成一堆 callback 和状态机的 spaghetti code。每次想改流程(加 failover、加 human-in-the-loop)都要重写一大半代码,调试长时任务像在抓鬼。
我心想:一定有更好的方式。
Why Go? Go 的简洁、极致性能和天生的并发支持让我眼前一亮。于是我决定:从头用 Go 重写整个 Agent 系统。
Shedding Old Baggage, I Designed My Own Agent Framework —— 这就是 GoAgentX 的诞生故事。
我从最基础的 LLM 调用和简单 RAG 开始,但这次感觉完全不一样:
- Goroutines 让并发 Agent 天生又快又轻量
- 强类型 + 干净的接口让我设计出更清晰的抽象
- Channel 和 Context 让工作流编排和取消变得可靠
随着项目发展,我逐步加入了自己最想要的特性:
- Dynamic DAG Workflows —— 执行流可以在运行时动态构建和修改,再也不用硬编码
- Memory Distillation —— 长时记忆自动总结压缩,Agent 不会淹死在上下文里,甚至可以跨对话复现记忆
- AHP (Agent Hierarchical Protocol) —— 代理之间清晰的通信、委托和协作协议
- Leader + Sub-Agent with Failover —— Leader 挂了,子代理能无缝接管
- 可插拔向量存储(PostgreSQL pgvector、Qdrant 等) + 极致性能(很多核心操作 <1µs,零分配热路径)
从一个简单的本地知识库 Demo,慢慢进化成了一个多agent 框架。
而且我还做了一个比较颠儿的功能,随意暗杀一个正在工作的agent,看看他是否能真的秽土转生……
2026/06/14 19:46:26 INFO llm connected provider=ollama model=llama3.2
2026/06/14 19:46:27 INFO mcp tools discovered count=10
2026/06/14 19:46:27 INFO flight recorder started
2026/06/14 19:46:27 INFO agent launched id=agent-1 name="Architecture Review"
2026/06/14 19:46:27 INFO agent launched id=agent-2 name="Error Handling Review"
2026/06/14 19:46:27 INFO agent launched id=agent-3 name="Concurrency Review"
2026/06/14 19:46:27 INFO agent launched id=agent-4 name="API Surface Review"
2026/06/14 19:46:27 INFO agent launched id=agent-5 name="Change Impact Analysis"
2026/06/14 19:46:27 INFO service running
2026/06/14 19:46:27 INFO dashboard started url=http://localhost:8090
2026/06/14 19:46:27 INFO orchestrator: agent started id=agent-1 name="Architecture Review" tool=""
2026/06/14 19:46:27 INFO orchestrator: agent started id=agent-3 name="Concurrency Review" tool=""
2026/06/14 19:46:27 INFO orchestrator: agent started id=agent-4 name="API Surface Review" tool=""
2026/06/14 19:46:27 INFO orchestrator: agent started id=agent-5 name="Change Impact Analysis" tool=""
2026/06/14 19:46:27 INFO orchestrator: agent started id=agent-2 name="Error Handling Review" tool=""
2026/06/14 19:46:27 INFO orchestrator: MCP data gathered id=agent-4 bytes=1384
2026/06/14 19:46:27 INFO orchestrator: MCP data gathered id=agent-2 bytes=2392
2026/06/14 19:46:27 INFO orchestrator: MCP data gathered id=agent-3 bytes=5632
2026/06/14 19:46:27 INFO orchestrator: MCP data gathered id=agent-5 bytes=11090
2026/06/14 19:46:27 INFO orchestrator: MCP data gathered id=agent-1 bytes=23420
2026/06/14 19:46:29 INFO arena: killed agent id=agent-1
2026/06/14 19:46:29 ERROR orchestrator: agent failed id=agent-1 error="send request: Post \"http://localhost:11434/api/generate\": context canceled"
2026/06/14 19:46:29 INFO orchestrator: agent killed, resurrecting id=agent-1 name="Architecture Review"
2026/06/14 19:46:29 INFO orchestrator: agent started id=agent-6 name="Architecture Review" tool=""
2026/06/14 19:46:29 INFO orchestrator: resuming agent from step id=agent-6 resume_from=agent-1 start_step=4 total_steps=3
2026/06/14 19:46:29 INFO orchestrator: resuming with previous MCP data id=agent-6 data_len=23420
2026/06/14 19:46:29 INFO orchestrator: MCP data gathered id=agent-6 bytes=23420
2026/06/14 19:46:29 INFO arena: killed agent id=agent-3
2026/06/14 19:46:29 ERROR orchestrator: agent failed id=agent-3 error="send request: Post \"http://localhost:11434/api/generate\": context canceled"
2026/06/14 19:46:29 INFO orchestrator: agent killed, resurrecting id=agent-3 name="Concurrency Review"
2026/06/14 19:46:29 INFO orchestrator: agent started id=agent-7 name="Concurrency Review" tool=""
2026/06/14 19:46:29 INFO orchestrator: resuming agent from step id=agent-7 resume_from=agent-3 start_step=4 total_steps=3
2026/06/14 19:46:29 INFO orchestrator: resuming with previous MCP data id=agent-7 data_len=5632
2026/06/14 19:46:29 INFO orchestrator: MCP data gathered id=agent-7 bytes=5632
2026/06/14 19:46:29 INFO arena: killed agent id=agent-5
2026/06/14 19:46:29 ERROR orchestrator: agent failed id=agent-5 error="send request: Post \"http://localhost:11434/api/generate\": context canceled"
2026/06/14 19:46:29 INFO orchestrator: agent killed, resurrecting id=agent-5 name="Change Impact Analysis"
2026/06/14 19:46:29 INFO orchestrator: agent started id=agent-8 name="Change Impact Analysis" tool=""
2026/06/14 19:46:29 INFO orchestrator: resuming agent from step id=agent-8 resume_from=agent-5 start_step=4 total_steps=3
2026/06/14 19:46:29 INFO orchestrator: resuming with previous MCP data id=agent-8 data_len=11090
2026/06/14 19:46:29 INFO orchestrator: MCP data gathered id=agent-8 bytes=11090
2026/06/14 19:46:31 INFO orchestrator: agent completed id=agent-4 duration=4s
2026/06/14 19:46:35 INFO orchestrator: agent completed id=agent-2 duration=8s
2026/06/14 19:46:43 INFO orchestrator: agent completed id=agent-6 duration=14s
2026/06/14 19:46:47 INFO orchestrator: agent completed id=agent-7 duration=18s
2026/06/14 19:46:53 INFO orchestrator: agent completed id=agent-8 duration=24s
当然这个功能是Beta的啊,还没有merge到master。
最后的最后,如果你在低谷期,希望我这个故事能激励你,要善待自己,持续输出,拥抱变化。
同时也欢迎各位大佬和我一起共建这个项目。这个文章我会做成一个系列吧,不定时更新,拆解自己的设计理念,是如何落实到代码上,反响不错的话会公开自己所有的提示词,架构设计文档。 对了,要追更记得踢我一下啊。


