最近在重新梳理一个问题:
如果本身已经做过软件开发,现在想转 Agent 应用开发,到底需要学什么?
网上常见的关键词很多:
LangChain、LangGraph、RAG、Memory、MCP、Multi-Agent、Context Engineering、Eval、Sandbox……
如果一个个拆开看,很容易觉得这条路线特别散。
所以这次换个方式。
先看企业真实岗位需要什么,再把这些技能放回一个完整的 Agent 系统里,最后再去 GitHub 里找对应的成熟项目。
整条链路大概是:
岗位 JD ↓抽取技能 ↓重新整理成 Agent 工程框架 ↓用 GitHub 项目验证 ↓反推软件开发转 Agent 的学习路线先把最终整理出来的框架放在前面。
01|Agent 应用开发的完整框架
目前比较适合的软件工程视角,大概可以整理成这样:
┌────────────────────────────────┐│ Agent Application ││ Web / App / CLI / API │├────────────────────────────────┤│ Orchestration ││ Workflow / Multi-Agent / HITL │├────────────────────────────────┤│ Agent Runtime ││ Loop / State / Planning ││ Retry / Checkpoint / Recovery │├────────────────────────────────┤│ Context ││ Prompt / History / RAG ││ Memory / State / Tool Results │├───────────────┬────────────────┤│ Model │ Action ││ LLM/Reasoning │ Tools / MCP │├───────────────┴────────────────┤│ Software Infra ││ DB / Redis / MQ / Docker ││ Auth / Storage / Distributed │├────────────────────────────────┤│ Production & Quality ││ Eval / Trace / Security ││ Cost / Latency / Monitoring │└────────────────────────────────┘如果只看关键词,Agent 开发像是几十项独立技能。
放到这张图里以后就会清楚很多:
Software Engineering ↓Model ↓Context ↓Agent Runtime ↓Tool / MCP ↓Workflow / Multi-Agent ↓Eval / Trace / Production这些东西共同组成了一套完整的 Agent 应用工程体系。
接下来再看 JD,就会更容易理解企业为什么会同时要求这些能力。
02|先看 JD:企业到底在招什么人?
先看一个比较典型的岗位。
百度目前公开的 Agent 应用全栈岗位,已经明确出现:
Planning Acting Reflection Tool / API Memory Reasoning & State Multi-Agent RAG Eval
这一套要求基本覆盖了 Agent 从规划、行动、状态管理到评测的完整闭环。
京东的部分 Agent 岗位更加偏工程化,已经直接出现:
Model Gateway Agent Runtime Context 状态管理 Tool / Plugin Registry Streaming Semantic Cache Prompt 管理 Eval Trace / Replay
同时依然要求:
Java / Python / Go 微服务 数据库 Redis MQ 分布式系统 高并发 容器化
再把百度、京东、阿里、腾讯、美团这一类岗位放到一起,会看到一个比较明显的趋势:
Agent 应用开发和传统软件工程之间有很强的连续性。
企业需要的能力,可以简单理解成:
传统软件工程+LLM 应用能力+Agent Runtime+Context / Tool / Workflow+Eval / Production软件开发原本积累的 API、数据库、缓存、异步任务、分布式系统、容器、日志、监控等能力,依然会直接参与 Agent 系统的构建。
新增的部分,主要集中在模型周围。
03|这些 JD 关键词,其实都挂在同一条执行链路上
把 JD 里的词全部摊开,大概是:
Python / Java / GoPromptRAGEmbeddingMemoryContextTool CallingFunction CallingPlanningReflectionStateWorkflowMulti-AgentMCPSandboxAgent RuntimeEvalTracingRedisMQDockerK8s……如果顺着一个 Agent 的实际运行过程去看,它们会变成一条很清楚的链路:
User ↓Application ↓Agent Runtime ↓构建 Context ↓LLM 决策 ↓Action / Tool Call ↓执行 Tool ↓Observation ↓更新 State ↓重新构建 Context ↓继续调用 LLM ↓…… ↓任务完成最小的逻辑甚至可以压缩成:
while not done: context = build_context(state) action = llm(context) observation = execute(action) state.update(observation)整个 Agent 系统的大量工程能力,基本都是围绕这个循环逐渐长出来的。
04|LLM 在 Agent 里承担的是决策角色
传统 LLM 应用大概是:
用户 ↓Prompt ↓LLM ↓AnswerAgent 场景里,模型需要持续判断:
现在要不要搜索?应该读哪个文件?要不要查询数据库?应该运行什么命令?当前信息够不够?任务是否已经完成?于是模型开始承担更多决策职责。
传统程序里,流程通常提前写好:
if condition: function_a()else: function_b()Agent 里,一部分流程会变成:
Context ↓LLM ↓Tool ATool BContinueFinish下一步行为由模型根据当前上下文动态选择。
这也是 Agent 系统和传统应用最明显的区别之一。
05|Prompt 会逐渐进入更大的 Context 体系
模型每次真正做决策时,看到的内容可能包括:
System Instructions当前用户任务Conversation History当前 State历史 Tool ResultsRAG 检索结果Long-term Memory文件内容可用 Tools任务执行进度把它们放在一起看:
Prompt ─────────┐Conversation ───┤RAG ────────────┤Memory ─────────┼──→ Context → LLMState ──────────┤Tool Result ────┘Prompt 只是 Context 中的一部分。
RAG 主要负责提供当前需要的外部知识。
Memory 负责提供过去积累的信息。
State 记录当前任务执行到哪一步。
Tool Result 则把刚刚发生的执行结果重新送回模型。
所以 Agent 场景下,一个很核心的问题会变成:
这一轮模型应该看到哪些信息?
这也是 Context Engineering 越来越重要的原因。
06|Tool 让模型真正具备执行能力
Agent 常见的 Tool 包括:
search()read_file()write_file()run_shell()query_database()browser()send_email()create_issue()执行链路会变成:
LLM ↓Tool Call ↓真实执行 ↓Observation ↓LLM从这一刻开始,模型已经能够直接影响外部系统。
比如:
执行 Shell修改文件操作浏览器访问数据库调用内部 API于是工程里会自然出现新的约束层:
Permission Sandbox Human-in-the-loop Security Guardrail
Agent 能力越强,这些限制和保护机制越重要。
07|Agent Runtime 是整个系统的核心层
已经有了:
LLMContextMemoryRAGTools接下来还需要解决大量运行时问题:
Agent 从哪里开始?什么时候结束?最多执行多少步?Tool 调用失败怎么办?模型超时怎么办?State 存在哪里?任务跑到一半服务挂了怎么办?怎么恢复?什么时候需要用户确认?如何暂停?如何 Streaming?怎么限制 Token?怎么限制权限?这些能力会逐渐汇聚到:
Agent Runtime
可以大致理解成:
Agent Runtime ┌─────────────────────┐ │ │Input → State → Context → LLM ↑ │ │ ↓ │ Action │ ↓ │ Tool │ ↓ └── Observation ─┘ Retry Timeout Checkpoint Permission Streaming Recovery Stop Condition所以现在越来越多新的 JD 里,已经直接出现:
Agent RuntimeContext StateTool RegistryEvalReplay这说明 Agent 应用正在逐渐形成独立的 Runtime Engineering 层。
08|Workflow 和 Multi-Agent 属于更上层的编排
Runtime 主要解决单个 Agent 如何持续运行。
Orchestration 解决整个系统的流程组织。
例如:
START ↓Planner ↓Search Agent ↓Analyze ↓信息够吗? ├─ NO → Search │ └─ YES ↓ Writer ↓ Human Review ↓ END这一层会涉及:
Workflow State Machine DAG Checkpoint Human-in-the-loop Multi-Agent Durable Execution
LangGraph 这一类框架,主要解决的就是这一层。
它帮助开发者管理:
StateNodeEdgeCheckpointPersistenceResumeHITL所以理解一个框架时,最好先问:
它在整个 Agent 系统里负责哪一层?
这样会比直接记 API 清楚很多。
09|Eval 决定 Agent 能不能进入生产环境
传统程序里,经常可以比较明确地判断输入和输出。
Agent 的执行过程可能很长:
Input ↓LLM ↓Search ↓Read ↓Search Again ↓Call Tool ↓Think ↓Write ↓Result这时候需要关注的指标也会变多:
任务最终完成了吗?Tool 调用是否正确?为什么搜索了 15 次?为什么消耗了这么多 Token?从哪一步开始跑偏?Prompt 修改后成功率有没有提升?更换模型以后整体效果如何?所以生产级 Agent 系统会越来越强调:
Eval Tracing Replay Observability Cost Latency Regression Test
一个 Agent 能够跑通,只能说明基本链路成立。
能够被观察、评测、恢复、优化,才更接近真正的生产系统。
10|GitHub 上有哪些项目值得拆?
有了前面的框架,再去看 GitHub 项目就容易很多。
可以分别从不同层理解 Agent Engineering。
1. OpenHands
适合研究:一个 Agent 到底怎么真正执行任务。
GitHub:
https://github.com/OpenHands/OpenHands
重点可以看:
Agent LoopContextToolStateRuntimeSandboxPermissionPersistenceTracingEval它的大致执行链路可以理解成:
History ↓Context ↓LLM ↓Action ↓Tool ↓Sandbox ↓Observation ↓History如果软件开发转 Agent 只准备深入拆一个项目,我会优先看 OpenHands。
因为它能把很多抽象概念直接落到真实源码里。
2. LangGraph
适合研究:有状态 Agent 系统怎么编排。
GitHub:
https://github.com/langchain-ai/langgraph
重点看:
StateNodeEdgeWorkflowCheckpointPersistenceHITLDurable Execution它特别适合理解复杂 Agent 系统里的状态管理和执行恢复。
3. AgentScope
适合研究:一个完整 Agent Framework 有哪些能力。
GitHub:
https://github.com/agentscope-ai/agentscope
目前覆盖的能力很多:
ReActToolsSkillsMemoryPlanningMCPRAGHuman-in-the-loopEvaluationMulti-AgentSandbox如果想横向看一个 Agent Framework 最后会长成什么样,AgentScope 很适合。
4. Dify
适合研究:Agent 怎么进入真实产品和平台。
GitHub:
https://github.com/langgenius/dify
重点可以看:
WorkflowModel ManagementRAG PipelineAgentToolsMCPObservabilityAPIMulti-TenantDify 更适合看 Agent 产品化以后,需要补齐哪些平台能力。
11|如果重新设计学习路线
结合 JD 和这些项目,我会把学习路线排成四个阶段。
第一阶段:自己手写最小 Agent
先真正搞懂:
LLM ↓Context ↓Tool Call ↓Observation ↓State ↓LLM把 Agent Loop 跑通。
第二阶段:拆 OpenHands
重点理解:
Agent LoopToolContextRuntimeSandboxSecurityState看看这些概念在真实项目里怎么实现。
第三阶段:学 LangGraph
理解:
WorkflowStateGraphCheckpointPersistenceHuman-in-the-loopDurable Execution补齐复杂 Agent 系统的编排能力。
第四阶段:看 AgentScope 和 Dify
继续补:
MemoryRAGMCPSkillsMulti-AgentEvalObservabilityServicePlatform到了这里再去学具体框架 API,理解成本会低很多。
因为你已经知道:
这个模块在整个 Agent 系统里到底负责什么。
12|软件开发转 Agent,需要补的东西其实很明确
原来的软件工程能力:
APIDatabaseRedisMQConcurrencyDistributed SystemDockerAuthLoggingObservabilitySystem Design依然全部有价值。
Agent 场景主要新增的是:
ModelContextMemoryToolAgent LoopRuntimeWorkflowMCPEval可以把整个变化理解成:
在原来的软件工程系统里,引入了一个会自己做决策、会调用工具、行为带有一定不确定性的执行单元。
传统软件工程长期研究的是:
如何让程序逻辑稳定执行。
Agent Engineering 进一步需要解决:
如何让带有不确定性的智能能力,在一个确定的软件系统中稳定工作。
模型负责提供智能。
Runtime、Context、Workflow、Sandbox、Eval、Tracing 等工程模块,则负责管理这种智能的运行过程。
把这些关系理顺以后,Agent 应用开发就没有一开始看起来那么散了。
它本质上依然是一套软件工程。
只是软件系统里,多了一个新的执行者。
羽白|AI Engineer · Builder · Observer
用技术观察世界,也记录成长的痕迹。
夜雨聆风