SuperAPI AI 工具集

adk-verify-snippets

编程与开发

查看项目

更新于 10-15 21:53

技能介绍

用途:校验 Markdown 文档里的每个 ```python 代码块是否真能编译运行。脚本从 Markdown 提取代码块,通过随附的 run.py 在各自子进程中执行,并生成报告,涵盖每个片段的加载状态、运行状态与行覆盖率。

只读约定:校验文档不得改动文档。不要创建、修改或删除仓库内任何文件,包括被校验的 Markdown、其代码块及 SKILL.md。只报告失败,不修复、不提供补丁。脚本仅有两处写入:系统临时目录中的临时 .py 文件(退出时删除),以及源 Markdown 旁边的报告。

前置条件:ADK 开发环境,在仓库根目录运行并激活 uv 虚拟环境(见 adk-setup 技能)。coverage 为可选,非项目声明依赖,需显式安装;未安装时 Coverage 列显示 —。安装命令:uv pip install coverage。仅构建 Agent、App 或 Workflow 的片段需要 Gemini API key,会调用真实 API;export GEMINI_API_KEY="{your_key}" 或 export GOOGLE_API_KEY="{your_key}"。两者都设置时 harness 会丢弃 GOOGLE_API_KEY,GEMINI_API_KEY 优先。

用法:uv run --no-sync python .agents/skills/adk-verify-snippets/scripts/verify_md.py {path_to_markdown_file}。脚本打印每个片段的进度,把报告写到源文件旁并打印完整路径。报告文件名为源文件名小写、非 [a-z0-9_] 字符全部去净后加 _REPORT.md,例如 Workflow-Guide.md 生成 workflowguide_REPORT.md;应以脚本打印的路径为准,不要自行拼接。报告含 Executive Summary 表(每片段一行),以及每片段的详细部分,包含代码块、执行日志(stdout 与 stderr/traceback)和覆盖率输出。

片段分类:Runnable——含模块级 ADK 组件。片段把 Workflow、Agent 或 App 赋给模块级变量时,harness 会针对 Gemini API 执行;变量名不限,通过 vars(module) 扫描。优先级为 Workflow、根 Agent、App;片段中任意 Workflow 优先于任意 agent。根 agent 是不出现在其他 agent 的 sub_agents 中的第一个 agent,因此多 agent 片段无论定义顺序如何都能正确解析。App 必须用 root_agent 构造,否则运行失败。发送的提示为 "Test input topic",可在片段中定义模块级 test_input 字符串覆盖。Load-only——无 ADK 组件,仅确认可编译和导入,不调 API,报告显示 ➖ NO ADK COMPONENT。Skipped——标注 ignore:在 ```python 围栏前一行单独写 <!-- verify-snippets: ignore --> 可排除该块,适用于伪代码、示意片段和需要外部环境的片段,报告显示 ⏭️ SKIPPED。

会导致正确片段被报为损坏的限制(应标注 ignore,而不是改文档绕过):片段之间无共享状态,每个片段在全新子进程中运行,依赖前一块导入或变量的片段会 NameError 或 ImportError;每个片段 120 秒超时,超时后进程被杀并报运行失败;标注位置只作用于下一个 python 围栏,中间空行可以,任何散文行或标题会取消标注;裸 会关闭代码块,解析器在第一个无语言标签的围栏处关闭 Python 块,片段内容中的裸围栏会截断它,带标签的围栏(如 ```bash)作为字面内容保留、安全;模块级 asyncio.run() 与 harness 自身事件循环冲突并报运行失败,顶层异步调用应放在 if name == "main": 之后。

向用户报告:读取生成的报告,原样复制 Executive Summary 表,保持六列及顺序不变:Snippet | Preceding Heading | Load Phase | Run Phase | Coverage | Details。呈现后停止。