P373 · Skill 编写

保留调用模板中的示例字面值

Preserve Literal Examples Across Invocation Templates

区分示例语言语法和宿主调用模板语法,避免错误替换。

编辑审核

以下示例与示意结果由本站编写,用于说明方法,不是模型实测结果。

使用场景

Skill正文演示PostgreSQL绑定占位$1,宿主可能先把它当调用位置参数展开。教学/review alice后模型看到的SQL可能已被改;示例语言与模板两层需核。

具体做法

核实际宿主预处理契约,保存源示例和已渲染调用。用参数、空参数及特殊值测试展开边界;通过已记录转义或已验证不展开引用保护字面。两者不可用则以文字解释该驱动绑定,不错误换为其他驱动占位。保留查询与参数数组契约,引用文件也不能未经测试认为安全。

反例

写id=$1默认永远原样,坏了就换问号并称PostgreSQL通用写法。

改进写法

验证/review alice与无参数渲染仍保留预期PostgreSQL绑定;采用宿主支持转义或实测不展开引用。保护不可用时文字说明编号参数与独立值数组,不能破坏驱动语法。记录源与最终展开对照,不执行数据库。

为什么这样改

同一字符由不同解释器赋义,合法代码在到模型前可能变形。最终渲染核对检查真实接收内容,驱动语义不能被模板规避法替换。

如何验证

教学若$1变alice,绑定语义失效;保护后参数数组仍独立且占位未被消耗。空参数调用也要核。这里是宿主测试设计,冻结注释只警告其观察,不证明每个宿主都会展开。

适用边界

驱动和模板版本不同,问号非PostgreSQL通用替代。引用层级也可能展开;展示正确不证明数据库执行安全或授权。本文没有运行查询。

原文与版本

如何收录这些方法