从"存条笔记"到 48 项能力的 AI 生活助手——每一次迭代的真实记录。
最大的一次架构重构。Karvis(个人版/OneDrive)和 KarvisForAll(多用户版/本地存储)合并为统一代码库。
核心思路:引入 UserContext 层,每个用户有独立的配置、存储路径、Skill 开关。一套代码 + 用户级配置 = 个性化体验。这就是 KarvisForYou 的起点。
每个 Skill 文件通过 装饰器 @register_skill 自动声明自己的名称、描述、触发条件。skill_loader.py 自动扫描 skills/ 目录,动态加载。
新增一个能力不再需要改 brain.py 的路由表——写好 Skill 文件丢进去就行。为 V12 多用户按需加载 Skill 做好了准备。
搭建了 Web 管理后台(/web/*),可以看日志、查状态、管理用户。KarvisForAll 的监控中心跑在 :9000 端口,实时查看每个 Agent 的运行情况。
从"盲人摸象"到"一目了然"。这个管理端后来成了 V12 多用户管理的基础。
完整的到期提醒 + 循环提醒体系。"每天早上提醒我吃药"、"每周五下午提醒我写周报"——纯规则扫描,不消耗 LLM 调用。
设计决策 DD-007:todo_remind 不走 LLM,用规则引擎直接判断。快、稳、省。
这是最让我兴奋的一个版本。Karvis 从"你问它才答"变成了"它会主动来找你"。
意图队列 + 8 条规则引擎 + 节奏自学习。早上发晨报(天气+待办+时间胶囊),晚上引导打卡,发现你沉默 4 小时过来问一句。五层防骚扰:信号驱动、凌晨免扰、频率限制、刚聊完不发、一天最多 3 条。
Quick-Notes 写入改为异步 + Memory 读取引入 SWR(stale-while-revalidate)缓存策略。用户发消息后,先回复再保存(DD-010),体感从"等一会儿"变成"几乎秒回"。
之前的 Skill 都是预定义的——22 个菜单,用户只能在里面选。但总有些需求不在菜单里。
dynamic Skill 让 Karvis 突破了预定义限制。它会分析用户的意图,如果没有匹配的 Skill,就用 LLM 动态生成处理方案。"帮我把这段话翻译成英文然后存进笔记"——这种组合需求,现在也能处理了。
4 个全新的 finance Skill:iCost 账单导入、收支查询、资产快照、财务月报。JSON 格式存储,支持多维度统计。
"这个月花了多少钱?"——直接在微信里问就行,它会从 iCost 的导出数据里帮你算。
之前所有任务都用同一个模型。现在引入三层调度:Flash(Qwen,秒回)、Main(DeepSeek V3,日常)、Think(DeepSeek 深度推理,复杂分析)。
23 个 Prompt 常量统一收入 prompts.py,告别 Prompt 散落各处的混乱。设计决策从 DD-001 累积到了 DD-020。
这是最疯狂的两天。Vibecoding 的效率在这里展现得淋漓尽致——平均每天 3-4 个新 Skill。
V2:分类归档、读书笔记、影视笔记、情绪日记、每日打卡。
V3:待办管理、习惯教练、决策复盘、语音日记、深潜分析、每日复盘、周回顾。
从一个"能存笔记的聊天机器人"变成了一个有 22 个技能模块的 AI Agent。
最小可用版本。企微收消息 → 腾讯云函数处理 → Qwen 回复 → OneDrive 存 Quick-Notes。
第一次在微信里发一句话,看到它被自动记录到 Obsidian 笔记库里——那一刻的感觉就像看到自己写的第一行代码跑通了(虽然代码不是我写的)。
那天晚上我就知道,这个东西会变成我离不开的工具。
从 SCF Serverless 迁移到腾讯云 Lighthouse + Docker。告别每次冷启动 ~7 秒的等待,基础开销降到 0。
Karvis 和 KarvisForAll 并排运行在同一台服务器上,各自独立 Docker 容器。这个架构一直稳定运行到现在。
每一个"为什么这样做"都被记录了下来。不只是代码在迭代,决策逻辑也在。
完整的 26 项设计决策记录在项目的 docs/设计决策.md 中。