我受够了自己的烂记性,于是用大模型搓了个个人助理 Agent
上个月我第三次忘记跟产品经理的周会,被人家在群里@了三次,丢人丢到家。我当时就想:我天天跟大模型打交道,能不能让 AI 替我记住这些破事儿,到点提醒我,甚至帮我回复消息?
市面上的智能助手一堆,但要么只能设闹钟,要么读不了我的日历,要么数据要上云端——我一个搞后端的,自己的数据凭什么放别人服务器上?
于是我又开始了传统艺能:手搓。花了一个周末搭了个雏形,又用了两周慢慢打磨,现在这个“个人助理 Agent”已经承包了我的日程提醒、邮件摘要、快速信息检索、甚至每天早上的穿衣建议。
今天就把从需求分析到功能设计到踩坑的全过程,给兄弟们抖搂出来。看完你会发现,这玩意儿真没那么玄。
一、先搞清楚:个人助理 Agent 到底该干啥
很多人一上来就想做个贾维斯,什么都能干。结果做着做着就成了一坨屎山——功能一堆,每个都半吊子。
我一开始就给自己定了条铁律:这个 Agent 只服务于我一个人,不做多租户,不做复杂的权限,先解决我最痛的三个场景。
哪三个?
记不住事:会议、待办、临时想法,转头就忘。
信息过载:每天早上几十封邮件,看不完;技术群消息太多,懒得爬楼。
琐事太多:查天气、查快递、记个灵感,每次都要打开好几个 App。
所以我的需求非常明确:一个能跟我对话、能读写我的日历和邮件、能联网查信息的本地化个人助手。关键词:本地化。数据不出我的电脑,所有记忆存本地数据库。
二、需求分析:别一上来就画界面,先把“意图”理清楚
我用的是最土的方法:拿张纸,把我想对它说的话全列出来。大概长这样:
“明天下午三点提醒我跟张总开会”
“我今天的日程是什么”
“帮我总结一下未读邮件”
“外面下雨吗”
“我刚才想到一个 idea,帮我记下来,标签是‘副业’”
“帮我查下顺丰快递 SF123456”
“每天早上八点推送今天的天气和日程”
然后我把这些自然语言整理成意图,就是用户想干嘛。分成了这么几大类:
- 日程管理
创建日程(含时间、地点、备注)
查询日程(今天/明天/本周)
取消/修改日程
- 邮件助手
未读邮件摘要(按重要性排序)
根据关键词搜索邮件
根据指令草拟回复(但必须我确认后才发送)
- 记忆与笔记
记录碎片想法(自动打标签)
按关键词或标签检索笔记
定期回顾(比如每周推送一次“上周的灵感”)
- 信息查询
天气查询(实时+预报)
快递查询
简单知识问答(比如“Git 撤销 commit 的命令是什么”)
- 定时推送
每天早上推送当日天气+日程+待办
每周末推送本周工作小结(基于日历和笔记自动生成)
这些意图不是拍脑袋定的,是从我真实的生活场景里抠出来的。如果你也想做,建议你先花一周时间记录“我每天哪些重复性的信息处理可以交给 AI”,然后带着记录去设计功能。
三、功能设计:把意图翻译成 Agent 的“技能”
有了意图,下一步就是把它变成代码能实现的功能。我按照“规划-记忆-工具”的框架来拆。
3.1 工具层:Agent 的手
每个意图背后都是外部工具的调用。我需要这些工具:
工具名称 功能 实现方式
create_event 创建日历事件 Apple Calendar API(macOS)
query_events 查询某时段日程 Apple Calendar API
fetch_emails 获取未读邮件 Gmail API / IMAP
summarize_email 总结邮件内容 调大模型做摘要
save_note 保存一条笔记 本地 SQLite
search_notes 按关键词/标签查笔记 SQLite 全文检索
get_weather 查天气 和风天气 API
query_express 查快递 快递鸟 API
web_search 联网搜索 SearXNG 自建搜索
这些工具都用 MCP Server 包装,统一接口。我的个人助理是一个 MCP Client,模型决定调什么工具时,调 MCP 就行。
3.2 记忆层:Agent 的脑
记忆分三块:
短期记忆:当前对话的上下文,存在内存的消息列表里。我用滑动窗口保留最近 10 轮对话,超出后压缩成摘要。
长期记忆:用户偏好和重要事实,存 SQLite。比如“用户喜欢早上 8 点收到推送”“用户住在杭州”。这类信息在对话开始时自动检索并注入系统提示词。
知识记忆:我的笔记、邮件摘要、日程记录这些,本身也是记忆的一部分。需要语义检索的时候,我做了一个轻量级向量索引(用 pgvector,因为我的 PG 本来就跑在本地 Docker 里)。
3.3 规划层:Agent 的“思考”
我用的规划策略是 ReAct + 意图预判。
收到用户指令后,第一步不是直接让模型思考,而是先用一个小模型做意图分类(这块我直接用本地跑的 Qwen 2.5 0.5B,速度飞快)。分类结果告诉系统“这大概率是创建日程”还是“查天气”还是“记笔记”。
如果是确定性高的单步任务(比如查天气、查快递),直接调对应工具,跳过复杂思考,省 Token。
如果是需要多步或不确定的任务,再上 ReAct 循环,让模型推理、调工具、看结果、再推理。
这个“快慢分流”的设计,让我的助手响应速度提升很明显,Token 也省了一大截。
四、架构设计:让各部分松耦合
我画不了图,直接文字描述:
text
用户输入 → [意图分类] → 快任务直接调工具 → 返回结果
↓ 慢任务
[ReAct 规划循环]
↓
[大模型推理] → 调用工具(MCP)→ 工具返回 → 大模型再推理 → 最终回复
↑
[记忆检索](短/长期记忆、向量检索)
工具层完全通过 MCP 暴露,哪天我把 Apple Calendar 换成 Google Calendar,只要改 MCP Server 里的实现,Agent 本身不用动。
记忆层是单独模块,每次对话开始时,它会根据用户 ID 拉取偏好、最近笔记、未来日程,拼进系统提示词里。
模型层我接入了两个:本地跑的 Qwen 2.5 7B 做意图分类和简单总结,远程的 DeepSeek V4 做复杂推理和内容生成。本地优先,省钱又快速。
五、我踩过的坑,希望你别再踩
坑 1:日历 API 同步延迟
我用 Apple Calendar 的本地数据库查询,发现它并不是实时更新的。有时候手机加了日程,电脑端还没同步过来。后来改成了通过 iCloud API 查询,延迟小了很多。教训:别直接读本地文件,能用标准 API 就用标准 API。
坑 2:邮件摘要太啰嗦
一开始我让大模型总结邮件,它把每一封都写成三句话,10 封邮件 30 句话,看得我头大。后来我改成了“用一句话概括每封邮件的核心内容,按紧急程度排序”,效果立竿见影。约束越具体,输出越可用。
坑 3:记忆系统过度设计
我一开始搞了个特别复杂的知识图谱,意图、实体、关系存了一堆表。结果维护成本巨高,效果还不如一个简单的全文检索加标签。最后全删了,回归 SQLite + pgvector。记忆系统够用就行,别一开始就上重型武器。
坑 4:推送的“早上八点”不准
我设了个定时任务,每天早上八点推送。结果我有时七点五十出门,推送来的时候已经在路上了。后来我加了个地理围栏——连接家里的 Wi-Fi 才触发推送,或者手动说“推送今天的简报”。定时推送加上触发条件,才真正有用。
六、开发心得:个人助理的“护城河”是数据积累
用了一个多月,我最深的感受是:个人助理好不好用,不取决于模型有多强,而取决于它对你有多了解。
它知道我常用的几个标签,能自动给笔记分类;它知道我不看长篇大论,推送都很精炼;它知道我周末一般睡懒觉,周末的推送自动推迟到九点半。
这些“个性化”不是靠模型学出来的,是靠记忆模块一点一点存下来的。你的每一次交互,都在喂养它,让它更懂你。
所以开发个人助理 Agent,最大的工作量不是写代码,是设计好“记忆的沉淀机制”——哪些信息该记、怎么记、怎么检索、怎么遗忘。这个做好了,你的助手会越用越聪明。
七、最后说两句
个人助理 Agent,技术上没有特别难的,都是工程化的组合:对话管理、工具调用、记忆存储、定时任务。一个周末就能出原型。
但做一个“真的有用”的个人助理,靠的是对自身场景的深刻理解,以及持续迭代的耐心。你花一周时间观察自己的日常,比你花一周时间选框架重要十倍。
别等别人出产品,自己搓一个。自己的需求自己最清楚,自己的数据放自己电脑上最安心。
共勉,愿你的 Agent 比你的对象还懂你。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐


所有评论(0)