开始之前:小明又来了
你好,我是吴老师。
小明又来了。 这次他的麻烦听起来最平常:
请你扮演一个四年级的小学生,名字叫小明。
你有一个麻烦:每天要记的事情太多了 —— 作业、要带的东西、
妈妈让买的东西,老是漏掉一两件。写在纸上又懒得翻。
(别的你也不知道 —— 你就是个普通小学生,没想过怎么解决。)
规则:
1. 你说话要像一个真的四年级学生:句子短,想到什么说什么
2. 一次只说一点,别一口气把情况全说完了 —— 等对方问你
3. 对方问你什么,你就老实回答什么
4. 你不知道"该做什么工具",你只知道自己有这个麻烦
现在开始:先打个招呼,然后说说你的麻烦。
说完就停下来,等对方提问。
一、这次的坑,最不容易发现
前面几个麻烦都比较具体:忘带书、背单词、坐不住。
"事情太多老漏掉" 就不一样了 —— 它听着就像"记下来就行了"。
⚠️ 但你已经知道:他试过"写在纸上"了,还是漏。
所以问题不在"没记下来"。
二、像侦探一样问他
| 该问 | 想挖出什么 |
|---|---|
| "你一般记在哪儿?" | 是记了不看,还是压根没记? |
| ⭐ "你什么时候会去看它?" | —— 这一问最关键 |
| "最近漏掉的是哪一件?当时怎么回事?" | 一个真实的故事,比什么总结都有用 |
| "写完了你会划掉吗?" | 他是"做完就扔",还是想看到自己做完? |
| ❌ 别问 | 为什么 |
|---|---|
| "你是不是要个记事本?" | 他已经有纸和本子了,还是漏 |
| "你要什么功能?" | 他要是知道,就不用找你了 |
⭐ 第二问是这一课的核心。
小明说"写下来又懒得翻" —— "懒得翻"就是答案。
他不是缺一个本子。他是缺一个**"随手就能看一眼"的东西。 本子在书包里,翻一次要好几步;而板子就摆在桌上,抬眼就是**。
三、你到底问出了什么
| 要回答 | 从小明的话里 |
|---|---|
| 他真正的麻烦 | 不是"没地方记",是记了之后懒得回头翻 |
| 什么时候用 | 写作业前看一眼;做完一件顺手划掉 |
| 怎么算做成了 | 一周下来,漏掉的事情从"两三件"变成"没有" |
⭐ 还有一件事值得注意: 小明提到"写完了划掉"的语气, 明显比"记下来"更来劲。
人喜欢看到自己做完。 这一条会影响你待会儿怎么设计 —— 记住它。
本课一句话:任务清单 = 用一组"格子"存任务 + 用"状态"记做没做 + 用"规则"排序打勾 + 用 TF 卡存住。它把"脑子里乱成一团的事",变成"一条条清清楚楚能勾的事"。核心是"数据 + 状态 + 规则",AI 只帮忙整理。
四、先让板子当回"任务管家"
先别听我讲,让板子演示一遍。
请使用课程的 esp32s3-touchboard-hardware-dev Skill,
烧录本课配套程序 assets/codes/demo01_todo:
板子上列出一串任务(比如:背单词、做数学、扫地),每条前面有个方框,
你点一下方框它就打勾(标记"做完了")。顶部有"完成率"进度条,
底部显示"还剩几条没做"。按 BOOT 能新增一条任务。
烧录前把中文字库复制好(见 README)。烧录后告诉我:
你勾掉一条,进度条怎么变?没做的还剩几条?
几秒后,板子列出一串任务,前面有方框。你点"背单词"的方框,它就打勾,顶部的"完成率"进度条往前走一点,底部"还剩 2 条"变"还剩 1 条"。
五、拆开看:任务清单的"三件套"
1. 数据:一条任务=一个"格"
板子内存里有一张"任务表",每一条是一个格子(结构体),记三样东西:
任务 = {
名称: "背单词" // 干什么
截止分钟: 30 // 啥时候前要完成(比如今晚8点=540)
完成: false // 做完了吗(true/false)
}
这跟第 34 课课程表、第 36 课词表是同一类——一条一条的数据,装进一张表。
2. 状态:做没做,用一个"对/错"表示
做没做完,就用一个布尔值(完成: true/false)表示。这就是"状态"。
- 你打勾 →
完成 = true - 这条就"做完了",从待办里"消失"(或被划掉)
完成率 = 做完的条数 ÷ 总条数。这是从"一堆 完成 状态"里算出来的一个数。
3. 规则:怎么排序、怎么提示
任务清单的"聪明",在规则里:
- 排序:按"截止时间"排,最急的排最上;
- 打勾:点一下方框 → 改
完成状态 → 重排、重画; - 提醒(可选):快到截止时间 → 高亮或提示。
六、任务清单和课程表、背单词是一家的
你会发现,任务清单的本质和前面学的一模一样:
| 工具 | 数据 | 状态(记"怎么样") | 规则 |
|---|---|---|---|
| 课程表(第34课) | 课表数组 | 现在是第几节 | 到点高亮 |
| 背单词(第36课) | 词表 | 掌握度 | 优先考不会的 |
| 任务清单(本课) | 任务数组 | 完成/未完成 | 打勾、排序、提示 |
为什么都长一个样? 因为它们都在做同一件事:把真实世界的东西,抽象成"数据 + 状态 + 规则",让板子去查、去比、去显示。 数据结构变了,工具用途就变了。
七、这次多了"断电不忘"——用 TF 卡存住
前面有没有注意到一个坑?就是假如你把任务存进芯片内存(RAM),一断电就全没了——你辛苦列的 10 条任务,拔电烧录就清空。
要"断电不忘",得把任务写进 TF 卡(第 14 课):
想记住 → 写进 TF 卡(如 save.txt)
记不住 → 只存内存(断电即失)
- 保存:把每一条任务(名称 + 截止 + 完成)写进 TF 卡的
todo.txt; - 读回:开机时读
todo.txt,把任务重新装回内存; - 效果:你今天列的任务,明天开机还在——断点续用。
对比:库存内存 = 断电丢了;存 TF 卡 = 断电还在。任务清单这种"要长期用"的东西,就得存在"能长期存"的地方。
八、让 AI 帮你"拆任务"(提示词)
这是本课一个 AI 增强点。很多时候你只有一个模糊目标,比如"准备演讲"。它太大、没法一步做完。AI 能帮你把它拆成几个能勾掉的小步骤。
怎么让 AI 拆得好?又是提示词——你要说清楚"拆成什么样子"。
版本 A:含糊
帮我拆一下"准备演讲"这个任务。
AI 可能回:"先写稿、再练习、再上台。"——太笼统,还是不知道第一步干嘛。
版本 B:规定拆成"能勾掉的小步骤"
system 提示词:你是学生的任务拆解助手。
请把一个模糊目标拆成 3-6 个具体、可勾掉的小步骤,
每个步骤用一句简短的话说清楚,按先后编号。
用简体中文,不要多余解释。
AI 可能回:"1. 确定演讲主题 2. 列出 3 个要点 3. 写开场白 4. 写正文 5. 用手机读一遍计时 6. 修改超时部分。"——每一条都能单独完成、能勾掉。
| AI 拆得好的关键 | 为什么 |
|---|---|
| 告诉它"拆成可勾掉的小步" | 才不会给出"好好练习"这种没法打钩的 |
| 规定数量(3-6 条) | 不会拆得太碎或太少 |
| 规定格式(按先后编号) | 才好按顺序做 |
| 规定语言(简体中文、简洁) | 才行清楚、不多说 |
这一课你想练的:提示词不仅能"让 AI 说话",还能"让 AI 帮你把一件事拆解成几步"。 而拆得够不够"可勾掉",取决于你有没有把"可勾掉"这个要求说给 AI 听。
九、⭐ 交付给小明
装好之后,回头告诉他:
我做好了一个工具。它长这样:
____(把屏幕上的样子说给他听)
不用联网,摆在桌上抬眼就能看;做完的事会划掉,但不会消失。
你觉得能帮上你吗?
认真听他怎么说:
小明:嗯……挺好的。但是我要是忘了把它打开呢? 小明:还有,我怎么知道哪件事比较急?
⭐ 第一句最厉害。 它戳中了一个所有工具都会遇到的事:工具再好,忘了打开就等于没有。 这不是做工具能解决的 —— 得靠习惯,或者让它主动来找你。
第二句指向"排序规则"(第五节那个"三件套"里的第三件)。 改完再给他看,来回几轮才真的能用。
十、改一个条件,看它怎么变
| 我想改 | 该动哪部分 | 我预测会发生什么 |
|---|---|---|
| 任务改成"按优先级排序" | 排序规则加"优先级"字段 | 更急的排最上 |
| 完成率满 100% 就显示"全做完🎉" | 完成率判断 | 全勾完出现庆祝 |
| 到截止时间高亮 | 加一个"快到截止"判断 | 快到的变红 |
| 只显示"没做完"的任务 | 显示规则过滤 | 做完的自动隐藏 |
| 让 AI 更细致地拆 | 拆解提示词 | 步骤更具体 |
先预测,再验证。 你会发现:改的都是"数据字段"和"规则",任务清单"存任务+打勾+排序"的底子不变。
十一、如果它没按你想的来
| 现象 | 先查什么 |
|---|---|
| 打勾没反应 | 触摸区域判断对吗?方框的坐标范围写对了吗? |
| 断电后任务没了 | 存了内存——想断电不忘,要写进 TF 卡 |
| TF 卡读不到 | SD_MMC 引脚 setPins(38,40,39,41,48,47) 对吗?卡插好了吗? |
| 任务顺序不对 | 排序规则按什么排?截止时间读对了吗? |
| AI 拆得不像"步骤" | 提示词没写"可勾掉的小步骤"——补上 |
记住:任务清单最该注意的,是"断电忘不忘"——要长期用,就得存 TF 卡。
十二、下课前,把"任务清单"讲给我听
先别看 AI 的回答,自己说一遍:
- 一条任务"格子"里存了哪几样东西?哪一个是"状态"?
- "完成率"是怎么算出来的?它从哪一堆状态里来?
- 任务清单和课程表、背单词,本质有什么相同?(都在做"数据+状态+规则")
- 为什么任务存内存会断电丢?想断电不忘该怎么办?
- 让 AI 拆"准备演讲",你需要在提示词里写清楚什么?为什么"可勾掉"很重要?
- 这个项目哪些是本地规则、哪些是 AI 辅助?
今天请留下三样东西:你列的一个任务清单(存进 TF 卡)、你勾掉的一条任务、以及一句"让 AI 拆任务要在提示词里写什么"。
十三、最后留给你:会"管任务",就会"管一切"
这一课你把"数据+状态+规则"这个套路用到了"管理"上。而且你发现:
管理任务 = 把模糊的"我要做的事",变成一条条"具体的、能勾掉的、能排序的、能存住的"条目。
| 你学到的 | 应用 |
|---|---|
| 数据 + 状态 + 规则 | 课程表、词表、任务清单、宠物都是这个套路 |
| 存 TF 卡中断电不忘 | 任务、进度、记录都能长期保存 |
| AI 拆解提示词 | 把大目标拆成小步骤 |
只要你学会了"把一件事抽象成数据 + 状态 + 规则",你就能让板子帮你管很多东西。 下一课,我们再加一种能力——让板子当"翻译官",帮你把一句话从中文变英文、再读出来。
教师备课备注(不作为课堂口播)
课程定位
- ⭐ 2026-09-24 改版:本课加了「产品经理」范式(连同 34 / 36 / 37 / 47)。
结构:小明来求助 → 采访 → 挖真需求 → 做 → 交付 → 听反馈。
- 本课的真需求反差:他嘴上说"事情太多老漏掉"(听着像"记下来就行"), 但他已经试过写在纸上了还是漏 —— 真需求是"记了懒得回头翻"。
- ⚠️ 必须回接技术点:正因为他要"随手能看" → 决定了板子摆在桌上、不用联网; 他提到"划掉"时更来劲 → 决定了做完要划掉而不是消失(看得见才有动力)。
- 交付时小明说"我要是忘了打开它呢" —— 有意设计的: 点破"工具再好,忘了打开等于没有",这不是做工具能解决的(得靠习惯或主动提醒)。
- 第九章「AI 生活」第 4 课。核心是"数据 + 状态 + 规则"的复用(和课程表/背单词同源),加上"断电不忘"的 TF 卡持久化,以及"AI 拆解提示词"(把一个模糊目标拆成可勾掉的小步骤)。落点是"管理 = 把模糊的变成具体的、能勾的、能存的条目"。
- 技术与原理并重、提示词训练并重:本地部分讲"数据+状态+规则"和"内存 vs TF 卡";AI 部分讲"拆解提示词"(规定数量/格式/可勾掉)。
- 与第 34 课(课程表)、第 36 课(背单词)强呼应:三者都是"数据+状态+规则"。与第 14 课(TF 卡断电不忘)直接衔接。
本课新增的核心知识点
- 任务 = 结构体(名称/截止/完成状态)。完成用布尔值(true/false)。
- 完成率 = 完成数 ÷ 总数,从一堆状态算出来。
- 内存 vs TF 卡:任务存内存断电丢,存 TF 卡断电还在;任务清单要长期用,必须存 SD。(第 14 课)
- AI 拆解提示词:把一个模糊目标拆成 3-6 个"具体、可勾掉"的小步骤。关键是"可勾掉"(能单独完成)+ 数量 + 格式 + 语言。
- "数据+状态+规则"复用:课程表/词表/任务清单同一套路。
必须避免的错误
- 不要说"板子很聪明,会安排任务"。它是按你定义的规则排序、打勾;AI 只帮忙拆解,不替你做决定。
- 不要把"内存 vs TF 卡"讲成大段存储技术——重点让学生理解"断电丢 / 断电还在"的概念和要不要存卡。
- AI 拆解不要让它"决定任务内容"——AI 只把已有的模糊目标拆成步骤,学生自己定目标。
- 密钥/云 API 本课只有"拆解"可选,若走板子联网接火山,密钥安全同前课;纯本地部分不需要密钥。
执行约束
- FQBN:
esp32:esp32:esp32s3:FlashSize=16M,PartitionScheme=app3M_fat9M_16MB,CDCOnBoot=cdc,PSRAM=opi - 依赖:
TFT_eSPI、FT6336、SD_MMC、FS(存任务);font/ChineseFont16.h。 - SD_MMC 6 线
setPins(38,40,39,41,48,47)(第 14 课);任务写入todo.txt。 - 中文用
drawUtf8(与第 34 课一致 util);本课主体不需要云密钥(本地数据+规则)。
课堂执行要点
- 顺序建议:demo01(现象:列出任务、打勾、进度条)→ 三件套拆解 → 和课程表/背单词对照 → TF 卡断电不忘(演示拔电重开)→ AI 拆解提示词实验 → 改一个条件 → 下课前复述。
- 灵魂追问 ①:"任务清单和课程表、背单词,本质一样吗?"——引出"数据+状态+规则"的复用。
- 灵魂追问 ②:"断电后任务还在吗?想要它在那怎么办?"——引出"内存 vs TF 卡"。
- 观察表先预测后实测。
- 演示"断电不忘":学生列任务 → 拔电 → 重新开 → 看任务是否还在(存 SD 才有)。
待办与遗留
demo01_todo源码已写(任务结构体 + 打勾 + TF 卡存取),尚未实板验证。吴老师实板验收重点:① 打勾触摸区域;② 完成率进度条;③ TF 卡读/写/断电不忘;④ 中文字库渲染。- AI 拆解(若走板子联网)需接火山 API,作为拓展;课堂也用"你电脑上的 AI 助手"做拆解示例即可。
- 任务"截止时间"用
millis相对计时还是真实时间,由教师定(演示用前者)。