playbook/rulesets/tsl/index.md

11 KiB
Raw Blame History

TSL 智能体规则

文档类型:高优先级智能体决策规则 是否可直接用于生成代码:否 作用:控制智能体在阅读、修改、生成 TSL 代码前的判断顺序、文档路由、禁止行为和自检流程。

本文件不是 TSL 语法手册,也不是完整教程。智能体必须先按本文件判断任务类型,再进入对应的 docs/tsl/ 页面查阅语法、函数库或模块集成信息。

生成 TSL 代码时,禁止凭 Pascal、Python、JavaScript、TypeScript 或其他语言的相似写法补全 TSL 语法。文档没有给出结论时,必须向用户确认、记录文档缺口,或改用文档已经写明的可照写示例,不得发明语法。

范围与优先级

  • 本文件是仓库级 TSL 智能体高优先级规则。
  • 更靠近代码目录的本地规则可以增加更严格的约束,但不能削弱本文件中的安全、文档事实和禁止发明语法规则。
  • 本文件控制智能体行为和判断顺序,不替代 docs/tsl/ 下的语法、函数库、模块集成或项目执行文档。
  • 当本文件与 docs/tsl/** 冲突时,按以下顺序处理:
    1. 安全与凭据处理规则。
    2. 用户明确指令中关于目标、交付物、文件路径和风格偏好的部分。
    3. 本地目录规则中更具体且不削弱本文件安全、文档事实和禁止发明语法规则的部分。
    4. 本智能体规则集。
    5. TSL 语法/函数库事实文档。
    6. 现有项目代码模式。
  • 用户明确指令不能覆盖安全规则、文档事实使用规则、禁止发明语法规则或 TSL 事实。如果用户要求生成未写入文档的语法,必须说明风险,并按用户意图将结果标注为示例或伪代码;不得把它包装成可运行 TSL 或可直接照写示例。
  • 如果两个权威来源对 TSL 语法结论不一致,不要猜测。必须说明冲突,优先采用 代码块身份:可直接照写示例;当差异会影响生成代码正确性时,先向用户确认。

代码生成协议

生成或修改 TSL 代码前,智能体必须执行以下流程:

  1. 识别用户交付目标:可执行脚本、可复用模块、语法解释、缺陷修复、重构、业务逻辑、函数查询或集成任务。
  2. 识别文件模型:
    • 用户要求可执行脚本或入口流程时,使用 .tsl
    • 用户要求可复用函数、过程、类、模块或扩展代码时,使用 .tsf
    • 文件模型会影响正确性且需求不明确时,生成代码前向用户确认。
  3. 路由到 docs/tsl/ 下最小且最相关的权威文档。
  4. 生成代码外形时,优先参考 代码块身份:可直接照写示例
  5. 避开任何标记为 代码块身份:反例 / 不可照写 的代码块。
  6. 除非文档明确说明组合方式,否则不要把多个页面的片段拼成新的语法外形。
  7. 没有文档结论时,不要发明语法;改为向用户确认或记录文档缺口。
  8. 生成代码后,执行本文件中的最终 TSL 自检。

TSL 核心事实

以下只保留高优先级提醒。完整文件模型看 docs/tsl/syntax/02_core_model.md;完整语法细节从 docs/tsl/syntax/index.md 分流。

  • .tsl 在通用 TSL 规则中表示可执行脚本;如果项目把 .tsl 另作它用,必须先确认项目约定,不能反推为通用事实。
  • .tsf 表示可复用函数、过程、类、模块或扩展文件;部署到解释器 funcext 后供脚本调用,部署、查找路径和文件名细节必须回到语法页或项目文档确认。
  • 用户明确给出 .tsl.tsf 后缀时,后缀是主要文件模型信号;未给后缀时先按交付目标初判,影响正确性且不明确就先确认。
  • 入口流程、脚本任务或一次性任务默认 .tsl;可复用函数、过程、类、模块或扩展默认 .tsf;脚本内部封装函数或类不自动升级为 .tsf
  • .tsl 中,可执行语句必须位于前部并按顺序执行;如果需要本文件内函数或类,声明区放在语句区之后,且声明区后不要继续追加脚本语句。
  • .tsf 中,只生成可复用顶层声明或 unit;不要写成顺序执行入口。
  • 创建对象有两种方式:new ClassName() 最常用,createObject(...) 作为次选;需要字符串类名、类类型变量或跨 unit 路径时,更适合用 createObject(...)
  • 不要因为 Pascal、Python、JavaScript 或 TypeScript 支持某种写法,就假设 TSL 也支持。

任务路由

先路由任务,再阅读详细文档。不要把所有 TSL 相关请求都当成语法请求。

  • 如果用户询问语言语法怎么写,先读 docs/tsl/syntax/index.md
  • 如果用户要求最短可运行骨架,先读 docs/tsl/syntax/01_quickstart.md
  • 如果用户询问某个语法形式是否有效,先读 docs/tsl/syntax/index.md,再进入最小匹配专题页。
  • 如果用户询问常见误写、反例或不安全假设,先读 docs/tsl/syntax/11_pitfalls.md
  • 如果用户询问行情、财务、板块、选股等金融函数,先读 docs/tsl/reference/catalog/datawarehouse.md
  • 如果用户询问 Python 调 TSL 服务器函数、批量取数或异步取数,先读 docs/tsl/modules/pytsl_api.md
  • 如果用户询问回测框架、组合回测、交易流程或回测结果读取,先读 docs/tsl/modules/tsbacktesting.md
  • 如果用户询问某个内置函数或函数库函数怎么用,先读 docs/tsl/reference/index.md
  • 如果用户询问模块、集成、pyTSL、微信消息或回测模块先读 docs/tsl/modules/index.md
  • 如果用户询问账户体系、真实服务端点、部署、脚本入口、环境变量、CI 或验证命令,把问题视为项目执行上下文;优先查项目文档、scripts/* 和 CI 配置,不要从通用 TSL 语法文档里猜。

路由冲突处理

  • 如果一个任务同时涉及业务和语法,按用户的主要目标路由。
  • 如果主要目标是业务行为,先读模块文档、函数事实页或项目实际接口文档,语法文档只做辅助。
  • 如果主要目标是语言有效性,先读语法文档,业务或模块文档只作为示例和上下文。
  • 如果任务依赖真实凭据、账户、部署或环境行为,不要发明项目事实;必须询问用户或检查项目专属文件。

文档入口

按目的选择来源,不要默认通读全部文档。

目的 来源 性质
顶层路由 docs/tsl/index.md 决策入口
语法判断 docs/tsl/syntax/index.md 语法入口
最短可运行骨架与核心事实 docs/tsl/syntax/01_quickstart.md 语法入口
高频误写与反例 docs/tsl/syntax/11_pitfalls.md 语法入口
数据仓库金融函数 docs/tsl/reference/catalog/datawarehouse.md 函数事实
pyTSL / 服务器函数 / 批量取数 docs/tsl/modules/pytsl_api.md 模块 API
回测框架与结果接口 docs/tsl/modules/tsbacktesting.md 模块 API
模块与集成任务 docs/tsl/modules/index.md 集成入口
函数库查询 docs/tsl/reference/index.md 函数库入口
本仓库格式偏好 docs/tsl/code_style.md 非语法事实
本仓库/作者命名偏好 docs/tsl/naming.md 非语法事实

文档事实使用策略

  • 页面级元数据只是粗粒度信号。生成代码时,优先看代码块级别的 代码块身份
  • 优先参考标记为 代码块身份:可直接照写示例 的代码块。
  • 永远不要复制标记为 代码块身份:反例 / 不可照写 的代码块作为可运行代码。
  • 代码块身份:配置片段 / 概念骨架 只能作为结构提示,不能当作可直接运行代码。
  • 代码块身份:输出片段 只能作为输出形态,不能当作源码。
  • 模板、错误示例和输出片段都不是可独立编译代码。
  • 如果某页没有覆盖请求所需语法外形的可直接照写示例,不要发明缺失语法;改为询问、记录文档缺口,或使用更简单且已有文档支持的写法。
  • code_style.mdnaming.md 只表达本仓库或作者风格偏好,不代表 TSL 语法事实。

安全规则

  • 不得把明文密钥、密码、token、API key、cookie、私钥或真实凭据写入代码、日志、注释、示例、测试或文档。
  • 如果用户提供真实敏感信息,不要复述;替换为 <TOKEN><API_KEY><PASSWORD> 等占位符。
  • 如果现有代码中出现疑似敏感信息,必须明确标注风险,并避免把它复制到新代码或解释中。
  • 修改鉴权、授权、权限检查、账户处理、交易权限、下单或生产执行路径时,必须说明动机和风险。
  • 不确定某个值是否敏感时,按敏感信息处理。
  • 不要发明账户 ID、服务端点、生产路径或凭据名称必须使用项目专属文档或向用户确认。
  • 金融或交易任务中,除非用户明确要求且项目文档确认执行路径,否则不要生成会静默真实下单、改变账户状态或使用生产凭据的代码。
  • 当任务可能影响真实交易或外部系统时,优先使用 dry-run、仿真、回测或显式确认流程。

修改纪律

  • 改动必须小而聚焦,只服务于用户当前请求。
  • 避免无关重构、格式刷屏或文档大改。
  • 除非用户明确要求,不要新增依赖、工具、脚本或执行要求。
  • 引入新模式前,先遵循现有项目风格、文件布局和命名习惯。
  • 编辑 TSL 文档时,保留元数据字段和 代码块身份 标签,因为智能体路由依赖这些信息。
  • 不要声称生成或修改后的代码已经验证,除非确实运行了对应命令或已有项目执行记录。

最终 TSL 自检

展示生成或修改后的 TSL 代码前,必须检查:

  1. 任务是否路由到正确层:语法、函数库、模块集成或项目执行。
  2. 文件模型是否正确:.tsl 用于可执行脚本,.tsf 用于可复用函数、过程、类、模块或扩展。
  3. .tsl,可执行语句是否位于本文件函数/类声明之前。
  4. .tsl,声明区之后是否没有继续追加可执行脚本语句。
  5. .tsf,代码是否是可复用顶层声明;文件名已知时,是否尊重文件基名与声明名关系。
  6. 代码外形是否基于文档事实或 代码块身份:可直接照写示例
  7. 是否没有把 反例 / 不可照写、输出片段或概念骨架当作可运行代码复制。
  8. 是否没有从其它语言家族发明 TSL 语法。
  9. 是否没有猜测内置名、函数库函数、模块行为或项目事实。
  10. 如果任务要求遵循本仓库风格,是否只把 code_style.mdnaming.md 当作本仓库/作者偏好,而不是语法事实。
  11. 是否没有引入密钥、凭据、生产端点或不安全的交易/账户行为。
  12. 仍不确定的地方是否明确说明,而不是隐藏在生成代码里。