关于无聊自己搓一个agent 框架这件事

闲话+背景

嗯……这应该是一个系列文章,属于思绪飞扬,放飞自我吧,和管理员申请过了,可以推荐自己的项目,就厚脸皮一回 :rofl:
想来想去还是从闲话开始聊吧,这两年AI 发展迅速,agent早就融入了大家的生活。 题外话啊,大家是如何学习agent的呢?正好也赶上现在AI 大跃进的时代,不学吧,肯定是要掉队的,学吗太烦,本来工作就很烦,还要被逼着学习新东西。本来是想的打不过就加入,后来一合计还是自己操刀设计一个算了。

简单回顾

咱也不是那种老实巴交写代码的人,hhh,所以在职场混的很差 :rofl:
最开始接触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。

最后的最后,如果你在低谷期,希望我这个故事能激励你,要善待自己,持续输出,拥抱变化

同时也欢迎各位大佬和我一起共建这个项目。这个文章我会做成一个系列吧,不定时更新,拆解自己的设计理念,是如何落实到代码上,反响不错的话会公开自己所有的提示词,架构设计文档。 对了,要追更记得踢我一下啊。

4 个赞

老哥做个量化交易的嘛,哈哈哈哈

量化吗?那个搞不了,自己的金融知识储备忒薄弱。我记得git上有不少牛的开源项目,就是AI自动做市的。具体叫啥,还真想不起来了 :sweat_smile: https://github.com/TauricResearch/TradingAgents 应该是这个吧,github finance topics 排名第一的项目?

1 个赞

不明觉厉

1 个赞

用你的agent去管理调用编排那些开源仓库里的优质技术点

有道理,我用这个框架做了个赛博逗蛐蛐的项目。 AI 代码评审团,底层用的是自己做的一个垃圾代码风格检测器,围绕这个检测结果,AI 进行讨论。里面还加入了狼人杀的部分,也就是说最开始的时候AI 自动获取身份(架构师,测试工程师,资深开发)身份牌里会随机混入一个捣乱分子。 AI 可以相互举证,投票选择捣乱分子…… 算是一个娱乐性质的项目吧

你的agent工具强在调用和管理,不怕开源的量化指标过于强悍,量化因子越强你越出彩~

1 个赞

可以,咱主打一个听劝,下一步就做个量化的demo,多谢老哥的建议 :+1:

1 个赞

不明觉厉+1,大佬不吝分享,我等不吝鼓掌 :grin:

互相学习 :grinning_face:

受不了啊,那我不得出个$50 GPT-5.5支持一下啊,申请一轮天使用户名额哈哈哈哈哈哈

心意到了就成,这个系列文章的目的就是把我个人的理解拆解出来,方便大家学习,若是转行做agent开发作为一个参考也中啊…… 至于token,我用的时候再叨扰老哥吧。要不直接在readme里致谢你,或者下次提Pr的时候@你? :rofl: 记得把git地址发一下啊,想要致谢的兄弟也以自己的git 名留言就行 :saluting_face:

还有最主要的啊,之前你给我的那个额度还没用了 :+1:,人嘛,知足常乐,凭这个git上也要致谢老哥的 :saluting_face:

1 个赞

咱们兄弟们就不用客气,送你那个你就用就好,这个平台响应嗷嗷快,3.1秒内首tokens,9.8秒内回答完,我都在里面充钱哈哈哈哈哈,我再给你额度也是这个平台的,我段时间基本就靠他养我的爱马仕了哈哈哈哈

1 个赞