办公Agent技术实战:从架构原理到模型选型与落地排查

办公Agent技术实战:从架构原理到模型选型与落地排查 办公场景正在成为大模型落地最热闹的赛道之一。从自动写周报、整理会议纪要到批量处理表格、协调内部系统名为“办公 Agent”的智能体应用越来越多地出现在产品发布会和技术社区里。与此同时“模型大战”的战场也在悄悄变化大家不再只比较谁的榜单分数高而是开始关注模型在 Agent 工作流里能否稳定调用工具、能否长期记住上下文、能否被低成本私有化部署。这篇文章想围绕“办公 Agent”这个主题把背后的技术逻辑、模型选型思路、开发落地路径和常见坑点梳理成一个体系。如果你是刚开始了解 Agent 的开发者可以从头读到尾如果你已经做过一些 Agent 原型可以直接跳到第 5 章的实战部分和第 6 章的排查清单。1. 办公 Agent 为什么突然火了1.1 从聊天机器人到自主执行过去几年很多人对 AI 助手的第一印象是“聊天机器人”你问一句它答一句。这种交互虽然便捷但本质上仍然是一个“高级搜索引擎”或“文本生成器”。办公场景真正需要的不是“回答问题”而是“把事情做完”。举例来说同样是处理一份销售数据聊天机器人模式你问“帮我分析一下本月销售趋势”模型给出大段分析文字然后你自己去 Excel 里做透视表、画图表、写邮件摘要。Agent 模式你告诉 Agent“整理本月销售数据并生成周报”它自己拆解任务调用数据分析工具读取表格生成图表再调用邮件接口把周报发给你。这个差距看起来很微小但背后是产品形态的本质变化。Agent 不再是一个被动应答的系统而是一个具备“接收目标 → 拆解计划 → 调用工具 → 验证结果 → 完成交付”闭环能力的执行体。这也是为什么 2024 年下半年以来Agent 开发的热度明显超过了单纯的模型微调。1.2 办公 Agent 解决的核心问题办公场景的特点是流程固定、重复性强、信息格式多样。员工每天大量时间花在复制粘贴、格式转换、信息汇总、日程协调等低创造性事务上。办公 Agent 恰好能承接这三类工作第一类是信息整合。从多个文档、表格、邮件中提取关键字段汇总成统一结构。第二类是流程触发。根据规则或模型判断自动创建审批、发送消息、更新台账。第三类是内容生成。基于结构化数据生成报告、邮件、会议纪要。这些任务的共同点是“允许失败后重试”而且“每一步都可以由人在关键节点确认”。这也是 Agent 能优先在办公场景商用落地的原因风险可控收益可见替换的是最繁琐的人力环节。1.3 模型大战进入下一阶段意味着什么很多人注意到最近各个大模型厂商的发布会不约而同地开始强调“Agent 能力”。有的讲函数调用有的讲多模态工具使用有的讲长上下文。这背后其实是竞争焦点的转移单纯靠生成质量已经很难拉开差距模型好不好用开始取决于它能不能在一套复杂任务链路里长期稳定工作。可以这么理解第一阶段的大模型大战拼的是谁“说得对”第二阶段拼的是谁“做得对”。一个办公 Agent 要跑起来需要模型具备任务规划能力、工具调用准确性、错误恢复能力和上下文管理能力。这些能力单靠增大参数量已经不够还需要在训练和后期对齐阶段做大量针对性优化。对于开发者和技术选型人员来说这意味着不能再只看跑分。你选一个模型实际上是在选它的整体生态是否支持结构化输出函数调用稳定不稳定中文指令跟随能力如何能否在本地或私有云部署单位成本是否适合高频调用。2. 办公 Agent 的技术架构拆解2.1 主流 Agent 架构从实现层面看办公 Agent 通常由四个核心模块组成交互入口、任务规划器、记忆模块、工具调用层。这里先给出一个整体架构示意用户输入 ↓ 交互入口接收指令解析意图 ↓ 任务规划器拆解步骤生成执行计划 ↓ 记忆模块短期上下文 长期业务记忆 ↓ 工具调用层搜索、OCR、表格处理、IM 发送等 ↓ 结果验证 用户确认 ↓ 最终输出不同的 Agent 框架对这个流程的抽象名称可能不同但本质都是一条“感知—规划—行动—观察”的循环。规划器负责决定下一步做什么工具调用层负责真正操作外部系统观察结果后再次交给规划器判断是否完成目标直到任务结束。2.2 规划Planning模块规划模块是 Agent 的大脑。它接收用户目标结合当前可用工具生成一个可执行步骤序列。现实中很少让模型一次性输出完整的几十步计划因为这样一旦中间某步出错后续计划全部失效。更稳妥的做法是“动态规划”模型每次只决定下一步动作动作完成并得到结果后再根据最新状态决定再下一步。常见的规划实现方式包括单步工具选择每一步让模型从工具列表中选择一个工具并生成参数。思维链 工具调用模型先写一段推理过程再调用工具再根据工具结果继续推理。子任务分解把大目标拆成多个子任务每个子任务可以复用同一套 Agent 执行流程。在实际办公场景中计划的粒度很重要。拆得太粗模型容易遗漏细节拆得太细每一步都调用模型会带来大量延迟和成本。比较好的做法是让模型“在需要执行具体操作时”才停下来调用工具而不是每个自然语言动作都触发一次工具调用。2.3 记忆Memory模块办公 Agent 经常会遇到跨轮次、跨会话的任务。今天让 Agent 整理报销单明天问昨天整理的结果它必须能记住之前的工作否则每次都是全新开始。记忆模块通常分成两层。短期记忆对应当前会话的上下文直接拼在提示词里即可但受窗口长度限制。长期记忆则需要外部存储可以是一个向量数据库保存文档切片和用户历史操作的向量表示也可以是一张业务表保存用户的偏好、常用格式、历史任务状态。长期记忆的引入会带来两个问题检索准确性和数据安全。检索不准Agent 会把无关信息当成上下文产生错误输出数据安全不过关敏感业务信息一旦被错误注入到提示词中就可能造成泄露。这个问题在办公场景里尤其需要重视后面第 7 章会单独展开。2.4 工具调用Tool Use模块工具调用层是办公 Agent 区别于普通聊天机器人的关键。一个办公 Agent 的可用工具决定了它的能力边界。常见的工具包括文档处理工具读取 Word、PDF提取文本和表格。表格处理工具读写 Excel执行公式和汇总。搜索工具检索内部知识库、网页或数据库。通信工具发送邮件、钉钉/企微消息。系统操作工具创建工单、更新数据库记录。每个工具应该有一个清晰的描述让模型知道“这个工具是干什么的、什么情况下用”。工具的参数定义尽量用 JSON Schema 结构化描述这样模型更容易生成符合格式的调用参数。一个很常见的错误是工具描述写得含糊比如“这个函数可以处理一些东西”。模型不知道什么时候该调用它结果就是该调用时不调用不该调用时乱调用。工具描述要写成“当用户需要统计某个 Excel 文件中的销售总额时使用此工具参数 file_path 是文件路径sheet_name 是工作表名称”。3. 模型层办公 Agent 的算力底座3.1 模型选择是 Agent 效果的上限在很多 Agent 项目里最终效果的上限不是代码写得有多好而是所选模型的综合能力。同一个 Agent 框架换一个模型表现可能天差地别。办公 Agent 对模型的核心要求集中在四个方面指令跟随能力能否严格按照提示词要求的格式输出。工具调用准确性能否在合适时机选择正确工具并生成合法参数。上下文利用能力能否从大段聊天历史、文档内容中提取有效信息。错误恢复能力当工具返回异常时能否自行调整策略而不是直接崩溃。这里要特别提醒一点不要只关注模型的“通用能力”要针对 Agent 场景做专项测试。比如分别测试模型在“连续调用 5 次工具后是否还记得原始目标”“工具返回 HTTP 500 时是否会自动换一种方式重试”“面对多结果返回时能否选中最相关的一条”。3.2 模型融合与多模型协作在实际办公 Agent 开发中越来越多团队开始采用“多模型协作”的思路而不是把所有任务都交给同一个模型。这听起来像是一个架构决策实际上背后也有成本和质量的双重考虑。一个典型的方案是“强模型做规划轻量模型做抽取专用模型做特化任务”。规划环节需要全局理解任务目标并拆解步骤通常使用更强、更贵的模型信息抽取环节只需要从文本中提取关键字段用一个轻量模型即可速度更快、成本更低OCR、搜索排序等环节甚至可以直接交给专用模型或传统算法处理。模型融合在这个语境下不是指权重平均或模型蒸馏而是指“在一个 Agent 流程中编排多个模型各取所长”。实现时需要注意模型切换的上下文对齐问题不同模型的 tokenizer 和输出格式不完全一致切换时最好让每个模型只看到它需要用到的部分而不是把整个历史都塞给它。3.3 本地模型与私有化部署办公数据大概率涉及企业内部敏感信息很多企业不接受把数据发送到外部 API。因此本地部署模型的需求最近增长非常快。本地部署会涉及几个实际问题硬件资源、推理框架、模型格式、服务封装。以 GPU 服务器为例既要考虑显存是否足够加载模型权重又要考虑推理框架是否已经适配目标硬件。近期有些开发者反馈在特定国产算力平台如昇腾 910B 系列上通过 vLLM 启动 embedding 向量模型和 reranker 重排序模型时会遇到兼容性问题。这类问题通常是框架与硬件适配层面的不能简单归结为模型本身的问题需要查阅推理框架与硬件厂商的官方适配列表并在目标环境上提前做小规模验证。如果你所在团队还没有 GPU 资源也不必急着采购可以先通过免费模型 API 或云端按量付费接口搭建原型验证 Agent 功能逻辑后再根据实际访问量决定是否引入本地推理集群。4. 环境准备与开发工具链4.1 推荐开发语言与运行环境办公 Agent 的开发语言目前以 Python 为主原因是大模型相关的 SDK、数据处理库、Agent 框架都对 Python 支持最好。如果团队技术栈是 Java也可以选 Java 生态的框架但可参考的资料相对少一些。本文实战部分以 Python 3.10 为例。操作系统方面Windows、macOS、Linux 都可以但涉及本地部署模型或安装 AI 加速库时Linux 服务器通常兼容性更好。如果只是开发调试个人电脑完全够用。建议提前安装以下 Python 依赖pip install requests openai python-dotenv pandasopenai库用于调用兼容 OpenAI 协议的大模型接口requests用于自定义 HTTP 调用pandas用于表格处理python-dotenv用于管理环境变量。版本需要根据你的项目实际情况调整本文示例以常见环境为例重点演示配置思路。4.2 常用 Agent 框架现在市面上 Agent 框架很多选择时主要看三点社区活跃度、工具生态、对底层模型的兼容性。下面列出几类常见方向供选型参考通用编排类框架提供 Agent 循环、工具注册、记忆管理等基础组件适合快速搭建原型但项目复杂后可能需要自己扩展。企业集成类框架偏重于连接企业内部系统比如 OA、IM、工单系统通常自带连接器。代码生成类框架面向编程场景擅长调用代码解释器、执行 Shell 命令不完全适合办公文档场景。建议刚入门时先不要依赖重型框架用手写一个最小 Agent 循环把“模型调用—工具执行—结果观察—再次调用”的主链路跑通再引入框架来减少重复劳动。这样你对 Agent 运行机制的体感会深很多。4.3 项目结构设计一个中等规模的办公 Agent 项目目录结构可以参考下面这种分层方式office_agent/ ├── agent/ │ ├── core.py # Agent 核心编排逻辑 │ ├── planner.py # 任务规划 │ └── memory.py # 记忆与上下文管理 ├── tools/ │ ├── excel_tool.py # 表格处理工具 │ ├── doc_tool.py # 文档处理工具 │ └── search_tool.py # 搜索工具 ├── models/ │ ├── llm_client.py # 模型调用封装 │ └── schemas.py # 结构化输出定义 ├── config/ │ └── settings.py # 配置项 ├── tests/ │ └── test_agent.py └── main.py # 入口这种结构把 Agent 编排、工具实现、模型调用分开后续新增工具或更换模型时不需要改动核心流程代码。5. 实战从零搭建一个办公 Agent5.1 需求分析与功能拆分为了演示效果我们做一个简化版“周报生成 Agent”。用户给出本周工作要点Agent 自动查询一个模拟任务表统计本周完成任务数并结合用户的补充说明生成一份结构化周报。这个场景虽然简单但已经包含规划、工具调用、记忆、结构化输出四个核心环节。整个 Agent 的运行逻辑拆成四步解析用户输入提取“时间段”。调用任务统计工具查询该时间段内的完成任务数量。把统计结果和用户输入一起交给模型。模型生成周报 Markdown 内容。每一步都可能需要调用模型或工具我们先把最小闭环写出来。5.2 创建项目先创建项目目录和虚拟环境mkdir office_agent cd office_agent python3 -m venv venv source venv/bin/activate # Windows 下执行 venv\Scripts\activate然后安装依赖pip install requests python-dotenv在项目根目录创建.env文件保存模型接口配置LLM_BASE_URLhttps://your-endpoint.example.com/v1 LLM_API_KEYyour-api-key LLM_MODELyour-model-name注意不要把这个文件提交到 Git 仓库建议加入.gitignore。再创建config/settings.pyimport os from dotenv import load_dotenv load_dotenv() LLM_BASE_URL os.getenv(LLM_BASE_URL) LLM_API_KEY os.getenv(LLM_API_KEY) LLM_MODEL os.getenv(LLM_MODEL)5.3 编写模型调用层这里我们使用 OpenAI 兼容的 chat completions 接口来实现通用调用。如果你的模型服务商提供的是其他协议需要按照对应文档调整。创建models/llm_client.pyimport json from typing import Optional import requests from config.settings import LLM_BASE_URL, LLM_API_KEY, LLM_MODEL class LLMClient: def __init__(self): self.base_url LLM_BASE_URL self.api_key LLM_API_KEY self.model LLM_MODEL def chat(self, messages: list[dict], temperature: float 0.2) - str: url f{self.base_url}/chat/completions headers { Authorization: fBearer {self.api_key}, Content-Type: application/json, } payload { model: self.model, messages: messages, temperature: temperature, } resp requests.post(url, headersheaders, jsonpayload, timeout60) resp.raise_for_status() data resp.json() return data[choices][0][message][content]这个类目前只负责完成一次对话补全。真正的 Agent 循环会在外层维护 messages 列表不断追加系统提示、用户输入、工具结果等。5.4 编写工具层我们定义一个任务统计工具。为了演示不依赖真实数据库直接在内存中放一份模拟数据。创建tools/task_tool.pyTASKS [ {id: 1, title: 完成季度销售报表, status: done, date: 2025-03-20}, {id: 2, title: 客户回访, status: done, date: 2025-03-21}, {id: 3, title: 合同初审, status: doing, date: 2025-03-22}, {id: 4, title: 团队周会, status: done, date: 2025-03-22}, {id: 5, title: 报销单审批, status: done, date: 2025-03-23}, ] def count_done_tasks(start_date: str, end_date: str) - dict: 统计指定时间段内已完成的任务数量。 done_tasks [ t for t in TASKS if t[status] done and start_date t[date] end_date ] return { total_done: len(done_tasks), task_titles: [t[title] for t in done_tasks], }5.5 编写 Agent 编排层现在来到核心部分。我们需要让 Agent 知道“什么时候调用工具”并在拿到工具结果后继续生成最终回答。为了尽量通用这里采用一个简单约定模型在需要调用工具时输出一段 JSON里面包含tool_name和arguments。创建agent/core.pyimport json import re from models.llm_client import LLMClient from tools.task_tool import count_done_tasks SYSTEM_PROMPT 你是一个办公周报助手。你可以使用以下工具 1. count_done_tasks统计指定时间段内已完成的任务数量参数为 start_date 和 end_date格式 YYYY-MM-DD。 当用户需要统计数据时你必须输出一个 JSON 块格式为 {tool_name: count_done_tasks, arguments: {start_date: 2025-03-20, end_date: 2025-03-23}} 然后等待工具结果再基于结果生成周报。 class OfficeAgent: def __init__(self): self.llm LLMClient() self.messages [{role: system, content: SYSTEM_PROMPT}] def run(self, user_input: str) - str: self.messages.append({role: user, content: user_input}) for _ in range(5): # 限制最多迭代 5 次防止死循环 reply self.llm.chat(self.messages) tool_cmd self._parse_tool_call(reply) if tool_cmd is None: # 模型没有要求调用工具说明已经给出最终结果 self.messages.append({role: assistant, content: reply}) return reply # 执行工具 tool_name tool_cmd[tool_name] args tool_cmd[arguments] if tool_name count_done_tasks: result count_done_tasks(**args) result_text json.dumps(result, ensure_asciiFalse) else: result_text json.dumps({error: unknown tool}, ensure_asciiFalse) # 把工具结果追加到上下文里再让模型继续生成 self.messages.append({role: assistant, content: reply}) self.messages.append({role: user, content: f工具返回结果{result_text}}) return 任务执行超过最大轮次已终止。 staticmethod def _parse_tool_call(reply: str) - dict | None: try: match re.search(r\{.*\}, reply, re.S) if match: return json.loads(match.group()) except json.JSONDecodeError: pass return None这里简单解释几个设计点限制迭代次数是防止模型陷入“反复调用工具不结束”的死循环。工具结果通过 user 消息追加到上下文是为了让模型能“看到”刚才的执行结果。最初其实也可以按多轮 assistant 消息处理关键是保持上下文结构一致。5.6 运行与验证创建入口main.pyfrom agent.core import OfficeAgent if __name__ __main__: agent OfficeAgent() result agent.run(请统计本周2025-03-20 到 2025-03-23完成的任务并生成一份简单的周报。) print(result)运行python main.py预期输出类似这样本周2025-03-20 至 2025-03-23共完成 4 项任务 1. 完成季度销售报表 2. 客户回访 3. 团队周会 4. 报销单审批 本周重点工作集中在销售数据整理与客户跟进方面整体推进顺利下周将重点推进合同初审任务。当然具体输出取决于模型能力和提示词设置。如果模型没有走“先调用工具再汇总”的路径可以检查两个地方一是工具描述是否足够明确二是系统提示里是否强调了必须调用工具后才能生成周报。6. 常见问题与排查思路6.1 Agent 执行超时或中断有不少开发者在跑 Agent 时见过类似The agent execution provider did not respond in time或agent terminated due to error的报错。这类问题本质上都是“某个环节没有在预期时间内返回”常见原因有模型接口响应慢。工具执行阻塞比如等待外部 API 超时。单次循环内上下文过大模型推理时间暴涨。排查时可以按时间线记录每个环节的耗时先确认卡点是发生在模型调用阶段还是工具执行阶段。如果是模型调用慢可以考虑换更快的模型或降低生成 token 上限如果是工具执行慢要在工具层加超时控制和重试机制。6.2 工具参数生成错误模型经常会把工具参数格式写错比如日期格式不对、缺少必填字段。这是 Agent 场景最常见的失败原因。解决方案是三层第一层在工具描述里写清参数要求和示例第二层在代码中做参数校验如果格式不对把校验错误返回给模型让它重新生成第三层在提示词中提供少样本示例。下面是一个参数校验的示例def parse_date(s: str) - bool: import datetime try: datetime.datetime.strptime(s, %Y-%m-%d) return True except ValueError: return False def count_done_tasks(start_date: str, end_date: str) - dict: if not (parse_date(start_date) and parse_date(end_date)): return {error: 日期格式不正确应为 YYYY-MM-DD} # ... 原有逻辑当工具返回 error 字段时Agent 核心会自动把它作为上下文传回给模型模型有机会自我纠错。6.3 模型丢失原始目标连续几轮工具调用之后模型可能忘记最初的任务目标开始“自说自话”。这在大模型 Agent 中很常见原因是上下文过长后注意力被工具结果稀释了。缓解手段包括每一轮系统提示中持续保留原始任务摘要定期压缩历史消息把已经完成的步骤汇总成一句摘要对关键信息做“记忆强化”比如把“本次周报时间范围2025-03-20 至 2025-03-23”锚定在系统消息里。6.4 安全与权限配置问题办公 Agent 一旦要操作真实系统安全边界就是首要问题。这里给出几个常见的风险点和应对思路工具权限过大会导致 Agent 误删数据或越权操作。解决方案是给每个工具配置独立权限按最小权限原则授予而不是直接复用管理员账号。敏感数据注入到模型提示词存在泄露风险。解决方案是避免把完整敏感字段传给模型只传脱敏后的必要信息。缺少审批环节会导致自动化操作不可控。关键操作发送消息、删除记录、修改金额应强制加入人工审批节点。问题现象常见原因解决思路Agent 执行超时模型接口或工具执行耗时过长添加超时控制、缩短上下文、换更快模型工具参数格式错误模型未按 JSON Schema 输出增加校验与重试提示词提供少样本示例多轮后偏离主线上下文过长注意力分散定期压缩历史消息、锚定原始目标Agent 误操作真实系统工具权限过大最小权限、人工审批、操作日志本地部署模型兼容性异常推理框架与硬件适配问题以官方适配列表为准先小规模验证7. 最佳实践与工程建议7.1 提示词与结构化输出办公 Agent 的提示词要尽量稳定和可预测。建议把系统提示拆成几个固定区块角色定义、可用工具清单、输出格式要求、执行规则、少样本示例。这样当模型表现不佳时可以只调整某个区块而不是重写整段提示词。结构化输出能显著提升 Agent 的可靠性。只要模型服务支持 JSON 模式输出就优先开启并在代码层面对返回结果做 JSON Schema 校验。不要依赖模型“大概会输出合格格式”一定要在代码中兜底。7.2 记忆与上下文管理办公 Agent 对记忆的需求是刚性的但实现上要分清楚“哪些该进上下文哪些该进外部存储”。完整对话历史不适合无限拼接建议采用滑动窗口策略最近的 N 条原始消息保留完整细节更早的消息压缩成摘要与当前任务无关的历史不进入上下文。业务级的长期记忆比如用户偏好的周报格式、常用截止时间建议存到数据库中在任务开始时按需检索注入。注意给记忆数据做版本和来源标记方便排查 Agent 为什么使用了某条信息。7.3 安全边界设计Agent 的安全设计不能依赖提示词约束必须落实到工具层的权限控制和审计。最简单有效的一套做法是所有工具调用强制记录日志包含调用人、调用 Agent 实例、工具名、参数、执行结果。高风险工具在代码层设置二次确认回调。数据脱敏在工具层完成而不是把脱敏责任交给模型。针对 API 调用做速率限制防止 Agent 在循环中频繁触发外部请求造成生产事故。在办公场景中宁可少做一次自动化操作也不要让 Agent 在无人工确认的情况下执行破坏性动作。7.4 模型选型与成本控制办公 Agent 的模型选型建议从“任务类型 × 调用频次 × 数据敏感程度”三个维度评估。任务类型决定模型能力门槛。高频轻量任务摘要、分类、抽取用便宜的小模型即可低频复杂任务规划、推理、长文生成用强模型。数据敏感程度决定能否使用外部 API。如果数据无法外发就只能引入本地部署方案此时要重点评估推理框架在现有硬件上的适配程度而不是只比较模型参数规模。成本控制上建议为 Agent 设置单次任务调用的模型次数上限和 token 消耗上限。Agent 循环一旦失控成本会快速升高必须有个硬性护栏。7.5 可观测性与调试Agent 的调试比传统程序困难因为它每一步都有随机性。建议从第一版开始就为 Agent 加入可观测性设计每次模型调用都要记录完整请求和响应。每次工具调用都要记录参数和返回值。为每个任务分配唯一 trace_id把该任务的所有模型调用、工具调用串在一起。提供“回放模式”从日志中读取历史上某次任务的完整轨迹调整提示词后重放用来回归验证。有条件的团队可以构造一组固定的回归测试用例每个用例包含用户输入、预期调用工具、预期最终输出。Agent 代码或提示词变更后先跑回归测试再上线。8. 总结与下一步办公 Agent 的爆发不是偶然。它把大模型的“理解能力”和“执行能力”连接起来第一次让 AI 真正参与到了生产流程中。而模型大战进入下一阶段后开发者的注意力也应该从“谁的对话体验更好”转向“谁能让 Agent 更稳定地完成任务”。这篇文章从办公 Agent 的概念、技术架构、模型选型讲到实际代码落地最后给出了常见的排错方法和工程建议。核心要记住几点Agent 的本质是“规划—行动—观察”循环工具层的设计与权限控制直接决定 Agent 可用性模型选型要看 Agent 场景专项能力而不是只看跑分上线前必须做好可观测性和人工审批兜底。下一步可以继续深入研究的方向包括Agent 记忆中向量检索的排序优化、多 Agent 协作的任务分配机制、基于用户反馈的模型微调、以及更细粒度的工具调用成本控制。建议先把自己手头最繁琐的办公流程抽象出来用最简单的方式实现一个最小 Agent再逐步增加工具和记忆能力。如果你正在规划办公 Agent 项目欢迎在评论区交流你遇到的技术选型问题或踩过的坑。觉得本文对你有帮助的话记得收藏备用后续会继续输出更深入的 Agent 实战内容。