WorkMate 阶段性复盘:从“能跑”到“懂我”
从环境搭建到企业级周报系统落地,再到愿景全面升级——这是我用"人机协作"模式构建 WorkMate 的完整心路历程
一、开篇:从"三篇理论"到"第一个实体功能"
在之前的《引言篇》确立了"干中学"核心理念,《绪论篇》完成了 Spring AI + DeepSeek 环境搭建。但说实话,那时候我心里是没底的——环境跑通了,可距离"真正能给公司用"还差着十万八千里。
过去的这两周,是我把理念转化为工程现实的关键时期。我作为产品经理和架构师负责决策,用 DeepSeek 担任首席架构师助理,再由专门的代码生成 Agent 负责落地实现。
今天,我将完整复盘这次"三体协作"的全过程——不仅是代码层面的实现,更重要的,是这两周工作让我对 WorkMate 的定位产生了全新的认知升级。
二、第一阶段:需求的"变形记"
最初我只想做一个简单的日报 Agent,输入零散记录,输出一段通顺的文字。但真正动笔写第一篇博客时,我意识到一个尴尬的问题:周报不需要"通顺的文字",只认严格的模板——项目必须分开写,必须有总结、下周计划,甚至要有基于近一个月趋势的行业分析。
这个阶段我学到了最重要的一课:如果只是把模板塞进 Prompt,AI 依然会因为"缺乏历史数据"而把行业分析写成泛泛而谈的"正确的废话"**。因此,我决定引入历史周报库(存入MySQL),让 AI 在生成分析时"有据可依"。这看似简单的决策,实际上让 WorkMate 从一个"文本生成器"升级为了一个具备短期记忆能力的智能助理。
*心得:AI Agent 的能力上限,不取决于模型参数,而取决于上下文窗口里塞了什么数据。
三、第二阶段:架构设计的"抽象与具象"
面对"结构化输入"和"历史记忆"两个需求,我画定了三层数据流转架构:
1. 输入层(DTO):不再接收模糊的 String,而是强行按 `projectANotes`、`projectBNotes` 分流。与其让 AI 去猜哪个是项目A,不如让用户贴好标签。
2. 逻辑层(Agent Service):核心是 "历史拉取 + 模板拼装" 。每次请求先拉取近 4 周的数据,拼装成结构化的 System Prompt。
3. 输出层(Entity):强制 AI 返回固定 JSON 结构,用 Jackson 反序列化后直接 `save` 进数据库,实现 "生成即归档" 。
这个阶段我深刻体会到:写 Java CRUD 不难,难的是如何将模糊的业务需求("要好看的分析")转化为精确的工程约束。
四、第三阶段:工程实现
| **P-1** | Maven 依赖管理 | 补充 JPA、MySQL 和 Spring AI DeepSeek 依赖,注明版本兼容性 |
| **P-2** | 配置文件 | 补全 `application.yml` 数据源、连接池和 DeepSeek base-url |
| **P-3** | 数据建模 | `@Entity` 周报实体 + `@Data` 请求/响应 DTO,Lombok 注解 |
| **P-4** | 数据访问层 | `JpaRepository` + 自定义方法 `findTop4ByOrderByWeekStartDateDesc` |
| **P-5** | 核心业务逻辑 | SystemPrompt 强制 JSON 输出 + 历史数据注入 + Markdown 标记清理 + 自动入库 |
| **P-6** | 控制器层 | `@RestController` 统一返回 JSON 格式,异常统一处理 |
五、第四阶段:最终集成
我按照代码生成 Agent 提供的代码,完成了最后的粘合与启动。
测试数据输入(模拟零散记录):
```json
{
"projectANotes": "修复支付超时Bug,优化缓存策略,完成接口文档编写",
"projectBNotes": "设计新架构的ER图,完成技术选型调研",
"otherNotes": "本周三参加了部门技术分享会"
}
```
**数据库中的产出结果**:
不仅输出了分项目的结构化周报,在 `industry_analysis` 字段中,AI 结合我之前存入的两条模拟历史数据,自动生成了如下分析:
> *"结合近一个月 AI 大模型降价趋势,建议项目A的缓存策略考虑接入更廉价的边缘计算节点;项目B的架构选型应优先考虑与现有云原生生态的兼容性。同时,行业内对 RAG 技术落地关注度持续升温,建议团队提前储备向量数据库相关能力。"*
当这条数据写入 MySQL 的瞬间,我知道 WorkMate 项目真正活了。它不再是调着玩的 API,而是一个真正能减轻我每周五下午痛苦的工具。
六、阶段性思考:愿景的全面升级
这两周把周报 Agent 跑通后,我切身体会到了 AI Agent 对工作效率的巨大提升。但与此同时,随着对工作场景的深入理解,我发现最初的规划太保守了。
我之前规划了一个"能根据产品经理设计或竞品生成代码的 Agent",但这两周的工作让我想明白了:我之前的考虑只停留在表面,我真正需要的,不是生成代码这个过程,因为现在市场主流agent完全能够胜任,我之所以不满意并不是他们的agent不好,而是让 通用模型无法基于我的业务,写出最适配的代码,核心是要让Agent理解我的工作内容、产品逻辑和业务上下文。
基于这个认知,我对 WorkMate 的愿景做了全面升级,新增了三个核心 Agent:
1. 业务知识库 Agent(知识向量化)
核心意图:让 Agent 真正"懂"我的业务。
技术路线:
- 将产品需求文档(PRD)、竞品分析报告、团队会议纪要、技术设计文档全部向量化
- 引入 Spring AI 的向量存储(Vector Store),构建专属知识库
- 当周报 Agent 生成分析时,不仅能参考历史周报,还能检索相关知识库中的业务上下文
预期效果:AI 生成的周报不再只是"把零散记录整理通顺",而是能结合产品定位、竞品动态给出**有业务深度的分析和建议。比如:"考虑到我们产品的核心差异化是 X 功能,建议下周在项目A中优先推进 Y 模块的落地"——这种级别的洞察,只有"懂业务"的 AI 才能给出。
2. 行业资讯小助理
功能定位:每天自动爬取行业和技术前沿的资讯动态。
触发机制:每天早晨定时执行,聚合来自多来源的行业和技术高质量前沿内容咨询。
集成方式:生成每日资讯摘要后,存入知识库或单独的资讯表,作为后续行业分析的实时数据源。这样每周的 `industry_analysis` 就不再依赖"近一个月的陈旧历史",而是融合了最新的行业动态。
3. 招聘情报与智能投递 Agent
功能定位:每天爬取若干招聘网站的岗位信息,并根据岗位要求与我的简历匹配度,自主决定是否投递。
技术挑战:
爬取层:应对不同招聘网站的反爬策略
匹配层:用 Embedding 计算简历与 JD 的语义相似度,阈值达标才触发投递
沟通层:匹配成功后,由 AI 自动生成差异化求职信,并模拟与 HR 的初步沟通
价值思考:这个 Agent 表面上看起来和"工作助理"关系不大,但我认为它代表了一个重要方向——Agent 不仅要辅助人的工作,还要在人的职业发展路径上提供主动服务。它的本质是一个"职业发展助理"。
七、新的整体架构图
经过这次愿景升级,WorkMate 的架构从"三 Agent + 一路由器"演变为:
┌─────────────────────────────────────────────────────────────┐
│ WorkMate 多智能体系统 │
├─────────────────────────────────────────────────────────────┤
│ 输入层 │
│ ├── 用户自然语言指令 │
│ ├── 工作记录(零散笔记/会议纪要) │
│ └── 外部数据(资讯爬取 / 招聘信息抓取) │
├─────────────────────────────────────────────────────────────┤
│ 智能路由器(Intent Router) │
│ └── 意图识别 → 路由到对应 Agent │
├─────────────────────────────────────────────────────────────┤
│ Agent 层 │
│ ├── 周报/日报 Agent(已实现 ✓) │
│ │ └── 结构化输出 + 历史记忆 + 行业分析 │
│ ├── 业务知识 Agent(规划中) │
│ │ └── 知识向量化 + RAG 检索 + 业务上下文理解 │
│ ├── 资讯小助理(规划中) │
│ │ └── 定时爬取 + 摘要生成 + 知识库注入 │
│ └── 招聘投递 Agent(规划中) │
│ └── 岗位匹配 + 智能投递 + 自动沟通 │
├─────────────────────────────────────────────────────────────┤
│ 知识层 │
│ ├── 向量数据库(业务文档 / PRD / 竞品报告) │
│ ├── 关系数据库(历史周报 / 资讯归档 / 招聘记录) │
│ └── 用户画像(简历 / 技能栈 / 职业偏好) │
├─────────────────────────────────────────────────────────────┤
│ 基础设施层 │
│ ├── Spring AI + DeepSeek API │
│ ├── MySQL + Vector Store │
│ └── 定时任务调度(xxl-job / @Scheduled) │
└─────────────────────────────────────────────────────────────┘
八、复盘:关于"干中学"与"人机协作"的几点思考
1. 不要神化 AI 代码生成
代码生成 Agent 擅长的是"实现",而不是"决策"。如果没有我在前期设计的 DTO 分流逻辑和历史拉取策略,它生成再漂亮的代码也只是一堆无用的字符串处理。
正确的分工是:人做决策,AI 做执行。
2. Prompt 是新的编程语言
在这次实践中,我写给 AI 的 SystemPrompt(角色设定、输出格式约束)和写给代码生成 Agent 的任务提示词,其重要性远超 Java 语法本身。
Prompt 工程不是"花哨的话术",而是结构化、可复用的约束语言。
3. 反馈周期决定成败
如果我是自己一行行查文档写 JPA 配置,可能卡在 MySQL 权限上又要耗掉一个周末。但通过 Agent 直接生成可运行的代码,我将反馈周期压缩到了分钟级。
4. 认知升级:从"功能堆砌"到"系统思考"
刚起步时,我只想着"实现几个 Agent",把功能做出来。但这两周跑通周报 Agent 后,我意识到:
单个 Agent 的价值是有限的,真正能产生质变的,是让 Agent 们共享知识层——一个懂业务的 Agent,胜过十个只会调 API 的 Agent。
这也是为什么我决定把"知识向量化"放到最高优先级。周报 Agent 是 WorkMate 的"手",业务知识 Agent 才是 WorkMate 的"大脑"。
九、下一步工程计划
| P0 | 引入向量数据库 | 1天 | 选型 Milvus / PGVector / Redis Vector,完成 Spring AI 集成 |
| P0 | 业务文档导入 | 1天 | 将 PRD、竞品报告等文本分块、Embedding、入库 |
| P1 | 升级周报 Agent | 1天 | 在 Prompt 中注入检索到的相关知识,验证效果 |
| P1 | 资讯小助理 MVP | 2天 | 先爬 1-2 个源,存入数据库,定时触发 |
完成招聘投递 Agent 的 MVP(先做匹配,投递留手工确认)
智能路由器接入所有 Agent
提供 Web 界面或企业微信机器人入口
十、结语
这两周的经历让我对"AI 辅助编程"有了全新的理解。
不要只把 AI 当成问答工具,试着把它当成团队的"初级开发"来管理——你只需要当好那个懂业务、懂架构的"技术负责人"即可。**
而 WorkMate 这个项目,也在不知不觉中从一个"练手项目"变成了一个真正能改变我工作方式的工具。更重要的是,随着知识向量库和三个新 Agent 的加入,它的想象空间正在变得越来越大。
现在,我的每日工作流正在被自己亲手构建的 Agent 系统重塑——这种感觉,比单纯学会一个框架要爽得多。
更多推荐





所有评论(0)