先把结论放在前面:如果你最近在关注 Agent 开发、Multi Agent 编排、Harness 控制层、Tools 工具调用、MCP 协议和 Skills 技能包,这篇文章值得花十分钟看完。它不是某个单一工具的使用说明书,而是一套多智能体协作项目的完整拆解,从架构设计到部署运行,从工具接入到批量任务,把 Multi Agent、Harness、Tools、MCP、Deep Agent 这些概念串成一个能跑起来的实战项目。项目主题围绕“AI 职业规划咨询”展开,这也是最直观、最能体现多智能体协作价值的场景之一。
很多人在学 Agent 时最大的困惑是:单个 Agent 明明已经能聊天、能调工具了,为什么还要搞 Multi Agent?为什么还有 Harness?MCP 和 Skills 到底解决什么问题?这篇文章会用实战的方式回答这些问题。我们会拆解一个基于 Agent + Skills 的多智能体协作项目,重点包括:多智能体如何分工、Harness 如何控制运行流程、Tools 如何被安全调用、MCP 如何统一集成外部服务、Skills 如何沉淀可复用的技能包,以及最终如何把这套系统做成可访问的 API 服务,支持批量任务和后续业务接入。
1. 核心能力速览
先把整个技术栈的关键信息列出来,方便你判断这个项目值不值得深入。
| 能力项 | 说明 |
|---|---|
| 项目类型 | 多智能体协作系统,业务场景为 AI 职业规划咨询 |
| 核心范式 | Multi Agent + Harness + Tools + MCP + Skills + Deep Agent |
| 主要能力 | 用户意图分析、岗位需求研究、技能评估、学习路径规划、报告生成 |
| Agent 分工 | Planner、行业研究员、技能评估师、路径规划师、报告生成器 |
| 控制层 | Harness 负责编排调度、状态流转、上下文管理和错误恢复 |
| 工具集成 | Function Calling / MCP Server 统一接入外部数据源 |
| 技能扩展 | 通过 Skills 封装可复用的提示词、工具链和业务知识 |
| 部署方式 | Python 环境 + 模型服务,可本地启动,也可接入云端模型 API |
| 支持 API | 可以,通过 Web 服务封装,支持 HTTP 调用 |
| 批量任务 | 可以,支持任务队列、结果导出和失败重试 |
| 适合场景 | Agent 开发学习、企业内部知识问答、自动化咨询、招聘辅助等 |
要说明的是,这里没有给出具体显存占用数字,因为实际占用取决于你选择的模型版本和推理服务方式。如果你用本地小模型,显存压力会小很多;如果通过云端 API,则几乎没有本地硬件压力。这也是多智能体项目相对友好的一点:架构本身和硬件解耦,你可以先在小模型上跑通链路,再换更强的模型。
2. 适用场景与使用边界
这套技术栈适合谁?简单说,适合已经写过基础 Prompt、或者用过 ChatGPT API,但想进一步理解 Agent 工程化的人。
它能解决的问题包括:
- 让多个 Agent 分工协作,而不是把几千字需求塞给一个 Prompt。
- 用 Harness 控制复杂任务的状态流转,避免 Agent“跑着跑着就忘了自己在干什么”。
- 用 Tools 让 Agent 具备调用外部信息的能力,比如查询岗位数据、加载简历文件、搜索技能要求。
- 用 MCP 统一工具协议,避免每个工具写一套自定义调用方式。
- 用 Skills 沉淀“怎么干某类活”的完整方法论,下次直接复用。
什么场景不适合?如果只是想要一个能聊天的机器人,单体 Agent 就够了,不需要上 Multi Agent。如果业务逻辑非常简单、步骤固定,Harness 反而增加复杂度。如果你的外部工具数量很少,也可以暂时不用 MCP,直接用函数调用就能解决。
还需要强调边界问题。AI 职业规划涉及个人信息、简历数据、职业倾向分析,这些都属于敏感信息。项目落地时必须注意:
- 用户数据需要脱敏处理,测试时不要使用真实简历或真实身份信息。
- 职业规划建议只能作为参考,不能替代专业人力资源咨询。
- 如果接入招聘网站、行业数据库,要确认数据来源是否合规,是否有版权和调用授权。
- Agent 自动生成的报告必须经过人工复核,尤其是涉及薪资、岗位前景等具体数据时。
3. 从单体 Agent 到 Multi Agent 的架构演进
先理清一个概念:为什么单个 Agent 不够用?
单体 Agent 的工作方式是:用户输入 -> 模型思考 -> 调用工具 -> 生成回答。对于简单问题,这个模式完全没有问题。但当你需要完成一个复杂任务时,比如“帮我做一份完整的职业转型规划”,单体 Agent 会遇到几个明显的困难。
第一,上下文窗口有限。要做行业调研、工具测试、技能匹配、路径规划,所有这些信息如果全部塞进一个对话上下文,很快就超出模型上下文限制。
第二,任务指令互相干扰。分析岗位需求和评估用户技能,这两件事的关注点不一样,放在同一个 Agent 里,模型容易混淆。
第三,工具调用越来越复杂。职业规划需要查薪资数据、查招聘要求、查技能认证信息,各种工具的输入输出格式都不一样,单体 Agent 的调度逻辑会变得很长,难以维护。
Multi Agent 架构的核心思路是分工。每个 Agent 只负责一个环节,有自己的系统提示词、自己的工具权限、自己的上下文空间,然后由一个控制层协调它们之间的流转。这样不仅降低了单个任务的复杂度,还让整个系统更容易测试和扩展。
那么 Harness 在这里扮演什么角色?Harness 通常被理解为“控制框架”或“运行容器”。它的职责不是替你写业务逻辑,而是确保多个 Agent 在一个可预测、可恢复的流程里完成任务。比如:
- 决定当前该调用哪个 Agent。
- 传递中间结果。
- 管理任务状态。
- 检测 Agent 是否失败并决定重试还是终止。
- 记录完整运行日志。
有了 Harness,你才能说这个系统是“工程化”的,而不是几个 Agent 临时拼凑。
4. 五大核心概念拆解
4.1 Multi Agent:分工与协作
多智能体协作的落地方式有很多种。从结构上看,常见的包括流水线式、编排式和自主协作式。
- 流水线式:Agent A 的输出是 Agent B 的输入,适合流程固定的任务。
- 编排式:一个主控 Agent 负责调度多个子 Agent,适合任务动态变化的场景。
- 自主协作式:多个 Agent 之间互相讨论、验证,适合需要批判性思考的任务。
在 AI 职业规划场景里,推荐用编排式为主、流水线式为辅的混合结构。
一个实用的 Agent 分工设计:
| Agent 名称 | 职责 | 主要工具 |
|---|---|---|
| Planner Agent | 理解用户意图,制定任务计划 | 用户画像分析、问题拆解 |
| 行业研究员 Agent | 查询岗位需求、行业趋势、技能要求 | 搜索 API、招聘数据 MCP |
| 技能评估师 Agent | 评估用户技能与目标岗位差距 | 技能图谱、简历解析 Tools |
| 路径规划师 Agent | 输出学习路径和阶段目标 | 课程库、认证信息查询 |
| 报告生成器 Agent | 汇总结果,生成结构化报告 | 模板渲染、Markdown 导出 |
每个 Agent 不需要都是同一个模型。从成本控制和效果考虑,简单任务用轻量模型,复杂推理任务用较强模型,这是 Multi Agent 项目最实在的一个优势。
4.2 Harness:多智能体的控制层
Harness 的核心是一个任务状态机。
一个典型 Harness 需要处理的几个关键环节:
- 任务初始化:把用户输入变成一个可执行的 Agent 调用计划。
- Agent 调度:根据计划依次或按条件调用不同 Agent。
- 上下文管理:保存中间结果,按需把上下文注入下一步。
- 错误处理:当 Agent 执行超时、返回非法结果、或工具调用失败时,自动处理。
- 运行追踪:记录每一步的输入输出,方便调试。
从代码层面看,Harness 可以是一个很轻量的调度器,不需要引入重型框架。本质上,它就是一套“在正确的时间,用正确的上下文,调用正确的 Agent”的流程控制逻辑。
4.3 Tools:Agent 能力的延伸
如果 Agent 只能靠模型自身知识回答,那它的价值很有限。职业规划场景里,我们需要的是实时岗位数据、用户简历、行业报告、课程信息等外部数据,Tools 就是承担这个职责的。
Tools 的接入方式可以很简单:把外部能力包装成函数,再通过模型的 Function Calling 能力让 Agent 按需调用。
一个值得注意的设计原则是:每个 Tool 的输入输出都要尽量简单、稳定。不要让 Agent 去理解复杂的接口协议,而是直接暴露“传入参数,返回结果”的语义化接口。
4.4 MCP:统一工具接入协议
MCP 全称 Model Context Protocol,中文一般叫模型上下文协议。它解决的核心问题是:工具接入方式碎片化。
如果没有统一协议,每个工具都要为不同模型、不同 Agent 框架做一套适配。有了 MCP 之后,工具可以被包装成 MCP Server,任何支持 MCP 的客户端都能直接调用。
在职业规划系统里,MCP 的价值很明显:
- 招聘数据源做成一个 MCP Server,无论哪个 Agent 要查岗位,都走同一个接口。
- 课程库、认证库、技能图谱分别做成独立服务,按需挂载。
- 新的外部数据源接入时,不需要修改 Agent 代码,只需要新增一个 MCP Server。
这种解耦方式对团队协作特别友好。
4.5 Skills:可复用的技能包
Skills 的概念在 Agent 开发中越来越重要。可以理解为一套“针对特定任务的完整解决方案”,通常包含:
- 系统提示词:告诉 Agent 这个技能是做什么的、有什么约束。
- 工具链配置:这个技能需要调用哪些 Tools。
- 流程定义:按什么顺序执行哪些步骤。
- 业务知识库:这个领域需要知道的背景知识。
举个例子,一个“岗位需求分析 Skill”可能包含:
- 提示词:你是资深招聘顾问,请分析岗位 JD 中的核心要求。
- 工具:招聘数据查询工具。
- 流程:先提取岗位关键词,再查询行业数据,最后输出技能差距分析。
- 知识库:常见岗位分类、技能等级标准。
Skills 的价值在于复用和沉淀。当你把一次项目的经验打包成 Skill,下次遇到类似任务,直接加载即可。
5. 实战项目:AI 职业规划多智能体咨询系统
下面我们把概念落到项目里。这个项目的业务目标是:用户输入自己的基本情况、目标岗位或转型想法,系统通过多个 Agent 协作,输出一份包含行业分析、技能差距、学习路径和阶段目标的职业规划报告。
5.1 系统整体流程
整个流程可以这样设计:
- 用户输入个人背景和目标。
- Planner Agent 解析意图,拆解任务,生成执行计划。
- 行业研究员 Agent 根据目标岗位,查询行业趋势、薪资范围和核心技能要求。
- 技能评估师 Agent 对比用户现有技能与目标岗位要求,计算差距。
- 路径规划师 Agent 根据差距,制定分阶段学习计划。
- 报告生成器 Agent 汇总以上信息,生成结构化报告。
这个流程混合了流水线和编排两种模式。前两步是编排式,后面几个环节则按计划串行执行。
5.2 项目目录设计
一个清晰的目录结构可以显著降低项目维护成本,推荐这样组织:
ai-career-planner/ ├── agents/ # Agent 定义 │ ├── planner.py │ ├── researcher.py │ ├── assessor.py │ └── report_writer.py ├── harness/ # 控制层 │ ├── scheduler.py │ ├── state.py │ └── router.py ├── tools/ # 工具函数 │ ├── resume_parser.py │ ├── skill_matcher.py │ └── data_query.py ├── mcp_servers/ # MCP 服务 │ ├── job_data_server.py │ └── course_server.py ├── skills/ # 技能包 │ ├── job_analysis/ │ │ ├── skill.yaml │ │ ├── prompt.py │ │ └── workflow.py │ └── learning_path/ │ ├── skill.yaml │ └── workflow.py ├── api/ │ ├── app.py # API 服务入口 │ └── schemas.py ├── config/ │ └── settings.yaml ├── data/ │ ├── users/ # 用户输入数据 │ └── outputs/ # 生成报告 └── requirements.txt这种结构的优点是:每个模块职责清晰,Agent 之间不互相依赖对方内部实现,后续替换模型或扩展功能都比较容易。
6. 环境准备与本地部署
6.1 环境检查清单
在开始安装之前,先确认以下几项:
- 操作系统。Windows、macOS、Linux 都可以。如果使用本地 GPU 推理,Linux 环境下 CUDA 支持通常更省心。
- Python 环境。推荐 3.10 或 3.11,需要先确认与实际用到的框架版本兼容。
- 模型服务。可以启动本地模型,也可以配置云端模型 API。模型服务只需要一个兼容接口就行,具体地址和 Key 写在配置里。
- 端口规划。API 服务建议用 8000,MCP Server 端口要避免冲突。
- 磁盘空间。如果本地跑模型,需要预留足够空间给权重文件;如果纯 API 调用,项目本身占用很小。
6.2 安装依赖
进入项目目录后,用以下命令创建虚拟环境并安装依赖。这里给出的是通用步骤,具体包名以你的实际项目为准。
cd ai-career-planner python -m venv venv source venv/bin/activate # Windows 用 venv\Scripts\activate # 安装基础依赖,实际版本号以项目为准 pip install fastapi uvicorn pyyaml requests pydantic如果项目里有requirements.txt,直接执行:
pip install -r requirements.txt安装完成后,检查核心依赖是否能正常导入:
python -c "import yaml; import fastapi; print('deps ok')"6.3 配置模型服务
模型的配置一般放在config/settings.yaml中。你需要替换为自己的模型服务地址和 Key。
# config/settings.yaml 示例,需要按实际环境修改 model: provider: "openai_compatible" base_url: "http://你的模型服务地址/v1" api_key: "你的APIKey或者local-key" default_model: "你的模型名称" mcp: job_data_server: url: "http://127.0.0.1:7001" course_server: url: "http://127.0.0.1:7002"注意,这里不要写死任何一家服务商名称,你本地跑的是哪个模型、走什么协议,就用对应的配置。
6.4 启动 Harness 主服务
假设你已经实现了一个 Harness 调度器,入口文件是main.py,可以用下面的方式启动:
python main.py --config config/settings.yaml启动成功的标志是终端输出类似“Harness started”的日志,此时你的多智能体系统开始监听任务。
如果希望把系统暴露为 API 服务,可以启动 API 进程:
uvicorn api.app:app --host 127.0.0.1 --port 80007. 功能测试与效果验证
系统跑起来之后,按下面的步骤逐一验证。这里的核心目标是确认各个环节能正常协作,而不是只看单个 Agent 能不能回答。
7.1 单 Agent 基础测试
每个 Agent 先单独测试。目的是确认系统提示词和模型配置没有大问题。
输入示例:
你是一名技能评估师。用户背景如下: - 当前岗位:软件工程师 - 目标岗位:AI 产品经理 - 现有技能:Python、需求分析、项目管理 请评估技能差距。预期结果:Agent 能输出结构化差距分析,而不是说自己无法回答。
如果这一步失败,优先检查:
- 模型服务是否可用。
- API Key 是否正确。
- Agent 的系统提示词是否有明显冲突。
7.2 Harness 编排测试
启动 Harness 后,提交一个完整任务:
用户是一名 Java 开发工程师,工作 5 年,想转型进入 AI 领域,目标岗位是 AI 应用开发工程师,请生成一份完整的职业规划报告。观察 Harness 的日志,判断以下流程是否正常:
- Planner Agent 是否正确拆解任务。
- 行业研究员 Agent 是否被调度。
- 工具调用是否成功。
- 报告生成器是否汇总了所有中间结果。
判断标准是:最终报告包含行业分析、技能差距、学习路径、阶段目标四个部分,并且每部分都有数据支撑。
7.3 Tools 与 Skills 加载测试
验证技能包是否被正确加载。可以在代码中添加一行打印日志,确认 Skill 的配置被读取。
# 运行技能自检命令,实际命令按项目设计为准 python -m skills.job_analysis.workflow --self-check预期结果:输出 Skill 的提示词、工具列表和流程步骤。
如果 Skills 没有按预期加载,检查skill.yaml的路径配置是否合法、依赖的工具是否已注册。
7.4 长任务稳定性测试
多智能体系统的常见问题,是流程过长时出现上下文丢失或 Agent 之间信息传递不完整。建议用一个超长需求再次测试,比如要求同时分析三个目标岗位并对比。
预期结果:Harness 能按计划依次执行,不会出现某个 Agent 收到空上下文的情况。
如果出现上下文丢失,重点检查 Harness 的上下文注入逻辑,确认是否在每次 Agent 调用前拼装了完整的必要信息。
8. 接口 API 与批量任务
多智能体项目要落地,一般都会封装成 API 服务,让前端、Webhook 或其他业务系统直接调用。
8.1 FastAPI 接口示例
下面是一个简化版的 API 封装逻辑。这里使用 FastAPI 作为 Web 框架,实际项目中你可能需要根据情况补充鉴权、限流、日志等逻辑。
# api/app.py 示例,需要按实际项目结构调整 from fastapi import FastAPI, HTTPException from pydantic import BaseModel from harness.scheduler import Harness app = FastAPI() harness = Harness() class PlanRequest(BaseModel): user_profile: str target_role: str extra_notes: str = "" class PlanResponse(BaseModel): task_id: str status: str report: str = "" @app.post("/api/plan", response_model=PlanResponse) async def create_plan(req: PlanRequest): try: task = harness.submit( user_profile=req.user_profile, target_role=req.target_role, extra_notes=req.extra_notes ) return PlanResponse(task_id=task.task_id, status="submitted") except Exception as e: raise HTTPException(status_code=500, detail=str(e)) @app.get("/api/plan/{task_id}") async def get_plan(task_id: str): result = harness.get_result(task_id) if not result: raise HTTPException(status_code=404, detail="task not found") return result启动命令:
uvicorn api.app:app --host 127.0.0.1 --port 80008.2 批量任务设计
如果要批量处理多个用户数据,不要在请求里同步跑完整流程,那样会阻塞服务。建议使用任务队列:先提交任务,再异步执行,最后通过任务 ID 查询结果。
# 批量提交任务示例 for profile in ./data/users/*.json; do curl -X POST http://127.0.0.1:8000/api/plan \ -H "Content-Type: application/json" \ -d @$profile done在代码层面,批量任务建议至少考虑以下几点:
- 每个任务有独立的任务 ID。
- 任务状态保存在持久化存储中,避免服务重启后丢失。
- 失败任务支持重新入队或手动重试。
- 跑完的任务结果以 JSON 或 Markdown 文件落盘。
8.3 通用 API 调用示例
如果项目还没有接口,你也可以先用一个通用请求方式验证服务是否启动:
curl -X POST http://127.0.0.1:8000/api/plan \ -H "Content-Type: application/json" \ -d '{"user_profile": "test", "target_role": "AI engineer"}'需要说明的是,这里给出的接口路径和参数是通用示例,实际项目可能不同,请以你自己项目的接口定义为准。
9. 资源占用与性能观察
多智能体项目和单体模型应用的性能特征有明显差别,重点看两个维度:模型推理资源 和 非推理资源。
模型推理资源方面,如果你的模型是本地部署,显存占用主要取决于模型规格、上下文长度和并发数。但在多智能体场景下,真正需要关注的往往不是单次推理显存,而是多个 Agent 并发执行时模型服务的总负载。建议你在日志中记录每次调用的时间消耗,这样能快速定位到是哪个 Agent 拖慢了整个流程。
CPU 推理和 GPU 推理的差异也比较大。小规模 Agent 测试时,CPU 完全够用,尤其是通过 API 访问模型的情况下,本机基本没有显存压力。但如果追求响应速度和质量,使用独立显卡或云端 GPU 服务的体验会好很多。
非推理资源方面,Harness 调度器和 MCP Server 本身占用的内存不大,但在大批量任务场景下,要注意以下资源的消耗:
- 任务队列积压导致的进程内存增长。
- 中间结果过多导致的磁盘占用。
- 日志文件持续写入导致的空间耗尽。
降低系统压力的常用手段包括:限制单任务的最大 Agent 调用次数、控制上下文长度、合并小工具调用、为 API 服务配置并发上限。
这是一个很核心的观察思路:第一次跑通链路时,先记录每个 Agent 的调用耗时和 Token 消耗,再考虑优化。没有基线数据,优化无从谈起。
10. 常见问题与排查方法
多智能体项目的坑往往比单体应用更多,下面列出最容易踩的几个。
| 问题现象 | 可能原因 | 排查方式 | 解决方案 |
|---|---|---|---|
| Agent 之间上下文丢失 | Harness 没有传递之前的中间结果 | 查看 Harness 日志,检查每次调用前注入的上下文内容 | 调整上下文拼装逻辑,把必要摘要传给后续 Agent |
| 工具调用失败 | 外部服务地址不可达、鉴权失败 | curl 测试工具地址,检查密钥 | 核对配置项,加入重试与超时机制 |
| 流程卡在一个 Agent 不结束 | 模型陷入重复输出或等待条件不满足 | 查看 Agent 输出日志,确认工具调用返回是否被正确解析 | 增加最大轮次限制,超时强制终止 |
| API 请求超时 | 多智能体流程执行时间过长,超过了 HTTP 默认超时 | 观察任务耗时分布 | 改成异步任务模式,提交后轮询结果 |
| MCP Server 连接失败 | 服务未启动或协议格式不匹配 | 直接访问 MCP Server 端口,查看返回内容 | 按 MCP 协议文档核对注册和消息格式 |
| Skills 未生效 | 技能配置路径错误或提示词未加载 | 运行技能自检命令 | 检查 YAML 路径与字段命名 |
| 模型回答问题质量差 | 系统提示词不明确或模型能力不足 | 减少任务复杂度,单独测试问题链路 | 优化提示词结构或换用更强模型 |
| 报告内容重复 | 多个 Agent 使用了同一份过长上下文 | 检查每个 Agent 收到的上下文 | 在传给下一个 Agent 前做摘要,而不是全量传输 |
排查时有一个总原则:先缩小范围。如果最终的职业规划报告有问题,先判断是哪个 Agent 产出的部分不对,再单独调试那个 Agent。不要直接改整个 Harness 逻辑,那样会导致问题定位变得困难。
11. 最佳实践与使用建议
结合多智能体项目的开发特点,给出几条工程化建议。
第一,第一次跑通时用小模型、短上下文、小任务量。与其一上来就追求高质量报告,不如先确保流程链路是通的。链路通了之后,再逐步替换为能力更强的模型。
第二,把“最小可运行配置”保存下来。很多项目改着改着就跑不起来了,原因往往是配置漂移。建议把一组验证过的模型配置、工具地址和技能包放在config/目录下,并加上版本备注。
第三,日志要记录全。多智能体项目调试的最大痛点是问题复现难。建议在 Harness 的每个关键节点都输出结构化日志,至少包括:Agent 名称、输入摘要、输出摘要、耗时、Token 消耗、工具调用结果。这样后续排查效率会高很多。
第四,批量任务要设计为可重入的。也就是任务失败后重新执行,不会产生副作用。比如生成报告的任务,不要在同一个文件上反复覆盖写入,而是按任务 ID 分别输出到不同目录。
第五,安全合规要前置。涉及真实用户简历、个人职业信息时,必须在测试阶段就做好脱敏。如果系统最终要部署到公网,API 服务必须加鉴权,建议使用 Token 或 API Key 校验,同时限制访问速率,防止被刷接口。
第六,在多智能体流程中加入人工复核节点。AI 生成的职业规划报告虽然有参考价值,但不应该直接面向用户发布。工程上的做法是:系统生成草稿,人工审核后定稿,再用可复用模板输出。
12. 总结与下一步
这个项目的核心价值在于把 Multi Agent、Harness、Tools、MCP、Skills 这些概念真正落到了一个可以运行的业务系统里。你最先应该验证的功能不是报告效果,而是链路是否走通:用户需求能否被 Planner 正确拆解,Harness 能否按顺序调度多个 Agent,工具能否被真实调用,报告生成器能否取到所有中间结果。
最容易踩的坑是上下文管理。多智能体系统跑过几轮之后,中间结果会越来越多,如果不做摘要和裁剪,后面的 Agent 会越来越“糊涂”。我的建议是:在设计阶段就明确每个 Agent 只接收它需要的最小上下文,而不是把上一轮的全部输出直接砸给它。
后续可以扩展的方向也很多。比如给职业规划系统增加长期记忆模块,让 Agent 记住用户的反复咨询记录;也可以把更多外部数据源做成 MCP Server,扩大系统的问题覆盖面;还可以把 Skills 沉淀成企业内部共享的能力库,让不同项目复用同一套方法论。
从工程角度看,这套架构并不复杂,它更多考验的是流程设计能力。当你把一个复杂任务拆分成了多个 Agent 可以各自完成的子任务,并且用 Harness 把它们串联起来,后面的扩展空间会很大。建议先拿小项目跑通,再逐步扩大边界,最终你会对 Agent 工程的掌控力比单纯调 Prompt 高出很多。