🐳 第八章 设计自己的Harness
📄 一句话概括

最终项目是设计一套自己的预设——目标一句话,边界四条,产物是一段 YAML;难点全在【不做】那一栏。

📝 本节和前面几节的关系

8.1 改了起手式,8.2 定了能力的四个字段,这一节把题目定下来:给一个代码仓库做只读审查。

一、题目

一句话目标:只读地看代码,产出一份结构化审查报告。

选这个题不是因为简单,是因为它正好踩在两条线的中间: 要读文件(需要工具),但绝不允许写(需要边界)。

二、四条边界

四条里第一条是能力,后三条都是约束——约束比能力难写。

三、为什么这个题值得做

它是本课所有机制的合流点:

做完这一题,前面七章就串成了一条线。

四、产物长什么样

一段装进你自己那一层的补丁,向树里插入第五套预设。

官方四套的 order 是 1/2/3/4(standard/ptc/minimal/cordis),第五套填 5,自然排在最后。

实测量级:22 行配置、0 行代码。

五、动手 Demo:最终项目——审查预设的目标与边界

目标一句话,边界四栏,先看清单能不能站住:

goal = "只读看代码, 产出一份结构化审查报告"
do = ["读文件", "按内容搜索", "登记待办", "出报告"]
notdo = ["执行命令", "改文件", "装插件", "派子代理"]
print("  目标:", goal)
print("  要做 %d 项, 不做 %d 项——后者才是边界" % (len(do), len(notdo)))

实跑输出:

--------------------------------------------------------------------
最终项目——审查预设的目标与边界
--------------------------------------------------------------------
  一句话目标:**只读地看代码,产出一份结构化审查报告**。

  维度     写死的内容
  ----------------------------------------------
  要做     读文件、按内容搜索、登记待办、出报告
  不做     执行命令、改文件、装插件、派子代理
  范围     只读;动不了工作区里的任何东西
  交付     一份带结论与定位的报告
  ----------------------------------------------

  【不做】这一栏比【要做】更重要——
  **边界不是事后打补丁,是设计时就写进清单的**。

【不做】这一栏比【要做】更重要——要做决定你能干什么,不做决定你不会乱碰什么。 选【只读审查】当题目,是因为它天然把两条线都拉直:既要工具,又要边界。 产物很小:22 行配置——项目的大小不等于代码的行数。

30 秒实验

  1. 把题目换成【给一个仓库写单元测试】,四条边界重写一遍。
  2. 比较两题的【不做】栏,想想为什么比【要做】栏改得更多。
  3. 在纸上写出你这一题的【交付】那一条——能写具体就说明想清楚了。

常见误区

  1. 错误:题目越难越能体现水平。——纠正:题目要能证伪——审查预设的好处是边界清晰,改文件、跑命令这些【不该发生的事】都能当场验。
  2. 错误:先想工具,再补边界。——纠正:边界是设计的一部分,不是补丁——8.1 已经讲过顺序。
  3. 错误:成品应该是一个新插件包。——纠正:成品是一段装配清单——本课全程没写新包,结论落在配置上。
自测三问(点开对答案) 1. 最终项目的目标是什么? —— **只读地看代码,产出一份结构化审查报告**。 2. 四栏里哪一栏最关键? —— **【不做】**——它决定边界;能力栏决定你能干什么,约束栏决定你不会乱碰什么。 3. 第五套预设的 order 填几? —— **5**——官方四套是 1/2/3/4,第五套自然排在最后。

相关笔记