乐于分享
好东西不私藏

构建代理式软件的5级架构:从简单工具代理到生产系统

本文最后更新于2026-03-11,某些文章具有时效性,若有错误或已失效,请在下方留言或联系老夜

构建代理式软件的5级架构:从简单工具代理到生产系统

推荐阅读

  1. Agentic Software Engineering(致AI开发者)

  2. Anthropic Multi-Agent Research System构建方法与经验

  3. Anthropic 高效的AI agents上下文工程设计理念和实践经验

  4. Anthropic通过MCP实现高效的Agent

  5. Anthropic Agentic coding最佳实践

  6. Anthropic:高效构建Agents设计理念

  7. Claude Agent Skills:从第一性原理深入剖析

  8. 如何保证Agent的上下文Memory清晰

  9. 重要推荐:Agent AI: Surveying the Horizons of Multimodal Interaction

  10. 基于llama.cpp理解LLM推理的工作原理

  11. LLM推理过程分析

  12. 回归基础!KVcache实现原理与优化!如何让LLM推理更快?

  13. 必知!大模型时代超常用的训练、微调、推理、部署框架

  14. AI从业者必知!DeepSeek再度推出高效推理框架 FlashMLA,牛在哪?

  15. K2-Think低成本高可用的高效推理系统

构建代理式软件的五级架构:从简单工具代理到生产系统

大多数团队会过度复杂化代理系统。他们一开始就采用多代理编排、自主推理循环和过于复杂的架构,然后花费数周时间调试为什么最简单的任务都会失败。

我遵循的模式简单得令人尴尬:从简单开始,逐步添加能力,并在每一步验证行为。

今天,我将向大家展示代理式软件的五级架构

  • • 带工具的代理
  • • 带存储和知识的代理
  • • 带记忆和学习的代理
  • • 多代理团队
  • • 生产系统

我们将构建一个名为 Gcode 的轻量级编码代理,每次只添加一项能力。像往常一样,我会为每个级别分享代码片段。

查看完整的cookbook:https://agno.link/agent-levels,里面有可直接克隆并运行的代码。

第 1 级:带工具的代理

没有工具的代理只是一个大语言模型(LLM)。它能推理,但什么都做不了。工具才是把 LLM 变成代理的关键。

对于编码代理,最小可用的工具集包括:读取文件、写入文件、运行 shell 命令。



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

from agno.agent import Agent
from agno.models.openai import OpenAIResponses
from agno.tools.coding import CodingTools

WORKSPACE = Path(__file__).parent.joinpath("workspace")
WORKSPACE.mkdir(parents=True, exist_ok=True)

agent = Agent(
    name="Gcode",
    model=OpenAIResponses(id="gpt-5.2"),
    instructions=(
        "You are a coding agent. Write clean, well-documented code. "
        "Always save your work to files and test by running them."
    ),
    tools=[CodingTools(base_dir=WORKSPACE, all=True)],
    markdown=True,
)

agent.print_response(
    "Write a Fibonacci function, save it to fib.py, and run it to verify",
    stream=True,
)


发生了什么:代理接收任务,使用 CodingTools 编写、编辑和运行代码。all=True 标志会启用 CodingTools 工具包中的所有工具(读取、写入、编辑、shell、grep、find、ls)。

缺少什么:每次运行都从零开始。代理无法回忆之前的会话,无法遵循项目规范(除非你把规范粘贴到提示中),也没有超出当前上下文的知识。

第 2 级:带存储和知识的代理

第 1 级是无状态的,一切都必须放在上下文中。第 2 级通过两个新增功能解决这个问题:会话存储 和 领域知识

存储

存储会将每个代理会话及其中的每次运行保存到数据库。这带来两点好处:

  • • 聊天历史作为上下文:使用存储,代理可以把最近 N 条消息纳入上下文窗口,从而知道当前进展。对于较长的会话,你可以运行压缩算法来总结早期上下文,保持窗口聚焦于当前重要内容。
  • • 发生记录:不需要把一切都发送给第三方追踪提供商。将会话存储在自己的数据库中,是了解代理做了什么、何时做以及为什么做的最简单方式。你拥有数据,可以查询、审计,还可以在上面构建仪表盘。

知识

如今的编码代理只能看到你代码库中的文件,除此之外一无所知。它们无法访问你的架构规范、团队的设计决策、内部会议纪要,或是 Slack 线程中有人解释为什么选择 Postgres 而不是 DynamoDB 的讨论。

这就是知识要解决的问题。它为代理提供了一个可搜索的存储库,包含项目中所有重要但不需要始终放在上下文窗口中的内容:规范、RFP、操作手册、架构决策记录、会议纪要、团队对话。

关键洞见:大量有价值的上下文存在于代码库之外。如果团队上个月在会议中讨论了迁移策略,这个上下文就应该在代理处理迁移任务时可用。如果六个月前有人决定使用库 X 而不是库 Y,代理就应该能在推翻 X 重新开始之前找到那段推理。



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28

from agno.db.sqlite import SqliteDb
from agno.knowledge import Knowledge
from agno.knowledge.embedder.openai import OpenAIEmbedder
from agno.vectordb.chroma import ChromaDb, SearchType

db = SqliteDb(db_file=str(WORKSPACE / "agents.db"))

knowledge = Knowledge(
    vector_db=ChromaDb(
        collection="coding-standards",
        path=str(WORKSPACE / "chromadb"),
        search_type=SearchType.hybrid,
        embedder=OpenAIEmbedder(id="text-embedding-3-small"),
    ),
)

agent = Agent(
    name="Gcode",
    model=OpenAIResponses(id="gpt-5.2"),
    instructions=(...),
    tools=[CodingTools(base_dir=WORKSPACE, all=True)],
    knowledge=knowledge,
    search_knowledge=True,
    db=db,
    add_history_to_context=True,
    num_history_runs=3,
    markdown=True,
)


变化:新增两项功能——基于 ChromaDb 的知识库(支持语义和关键词混合搜索),以及用于会话存储的 SqliteDb。现在代理可以:

  • • 在编码前搜索知识。如果你的风格指南要求“使用 snake_case”,代理会找到并遵循它。
  • • 记住对话:在同一会话中提出后续问题时,它拥有完整上下文。
  • • 知识入库:你将文档(文本、PDF、URL)插入知识库。运行时,代理搜索相关片段并将其添加到上下文中。这就是基础的 Agentic RAG。


1
2
3
4
5
6
7

# Load your coding standards
knowledge.insert(text_content="""
## Project Conventions
- Use type hints on all function signatures
- Write docstrings in Google style
- Prefer list comprehensions over map/filter
""")


何时使用第 2 级:当代理需要遵循它未训练过的标准,或用户期望多轮对话时。这是大多数内部工具的甜蜜点。

第 3 级:带记忆和学习的代理

从第 2 级到第 3 级的跨越是最重要的。在第 2 级,代理遵循你给它的规则;在第 3 级,它会从经验中学习规则

第 1000 次交互应该比第 1 次更好。



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33


from agno.learn import LearnedKnowledgeConfig, LearningMachine, LearningMode
from agno.tools.reasoning import ReasoningTools

learned_knowledge = Knowledge(
    vector_db=ChromaDb(
        collection="coding-learnings",
        path="tmp/chromadb",
        search_type=SearchType.hybrid,
        embedder=OpenAIEmbedder(id="text-embedding-3-small"),
    ),
)

agent = Agent(
    name="Gcode",
    model=OpenAIResponses(id="gpt-5.2"),
    instructions=(...),
    tools=[
        CodingTools(base_dir=WORKSPACE, all=True),
        ReasoningTools(),
    ],
    knowledge=docs_knowledge,
    search_knowledge=True,
    learning=LearningMachine(
        knowledge=learned_knowledge,
        learned_knowledge=LearnedKnowledgeConfig(
            mode=LearningMode.AGENTIC,
        ),
    ),
    enable_agentic_memory=True,
    db=db,
    markdown=True,
)


变化

  • • 学习机器:代理获得 save_learning 和 search_learnings 工具。它自己决定什么值得记住:有效的编码模式、需要避免的错误、用户偏好。这些内容存储在独立的知识库中,并在未来会话中呈现。
  • • 代理式记忆:代理随着时间构建用户画像:你偏好的编码风格、使用的框架、喜欢解释的方式。

两会话测试



1
2
3
4
5
6
7
8
9
10
11
12

# Session 1: User teaches a preference
agent.print_response(
    "I prefer functional programming style — no classes, "
    "use pure functions and immutable data. Write a data pipeline.",
    session_id="session_1",
)

# Session 2: New task — agent should apply the preference
agent.print_response(
    "Write a log parser that extracts error counts by category.",
    session_id="session_2",
)


在第 2 个会话中,代理搜索其学习记录,找到函数式编程偏好,然后编写函数式代码。

何时使用第 3 级:当代理服务于同一批用户且需要随时间改进时。个人编码助手、带有共享学习的团队工具,以及任何“按我们的方式做”的场景。

第 4 级:多代理团队

有时候单个代理不够用。第 4 级将职责拆分给专业化的代理,由团队领导者协调。



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

from agno.team.team import Team

coder = Agent(
    name="Coder",
    role="Write code based on requirements",
    tools=[CodingTools(base_dir=WORKSPACE, all=True)],
    ...
)

reviewer = Agent(
    name="Reviewer",
    role="Review code for quality, bugs, and best practices",
    tools=[CodingTools(base_dir=WORKSPACE, enable_write_file=False,
                       enable_edit_file=False, enable_run_shell=False)],
    ...
)

tester = Agent(
    name="Tester",
    role="Write and run tests for the code",
    tools=[CodingTools(base_dir=WORKSPACE, all=True)],
    ...
)

coding_team = Team(
    name="Coding Team",
    members=[coder, reviewer, tester],
    instructions=(...),
    show_members_responses=True,
    markdown=True,
)


Coder 负责编写,Reviewer 负责阅读(注意:禁用 write/edit/shell),Tester 负责验证。团队领导者负责协调和综合。

诚实提醒:多代理团队强大但不可预测。团队领导者是一个 LLM,负责委托决策。有时委托得好,有时不好。对于可靠性至关重要的生产系统,优先选择显式工作流而非动态团队。团队在有人类监督的场景中表现最佳,人类可以审查输出。

何时使用第 4 级:当你需要多种视角(代码审查就是完美例子)、任务自然分解为专业角色,或构建可让人类监督的交互工具时。

第 5 级:代理式系统(生产 API)

第 5 级是把第 1-4 级变成生产服务的运行时。你从开发数据库升级到生产数据库,添加追踪,并把一切暴露为 API。



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29

from agno.db.postgres import PostgresDb
from agno.vectordb.pgvector import PgVector, SearchType
from agno.os import AgentOS

db_url = "postgresql+psycopg://ai:ai@localhost:5532/ai"
db = PostgresDb(db_url=db_url)

knowledge = Knowledge(
    vector_db=PgVector(
        db_url=db_url,
        table_name="coding_knowledge",
        search_type=SearchType.hybrid,
        embedder=OpenAIEmbedder(id="text-embedding-3-small"),
    ),
)

# ... create your Level 3 agent with production db ...

agent_os = AgentOS(
    id="Gcode OS",
    agents=[coding_agent],
    teams=[coding_team],
    config=config_path,
    tracing=True,
)
app = agent_os.get_app()

if __name__ == "__main__":
    agent_os.serve(app="run:app", reload=True)


变化

  • • PostgreSQL + PgVector 取代 SQLite + ChromaDb。实现真正的连接池、真实备份和并发访问。
  • • AgentOS 将你的代理包装成 FastAPI 应用,内置 Web UI、会话管理和追踪。
  • • 追踪tracing=True)让你能观察每个工具调用、每次知识搜索、每次委托决策。

何时使用第 5 级:当代理离开你的笔记本电脑时。多用户、高可用要求、需要调试生产问题。

最重要建议

从第 1 级开始。构建能解决问题的最简单代理。运行它。看看哪里失败。然后只添加它缺少的那一项能力

大多数团队直接跳到第 4 级,因为多代理架构在演示中看起来很炫目。然后他们花费数月调试协调失败——而这些失败用一个指令清晰的单代理就能避免。

把这些级别看作能力层级,记住每升一级都会增加复杂度,而复杂度是有代价的。只有在更简单的方法明确失败时,才支付这个代价。

这里是包含所有五个级别可运行代码的食谱。克隆它,运行它,如果有问题告诉我。我是人类,也会犯错。

引用来源

  • • https://x.com/ashpreetbedi/status/2024885969250394191
  • • https://github.com/agno-agi/agno/tree/main/cookbook/levels_of_agentic_software

推荐阅读

  1. Agentic Software Engineering(致AI开发者)

  2. AI Coding 时代,基础知识与应用实践真的不重要了吗?

  3. 别用低维忙碌毁掉人生:Dan Koe的3-2-1法则,让你不用内卷也能跻身前1%

  4. LLM推理过程采样策略(全面分析)

  5. LLM推理过程分析

  6. Karpathy 200行纯Python实现GPT2直观理解大语言模型核心原理

  7. 再次反思:AI到底替代什么?我们不能替代的能力是什么?

  8. 避免AI瞎写代码Claude Code核心编程准则

  9. Reasoning LLMs解析

  10. 腾讯ShunyuYao新作CL-BENCH用于评估语言模型上下文学习能力的真实世界基准

  11. Kimi K2.5 开源多模态智能体基模

  12. 各种AI产品爆火浪潮下的一点思考

  13. DeepSeek-OCR 2探索统一全模态编码的可能性

  14. DeepseekV4预热:mHC 大幅提高预训练模型稳定性

  15. Gemini 3 Prompt:通用使用的最佳实践

  16. 20260125关于AICoding引发技术栈划分取消的思考

  17. 为什么使用Jinja2构建LLM工具调用Prompt

  18. DeepseekV4预热Engram代码解析:静态Memory与动态计算分离

  19. DeepseekV4预热:Engram实现静态Memory与动态计算分离

  20. Qwen3 Embedding系列模型

  21. Anthropic Multi-Agent Research System构建方法与经验

  22. Anthropic 高效的AI agents上下文工程设计理念和实践经验

  23. Anthropic通过MCP实现高效的Agent

  24. Anthropic Agentic coding最佳实践

  25. Anthropic think tool设计理念与实践经验

  26. Anthropic 评估LLM实现软件工程能力实践经验

  27. Anthropic:高效构建Agents设计理念

  28. Anthropic RAG 上下文检索设计理念

  29. 2025,于AI浪潮中锚定自我

  30. 关于选择:理解贝叶斯主义,拥抱变化做好当下

  31. 致敬2025:一些前沿的超越标准大语言模型的探索

  32. 致敬2025:从DeepSeek V3到Mistral 3 Large现代LLM架构设计解析

  33. Google极长上下文解决方案:Titans + MIRAS

  34. MCP: Function Calling原理

  35. 一人公司AI技术栈:极简思维,拉满独立开发效率

  36. FalkorDB开源Graph数据库

  37. MemOS以LLMmemory为中心实现高效的存储和检索

  38. 一项连通心理学、神经科学与机器学习的研究Key-value memory in the brain

  39. Ilya关于Scaling到Research转变的探讨

  40. Claude Agent Skills:从第一性原理深入剖析

  41. SQL原生LLM记忆引擎Memori

  42. CUDA Toolkit安装多版本管理

  43. 多模态新方向:Cambrain-S空间超感知多模态

  44. HunyuanOCR 1B商用级开源VLM模型技术报告解读

  45. 百度飞桨0.9B文档解析模型PaddleOCR-VL

  46. ClaudeCode导入其他AI模型的方法

  47. LLM多轮对话数据集构建高级攻略

  48. Karpathy提出多LLM协作委员会项目解析

  49. Document AI: 智能文档处理的下一次进化

  50. Meta 提出SAM 3D Body: 单图像全身3D人体Mesh重建可提示模型

  51. 极简生活指南49条

  52. 多模态高效架构:Deeply Stacking Visual Tokens

  53. 高效生活:五大时间管理工具用法对比分析

  54. 如何保证Agent的上下文Memory清晰

  55. 突破textual content限制:RAG-Anything

  56. Mate超级实验室推出低成本RL: Scaling Agent Learning

  57. Alibaba提出 Logics-Parsing 端到端文档解析模型

  58. SimpleVLA-RL为解决VLA模型数据稀缺与泛化能力弱的高效RL框架

  59. Microsoft提出Agent Lightning突破性的解耦思维打破了RL与Agent训练的适配壁垒

  60. OpenAI指出语言模型幻觉的核心原因:训练和评估机制的统计必然

  61. K2-Think低成本高可用的高效推理系统

  62. 腾讯小模型:R-4B专为通用auto-thinking设计的MLLM

  63. Qwen3-VL:从 “看见” 到 “理解”,从 “认知” 到 “行动”

  64. 如何创造财富?《黑客与画家》

  65. LLM-JEPA:跨领域创新打破 NLP 与视觉表征学习的壁垒

  66. 常用10+多模态检索Benchmark

  67. Less is More:递归小模型

  68. Context Engineering系统研究:Context Engineering 2.0

  69. 新方向:DeepSeek-OCR

  70. 字节新作多模态小模型:SAIL-VL2

本站文章均为手工撰写未经允许谢绝转载:夜雨聆风 » 构建代理式软件的5级架构:从简单工具代理到生产系统

猜你喜欢

  • 暂无文章

评论 抢沙发

5 + 1 =