保留调用模板中的示例字面值
Preserve Literal Examples Across Invocation Templates
区分示例语言语法和宿主调用模板语法,避免错误替换。
以下示例与示意结果由本站编写,用于说明方法,不是模型实测结果。
使用场景
Skill正文演示PostgreSQL绑定占位$1,宿主可能先把它当调用位置参数展开。教学/review alice后模型看到的SQL可能已被改;示例语言与模板两层需核。
具体做法
核实际宿主预处理契约,保存源示例和已渲染调用。用参数、空参数及特殊值测试展开边界;通过已记录转义或已验证不展开引用保护字面。两者不可用则以文字解释该驱动绑定,不错误换为其他驱动占位。保留查询与参数数组契约,引用文件也不能未经测试认为安全。
反例
写id=$1默认永远原样,坏了就换问号并称PostgreSQL通用写法。
改进写法
验证/review alice与无参数渲染仍保留预期PostgreSQL绑定;采用宿主支持转义或实测不展开引用。保护不可用时文字说明编号参数与独立值数组,不能破坏驱动语法。记录源与最终展开对照,不执行数据库。
为什么这样改
同一字符由不同解释器赋义,合法代码在到模型前可能变形。最终渲染核对检查真实接收内容,驱动语义不能被模板规避法替换。
如何验证
教学若$1变alice,绑定语义失效;保护后参数数组仍独立且占位未被消耗。空参数调用也要核。这里是宿主测试设计,冻结注释只警告其观察,不证明每个宿主都会展开。
适用边界
驱动和模板版本不同,问号非PostgreSQL通用替代。引用层级也可能展开;展示正确不证明数据库执行安全或授权。本文没有运行查询。
原文与版本
- affaan-m/ECC · Parameterized query example and invocation-substitution warning
查看此版本的文件ef648e01899b - affaan-m/ECC · Mirror retains a positional literal without the canonical warning
查看此版本的文件ef648e01899b