这周的目标是用 AI 帮你扩展一个已有的 Web 应用——一个"行动项提取器"(Action Item Extractor)。你会接触到 Web 开发的完整链路:前端界面、后端逻辑、数据库存储、API 设计。
如果你没有 Web 开发经验,这部分会帮你建立基本的心智模型。
想象一家餐厅:
- 前端(Frontend)= 餐厅大堂:顾客看到的界面、菜单、桌椅。用户在这里输入信息、点击按钮、查看结果。
- 后端(Backend)= 厨房:接收订单、处理逻辑、准备数据。用户看不到这里发生了什么,但所有"真正的工作"都在这里完成。
- 数据库(Database)= 仓库:存储所有原材料和历史记录。关掉应用再打开,数据还在,就是因为数据库在默默保存。
- API = 服务员:在大堂和厨房之间传递信息的标准流程。前端说"我要一份宫保鸡丁",API 把这个请求翻译成厨房能理解的格式传过去,再把做好的菜端回来。
本周的应用就是这样一个"餐厅":用户在前端输入笔记,后端用 AI 提取出行动项(Action Items),数据库记录所有内容。
一个具体的例子:你输入一段会议记录 "下周三之前完成设计稿,周五前给客户发邮件",后端的 AI 会把它拆解成两个行动项——"完成设计稿(截止周三)"和"给客户发邮件(截止周五)"。
| 概念 | 解释 |
|---|---|
| FastAPI | Python 的 Web 框架(Framework),帮你快速搭建后端 API。类似一个"厨房操作台模板"——基本的台面、水槽、灶台都帮你准备好了,你只需要关注做菜本身。 |
| SQLite | 轻量级数据库,一个文件就是一个完整的数据库。不需要安装额外的数据库软件,学习阶段的最佳选择。 |
| Endpoint(端点) | API 的一个访问地址。比如 /notes 就是一个端点,访问它可以获取所有笔记。类似餐厅的不同窗口——"取餐窗口""点餐窗口"各司其职。 |
| Unit Test(单元测试) | 对代码的某个小功能进行单独检验。类似生产线上的质检环节——每个零件出厂前都要单独测试,而不是等整台机器组装好了才发现某个零件有问题。 |
| Refactor(重构) | 在不改变功能的前提下改善代码结构。就像重新整理你的衣柜——衣服还是那些衣服,但归类更清楚、找起来更方便。 |
assignment.md 中有 5 个 TODO,下面帮你理解每个任务的目标和思路。
这是本周的核心任务。原来的应用用的是基于规则的文本提取(比如"找到包含'截止'这个词的句子"),你要把它改成用 AI 来做。
这其实就是 Week 1 学到的提示技术的实际应用——你需要设计一个好的提示,让 AI 理解"从这段文字里提取行动项"是什么意思。
提示:想想 Few-shot 在这里是不是比 Zero-shot 更靠谱?给 AI 几个"输入笔记 → 输出行动项"的例子,它是不是就更清楚你要什么格式了?
给你的代码写"质检规则",确保代码正确运行。
很多初学者觉得写测试是浪费时间。但你试试这个场景:你改了 TODO 1 的提取逻辑,改完觉得没问题,但其实它在某些边界情况下会出错。如果有测试,跑一下就知道哪里坏了。没有测试?那就得靠手动一条条试,费时费力。
提示:可以让 AI 帮你写测试。给 Cursor 一个提示:"帮我为这个函数写单元测试,覆盖正常情况和边界情况"。
让代码更清晰、更有条理。类似整理杂乱的厨房——锅碗瓢盆都放到该放的地方。
这个任务很适合观察 AI 的代码审美。让 Cursor 重构代码时,注意看它做了哪些改动:是把长函数拆成小函数?是改善了变量命名?还是调整了文件结构?然后想想:你同意这些改动吗?
提示:不要盲目接受 AI 的所有改动。它有时候会"过度重构"——改得确实更"优雅"了,但也更难读了。
这是本周最有意思的部分。前面的 TODO 你都是手动给 AI 指令,一步步引导它。TODO 4 要求你使用 Cursor 的 Agentic 模式——给它一个高层目标,让它自主决定怎么完成。
这是从"手动指挥 AI"到"AI 自主执行"的跨越。你会发现 AI 有时候做得出乎意料的好,有时候又会跑偏。观察它什么时候靠谱、什么时候需要你介入修正,这个观察本身就是最重要的学习。
提示:先从小任务开始试。不要一上来就给一个巨大的目标,看看它能自主处理多大范围的任务。
让 AI 阅读代码并生成说明文档。这个任务相对轻松,但也很实用——因为写文档是大多数开发者最不想做的事情。
提示:生成文档后,认真读一遍。AI 写的文档有时候会有事实错误(比如描述的功能和实际代码不一致),这时候你的审查就很重要了。
从 Week 1 的"学会说话"到 Week 2 的"开始做事"。这周你会发现:给 AI 好的指令(Prompt)直接决定了它写出的代码质量。这就是为什么 Week 1 的基础如此重要。
同时注意 TODO 4 中的"Agentic Mode"——这是 Week 4 深入探讨的主题的预览。Week 4 会讲 AI Agent 的完整架构,到时候你再回头看 TODO 4 的体验,会有全新的理解。
另外,TODO 2(测试)和 TODO 3(重构)看起来是"软件工程基本功",但在 AI 辅助开发的时代它们变得更重要了:AI 写的代码你敢不测试就上线吗?AI 重构的代码你看都不看就接受吗?学会审查 AI 的工作,是这一周隐含的核心技能。
Cursor 是一个内置 AI 功能的代码编辑器,本周的主要工具。
- 下载 Cursor: cursor.com/download
- 安装命令行工具:打开 Cursor,按
Command + Shift + P(Mac)或Ctrl + Shift + P(Windows/Linux),输入Shell Command: Install 'cursor' command,回车。 - 在终端中打开项目:
cd 项目根目录 cursor .
- 激活 conda 环境:
conda activate cs146s
- 从项目根目录启动服务器:
注意:由于目录重组,实际路径可能是
poetry run uvicorn week2.app.main:app --reload
modules.agentic-coding.week2.app.main:app,请根据项目结构调整。 - 打开浏览器访问 http://127.0.0.1:8000/
- 熟悉应用的当前功能:输入笔记,查看提取的行动项
确保 Ollama 已安装并运行(参见 Week 1 环境准备)。
本周有 5 个任务,逐步扩展一个"行动项提取器"(Action Item Extractor)应用。使用 Cursor 的 AI 功能来帮助你完成。
重要:在 Cursor 中完成每个任务时,记录你使用的提示词(Prompt)和 AI 生成的代码。
分析 week2/app/services/extract.py 中的 extract_action_items() 函数(基于规则的提取),然后实现一个新函数 extract_action_items_llm(),使用 Ollama 通过大语言模型来提取行动项。
提示:
- 要生成结构化输出(JSON 格式的字符串数组),参考 Ollama 文档: https://ollama.com/blog/structured-outputs
- 可用模型列表: https://ollama.com/library(建议从小模型开始)
- 下载模型:
ollama run {模型名}
在 week2/tests/test_extract.py 中为 extract_action_items_llm() 编写单元测试。测试应覆盖多种输入:
- 项目列表格式
- 带关键词前缀的行
- 空输入
对后端代码进行重构,重点关注:
- API 契约/Schema 的清晰定义
- 数据库层的整理
- 应用生命周期/配置
- 错误处理
- 将 LLM 提取功能集成为新的 API 端点。更新前端,添加"Extract LLM"按钮,点击后通过新端点触发提取。
- 新增一个端点用于获取所有笔记。更新前端,添加"List Notes"按钮,点击后显示所有笔记。
使用 Cursor 分析代码库,自动生成一个结构清晰的 README.md,至少包含:
- 项目简介
- 安装和运行说明
- API 端点和功能说明
- 测试运行方式
- 理解前端、后端、数据库的分工
- 成功运行了 starter application
- 用 AI 实现了至少一个新功能
- 理解"让 AI 写代码"和"自己写代码"的协作模式
- 写了至少一个测试来验证功能
- 体验了 Agentic Mode 并记录了观察
- 能说出 AI 辅助开发中人类的核心角色是什么