五个技能各管一段:素材分析、大纲、写作、润色、配图。串起来才算一条工作流。 串起来最容易崩的地方不是某一步做得差,是上一步的产出下一步读不懂。 实测三份初稿只有一份能被下游解析,改的是上游的格式要求,通过率从一份变三份。
前三篇备好了零件:拆开的清洗技能、三种排法、派活的分身。这一篇把它们装成一条链。 第 4 章的会议纪要技能在这里复用:它那个校验器就是「能被机器判对错」的样板。 第 6 章会把这条链的做法上升成流程:需求、设计、实现、测试、上线。
一、五个技能各管一段
一条写作工作流拆成五段,每段一个技能,每段都有明确的输入和输出。
| 技能 | 输入到输出 | 产出形状 |
|---|---|---|
| analyze | 素材到结论 | 一句一句的结论 |
| outline | 结论到大纲 | 三节标题加要点 |
| write | 大纲到初稿 | 每节一段正文 |
| polish | 初稿到定稿 | 改过的正文 |
| illustrate | 定稿到配图 | 图意、图型、图注 |
五段里最容易被低估的是「产出形状」这一列。它才是串起来的关键。 每一段的产出都要被下一段当输入读。形状不匹配,两段各自都对,合起来就是错的。
二、接口比内容更重要
拿三份初稿去撞下游的解析器。解析器只认一种形状:二级标题、空行、普通段落。 三份初稿分别写成:带一句前言、规规矩矩、用列表。 结果只有一份能过。另外两份不是写错了,是形状不对。 带前言那份,第一行不是标题,解析器直接判失败;用列表那份,正文里全是短横线,判失败。 这就是接口问题:写的人觉得自己写得挺好,读的人读不进来。 接口问题有个特点:单看每一步都没毛病,只有串起来才暴露。所以它必须在串的时候测。
三、三个接口,哪个最脆
| 接口 | 哪里对不上 | 后果 |
|---|---|---|
| analyze 到 outline | 结论是一句话列表,大纲要标题 | 要人再整理一遍 |
| outline 到 write | 大纲给三条要点,正文写成三点列举 | 下面接不上 |
| write 到 polish | 润色要求段落,拿到的是列表 | 直接崩 |
三个接口里最脆的是 write 到 polish,因为它要求「段落」这个结构。 越靠后的接口越脆,因为它的输入要求越具体。润色要改句子,句子得先存在。 一条经验:接口越靠后,上游的格式要求就要写得越死。
四、修法:把形状定死在上游
崩了之后有两个方向可以改:让下游更宽容,或者让上游更规矩。 这次改的是上游:在 writer 技能的正文里加一段「输出格式必须照抄」,给一个示例。 改完再测,三份全过。改动只有一处,在一个技能里。 为什么不改下游?因为下游越宽容,上游就越随便,最后整条链没有一处是准的。 宽容还有个隐蔽成本:它会把「形状不对」变成「形状各异」,到第五步合并的时候一起爆。 所以流水线的规矩是:接口处只允许一种形状,且由上游负责。
五、一条流水线的体检表
| 查哪里 | 查什么 | 不行怎么办 |
|---|---|---|
| 每两步之间 | 上一步产出有没有写清形状 | 没有就补一段格式要求 |
| 每一步 | 产出能不能被机器判对错 | 不能就补一个校验器 |
| 整条链 | 崩了能不能定位到某一步 | 不能就把中间产物存下来 |
第二条是第 4 章那个校验器的复用:能被机器判的步骤,才配放进流水线。 第三条最实用:中间产物一定要存。不存的话,链一崩你只知道「结果不对」,不知道错在哪一步。 存中间产物还有个副作用:能拿旧产物重跑下游,改一个技能不用把整条链重跑一遍。 五段里最先该补校验器的是 write 和 polish,因为它们夹在中间,坏了上下游都受影响。
六、动手 Demo:五步串起来,崩在第二步和第三步的接口上
这一段拿三份形状不同的初稿去撞下游的解析器,看它能过几份;再改上游的格式要求,重撞一次。 解析器只认「二级标题 + 空行 + 普通段落」这一种形状,其余一律判失败。
def _parse(text):
lines = text.strip().split('\n')
if not lines[0].startswith('## '): return None, '第一行不是二级标题'
if lines[1].strip() != '': return None, '标题下面没有空行'
body = [x for x in lines[2:] if x.strip()]
if any(x.startswith('- ') for x in body): return None, '正文里有列表'
return body[0][:16], '通过'
实跑输出:
--------------------------------------------------------------------
五步串起来,崩在第二步和第三步的接口上
--------------------------------------------------------------------
① 五个技能各管一段
--------------------------------------------------------------------
| 技能 | 输入到输出 | 产出形状 |
|---|---|---|
| analyze | 素材 → 结论 | 一句一句的结论 |
| outline | 结论 → 大纲 | 三节标题加要点 |
| write | 大纲 → 初稿 | 每节一段正文 |
| polish | 初稿 → 定稿 | 改过的正文 |
| illustrate | 定稿 → 配图 | 图意、图型、图注 |
串起来的关键不是每一步做得好,是上一步的产出下一步读得懂。
② 三份初稿,三种形状
--------------------------------------------------------------------
| 初稿 | 解析出的首段 | 结果 |
|---|---|---|
| 写法一 | — | 第一行不是二级标题 |
| 写法二 | 「先说结论。读者没耐心,你铺垫三段」 | 通过 |
| 写法三 | — | 正文里有列表,不是段落 |
三份里只过了一份。另外两份不是写错了,是形状不对。
! 写法一带了句前言,写法三用了列表。下游解析器只认一种形状。
③ 崩在哪:第二条和第三条的接口
--------------------------------------------------------------------
| 接口 | 哪里对不上 | 后果 |
|---|---|---|
| analyze → outline | 结论是一句话列表,大纲要标题 | 要人再整理一遍 |
| outline → write | 大纲给了三条要点,正文写成了三点列举 | 下面接不上 |
| write → polish | 润色要求段落,拿到的是列表 | 直接崩 |
三个接口里最脆的是 write → polish,因为它要求「段落」这个结构。
④ 修法:在 writer 技能里把形状定死
--------------------------------------------------------------------
改的不是解析器,是 writer 技能的正文——加一段「输出格式必须照抄」。
| 初稿(改后) | 解析出的首段 | 结果 |
|---|---|---|
| 写法一 | 「先说结论。读者没耐心。」 | 通过 |
| 写法二 | 「先说结论。读者没耐心,你铺垫三段」 | 通过 |
| 写法三 | 「先说结论。读者没耐心。」 | 通过 |
从 1 份过变成 3 份过。改的是上游技能的格式要求,不是下游的宽容度。
! 反过来说也成立:下游越宽容,上游就越随便,最后整条链没有一处是准的。
⑤ 一条流水线的体检表
--------------------------------------------------------------------
| 查哪里 | 查什么 | 不行怎么办 |
|---|---|---|
| 每两步之间 | 上一步产出有没有写清形状 | 没有就补一段格式要求 |
| 每一步 | 产出能不能被机器判对错 | 不能就补一个校验器 |
| 整条链 | 崩了能不能定位到某一步 | 不能就把中间产物存下来 |
第二条是 4.2 那个校验器的复用:能被机器判的步骤,才配放进流水线。
! 中间产物一定要存。不存的话,链一崩你只知道「结果不对」,不知道错在哪一步。
第一段把五个技能摆成一条链,重点是最后一列「产出形状」——它才是串起来的关键。 第二段三份初稿撞解析器,只过了一份。另外两份不是写错了,是形状不对。 第三段列三个接口哪最脆:write 到 polish,因为它要求「段落」这个结构。越靠后越脆。 第四段改上游:在 writer 技能里加一段格式要求,三份全过。 为什么改上游不改下游——下游越宽容,上游就越随便,最后整条链没有一处是准的。 第五段是体检表,第三条最实用:中间产物一定要存,不然链一崩你不知道错在哪一步。
30 秒实验
- 把你现有工作流的每两步之间画一条线,在线上写「传过去的是什么形状」。写不出来的那处就是坑。
- 挑一个没有校验器的中间步骤,给它写五条检查项。写不出来的说明这步本来就没说清。
- 把你上一条链的中间产物存一份下来。下次改某个技能,直接拿旧产物重跑下游。
常见误区
- 只测单步不测串联。接口问题单看每一步都没毛病,只有串起来才暴露。
- 让下游更宽容。下游越宽容上游越随便,最后整条链没有一处是准的。 接口处只允许一种形状,且由上游负责。
- 不存中间产物。链一崩你只知道「结果不对」,不知道错在哪一步,只能从头重跑。
自测三问(点开对答案)
1. 流水线最容易崩在哪里? —— 接口。不是某一步做得差,是上一步的产出下一步读不懂。 2. 格式对不上,为什么改上游不改下游? —— 下游越宽容上游就越随便,最后整条链没有一处是准的。接口处只允许一种形状,由上游负责。 3. 为什么中间产物一定要存? —— 不存就定位不到错在哪一步;存了还能拿旧产物重跑下游,改一个技能不用重跑整条链。下一篇讲这条链是怎么长出来的:四周、五个技能、三个花钱买来的坑。
- ☐ (本篇完,下一篇 5.5 心得:从手忙脚乱到坐稳导演椅)