上个月我第三次忘记跟产品经理的周会,被人家在群里@了三次,丢人丢到家。我当时就想:我天天跟大模型打交道,能不能让 AI 替我记住这些破事儿,到点提醒我,甚至帮我回复消息?

市面上的智能助手一堆,但要么只能设闹钟,要么读不了我的日历,要么数据要上云端——我一个搞后端的,自己的数据凭什么放别人服务器上?

于是我又开始了传统艺能:手搓。花了一个周末搭了个雏形,又用了两周慢慢打磨,现在这个“个人助理 Agent”已经承包了我的日程提醒、邮件摘要、快速信息检索、甚至每天早上的穿衣建议。

今天就把从需求分析到功能设计到踩坑的全过程,给兄弟们抖搂出来。看完你会发现,这玩意儿真没那么玄。

一、先搞清楚:个人助理 Agent 到底该干啥
很多人一上来就想做个贾维斯,什么都能干。结果做着做着就成了一坨屎山——功能一堆,每个都半吊子。

我一开始就给自己定了条铁律:这个 Agent 只服务于我一个人,不做多租户,不做复杂的权限,先解决我最痛的三个场景。

哪三个?

记不住事:会议、待办、临时想法,转头就忘。

信息过载:每天早上几十封邮件,看不完;技术群消息太多,懒得爬楼。

琐事太多:查天气、查快递、记个灵感,每次都要打开好几个 App。

所以我的需求非常明确:一个能跟我对话、能读写我的日历和邮件、能联网查信息的本地化个人助手。关键词:本地化。数据不出我的电脑,所有记忆存本地数据库。

二、需求分析:别一上来就画界面,先把“意图”理清楚
我用的是最土的方法:拿张纸,把我想对它说的话全列出来。大概长这样:

“明天下午三点提醒我跟张总开会”

“我今天的日程是什么”

“帮我总结一下未读邮件”

“外面下雨吗”

“我刚才想到一个 idea,帮我记下来,标签是‘副业’”

“帮我查下顺丰快递 SF123456”

“每天早上八点推送今天的天气和日程”

然后我把这些自然语言整理成意图,就是用户想干嘛。分成了这么几大类:

  1. 日程管理

创建日程(含时间、地点、备注)

查询日程(今天/明天/本周)

取消/修改日程

  1. 邮件助手

未读邮件摘要(按重要性排序)

根据关键词搜索邮件

根据指令草拟回复(但必须我确认后才发送)

  1. 记忆与笔记

记录碎片想法(自动打标签)

按关键词或标签检索笔记

定期回顾(比如每周推送一次“上周的灵感”)

  1. 信息查询

天气查询(实时+预报)

快递查询

简单知识问答(比如“Git 撤销 commit 的命令是什么”)

  1. 定时推送

每天早上推送当日天气+日程+待办

每周末推送本周工作小结(基于日历和笔记自动生成)

这些意图不是拍脑袋定的,是从我真实的生活场景里抠出来的。如果你也想做,建议你先花一周时间记录“我每天哪些重复性的信息处理可以交给 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 比你的对象还懂你。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐