agent-server的搭建(goland)
本文章依旧沿用作者推特学习项目。完整项目源码https://github.com/twitter-learn-cloud-development/backend-services该篇文章单独讲开发规划。 推特 AI Agent 项目架构与演进规划 项目定位以 Go 高并发为底座、MCP 为工具协议、ReAct 为决策引擎的多 Agent 推文运营平台——Research / Style / Writer 三智能体并发协作配合四层记忆体系与 Hybrid RAG 召回。一、核心决策与定位开发策略不另起炉灶在现有推特 Go 微服务架构上扩展新建独立微服务agent-service与已有的user/tweet等服务平级。交互协议采用 MCPModel Context Protocol行业标准将发推、查询等操作封装成 AI 可调用的 Tools。核心差异化用 Go 实现 ReAct 循环与多 Agent 并发几乎所有同类项目都是 Python LangGraphGo 实现本身即是降维打击。二、Agent 核心双模型场景场景一智能查询与推荐Search Recommend Agent业务表现用户输入「我最近迷上了健身推荐三个博主」或「帮我找找最近很火的 XX 事件」。底层逻辑AI 解析用户意图提取语义标签如健身结合用户画像调用后端 ES 检索工具将返回的博主列表、推文进行提炼返回灵活的 UI 数据结构供前端渲染不定式 UI场景二内容创作与执行Write Execute Agent业务表现用户发送图片、思路碎片AI 润色出多版推文供选择并直接完成发布。底层逻辑基于多模态大模型理解图片和文本输入利用 ReAct 循环思考 → 找工具 → 执行 → 确认驱动整个流程用户确认后Agent 调用 MCP 接口twitter-mcp-server自动完成发推实现全自动闭环三、ReAct 决策引擎核心工程亮点为什么这是亮点当前大多数 Agent 项目是「用户问 → 单次 RAG → 返回」本质是带 LLM 的搜索系统与 LangChain 教程无异。ReAct 让 Agent 真正自主规划多步任务。示例流程用户说「帮我分析最近科技圈热点然后用我的风格写一篇推文」→ Agent 自主规划Step 1: 调 ES 搜科技热词 Step 2: 搜对应推文 目标作者风格样本 Step 3: 调写作 Tool 生成草稿 Step 4: 调发布 Tool可选用户确认后核心工程难题面试叙事点问题解决方案防止无限循环Max Steps 上限 超时熔断context deadlineTool 调用失败Retry 策略 Fallback 降级处理中间状态持久化每步状态写入 Redis支持断点续跑结构体定义ThoughtActionObservation三段式结构体四、多 Agent 并发协作架构为什么升级单个 LLM 调用的「协作写推文」在面试官眼里一眼看穿真正的多 Agent 才有工程深度。架构设计用户请求 ↓ Orchestrator AgentGo 主协程负责调度与故障隔离 ├── Research Agent → ES 检索热点推文并发 ├── Style Agent → 分析目标作者写作风格并发 └── Writer Agent → 综合输入生成草稿 Self-Reflection串行依赖前两者关键工程决策面试叙事点问题解决方案并发 vs 串行Research Style 用errgroup并发Writer 依赖两者结果串行等待Agent 间消息传递内存 channel单机/ Redis 消息队列分布式扩展故障隔离某个 sub-agent 超时不能卡死主流程Orchestrator 设置独立 deadlineGo 优势体现并发模型天然比 Python async/await 更优雅goroutine channel 是最佳载体五、四层记忆体系这是与所有 LangChain 同类项目拉开差距的核心系统性亮点。记忆类型实现方案项目对应场景短期记忆Redis Session 滑动窗口截断单次对话上下文历史长期记忆MongoDB 存对话关键事件摘要用户偏好、历史操作记录语义记忆ES kNN 向量检索相似推文 / 作者风格样本库程序性记忆固化为 MCP Tool发推、搜索等标准化技能六、基础设施升级用户画像 数据流① 搜索引擎升级ES Canal痛点MySQLLIKE查询慢且无语义理解能力方案引入 Elasticsearch配置 IK 中文分词器使用 Canal 监听 MySQL binlog实现推文数据实时增量同步在 Agent 中的作用作为 RAG检索增强生成的数据源为 Prompt 提供精准上下文同时存储 kNN 向量用于语义推荐② 用户画像分层存储存储层存储内容技术选型理由MySQL静态画像性别、地区、注册时间等基础信息结构固定、变更少关系型存储最合适MongoDBAgent 历史对话记录对话记录是嵌套结构Schema 自由天然适合文档型存储省去 JSON 字段的拆解成本Redis近期活跃行为 搜索词ZSet TTL高频读写TTL 自动过期做短期记忆Elasticsearch用户偏好向量kNN 字段语义级推荐匹配③ RAG 增强召回Hybrid RAGES 全文检索BM25 kNN 向量检索双路并行在 Agent 中将检索结果封装入 Prompt提供精准上下文RAG 前置加 Query Rewriting调小模型扩写用户 Query提升召回质量七、社交图谱与进阶推荐Neo4j 引入计划定位第二阶段目标解决复杂关系网查询。为什么用 Neo4jMySQL 找「朋友的朋友」二度/三度人脉需要多层 JOIN性能极差。Neo4j 采用 Index-Free Adjacency无索引邻接底层设计通过指针直连沿关系查询速度是 MySQL 的指数级倍数。应用场景维护用户间复杂社交网络节点用户、话题边关注、点赞实现基于关系的精准好友推荐PersonalRank / 共同关注算法快速检索「跟我兴趣相同且在社交距离内的人」九、面试叙事要点总结把这几个核心矛盾讲清楚任何同类项目都没有这个系统性。Go 实现 ReAct几乎所有教程是 PythonGo 实现本身是差异化把 goroutine 并发优势和 Agent 工程难题绑定讲多 Agent 并发errgroup 并发 channel 消息传递讲清楚为什么 Research/Style 并发而 Writer 串行四层记忆体系Redis / MongoDB / ES-kNN / MCP Tool 各司其职画出来就是亮点工程挑战Max Steps 熔断、Tool 失败 Fallback、Redis 断点续跑——这才是 AI 工程深度不是堆 API 调用