spl-to-apl

3周前发布 6 0 0 0

axiomhq/skills#spl-to-apl

Skill 安装

多 Agent 安装
npx skills add https://github.com/axiomhq/skills --skill spl-to-apl

使用 npx skills 快速安装,支持将 Skill 添加到多个兼容的 AI Agent。

Skill 调研报告

axiomhq/skills#spl-to-apl

Skill 更新日志

版本列表
无版本号
使用边缘 URL
无版本号
feat(spl-to-apl):更新到 v2 技能格式(#11) * feat(spl-to-apl):更新到 v2 技能格式 - 更简洁,重点突出关键差异 - 结构更好,便于快速参考 - 相同的参考文件(已对齐) Amp-Thread-ID: https://ampcode.com/threads/T-019be760-4790-7457-bf5c-9a840517f925 Co-authored-by: Amp * chore:触发 CI * feat(eval):将 model 添加为 configFlag 以便比较可见性 model 在静态元数据中,但未显示在 CLI 配置变更中。 将其添加为标志后,在比较运行时会出现。 Amp-Thread-ID: https://ampcode.com/threads/T-019bebb6-eb2b-766b-ab59-3bb0a1d3b7c7 Co-authored-by: Amp * feat:使用 test-queries.md 中经过验证的测试查询作为评估用例 - 用 test-queries.md 中的 9 个已验证用例替换了 31 个合成用例 - 用例针对真实的 axiom playground 数据集(sample-http-logs、otel-demo-traces) - 向 TranslationCase 类型添加了 dataset 和 notes 字段 - notes 记录数据集特性(例如 status 字段是字符串,需要 toint()) - 为未来 CI 集成以针对 axiom 运行 APL 做准备 Amp-Thread-ID: https://ampcode.com/threads/T-019bebda-ae70-74dd-954f-9b8e024f55b7 Co-authored-by: Amp * fix:在 SPL 输入中使用实际数据集名称 根本原因:SPL 使用 index=http_logs,但预期 APL 使用 ['sample-http-logs'] - 模型正确地将索引名转换为数据集名 - 但评分器期望的是 axiom playground 数据集名称 修复:将 SPL 输入改为使用实际数据集名称: - index=http_logs → index=sample-http-logs - index=traces → index=otel-demo-traces 这确保当模型进行正确转换时,dataset-correct 评分器可以通过 * feat:添加 executes-successfully 评分器,针对 axiom 运行 APL - 新评分器针对 axiom playground 执行生成的 APL 查询 - 时间范围在 harness 层注入(ago(1h) .. now()),因为模型不应需要知道这一点 - 从模型输出中提取 APL,移除代码围栏 - 如果查询执行无错误则返回 1,否则返回 0 需要新的 secrets: - AXIOM_PLAYGROUND_URL - AXIOM_PLAYGROUND_TOKEN - AXIOM_PLAYGROUND_ORG_ID(可选) Amp-Thread-ID: https://ampcode.com/threads/T-019bebda-ae70-74dd-954f-9b8e024f55b7 Co-authored-by: Amp * chore:将 AXIOM_PLAYGROUND_* 重命名为 AXIOM_PLAY_* * feat:results-match 评分器比较实际查询输出 - 针对 axiom playground 同时运行预期 APL 和生成的 APL - 使用静态时间范围以获得可复现结果 - 比较列、行数和实际数据 - 返回分级分数: - 1.0:完全匹配 - 0.75:结构相同,值不同 - 0.5-0.75:列相同,行数不同 - 0.25:列不匹配 - 0.0:查询失败 * chore:简化为单个 results-match 评分器 移除了冗余评分器: - exact-match:过于严格,有效变体会失败 - key-operators-present:启发式,不是实际验证 - dataset-correct:已由 results-match 覆盖 - time-filter-present:我们会注入时间范围 results-match 才是真正的验证——运行查询并比较输出 * feat(eval):添加 time-range-correct 评分器,修复时间注入 - 添加 extractTimeExpression() 以从 APL 解析时间过滤器 - 添加 stripTimeFilter() 以移除现有时间过滤器 - injectTimeRange() 现在会替换现有过滤器(修复可复现性) - 添加 evaluateTimeRange() 以通过 APL 比较持续时间 - 新的 TimeRangeCorrect 评分器检查模型输出正确的时间范围 - ResultsMatch 现在使用相同的静态时间窗口进行比较 - 处理不带方括号语法的数据集名称 Amp-Thread-ID: https://ampcode.com/threads/T-019bff5d-1146-7305-96d1-e111a62e4fa7 Co-authored-by: Amp * fix(eval):处理 stripTimeFilter 中的嵌套括号 正则表达式在 ago(1h) 内的第一个 ) 处停止,留下 '.. now())' 并破坏查询执行 Amp-Thread-ID: https://ampcode.com/threads/T-019bff5d-1146-7305-96d1-e111a62e4fa7 Co-authored-by: Amp * refactor(eval):使用 API startTime/endTime 而不是正则注入 - API 参数控制时间范围,无需字符串操作 - stripTimeFilter 在执行前移除任何查询内时间过滤器 - 消除了在嵌套括号上出错的脆弱正则 Amp-Thread-ID: https://ampcode.com/threads/T-019bff5d-1146-7305-96d1-e111a62e4fa7 Co-authored-by: Amp * fix(eval):当预期没有时间过滤器时,不要因省略时间过滤器而扣分 * fix(eval):从预期 APL 中移除时间过滤器 SPL 查询不指定时间范围(在 Splunk 中通过 UI 选择器设置)。 Axiom 文档示例也不包含时间过滤器。 移除了 TimeRangeCorrect 评分器,因为它现在始终为 1。 Amp-Thread-ID: https://ampcode.com/threads/T-019bff5d-1146-7305-96d1-e111a62e4fa7 Co-authored-by: Amp * docs(eval):为测试用例添加来源归属 每个用例现在标记为 DOCS 或 EXTENDED,以指示 它是基于 Axiom 的 SPL 速查表还是我们手动验证的扩展模式。 * feat(eval):将数据集 schema 注入翻译提示 - 添加 getDatasetSchema() 以通过 APL getschema 获取字段名/类型 - 在内存中缓存 schema 结果以避免冗余 API 调用 - 在系统提示中包含 schema,使模型知道字段类型 - 修复模型对字符串 status 字段省略 toint() 的假阴性 - 根据文档技能审查清理冗余注释 Amp-Thread-ID: https://ampcode.com/threads/T-019c0028-86c0-772a-b132-f26f3b6b2f37 Co-authored-by: Amp * fix(eval):为 schema 获取添加超时和错误处理 - 通过 AbortController 为 executeAplQuery 添加 30 秒超时 - 将 schema 获取包装在 try/catch 中以防止评估失败 - schema 获取失败现在记录警告并在没有 schema 的情况下继续 Amp-Thread-ID: https://ampcode.com/threads/T-019c0028-86c0-772a-b132-f26f3b6b2f37 Co-authored-by: Amp * revert:移除 schema 注入(将在单独的 PR 中重新审视) 回滚 b981727 和 7e3dc2b——数据集 schema 注入实验 显示出前景但需要更多工作。保持评估 CI 处于可工作 状态以便合并。 Amp-Thread-ID: https://ampcode.com/threads/T-019c008d-fe62-774f-94fd-ee6ccabd3adb Co-authored-by: Amp * chore(eval):切换到 gemini-2.5-flash * Revert "chore(eval):切换到 gemini-2.5-flash" This reverts commit 8dc87ff531d1d5ee200aa7e05dba0144f83c4b3f. * feat(spl-to-apl):指示模型在翻译前获取 schema * feat(spl-to-apl):添加数据集 schema 参考和工具使用日志 - 添加 reference/dataset-schemas.md,包含原始 getschema 输出 - 在评估中记录工具调用以供验证 - 更新 SKILL.md 以引用 schema 文档 Amp-Thread-ID: https://ampcode.com/threads/T-019c008d-fe62-774f-94fd-ee6ccabd3adb Co-authored-by: Amp * feat(eval):添加 skill-loaded 评分器以验证模型使用技能工具 Amp-Thread-ID: https://ampcode.com/threads/T-019c008d-fe62-774f-94fd-ee6ccabd3adb Co-authored-by: Amp * feat(eval):添加 schema-read 评分器以验证模型读取参考文件 Amp-Thread-ID: https://ampcode.com/threads/T-019c008d-fe62-774f-94fd-ee6ccabd3adb Co-authored-by: Amp * feat(eval):跟踪模型读取了哪些文件,而不仅仅是它调用了 readFile Amp-Thread-ID: https://ampcode.com/threads/T-019c008d-fe62-774f-94fd-ee6ccabd3adb Co-authored-by: Amp * docs(eval-tooling):将 Axiom Playground 环境变量添加到 .env.example Amp-Thread-ID: https://ampcode.com/threads/T-019c0497-6c51-7113-a9a0-bf9ea2efe9e2 Co-authored-by: Amp * feat(spl-to-apl):迭代 schema-read 行为 - 添加 DESIGN-NOTES.md 记录迭代发现 - 为本地运行向评估添加 dotenv 加载 - 更新 SKILL.md,加入 schema-read 指令和输出格式指导 - 最佳结果:11% schema-read,78% results-match 关键发现:工作流示例驱动 schema 读取(66%),但会导致 输出污染。显式 readFile 指令有帮助,但模型 仍然不一致地读取 schema 文件。 核心矛盾:类型信息是数据集特定的(无法嵌入), 但教授“检查 schema”行为需要会被复制到输出中的示例。 Amp-Thread-ID: https://ampcode.com/threads/T-019c0497-6c51-7113-a9a0-bf9ea2efe9e2 Co-authored-by: Amp * docs(spl-to-apl):添加 schema-read 发现报告 Amp-Thread-ID: https://ampcode.com/threads/T-019c0497-6c51-7113-a9a0-bf9ea2efe9e2 Co-authored-by: Amp * feat(spl-to-apl):通过类型转换启发式实现 100% results-match 将方法从“读取 schema 以检查类型”改为“在数值比较前 始终转换”。防御性启发式普遍有效,无需 schema 读取。 结果:100% results-match(稳定) Amp-Thread-ID: https://ampcode.com/threads/T-019c0497-6c51-7113-a9a0-bf9ea2efe9e2 Co-authored-by: Amp * refactor(eval):将输出简化为仅 results-match skill-loaded 和 schema-read 现在仅作为调试用的日志指标, 不计分。更清晰的评估输出,聚焦于实际目标。 Amp-Thread-ID: https://ampcode.com/threads/T-019c0497-6c51-7113-a9a0-bf9ea2efe9e2 Co-authored-by: Amp * test(eval):将技能重置为 main 以进行基线运行 Amp-Thread-ID: https://ampcode.com/threads/T-019c0497-6c51-7113-a9a0-bf9ea2efe9e2 Co-authored-by: Amp * feat(spl-to-apl):添加类型转换启发式以实现 100% results-match 像 status 这样的字段通常存储为字符串。在数值比较前始终转换: toint(status) >= 500,而不是 status >= 500。 将 results-match 从约 67% 提升到 100%。 Amp-Thread-ID: https://ampcode.com/threads/T-019c0497-6c51-7113-a9a0-bf9ea2efe9e2 Co-authored-by: Amp --------- Co-authored-by: Amp
无版本号
feat(spl-to-apl/evals):执行生成的查询而不是合成测试用例(#15) * feat(spl-to-apl):更新到 v2 技能格式 - 更简洁,重点突出关键差异 - 结构更好,便于快速参考 - 相同的参考文件(已对齐) Amp-Thread-ID: https://ampcode.com/threads/T-019be760-4790-7457-bf5c-9a840517f925 Co-authored-by: Amp * chore:触发 CI * feat(eval):将 model 添加为 configFlag 以便比较可见性 model 在静态元数据中,但未显示在 CLI 配置变更中。 将其添加为标志后,在比较运行时会出现。 Amp-Thread-ID: https://ampcode.com/threads/T-019bebb6-eb2b-766b-ab59-3bb0a1d3b7c7 Co-authored-by: Amp * feat:使用 test-queries.md 中经过验证的测试查询作为评估用例 - 用 test-queries.md 中的 9 个已验证用例替换了 31 个合成用例 - 用例针对真实的 axiom playground 数据集(sample-http-logs、otel-demo-traces) - 向 TranslationCase 类型添加了 dataset 和 notes 字段 - notes 记录数据集特性(例如 status 字段是字符串,需要 toint()) - 为未来 CI 集成以针对 axiom 运行 APL 做准备 Amp-Thread-ID: https://ampcode.com/threads/T-019bebda-ae70-74dd-954f-9b8e024f55b7 Co-authored-by: Amp * fix:在 SPL 输入中使用实际数据集名称 根本原因:SPL 使用 index=http_logs,但预期 APL 使用 ['sample-http-logs'] - 模型正确地将索引名转换为数据集名 - 但评分器期望的是 axiom playground 数据集名称 修复:将 SPL 输入改为使用实际数据集名称: - index=http_logs → index=sample-http-logs - index=traces → index=otel-demo-traces 这确保当模型进行正确转换时,dataset-correct 评分器可以通过 * feat:添加 executes-successfully 评分器,针对 axiom 运行 APL - 新评分器针对 axiom playground 执行生成的 APL 查询 - 时间范围在 harness 层注入(ago(1h) .. now()),因为模型不应需要知道这一点 - 从模型输出中提取 APL,移除代码围栏 - 如果查询执行无错误则返回 1,否则返回 0 需要新的 secrets: - AXIOM_PLAYGROUND_URL - AXIOM_PLAYGROUND_TOKEN - AXIOM_PLAYGROUND_ORG_ID(可选) Amp-Thread-ID: https://ampcode.com/threads/T-019bebda-ae70-74dd-954f-9b8e024f55b7 Co-authored-by: Amp * chore:将 AXIOM_PLAYGROUND_* 重命名为 AXIOM_PLAY_* * feat:results-match 评分器比较实际查询输出 - 针对 axiom playground 同时运行预期 APL 和生成的 APL - 使用静态时间范围以获得可复现结果 - 比较列、行数和实际数据 - 返回分级分数: - 1.0:完全匹配 - 0.75:结构相同,值不同 - 0.5-0.75:列相同,行数不同 - 0.25:列不匹配 - 0.0:查询失败 * chore:简化为单个 results-match 评分器 移除了冗余评分器: - exact-match:过于严格,有效变体会失败 - key-operators-present:启发式,不是实际验证 - dataset-correct:已由 results-match 覆盖 - time-filter-present:我们会注入时间范围 results-match 才是真正的验证——运行查询并比较输出 * feat(eval):添加 time-range-correct 评分器,修复时间注入 - 添加 extractTimeExpression() 以从 APL 解析时间过滤器 - 添加 stripTimeFilter() 以移除现有时间过滤器 - injectTimeRange() 现在会替换现有过滤器(修复可复现性) - 添加 evaluateTimeRange() 以通过 APL 比较持续时间 - 新的 TimeRangeCorrect 评分器检查模型输出正确的时间范围 - ResultsMatch 现在使用相同的静态时间窗口进行比较 - 处理不带方括号语法的数据集名称 Amp-Thread-ID: https://ampcode.com/threads/T-019bff5d-1146-7305-96d1-e111a62e4fa7 Co-authored-by: Amp * fix(eval):处理 stripTimeFilter 中的嵌套括号 正则表达式在 ago(1h) 内的第一个 ) 处停止,留下 '.. now())' 并破坏查询执行 Amp-Thread-ID: https://ampcode.com/threads/T-019bff5d-1146-7305-96d1-e111a62e4fa7 Co-authored-by: Amp * refactor(eval):使用 API startTime/endTime 而不是正则注入 - API 参数控制时间范围,无需字符串操作 - stripTimeFilter 在执行前移除任何查询内时间过滤器 - 消除了在嵌套括号上出错的脆弱正则 Amp-Thread-ID: https://ampcode.com/threads/T-019bff5d-1146-7305-96d1-e111a62e4fa7 Co-authored-by: Amp * fix(eval):当预期没有时间过滤器时,不要因省略时间过滤器而扣分 * fix(eval):从预期 APL 中移除时间过滤器 SPL 查询不指定时间范围(在 Splunk 中通过 UI 选择器设置)。 Axiom 文档示例也不包含时间过滤器。 移除了 TimeRangeCorrect 评分器,因为它现在始终为 1。 Amp-Thread-ID: https://ampcode.com/threads/T-019bff5d-1146-7305-96d1-e111a62e4fa7 Co-authored-by: Amp * docs(eval):为测试用例添加来源归属 每个用例现在标记为 DOCS 或 EXTENDED,以指示 它是基于 Axiom 的 SPL 速查表还是我们手动验证的扩展模式。 * feat(eval):将数据集 schema 注入翻译提示 - 添加 getDatasetSchema() 以通过 APL getschema 获取字段名/类型 - 在内存中缓存 schema 结果以避免冗余 API 调用 - 在系统提示中包含 schema,使模型知道字段类型 - 修复模型对字符串 status 字段省略 toint() 的假阴性 - 根据文档技能审查清理冗余注释 Amp-Thread-ID: https://ampcode.com/threads/T-019c0028-86c0-772a-b132-f26f3b6b2f37 Co-authored-by: Amp * fix(eval):为 schema 获取添加超时和错误处理 - 通过 AbortController 为 executeAplQuery 添加 30 秒超时 - 将 schema 获取包装在 try/catch 中以防止评估失败 - schema 获取失败现在记录警告并在没有 schema 的情况下继续 Amp-Thread-ID: https://ampcode.com/threads/T-019c0028-86c0-772a-b132-f26f3b6b2f37 Co-authored-by: Amp * revert:移除 schema 注入(将在单独的 PR 中重新审视) 回滚 b981727 和 7e3dc2b——数据集 schema 注入实验 显示出前景但需要更多工作。保持评估 CI 处于可工作 状态以便合并。 Amp-Thread-ID: https://ampcode.com/threads/T-019c008d-fe62-774f-94fd-ee6ccabd3adb Co-authored-by: Amp --------- Co-authored-by: Amp
无版本号
chore:从所有 SKILL.md frontmatter 中移除 skill_path Amp-Thread-ID: https://ampcode.com/threads/T-019bef99-b11e-733d-acd8-658ea022ea6d Co-authored-by: Amp
无版本号
为所有技能添加 skill_path 以兼容 harness 一些 agent harness 不会自动跟踪技能文件 在磁盘上的位置。skill_path 字段告诉它们从技能位置解析相对 路径(scripts/、reference/、templates/)。 Amp-Thread-ID: https://ampcode.com/threads/T-019bef72-c734-7483-9bd2-5cee608d288c Co-authored-by: Amp
无版本号
推荐使用个人访问令牌而不是 API 令牌
无版本号
为所有 README 添加交互式 Axiom 配置设置和配置章节
无版本号
为所有技能添加 README,向主 README 添加 npx 安装说明 Amp-Thread-ID: https://ampcode.com/threads/T-019bedbd-4dba-71cc-a193-5ce7890bfb1f Co-authored-by: Amp
无版本号
feat(eval):将 model id 添加到评估元数据(#12) - 从 harnesses index 导出 MODEL_ID - 包含在 spl-to-apl 评估元数据中 Amp-Thread-ID: https://ampcode.com/threads/T-019be760-4790-7457-bf5c-9a840517f925 Co-authored-by: Amp
无版本号
revert:恢复原始 spl-to-apl SKILL.md 意外包含在 #10 squash merge 中 Amp-Thread-ID: https://ampcode.com/threads/T-019be760-4790-7457-bf5c-9a840517f925 Co-authored-by: Amp
无版本号
feat(eval):将 git 分支和提交添加到评估配置标志(#10) * feat(spl-to-apl):更新到 v2 技能格式 - 更简洁,重点突出关键差异 - 结构更好,便于快速参考 - 相同的参考文件(已对齐) * chore:空白变更以触发评估 * feat(eval):将 git 分支和提交添加到评估配置标志 - 向 app-scope schema 添加 git.branch 和 git.commit 标志 - 在两个 CI 工作流中通过 CLI 传递标志 - 在 spl-to-apl 评估的 configFlags 中包含 git - 支持在 axiom ui 中按分支/提交过滤评估运行 Amp-Thread-ID: https://ampcode.com/threads/T-019be760-4790-7457-bf5c-9a840517f925 Co-authored-by: Amp --------- Co-authored-by: Amp
无版本号
fix:默认使用 tool-simulation harness,添加丰富的评估元数据
无版本号
chore:触发评估工作流
无版本号
feat(eval):为 harness 结果添加元数据丰富 - 添加 metadata.ts,包含 git 提交、内容哈希、模型解析 - Harness 返回带有 output + metadata 的 HarnessResult - 收集 model.id、model.provider、skill.path、skill.contentHash、 skill.gitCommit、harness.type、tokens、latency、tools.called - 更新评估以使用 TaskOutput 类型供评分器使用 - 使元数据显式化以便查询,即使 OTEL 已捕获它 Amp-Thread-ID: https://ampcode.com/threads/T-019be252-fd58-740b-9fa3-efb5eaa252f8 Co-authored-by: Amp
无版本号
feat:添加用于技能评估的 eval-tooling 框架 - 添加 eval-tooling/ 及 harness 基础设施 - prompt-injection:将技能 + 参考注入系统提示 - tool-simulation:通过工具模拟 Amp 的技能加载 - 为技能特定评估添加 .meta/ 目录 - 添加 spl-to-apl 评估,包含 31 个测试用例和 4 个评分器 - 使用 Axiom 评估框架,支持可配置的 harness 类型 Amp-Thread-ID: https://ampcode.com/threads/T-019be230-cd56-772c-8c63-977f2f3fb6fb Co-authored-by: Amp
无版本号
chore:将 spl-to-apl 技能重构到 skills/ 目录
无版本号
chore:初始仓库结构

暂无评论

none
暂无评论...