跳转至

分支:按读者的选择复制

能用一句「如果……就……」说清的,写成句子,不做分支 —— 收到 prompt 的是大模型,句子里的条件它自己会判断。没选中的那支长到值得省掉,才用 data-when 替它先把选择落定:细讲项目选了「否」,「实跑」那一节就不进对话框。

写法

关键机制要不要实际跑一遍:<select name="实跑"><option>是</option><option>否</option></select>

<div data-when="实跑=是" markdown>

## 实跑

- 拆出要演示的关键片段单独跑……

</div>

<div data-when="实跑=否" markdown>

不实跑:每节只贴模版,效果块省掉。

</div>
  • data-when="名=值":名为「名」的控件当前值等于「值」才复制;哪个选项有话要对 AI 说就给哪个写块,没话说的不写
  • data-when="名":那个框填了才复制 —— 可选的空连同它那句话包起来,空着就不会复制出【可选:……】
  • 开关那句复制不复制,看 AI 要不要知道选了什么:选的值本身是给 AI 的答复(「关键机制要不要实际跑一遍:否」),写成 prompt 里的一句照常复制;开关只管哪段进对话框(「要不要收纳进本 wiki」),包 zx-no-copy 只给人看。某个选项要 AI 多做什么,写进那个选项自己的分支,分支开头不写「如果选了……」,读 .md 源的 AI 从 data-when 就看得懂
  • 源文件里 data-when 块不写 zx-no-copy:条件不成立时脚本给它挂上,网页上和写死的那种一个样子,另外变淡;只是提示,不藏、不禁用,块里的控件照常能填
  • 条件里用到的控件要写 name
  • 块放顶层,里面不缩进:缩进 4 格就成了代码块,和提示框、选项卡正好相反;放进提示框、列表里,HTML 会漏出一个原样的 markdown 属性
  • 复制时条件成立的块只去掉外壳 div,里面照常复制

活例:细讲项目,「实跑」开关是正文里的一句,两支各一个块;「收纳」开关包 zx-no-copy,只有「是」写块;「我原来以为它是」填了才复制。

上限

填空加分支已经是个模板了,守住别长成模板语言:

  • 只有填空和两种条件:等于某个值、填了
  • 不嵌套,不写「并且 / 或者」,不做循环、计算、引用别的页 —— 想要更多就拆成两页,或者把逻辑写成句子交给 AI
  • 检验:把源文件当普通 markdown 从头读一遍,还像一段人写的 prompt;读着像代码了,就是写过头了
  • 脚本拼 prompt 去调 API 才用真正的 Jinja,写在脚本里,不放进 wiki