一、面试题目
面试官:请你设计一个办公助手 AI Agent 的完整方案,需覆盖日程管理、文档处理、邮件管理、会议协同四大核心办公场景,明确其核心定位、工具集设计、完整业务流程、工程落地要点,确保能真正提升办公效率、降低事务性工作成本。
二、知识储备
1. 办公助手 Agent 核心定位
聚焦职场人日常办公高频事务,替代人工完成日程管理、文档处理、邮件收发、会议协同 等重复性、事务性工作,核心目标:解放双手、简化流程、提升办公效率、实现办公事务自动化闭环,让用户专注核心工作(决策、创作、沟通)。
核心约束:需对接企业办公系统(如企业微信、飞书、钉钉、WPS、Outlook),支持多系统数据同步,保证办公数据(日程、文档、邮件)的安全性、私密性,操作可追溯、可撤销。
2. 核心工具集设计(Function Call 标准化定义)
按 "日程、文档、邮件、会议" 四大场景分类,每个工具明确功能描述、参数约束、调用场景,贴合职场实际办公需求,避免冗余,确保 Agent 可精准调用、高效执行。
(一)日程管理类工具(核心场景:时间规划)
1. 日程查询工具(query_schedule)
- 功能描述:根据用户需求,查询指定时间段(今日 / 明日 / 本周 / 自定义)的日程安排,返回日程详情(时间、主题、参与人、地点 / 会议链接、备注);支持按参与人、日程类型筛选。
- 参数定义:表格
|-------------|--------|------------------------------|------------------------|--------------------|
| 参数名 | 类型 | 描述 | 必选 | 示例 |
| time_range | string | 时间范围(枚举) | 是 | 今日 / 明日 / 本周 / 自定义 |
| start_time | string | 自定义开始时间(格式:YYYY-MM-DD HH:MM) | 可选(time_range 为自定义时必选) | 2026-05-01 09:00 |
| end_time | string | 自定义结束时间(格式:YYYY-MM-DD HH:MM) | 可选(time_range 为自定义时必选) | 2026-05-01 18:00 |
| participant | string | 参与人姓名 / 工号 | 可选 | 张三 / 10001 |
- 返回结果:日程列表(含每一条日程的时间、主题、参与人、地点 / 链接、备注)、空闲时间段提示。
- 调用场景:用户询问 "今日日程""明天有什么会""本周和张三的会议安排" 时调用。
2. 日程创建工具(create_schedule)
- 功能描述:根据用户需求,创建新日程,自动同步至用户办公系统(如飞书 / 企业微信),并给参与人发送邀请;支持设置提醒、重复日程(每日 / 每周 / 每月)。
- 参数定义:表格
|----------------|--------|---------------------------|----------------|-----------------------------------------------------------------------------------------------|
| 参数名 | 类型 | 描述 | 必选 | 示例 |
| schedule_topic | string | 日程主题 | 是 | 产品需求评审会 |
| start_time | string | 开始时间(格式:YYYY-MM-DD HH:MM) | 是 | 2026-05-02 10:00 |
| end_time | string | 结束时间(格式:YYYY-MM-DD HH:MM) | 是 | 2026-05-02 11:30 |
| participants | array | 参与人列表(姓名 / 工号) | 可选 | ["张三", "李四", "10003"] |
| location | string | 地点 / 会议链接 | 可选 | 会议室 302/https://xxx.feishu.cn/meet |
| reminder | int | 提醒时间(提前 N 分钟) | 可选(默认提前 15 分钟) | 30 |
| repeat | string | 重复规则(枚举) | 可选 | 无 / 每日 / 每周一 / 每月 1 号 |
| remark | string | 日程备注 | 可选 | 请携带需求文档参会 |
- 返回结果:日程 ID、创建状态、邀请发送状态、日程详情。
- 调用场景:用户说 "帮我明天 10 点创建一个产品评审会,邀请张三、李四,提前 30 分钟提醒" 时调用。
3. 日程修改 / 删除工具(update_delete_schedule)
- 功能描述:修改已有日程的时间、参与人、主题等信息,或删除指定日程;修改后自动同步给所有参与人,删除后通知参与人。
- 参数定义:表格
|-------------|--------|---------------------|--------|--------------------------------------------------------------|
| 参数名 | 类型 | 描述 | 必选 | 示例 |
| schedule_id | string | 日程唯一 ID | 是 | sch123456789 |
| operation | string | 操作类型(枚举) | 是 | 修改 / 删除 |
| update_info | object | 修改信息(仅操作为 "修改" 时必选) | 可选 | {"start_time": "2026-05-02 10:30", "participants": ["张三"]} |
- 返回结果:操作状态、修改后的日程详情(仅修改时)、通知发送状态。
- 调用场景:用户说 "把明天 10 点的评审会改到 10 点 30 分""删除后天下午的会议" 时调用。
(二)文档处理类工具(核心场景:文档协作)
1. 文档查询 / 检索工具(query_document)
- 功能描述:根据用户关键词,检索用户有权限访问的办公文档(WPS / 飞书文档 / 钉钉文档),返回文档列表、文档链接、文档摘要;支持按文档类型(文档 / 表格 / 幻灯片)、创建时间筛选。
- 参数定义:表格
|-------------|--------|----------|--------|----------------------|
| 参数名 | 类型 | 描述 | 必选 | 示例 |
| keyword | string | 检索关键词 | 是 | 产品需求文档 |
| doc_type | string | 文档类型(枚举) | 可选 | 文档 / 表格 / 幻灯片 / 全部 |
| create_time | string | 创建时间范围 | 可选 | 近 7 天 / 近 30 天 / 自定义 |
- 返回结果:文档列表(含文档名称、创建人、创建时间、文档链接、简要摘要)。
- 调用场景:用户说 "帮我找一下最近的产品需求文档""检索张三创建的表格" 时调用。
2. 文档创建 / 编辑工具(create_edit_document)
- 功能描述:根据用户需求,创建新文档(文档 / 表格 / 幻灯片),或编辑已有文档(添加内容、修改段落、插入表格);支持模板选择(如会议纪要模板、周报模板)。
- 参数定义:表格
|-----------|--------|-----------------|--------|------------------------------|
| 参数名 | 类型 | 描述 | 必选 | 示例 |
| doc_title | string | 文档标题 | 是 | 2026 年 4 月周报 |
| doc_type | string | 文档类型(枚举) | 是 | 文档 / 表格 / 幻灯片 |
| template | string | 文档模板(枚举) | 可选 | 周报模板 / 会议纪要模板 / 空白模板 |
| content | string | 文档内容(支持简单格式) | 可选 | 本周工作:1. 完成 XX 任务;2. 推进 XX 项目 |
| doc_id | string | 已有文档 ID(仅编辑时必选) | 可选 | doc123456789 |
| edit_type | string | 编辑类型(枚举,仅编辑时必选) | 可选 | 添加内容 / 修改内容 / 删除内容 |
- 返回结果:文档 ID、文档链接、操作状态(创建 / 编辑成功)。
- 调用场景:用户说 "帮我创建一个本周周报,用周报模板,内容包括完成 XX 任务""修改文档 doc123456789,添加一段项目进度" 时调用。
3. 文档共享 / 导出工具(share_export_document)
- 功能描述:将指定文档共享给指定用户(设置查看 / 编辑权限),或导出文档(格式:PDF/Word/Excel);支持生成临时共享链接。
- 参数定义:表格
|---------------|--------|----------------------|--------|-------------------|
| 参数名 | 类型 | 描述 | 必选 | 示例 |
| doc_id | string | 文档唯一 ID | 是 | doc123456789 |
| operation | string | 操作类型(枚举) | 是 | 共享 / 导出 |
| share_users | array | 共享用户(姓名 / 工号,仅共享时必选) | 可选 | ["张三", "10003"] |
| permission | string | 共享权限(枚举,仅共享时必选) | 可选 | 查看 / 编辑 |
| export_format | string | 导出格式(枚举,仅导出时必选) | 可选 | PDF/Word/Excel |
- 返回结果:操作状态、共享链接(仅共享时)、导出文件链接(仅导出时)。
- 调用场景:用户说 "把文档 doc123456789 共享给张三,给编辑权限""导出这份文档为 PDF 格式" 时调用。
(三)邮件管理类工具(核心场景:邮件协同)
1. 邮件查询 / 接收工具(query_receive_email)
- 功能描述:查询用户邮箱(企业邮箱 / Outlook)的邮件,支持按收件箱 / 已发送 / 草稿箱 / 垃圾箱筛选,按发件人、关键词、时间范围检索;接收新邮件时自动提醒用户。
- 参数定义:表格
|------------|--------|----------------------|--------|-----------------------------------------------------------------------------------|
| 参数名 | 类型 | 描述 | 必选 | 示例 |
| mail_box | string | 邮箱文件夹(枚举) | 是 | 收件箱 / 已发送 / 草稿箱 / 垃圾箱 |
| keyword | string | 检索关键词(主题 / 发件人 / 内容) | 可选 | 项目进度 / 张三 |
| sender | string | 发件人邮箱 / 姓名 | 可选 | zhangsan@company.com/ 张三 |
| time_range | string | 时间范围 | 可选 | 今日 / 近 3 天 / 近 7 天 |
- 返回结果:邮件列表(含邮件主题、发件人、发送时间、邮件摘要、附件提示)。
- 调用场景:用户说 "帮我看看今天的收件箱邮件""找一下张三发的关于项目进度的邮件" 时调用。
2. 邮件发送工具(send_email)
- 功能描述:根据用户需求,撰写并发送邮件,支持添加附件、抄送 / 密送,设置发送时间(立即发送 / 定时发送);自动校验收件人邮箱格式。
- 参数定义:表格
|------------|--------|---------------|----------|------------------------------------------------|
| 参数名 | 类型 | 描述 | 必选 | 示例 |
| recipient | array | 收件人邮箱列表 | 是 | ["zhangsan@company.com", "lisi@company.com"] |
| subject | string | 邮件主题 | 是 | 项目进度同步邮件 |
| content | string | 邮件内容(支持简单格式) | 是 | 各位同事,现将本周项目进度同步如下:... |
| cc | array | 抄送邮箱列表 | 可选 | ["wangwu@company.com"] |
| bcc | array | 密送邮箱列表 | 可选 | ["admin@company.com"] |
| attachment | array | 附件路径 / 链接 | 可选 | ["/docs/ 项目进度.xlsx"] |
| send_time | string | 发送时间(立即 / 定时) | 可选(默认立即) | 2026-05-03 09:00 |
- 返回结果:邮件发送状态、邮件 ID、发送时间。
- 调用场景:用户说 "给张三、李四发一封项目进度同步邮件,主题是项目进度同步,内容是...,抄送王五" 时调用。
3. 邮件回复 / 转发工具(reply_forward_email)
- 功能描述:回复指定邮件(全部回复 / 回复发件人),或转发指定邮件给其他用户;支持编辑回复 / 转发内容,添加附件。
- 参数定义:表格
|------------|--------|-----------------|--------|--------------------------|
| 参数名 | 类型 | 描述 | 必选 | 示例 |
| mail_id | string | 邮件唯一 ID | 是 | mail123456789 |
| operation | string | 操作类型(枚举) | 是 | 回复 / 转发 |
| reply_type | string | 回复类型(枚举,仅回复时必选) | 可选 | 回复发件人 / 全部回复 |
| recipient | array | 转发收件人邮箱(仅转发时必选) | 可选 | ["wangwu@company.com"] |
| content | string | 回复 / 转发内容 | 是 | 已收到,将尽快处理。 |
| attachment | array | 附件路径 / 链接 | 可选 | ["/docs/ 回复附件.xlsx"] |
- 返回结果:操作状态、邮件 ID。
- 调用场景:用户说 "回复张三刚才发的邮件,内容是已收到,将尽快处理""把这封邮件转发给王五" 时调用。
(四)会议协同类工具(核心场景:会议高效开展)
1. 会议安排工具(arrange_meeting)
- 功能描述:整合日程、邮件、文档工具,完成会议全流程安排:创建会议日程→发送会议邀请(邮件 / 日程邀请)→创建会议纪要文档→同步会议链接,支持设置会议议程。
- 参数定义:表格
|------------------|--------|---------------------|--------|---------------------------------------|
| 参数名 | 类型 | 描述 | 必选 | 示例 |
| meeting_topic | string | 会议主题 | 是 | 产品上线复盘会 |
| start_time | string | 会议开始时间 | 是 | 2026-05-04 14:00 |
| end_time | string | 会议结束时间 | 是 | 2026-05-04 15:30 |
| participants | array | 参会人列表(姓名 / 工号 / 邮箱) | 是 | ["张三", "lisi@company.com", "10003"] |
| location | string | 会议地点 / 链接 | 是 | 线上会议链接:https://xxx/meet |
| agenda | array | 会议议程 | 可选 | ["1. 上线成果复盘;2. 问题总结;3. 后续计划"] |
| minutes_template | string | 会议纪要模板 | 可选 | 复盘会纪要模板 |
- 返回结果:会议日程 ID、会议邀请发送状态、会议纪要文档链接、会议详情。
- 调用场景:用户说 "帮我安排一场产品上线复盘会,明天 14 点开始,邀请张三、李四,线上会议,议程包括成果复盘、问题总结" 时调用。
2. 会议纪要生成工具(generate_meeting_minutes)
- 功能描述:根据会议录音 / 会议笔记,自动生成会议纪要(提炼会议主题、参会人、议程完成情况、决议事项、待办任务),支持手动编辑优化,同步至参会人。
- 参数定义:表格
|-----------------|--------|----------------|--------|----------------------------------|
| 参数名 | 类型 | 描述 | 必选 | 示例 |
| meeting_id | string | 会议日程 ID | 是 | sch123456789 |
| meeting_content | string | 会议录音转文字 / 会议笔记 | 是 | 会议内容:1. 张三汇报上线成果... |
| assignee | object | 待办任务分配(可选) | 可选 | {"张三": "整理问题清单", "李四": "推进优化方案"} |
- 返回结果:会议纪要文档 ID、文档链接、待办任务列表、同步状态。
- 调用场景:用户说 "根据刚才的会议录音,生成会议纪要,待办任务分配给张三和李四" 时调用。
3. 会议待办跟踪工具(track_meeting_todo)
- 功能描述:跟踪会议纪要中的待办任务,提醒待办人任务截止时间,查询待办任务进度(未开始 / 进行中 / 已完成),同步待办状态给会议发起人。
- 参数定义:表格
|------------|--------|--------------------|--------|--------------|
| 参数名 | 类型 | 描述 | 必选 | 示例 |
| minutes_id | string | 会议纪要文档 ID | 是 | doc123456789 |
| todo_id | string | 待办任务 ID(可选,查询单个待办) | 可选 | todo123 |
| assignee | string | 待办人(可选,查询指定人待办) | 可选 | 张三 |
- 返回结果:待办任务列表(含任务内容、负责人、截止时间、进度)、提醒状态。
- 调用场景:用户说 "查一下上次复盘会的待办任务进度""提醒李四完成他的待办任务" 时调用。
3. 完整业务流程(标准化闭环,Agent 自动执行)
核心流程:用户需求接入 → 意图识别 → 工具调用 → 执行反馈 → 闭环结束
步骤 1:用户需求接入与意图识别(触发起点)
- 用户通过办公软件(飞书 / 企业微信)发送办公需求(如 "帮我安排明天的会议""找一下上周的周报""回复张三的邮件");
- Agent 调用意图识别模块,结合上下文记忆,精准判断需求所属场景(日程 / 文档 / 邮件 / 会议)及具体操作(查询 / 创建 / 修改 / 发送等);
- 若需求模糊(如 "帮我处理一下文档"),Agent 主动追问,获取关键信息(文档类型、操作内容、相关参数),避免瞎执行。
步骤 2:工具调用与执行(核心环节)
- 根据识别的意图,自动调用对应场景的工具,按参数约束校验用户提供的信息(如邮箱格式、时间格式),缺失参数则渐进式追问;
- 复杂需求(如会议安排)自动联动多工具:调用日程创建工具→邮件发送工具→文档创建工具,完成全流程执行;
- 执行过程中,实时反馈进度(如 "正在创建会议日程""邮件正在发送中"),若工具调用失败(如系统对接异常),自动重试 2 次,仍失败则提示用户并提供备选方案。
步骤 3:执行结果反馈与优化
- 工具执行完成后,返回清晰的结果(如日程链接、文档链接、邮件发送状态),告知用户操作已完成;
- 询问用户是否需要进一步操作(如 "会议安排已完成,需要生成会议纪要模板吗?""文档已创建,需要添加内容吗?");
- 若用户对结果不满意(如 "日程时间错了""邮件内容有误"),调用对应修改工具,快速调整,直至用户确认。
步骤 4:闭环管理与记忆沉淀
- 每一次操作结果(日程、文档、邮件、会议)自动同步至 Agent 长期记忆,关联用户习惯(如用户常用的会议模板、邮件签名);
- 定期提醒用户(如日程提醒、待办任务提醒、未读邮件提醒),形成自动化办公闭环;
- 记录用户操作日志,便于后续排查问题、优化 Agent 处理逻辑(如用户高频需求优先优化)。
步骤 5:异常处理(容错机制)
- 工具调用失败:重试 2 次,仍失败则提示用户 "当前操作失败,请稍后重试",并同步失败原因;
- 参数错误(如时间格式错误、邮箱无效):实时提示用户,引导用户修正参数;
- 权限不足(如无法访问某文档、无法发送邮件):提示用户 "权限不足,请联系管理员授权";
- 复杂需求(如复杂文档编辑、多参会人冲突协调):自动转接人工助理,同步当前操作进度,避免耽误用户时间。
4. 工程落地关键要点(面试高分重点)
- 多系统对接:需无缝对接企业常用办公系统(飞书、企业微信、WPS、Outlook 等),采用标准化接口,确保数据同步实时、准确,避免数据不一致;
- 数据安全与隐私:办公数据(日程、文档、邮件)属于企业敏感信息,需加密存储、加密传输,严格控制权限,仅用户本人可访问自己的办公数据,操作日志可追溯;
- 上下文记忆与用户习惯适配:记住用户常用操作(如常用会议模板、邮件签名、日程提醒时间),避免重复追问,提升使用体验;
- 意图识别精准度:优化意图识别模型,覆盖模糊需求、多意图混杂场景(如 "帮我安排会议并生成纪要"),确保工具调用精准,不出现误调用;
- 人工协同兜底:明确 Agent 与人工助理的边界,Agent 处理标准化、重复性工作,复杂需求(如复杂文档编辑、会议冲突协调)快速转接人工,同步操作进度,不拖延;
- 可扩展性:工具集设计预留扩展接口,后续可新增办公场景(如考勤管理、报销处理),无需重构整体架构;
- 稳定性与监控:搭建全链路监控,实时监控工具调用状态、系统对接状态,出现异常及时告警,确保 Agent 稳定运行,避免影响用户办公。
5. 高频场景覆盖(确保实用性)
- 场景 1:用户说 "帮我查询明天的日程" → 调用日程查询工具→返回明日日程列表 + 空闲时间;
- 场景 2:用户说 "帮我安排一场明天 10 点的项目会议,邀请张三、李四,线上会议,会后生成纪要" → 调用会议安排工具→创建日程→发送邀请→创建纪要模板→反馈结果;
- 场景 3:用户说 "找一下最近一周张三发的关于项目进度的邮件" → 调用邮件查询工具→检索相关邮件→返回邮件列表;
- 场景 4:用户说 "帮我创建一份本周周报,用周报模板,内容包括完成 XX 任务、推进 XX 项目" → 调用文档创建工具→选择模板→填充内容→返回文档链接;
- 场景 5:用户说 "提醒我明天下午 3 点的会议,提前 20 分钟提醒" → 调用日程修改工具→设置提醒→反馈设置结果。
三、破局之道
面试高阶表述:设计办公助手 Agent,核心不是 "功能堆砌",而是 "贴合职场实际、解决真实痛点、提升办公效率"。职场人每天花费大量时间在日程、文档、邮件、会议等事务性工作上,Agent 的核心价值就是 "替代人工做重复事、简化流程省时间"。
工具集设计要遵循 "单一职责、精准调用" 原则,每个工具只解决一个具体问题,避免功能冗余;业务流程要标准化、自动化,实现 "用户一句话,Agent 全搞定",减少用户操作步骤;工程落地的关键的是 "多系统对接、数据安全、精准意图识别",既要保证 Agent 能无缝对接企业现有办公系统,又要确保办公数据安全,同时精准理解用户需求,不瞎执行、不添乱。
本质上,办公助手 Agent 是 "办公系统的连接器、事务性工作的自动化引擎",核心目标是让用户从繁琐的事务性工作中解放出来,专注核心工作,这也是 Agent 能在企业办公场景落地的核心价值。好的办公助手 Agent,应该是 "隐形的助理",无需用户过多操作,就能主动、高效完成办公事务。
四、代码实现(Python 极简演示,贴合工具调用与流程)
python
# 模拟办公助手 Agent 工具集与流程
def llm(prompt):
# 模拟大模型调用,返回结构化意图/工具调用指令
return prompt
# 1. 工具集实现(模拟对接办公系统)
class OfficeAssistantTools:
# 日程管理工具
def query_schedule(self, time_range, start_time=None, end_time=None, participant=None):
# 模拟对接日程系统,返回日程详情
return {
"schedule_list": [
{
"start_time": "2026-05-02 10:00",
"end_time": "2026-05-02 11:30",
"topic": "产品需求评审会",
"participants": ["张三", "李四"],
"location": "线上会议链接:https://xxx/meet",
"remark": "请携带需求文档参会"
}
],
"free_time": "2026-05-02 09:00-10:00, 14:00-16:00"
}
def create_schedule(self, schedule_topic, start_time, end_time, participants=None, location=None, reminder=15):
return {
"schedule_id": "sch123456789",
"status": "创建成功",
"invite_status": "已发送",
"schedule_detail": {
"topic": schedule_topic,
"start_time": start_time,
"end_time": end_time,
"participants": participants or [],
"location": location,
"reminder": f"提前{reminder}分钟提醒"
}
}
# 文档处理工具
def query_document(self, keyword, doc_type="全部"):
return {
"document_list": [
{
"doc_title": "2026年4月周报",
"create_time": "2026-04-30",
"creator": "张三",
"doc_type": "文档",
"doc_link": "https://xxx.wps.cn/doc/123",
"summary": "本周完成XX任务,推进XX项目"
}
]
}
def create_edit_document(self, doc_title, doc_type, template="空白模板", content=None, doc_id=None):
return {
"doc_id": "doc123456789",
"doc_link": "https://xxx.wps.cn/doc/123",
"status": "创建成功" if not doc_id else "编辑成功"
}
# 邮件管理工具
def send_email(self, recipient, subject, content, cc=None):
return {
"status": "发送成功",
"mail_id": "mail123456789",
"send_time": "2026-05-01 15:30"
}
# 会议协同工具
def arrange_meeting(self, meeting_topic, start_time, end_time, participants, location):
# 联动日程、邮件、文档工具
schedule_res = self.create_schedule(meeting_topic, start_time, end_time, participants, location)
email_res = self.send_email(participants, f"会议邀请:{meeting_topic}", f"会议时间:{start_time},地点:{location}")
doc_res = self.create_edit_document(f"{meeting_topic}纪要", "文档", template="会议纪要模板")
return {
"meeting_status": "安排成功",
"schedule_id": schedule_res["schedule_id"],
"mail_status": email_res["status"],
"minutes_link": doc_res["doc_link"]
}
# 2. 办公助手 Agent 核心流程
class OfficeAssistantAgent:
def __init__(self):
self.tools = OfficeAssistantTools()
self.user_intent = None # 用户意图
self.user_context = {} # 用户上下文(记忆)
# 步骤1:意图识别
def recognize_intent(self, user_query):
# 模拟大模型识别意图,覆盖四大场景
if "日程" in user_query or "会议" in user_query:
if "查询" in user_query:
return "日程查询"
elif "创建" in user_query or "安排" in user_query:
return "会议安排" or "日程创建"
elif "修改" in user_query or "删除" in user_query:
return "日程修改/删除"
elif "文档" in user_query:
if "查询" in user_query or "找" in user_query:
return "文档查询"
elif "创建" in user_query or "编辑" in user_query:
return "文档创建/编辑"
elif "邮件" in user_query:
if "查" in user_query or "接收" in user_query:
return "邮件查询"
elif "发送" in user_query:
return "邮件发送"
elif "回复" in user_query or "转发" in user_query:
return "邮件回复/转发"
else:
return "模糊意图"
# 步骤2:参数获取与工具调用
def get_params_and_call_tool(self, intent, user_query):
# 模拟获取用户需求中的参数(实际场景中由LLM提取)
if intent == "日程查询":
return self.tools.query_schedule(time_range="明日")
elif intent == "会议安排":
return self.tools.arrange_meeting(
meeting_topic="项目进度会",
start_time="2026-05-02 14:00",
end_time="2026-05-02 15:30",
participants=["张三", "李四"],
location="https://xxx/meet"
)
elif intent == "文档查询":
return self.tools.query_document(keyword="周报")
elif intent == "邮件发送":
return self.tools.send_email(
recipient=["zhangsan@company.com"],
subject="周报同步",
content="本周周报已发送,请查收。",
cc=["lisi@company.com"]
)
else:
return "请补充具体需求,我将快速为你处理"
# 完整运行闭环
def run(self, user_query):
# 1. 意图识别
self.user_intent = self.recognize_intent(user_query)
if self.user_intent == "模糊意图":
return "请说明具体办公需求(如日程、文档、邮件、会议相关),我将为你处理"
# 2. 参数获取与工具调用
result = self.get_params_and_call_tool(self.user_intent, user_query)
# 3. 结果反馈
return f"操作已完成,结果如下:{result}"
# 测试:模拟用户安排会议
agent = OfficeAssistantAgent()
print(agent.run("帮我安排一场明天14点的项目进度会,邀请张三、李四,线上会议"))
JavaScript 版本
javascript
// 模拟办公助手工具集
class OfficeAssistantTools {
// 日程查询
querySchedule(timeRange, startTime = null, endTime = null, participant = null) {
return {
scheduleList: [
{
startTime: "2026-05-02 10:00",
endTime: "2026-05-02 11:30",
topic: "产品需求评审会",
participants: ["张三", "李四"],
location: "线上会议链接:https://xxx/meet",
remark: "请携带需求文档参会"
}
],
freeTime: "2026-05-02 09:00-10:00, 14:00-16:00"
};
}
// 创建日程
createSchedule(scheduleTopic, startTime, endTime, participants = [], location = null, reminder = 15) {
return {
scheduleId: "sch123456789",
status: "创建成功",
inviteStatus: "已发送",
scheduleDetail: {
topic: scheduleTopic,
startTime,
endTime,
participants,
location,
reminder: `提前${reminder}分钟提醒`
}
};
}
// 文档查询
queryDocument(keyword, docType = "全部") {
return {
documentList: [
{
docTitle: "2026年4月周报",
createTime: "2026-04-30",
creator: "张三",
docType: "文档",
docLink: "https://xxx.wps.cn/doc/123",
summary: "本周完成XX任务,推进XX项目"
}
]
};
}
// 创建文档
createEditDocument(docTitle, docType, template = "空白模板", content = null, docId = null) {
return {
docId: "doc123456789",
docLink: "https://xxx.wps.cn/doc/123",
status: docId ? "编辑成功" : "创建成功"
};
}
// 发送邮件
sendEmail(recipient, subject, content, cc = []) {
return {
status: "发送成功",
mailId: "mail123456789",
sendTime: "2026-05-01 15:30"
};
}
// 安排会议(联动多工具)
arrangeMeeting(meetingTopic, startTime, endTime, participants, location) {
const scheduleRes = this.createSchedule(meetingTopic, startTime, endTime, participants, location);
const emailRes = this.sendEmail(participants, `会议邀请:${meetingTopic}`, `会议时间:${startTime},地点:${location}`);
const docRes = this.createEditDocument(`${meetingTopic}纪要`, "文档", "会议纪要模板");
return {
meetingStatus: "安排成功",
scheduleId: scheduleRes.scheduleId,
mailStatus: emailRes.status,
minutesLink: docRes.docLink
};
}
}
// 办公助手Agent
class OfficeAssistantAgent {
constructor() {
this.tools = new OfficeAssistantTools();
this.userIntent = null;
this.userContext = {};
}
// 意图识别
recognizeIntent(userQuery) {
if (userQuery.includes("日程") || userQuery.includes("会议")) {
if (userQuery.includes("查询")) return "日程查询";
if (userQuery.includes("创建") || userQuery.includes("安排")) return "会议安排";
if (userQuery.includes("修改") || userQuery.includes("删除")) return "日程修改/删除";
}
if (userQuery.includes("文档")) {
if (userQuery.includes("查询") || userQuery.includes("找")) return "文档查询";
if (userQuery.includes("创建") || userQuery.includes("编辑")) return "文档创建/编辑";
}
if (userQuery.includes("邮件")) {
if (userQuery.includes("查") || userQuery.includes("接收")) return "邮件查询";
if (userQuery.includes("发送")) return "邮件发送";
if (userQuery.includes("回复") || userQuery.includes("转发")) return "邮件回复/转发";
}
return "模糊意图";
}
// 参数获取与工具调用
getParamsAndCallTool(intent, userQuery) {
switch (intent) {
case "日程查询":
return this.tools.querySchedule("明日");
case "会议安排":
return this.tools.arrangeMeeting(
"项目进度会",
"2026-05-02 14:00",
"2026-05-02 15:30",
["张三", "李四"],
"https://xxx/meet"
);
case "文档查询":
return this.tools.queryDocument("周报");
case "邮件发送":
return this.tools.sendEmail(
["zhangsan@company.com"],
"周报同步",
"本周周报已发送,请查收。",
["lisi@company.com"]
);
default:
return "请补充具体需求,我将快速为你处理";
}
}
// 完整运行闭环
async run(userQuery) {
this.userIntent = this.recognizeIntent(userQuery);
if (this.userIntent === "模糊意图") {
return "请说明具体办公需求(如日程、文档、邮件、会议相关),我将为你处理";
}
const result = this.getParamsAndCallTool(this.userIntent, userQuery);
return `操作已完成,结果如下:${JSON.stringify(result)}`;
}
}
// 测试
const agent = new OfficeAssistantAgent();
agent.run("帮我安排一场明天14点的项目进度会,邀请张三、李四,线上会议").then(console.log);