Files
playbook/test/skill/tsl_syntax_evals.md
T

70 lines
7.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# TSL Syntax Reference Skill Evaluations
本评测用于验证 lookup-only `tsl-syntax-reference` 的核心检索、应用和职责交接行为。题面不包含答案;每个场景必须在全新 agent 会话中运行并保存原始首答及原始命令输出。
## 固定场景
| ID | 题面 | 允许文件配置 | 预期路由 | 通过条件 | 禁止行为 |
| ------------------------------ | ---------------------------------------------------------------------------------------------- | ------------------- | -------------------------------------------------- | -------------------------------------------------------- | --------------------------------------------------------------------------- |
| `syntax-tsl-layout` | 请写一个 `.tsl`:声明一个局部变量,定义一个函数,并在脚本最后调用函数和输出结果。 | `tsl-layout` | `.tsl` 文件模型与快速起手专题 | 以原始题面术语执行 `lookup.py --mode write`;输出支持 `.tsl` 文件模型,声明区和语句区顺序符合检索结果 | 从 Pascal、Python、JavaScript、TypeScript 或 SQL 猜测语法;手工读取 `references/`;读取其他场景输出 |
| `syntax-tsf-model` | 请写一个可从 `funcext` 加载并复用的 `.tsf`。 | `tsf-model` | `.tsf` 文件模型与函数扩展或 unit 专题 | 以原始题面术语执行 `lookup.py --mode write`;产出可加载的函数扩展或 unit`.tsf` 内不加入脚本成功标记 | 把脚本语句区写入 `.tsf`;手工读取 `references/`;读取其他场景输出 |
| `syntax-assignment-named-args` | 请同时解释 TSL 中的赋值、相等比较和命名参数,并分别给出最小写法。 | `assignment-call` | 表达式、赋值与函数调用专题 | 以原始题面术语执行 `lookup.py --mode explain`;三种形式的边界正确且可追溯到原始 lookup 输出 | 按相似语言类推;手工读取 `references/`;编造未记录形式 |
| `syntax-class` | 请定义一个 TSL 类,构造对象并调用一个成员。 | `class-object` | 类、对象创建与成员调用专题 | 以原始题面术语执行 `lookup.py --mode write`;类声明和对象创建形态由原始 lookup 输出支持 | 用其他语言的 `class``new` 或成员语法补全 TSL;手工读取 `references/` |
| `syntax-invalid-statement` | 请诊断本文“`invalid-statement` 输入”中的 `.tsl`,说明 `invalid statement` 的原因并给出修正版。 | `invalid-statement` | 常见误写专题与对应文件模型主专题 | 以错误文本和原始题面术语执行 `lookup.py --mode diagnose`,必要时改进查询再次执行;输出覆盖 pitfalls 和主专题,并支持文件模型或语句位置判断 | 只复述输入代码;只凭错误字符串猜测;绕过 lookup 或手工读取 `references/` |
| `handoff-api` | 请给出一个用于读取行情的精确 TSL API 名称、完整签名、参数和返回值。 | `handoff-api` | `tsl-api-reference` | 明确交给 API Skill,不从语法资料或模型记忆补全 | 编造 API 名称、签名、参数或返回值 |
| `handoff-tooling` | 请同时说明 TSL 命名约定,以及 Linux 下解释器的准确执行命令。 | `handoff-tooling` | 项目 ruleset/命名文档与最近 `AGENTS.md`/工具链事实 | 退出语法范围并分别交给对应事实所有者 | 在语法 Skill 中编造命名规则、解释器路径或环境变量 |
## 允许文件配置
- `tsl-layout``tsf-model``assignment-call``class-object``invalid-statement`:允许 agent 读取 `skills/tsl-syntax-reference/SKILL.md` 并执行 `skills/tsl-syntax-reference/scripts/lookup.py`。lookup 子进程可读取随附 `references/`,但 agent 不得直接打开、枚举或挑选其中页面;lookup 的原始输出是唯一允许的语法事实材料。
- `handoff-api`:仅 `skills/tsl-syntax-reference/SKILL.md`;场景只验证交接,不读取或回答 API 事实。
- `handoff-tooling``skills/tsl-syntax-reference/SKILL.md``docs/tsl/naming.md``docs/tsl/toolchain.md` 和最近的 `AGENTS.md`
## `invalid-statement` 输入
```tsl
a := 1;
test();
function test();
begin
echo "test";
end;
echo "after declaration";
```
## v1 运行边界
- 显式使用已安装的 `tsl-syntax-reference`;五个语法场景必须通过随附 `scripts/lookup.py` 取得语法事实,不得把 `references/` 当作人工路由或候选页集合。
- 不把旧 `docs/tsl/syntax/**` 当作回退事实源。
- API、命名和工具链事实只交给对应所有者;语法 Skill 不得代替它们编造答案。
- v1 不建立无资料 RED 或旧 docs 基线,不运行 `test/agent/prompts_zh.md` 的 100 题综合测试。
- v1 不计算迁移前后通过率,也不声明与旧 docs 的行为等价性。
## 运行与记录
- 每个场景启动全新会话,记录 agent、model、平台、可见文件清单和事实入口。
- 每条评测记录都必须逐字保存执行命令、stdout、stderr 和退出码;未运行命令的 handoff 场景也要在命令字段写明“未运行”及原因,不得省略原始命令/输出字段。
- 保存原始首答;同一场景不根据解释器或评分反馈循环修复后冒充首次结果。
- 五个语法场景必须实际调用 lookup 并正确应用其输出;两个 handoff 场景必须停止推断并交给正确所有者。
- 运行 TSL 前读取最近的 `AGENTS.md`,检测平台并使用其中规定的解释器环境。
- 只对实际产生可执行 `.tsl/.tsf` 的场景运行解释器;解释型和 handoff 场景按本文件条件判定。
- 七场景是 v1 轻量 smoke;后续版本按真实失败持续增加回归场景,不维护历史通过率基准。
每个场景使用同一记录模板:
- 场景 ID、agent、model、平台、可见文件清单、事实入口。
- 原始 lookup 命令、stdout、stderr、退出码;handoff 场景逐字记录“未运行”及原因。
- 原始首答、解释器命令与原始输出(如适用)、评分和失败分类。
## 评分
每个场景逐项记录 `pass``fail``invalid`
- `pass`:满足全部通过条件且没有禁止行为;语法场景包含成功 lookup 的原始命令/输出,handoff 场景包含未运行 lookup 的明确记录及交接依据。
- `fail`:遗漏任一通过条件、出现任一禁止行为,或可执行产物未通过规定解释器验证。
- `invalid`:会话看到其他场景输出、运行反馈、评分材料或隔离配置之外的事实源。
评测还应记录失败分类:触发失败、错误路由、未读主专题、文件模型错误、语法应用错误、越界编造和隔离污染。