开发与工程

可选依赖冒烟测试技能(agent-service-toolkit)

当改动涉及 Postgres/MongoDB 检查点器、AG-UI 端点或 LangFuse 追踪时,用一条脚本在 Docker 中启动真实依赖并端到端验证集成,而不必等完整 CI。

64/ 100
推荐

整体可靠,存在已披露的局限;按说明试用并保留回滚路径。

查看评分依据 ↓
可直接使用于
Codex · Claude Code
Star 数
★ 4.5k
最近更新
21 天前
License
MIT
smoke-testingdockerpostgresmongodb
+4langfuseag-uifastapilanggraph

这个 Skill 能做什么,适合哪些场景?

这是 JoshuaC215/agent-service-toolkit 仓库内 .claude/skills/smoke-test/SKILL.md 描述的技能,配套 scripts/smoke_test.sh。该脚本把单元测试和默认 CI 覆盖不到的可选集成(Postgres、MongoDB 检查点器、AG-UI 端点、LangFuse 追踪)逐个拉起:依赖跑在 Docker 容器里,服务经 uv 在宿主机运行,最后做端到端验证并清理。它的核心设计是“依赖身份校验”——不仅验证 API 测试通过,还直接查询依赖本身,确认本次运行的数据真的写入了目标后端,防止静默回退到 SQLite 这类假绿。技能同时明确指导何时不应运行,避免为无关改动浪费几分钟和大量 token。

  • 按目标(postgres / mongo / agui / langfuse / all)在 Docker 中启动真实依赖,并在宿主机以 uv 启动服务
  • 运行 API 级持久化检查,并直接查询依赖(用每次运行唯一的 SMOKE_THREAD_ID)确认数据确实写入该后端
  • langfuse 目标会拉起 LangFuse 完整 6 服务自托管栈(约 5GB 镜像),故默认排除,需单独或随 all 运行
  • 端口 :8080 已被占用时拒绝启动,防止健康检查误判到无关进程;服务启动即挂时会快速失败并输出服务日志
  • 提供 Claude Code 云端沙箱的已知坑位指引(dockerd 启动、cgr.dev 白名单、pkill 自杀问题、后台运行等)
  • 测试位于 tests/smoke/ 并标记 @pytest.mark.docker,不在 CI 的 docker 任务范围内
适合
  • 改动了 src/memory/*、checkpointer 接线或 saver/store 类的开发者,想确认 Postgres/MongoDB 检查点器仍真实可用
  • 升级了 langgraph-checkpoint-postgres/-mongodb、psycopg 或 pymongo 版本后,验证集成未被破坏
  • 修改了 src/service/agui.py 或 ag-ui-* 依赖,需要确认 AG-UI 流式端点正常
  • 调整了 LangFuse CallbackHandler 接线或 langfuse 依赖,想在完整 CI 之外快速验证追踪链路
  • 负责发版前检查的维护者或代理,需要一次可选依赖的整体信心检查(运行 all)
  • 在 Claude Code 云端沙箱中工作的代理,需要按技能内置的沙箱规避经验顺利跑通脚本
不适合
  • 纯前端、文档、提示词或 agent 图改动:技能明确说多数改动不需要跑它,此时运行纯属浪费时间和 token
  • 无法访问 Docker 或容器镜像拉取(如受限网络未放行 cgr.dev)的环境:脚本依赖在 Docker 中启动真实基础设施
  • 想要穷尽式集成测试覆盖的团队:冒烟测试只是“是否明显坏了”的快速信心检查,不是完整验证

如何安装这个 Skill?

开始前你需要
Agent 需要具备
  • Shell / 命令行
  • 网络访问
  • 本地文件系统
需要预先安装
  • Docker
  • uv
  • PostgreSQL/MongoDB/LangFuse images via docker compose

本技能随 agent-service-toolkit 仓库分发,需先克隆仓库:

git clone https://github.com/JoshuaC215/agent-service-toolkit.git
cd agent-service-toolkit
uv sync --frozen

源材料未说明将 .claude/skills/ 内技能安装到其他平台的专门步骤;可直接把 .claude/skills/smoke-test/ 目录复制到你自己的技能目录。

通用方式:手动安装到 Claude Code(macOS / Linux)
tmp="$(mktemp -d)"
git clone --depth 1 https://github.com/JoshuaC215/agent-service-toolkit.git "$tmp"
mkdir -p ~/.claude/skills
cp -R "$tmp/.claude/skills/smoke-test" ~/.claude/skills/
rm -rf "$tmp"

根据源仓库地址和 Skill 路径自动生成,只复制这个 Skill 的文件夹。如果上文有作者提供的安装方式,请优先按作者说明操作;想只在当前项目中使用,把 ~/.claude/skills 换成项目里的 .claude/skills。

如何使用这个 Skill?

试试这样说

安装后,把下面任意一句发给 Agent 即可触发:

  • 我刚改了 src/memory/ 里的 checkpointer 接线,帮我跑 postgres 和 mongo 的冒烟测试并解读结果
  • 升级了 pymongo 版本,用冒烟测试确认 MongoDB 检查点器没有静默回退
  • 改动只涉及 Streamlit 界面,判断一下有没有必要跑 smoke_test.sh
  • 发版前做一次完整的可选依赖信心检查,包括 langfuse

技能由模型在改动命中相关路径时按需触发,或由用户显式要求运行冒烟测试。核心是运行 scripts/smoke_test.sh 并选择最窄的覆盖目标:

./scripts/smoke_test.sh # 默认:postgres, mongo, agui
./scripts/smoke_test.sh mongo # 单个目标
./scripts/smoke_test.sh postgres agui # 子集
./scripts/smoke_test.sh langfuse # 重量级:约 5GB 栈,单独运行
./scripts/smoke_test.sh all # 全部,含 langfuse

全绿以 “--- All smoke tests passed ---” 结束;任何失败或未知目标返回非零。解读结果时信任 “✓ verified: N …” 这类依赖身份校验行;出现 “✗ FAIL: … was NOT exercised as intended” 应视为真实失败而非偶发。LangFuse 摄取是异步的,脚本会轮询 traces API 几秒再判定。

这个 Skill 有哪些优点和局限?

优点
  • 依赖身份校验设计能抓到“API 测试通过但根本没用目标依赖”的静默回退
  • 可选目标粒度细,可只跑命中的那一两个,成本可控
  • 内置大量沙箱/云端环境的实战坑位指引,适合代理自动执行
  • 端口占用、启动即挂、异步摄取等失败模式都有明确防护
局限
  • langfuse 目标需拉取约 5GB 的 6 服务栈,运行沉重
  • 强依赖 Docker 和宿主机 uv 环境;容器内构建在受限代理下不可行
  • 只是冒烟级检查,不等于完整集成测试覆盖
  • 仅在 agent-service-toolkit 仓库语境下设计,复用到其他项目需按其扩展指引改写

这个 Skill 与同类方案有什么区别?

与相关 Skills 并排比较;分数均按同一 FSRS 标准得出。

Skill FS 评分 Star 数 最近更新 License
可选依赖冒烟测试技能(agent-service-toolkit) 本页 64 · 推荐 ★ 4.5k 21 天前 MIT
模型目录刷新技能(agent-service-toolkit) 60 · 推荐 ★ 4.5k 21 天前 MIT
VS Code 冒烟测试助手 ✓ Microsoft · 官方 53 · 谨慎使用 ★ 194k 11 天前 MIT
NV-Reason-CXR 胸部X光推理测试技能 ✓ NVIDIA · 官方 52 · 谨慎使用 ★ 3.6k 11 天前 Apache-2.0
Jetson BSP 镜像验证器 ✓ NVIDIA · 官方 50 · 谨慎使用 ★ 3.6k 11 天前 Apache-2.0

源材料将本脚本与常规 uv run pytest / 默认 CI 的 test-docker 任务对照:后者跑 tests/integration/,不覆盖需要真实基础设施的可选依赖;本技能专门补上这块,且不在 CI 中默认运行。

FollowSkills 如何评估这个 Skill?

FollowSkills 评估 · FSRS-1.0
推荐
64/ 100 五分制 3.2 / 5
1价值适配11 / 20 · 2.8/5

项目自身的可选依赖冒烟测试技能,明确说明「先判断要不要跑」而不是无脑执行,考虑了成本效益。

2可靠性14 / 20 · 3.5/5
3安全性20 / 25 · 4.0/5
4证据5 / 15 · 1.7/5
5易用性8 / 10 · 4.0/5
6维护性6 / 10 · 3.0/5
1 2 3 4 5 6

点击维度查看打分理由

评估于 2026年7月17日 评估证据[1]

证据充分度:低 — 主要依赖静态检查、作者材料或有限演示;适合发现线索,不适合做高风险决策。

本条评估按 FSRS 1.0 标准完成,维度分不做换算,已进入按 FSRS 2.0 重新评估的复核队列。

查看完整评分方法 →

常见问题

每次改动都要跑吗?
不。技能明确说多数改动不需要:加 agent 图、改提示词或工具、改文档、纯客户端/Streamlit 改动都可以跳过,只跑 uv run pytest 和普通 CI 即可。
为什么全绿还不代表“真的没问题”?
持久化测试只验证历史能跨两次调用存活,这对任何可用检查点器(包括 SQLite)都成立。如果 mongo 配置静默失效,pytest 步骤仍会通过。所以要信任每个目标的第二条独立校验(✓ verified 行),它确认依赖确实被使用。
运行成本如何?
默认目标会拉镜像并启动容器,需几分钟;langfuse 目标额外拉起约 5GB 的完整自托管栈,建议单独运行。技能建议永远选择覆盖改动的最窄目标。
在沙箱环境跑不动怎么办?
技能列出了典型问题与对策:dockerd 未启动需手动拉起;不要在沙箱内构建服务镜像(脚本本来就是服务跑宿主机、依赖进 Docker);受限网络需放行 cgr.dev;清理 8080 端口用 fuser -k 8080/tcp 而非 pkill -f;前台 sleep 循环可能被杀,应 nohup 后台运行并轮询日志。

同仓库的其他 Skills

均来自 JoshuaC215/agent-service-toolkit

相关 Skills