Workshop · 窗口诗人 · 教学版
第 二 阶 段 · 共 建 s p e c
这 20 分钟只回答一个问题——我们要做什么。
绝对不讨论怎么实现。"怎么做"留给 Phase 3。
先 what 后 how 这个习惯,是学生毕业后用任何 agent 都用得上的基本功。
绝对不讨论怎么实现。"怎么做"留给 Phase 3。
先 what 后 how 这个习惯,是学生毕业后用任何 agent 都用得上的基本功。
开阶段前 60 秒检查
- Phase 0 完成,所有学生都能在本地跑 baseline、DSCC 启动正常
- Phase 1 刚讲完,
teacher-demo.html还在大屏上,可以随时按2调出锚点二 - 老师手里有"毕业留念照 + 赠言诗"这个任务的明确表述
- 黑板/白板/共享文档准备好三列:INPUT / OUTPUT / TONE
心态
这一阶段学生会不停地想跳到"怎么做"。老师的主要动作是打断,不是解释。Phase 3 再谈 这句话会说很多次。
A
立规矩
2 min
明确"只谈 what,不谈 how"。把 Phase 1 锚点二拉出来做标杆,让学生有一个可以对比的基线。
1
开场一句话 · 30″
"接下来 20 分钟我们只回答一个问题——我们要做什么。
不讨论怎么实现。谁说'用什么框架'、'写在哪个文件'、'用 canvas 还是 svg'、'接什么 API'——我要停下来。
为什么?因为如果你一开始就想怎么做,你的想象力会被你熟悉的做法绑架。
这 20 分钟的产出是一份 <15 行的 spec,不是代码。"
不讨论怎么实现。谁说'用什么框架'、'写在哪个文件'、'用 canvas 还是 svg'、'接什么 API'——我要停下来。
为什么?因为如果你一开始就想怎么做,你的想象力会被你熟悉的做法绑架。
这 20 分钟的产出是一份 <15 行的 spec,不是代码。"
2
调出锚点二做标杆 · 90″
大屏切回 teacher-demo.html,按 2 跳到锚点二("概念的语言")。念一遍:
清晨薄雾 → 一首诗
午后暴雨 → 另一首
深夜无人 → "窗外无事发生。这本身就是一种事件。"
午后暴雨 → 另一首
深夜无人 → "窗外无事发生。这本身就是一种事件。"
"这是窗口诗人的 spec 的全部。你们今天要做的事,是给'毕业照 + 赠言诗'写出同等强度的 spec。"
教学点:给学生一个可比对的标杆。他们写完 spec 后,要能拿自己的 spec 和这段对比,看哪个更"对"。
B
征集原始愿望
3 min
学生快速喊词,老师只记录,不评论,不过滤。3 分钟填满三列。产出是一片凌乱的词——凌乱是好的。
1
老师在黑板上写
① INPUT
学生看到的是什么?
② OUTPUT
学生拿走的是什么?
③ TONE
整个过程感觉起来像什么?
2
规则
- 每个学生快速喊 1-2 个词 / 短语
- 老师只记录,不评论,不过滤
- 不用举手,喊出来就行
- 3 分钟内填满三列
3
可能的词汇
老师心里有数,不要念出来:
| INPUT | 单人照、合影、毕业装、学士帽、教室、校园、夕阳 |
| OUTPUT | 6-10 行诗、名字、称呼、分享图、朋友圈竖版、赠言、落款 |
| TONE | 告别、不舍、克制、温柔、幽默、怅惘、不要鸡汤 |
C
和 DSCC 共建 spec
10 min
老师把原始词喂给 DSCC 当秘书。DSCC 整理成结构化草稿,老师念给全班听,学生判断——决策权始终在学生手里。
关键设计
老师不是让 DSCC 直接设计 spec。老师先收集学生的原始词,再让 DSCC 做整理员 / 秘书。这保证品味判断依然是学生和老师的事。
1
喂原始词给 DSCC · 2'
我在给学生上 workshop,我们要基于 window-poet 做一个任务:
"毕业照 + 赠言诗"。
班里刚刚喊出了这些词(随机顺序):
INPUT: [念一遍]
OUTPUT: [念一遍]
TONE: [念一遍]
帮我把它们整理成一份 spec。要求:
- spec 是"做什么",不是"怎么做"
- 绝对不要写任何技术实现(不许出现"函数"、"组件"、"API"、"canvas"这种词)
- 15 行以内
- 结构:一个隐喻 + 2-3 个具体示例场景 + 1 句能让人起鸡皮疙瘩的话
- 最后那句话先留空,用 [灵魂句:TODO] 占位
先给一版草稿。
关键约束
① 禁止技术词汇 ② 15 行以内 ③ 灵魂句故意留空——这是给学生的作业,不能让 DSCC 先写。
2
集体编辑 · 6-7'
DSCC 给出草稿。老师在大屏上一行一行念给全班听。念完后问:
"大家听听——哪一条不对?哪一条缺了?哪一条太像套话?"
学生开始改。老师把改动告诉 DSCC:
班上对第 3 条有意见——他们觉得 [xxx] 应该改成 [yyy]。
另外第 5 条太笼统了,要加一个具体的例子。
把这两条改掉,重新给一版。
迭代 2-3 轮。每一轮都念给全班听,让学生判断。
3
老师要拒绝的常见提议
| 学生说 | 老师回应 |
|---|---|
| "加个二维码分享朋友圈" | "这是怎么做,不是做什么。Phase 3 再谈。" |
| "用 TTS 把诗读出来" | "有趣,但这是功能,不是需求。问问自己——我们的学生需要被读出来吗?" |
| "让诗里有押韵" | "押韵是风格约束,可以进。但要具体:是尾韵还是内韵?" |
| "分辨单人还是合影" | "是 input 的一部分。spec 可以写'能处理两种情况',但不要写怎么分辨。" |
教学点
每次拒绝都要说出为什么拒——让学生看到 spec 和 plan 的边界在哪。
4
spec 够好了的三条标准
- 读一遍能记住——念完之后全班能大致复述
- 不含技术词汇——没有函数名、组件名、API 名
- 有一个具体的视觉锚点——类似 "清晨薄雾 → 一首诗" 那种对照
D
灵魂句 + 个人落成
5 min
抢一句有"边界感"的灵魂句——不是祝福、不是煽情、是一个视角。然后每人落成自己的 my-spec.md。
1
抢灵魂句 · 2-3'
"最后一条是这份 spec 的灵魂。
还记得锚点二里那句'窗外无事发生。这本身就是一种事件'吗?
那是一句有边界感的话——它不是祝福、不是煽情、不是解释,它是一个视角。
我们要一句这种强度的话。"
还记得锚点二里那句'窗外无事发生。这本身就是一种事件'吗?
那是一句有边界感的话——它不是祝福、不是煽情、不是解释,它是一个视角。
我们要一句这种强度的话。"
- 30 秒内不许 DSCC 参与
- 学生喊,老师记在黑板上
- 老师自己也可以喊
2
可能出现的好句子(心里有数)
· 写给那个还不知道自己要成为谁的人。
· 这张照片是你第一次以"毕业生"的身份存在。
· 这不是告别。这是告别前的最后一次对视。
· 你在照片里,但这首诗是写给照片外的你的。
· 毕业照是一张你不会再拍的照片。那这首诗就是一句你不会再说的话。
· 这张照片是你第一次以"毕业生"的身份存在。
· 这不是告别。这是告别前的最后一次对视。
· 你在照片里,但这首诗是写给照片外的你的。
· 毕业照是一张你不会再拍的照片。那这首诗就是一句你不会再说的话。
特征:都有边界感——不是祝福,不是煽情,是一个视角。
3
30 秒后 DSCC 可以帮忙
班上没人想出合适的灵魂句。这是我们讨论出的几个不够好的候选:
[把学生的候选念给 DSCC]
不要直接给答案。给我 5 个**方向**——
每个方向用一个名词短语描述(比如"被冻住的时刻"、"没说出的话"),
让学生选一个方向再自己补全。
关键
DSCC 给的是方向,不是句子。句子依然是学生写。
4
选定 + 落成 · 2-3'
全班投票选一句。这句进 spec。老师宣布:
"现在每个人复制大屏上的 spec 到本地
你可以修改任何一条——这是你自己的 spec,不是班级的 spec。
但必须保留一条灵魂句:可以是我们刚选的这句,也可以是你自己刚想出来的另一句。"
my-spec.md。你可以修改任何一条——这是你自己的 spec,不是班级的 spec。
但必须保留一条灵魂句:可以是我们刚选的这句,也可以是你自己刚想出来的另一句。"
▲
常见失败模式
附录
| 失败 | 现象 | 应对 |
|---|---|---|
| 跳到怎么做 | "我想用 canvas 画个相框…" | 直接打断:"Phase 3 再谈。" 不解释,不软化 |
| DSCC 写出平庸的灵魂句 | "每张毕业照都是一首等待被写下的诗" | 当面说"这句太安全了",扔掉,让学生重来 |
| 学生写不出灵魂句 | 盯着屏幕卡住 | 问:"毕业照和别的自拍有什么不一样?" 从差异里找视角 |
| spec 变成功能清单 | 3 行变成 20 行 bullet | 停下来,让学生删掉一半。"做减法比做加法难。" |
| "我看不懂诗意的东西" | 有人直接说不会 | "这节课不要求你懂诗,只要求你能说出你想要什么。" |
Phase 2 的教学回声
直接呼应 Phase 1 的锚点二(概念的语言)。workshop 结束后学生可能记不住"Phase 2"这个标签,但如果他们记得——
在和 agent 开始任何事情之前,先用一句话把灵魂说清楚——这一阶段的目的就达到了。
在和 agent 开始任何事情之前,先用一句话把灵魂说清楚——这一阶段的目的就达到了。
— 第二阶段结束,进入 Phase 3 · 共建 plan —