antithesis-setup – Antithesis 测试环境配置 Skill

3周前更新 15 0 0 0

antithesis-setup 是用于指导 AI Agent 完成 Antithesis 平台初始配置与接入的 Skill,适合需要将项目环境连接到 Antithesis 进行确定性模拟测试的开发者。

Skill 安装

多 Agent 安装
npx skills add https://github.com/antithesishq/antithesis-skills --skill antithesis-setup

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

Skill 调研报告

Skill 详细介绍

antithesishq/antithesis-skills#antithesis-setup 是 Antithesis 官方 Skills 仓库中负责环境初始化配置的 Skill。Antithesis 是一个确定性仿真测试平台,用于在可控、可复现的环境中运行软件系统并暴露并发、时序、状态相关的隐蔽缺陷。这个 Skill 的作用,是帮助 AI Agent 完成 Antithesis 使用前的初始配置工作,让用户不必手工翻阅文档逐项对照参数。

它不是一个独立运行的软件,也不是测试执行引擎。真正执行确定性仿真、故障注入和结果分析的是 Antithesis 平台本身,这个 Skill 提供的是一层配置与引导指令:告诉 Agent 在准备接入 Antithesis 时应该检查什么、生成什么、调整什么。

核心用途

  • 引导 Agent 完成 Antithesis 项目接入前的初始设置
  • 协助生成或调整 Antithesis 所需的配置文件
  • 检查当前项目是否满足 Antithesis 接入的前置条件
  • 在用户对 Antithesis 配置不熟悉时,给出结构化的配置步骤

典型任务

  • 为一个已有代码仓库准备 Antithesis 运行所需的配置
  • 梳理容器镜像、启动命令、测试入口等接入要素
  • 根据项目结构确定需要提交给 Antithesis 的文件清单

适合哪些用户

  • 正在评估或已经使用 Antithesis 做确定性仿真测试的团队
  • 希望减少手工配置成本、让 Agent 协助完成初始化的开发者
  • 需要在 CI/CD 流程中接入 Antithesis 的工程人员

不适合哪些需求

  • 只想做常规单元测试或集成测试,不需要确定性仿真
  • 不使用 Antithesis 平台,只是看到“setup”字样想找通用初始化工具
  • 期望这个 Skill 自己执行测试、自己给出缺陷报告

由于当前可确认的官方资料有限,关于该 Skill 的具体指令内容、支持的项目类型和配置细节,建议以仓库中的 SKILL.md 及 Antithesis 官方文档为准。

Skill 安全评估

整体判断:这个 Skill 来自 Antithesis 官方组织仓库,来源可信度较高。它属于配置引导类 Skill,本身不包含独立可执行程序,风险主要集中在 Agent 按引导操作时可能触及的文件与凭证层面。

需要关注的点

  • 文件写入:初始化配置通常会创建或修改项目内的配置文件。如果 Agent 自动执行,可能覆盖已有设置。建议在操作前确认变更范围,必要时先做版本控制提交或备份。
  • 凭证与密钥:接入 Antithesis 平台通常需要访问凭证。这个 Skill 本身不应读取或保存密钥,但如果在配置过程中需要填写 Token 或 API Key,应确保这些内容只通过项目既定的安全方式管理,不要写入会被提交到仓库的文件。
  • Shell 权限:如果 Agent 被允许自动执行 Shell 命令来完成配置检查,存在误执行风险。可以关闭 Agent 的自动执行权限,由用户手动运行它给出的命令。
  • 网络访问:判断是否需要拉取依赖或镜像时可能涉及网络请求。正常用途下的联网是合理的,但要确认请求目标是官方源。

降低风险的建议

  • 在干净的、已纳入 Git 管理的分支上执行初始化操作,方便回滚
  • 关闭 Agent 自动执行 Shell 和高风险文件写入的权限,改为人工确认后执行
  • 不要把 Antithesis 凭证提交到代码仓库
  • 首次使用时先在测试项目验证,再用于正式项目

未发现该 Skill 存在已知的恶意行为或供应链问题,但也不应据此认为它“完全无风险”。具体安全性仍取决于 Agent 授予它的权限范围。

Skill 使用要求

一、Agent / 客户端

这个 Skill 以 Agent Skill 的形式分发,核心是一组指令,需要由支持 Skill 加载机制的 AI Agent 来读取和执行。目前官方没有公布完整的第三方 Agent 兼容列表。

从工作方式看,在支持 Skills、自定义 Skill 或类似指令加载机制的环境中通常都可以尝试,包括 Claude Code、Codex、Cursor、Trae、OpenClaw、WorkBuddy 等主流 Agent。不同 Agent 的 Skill 加载方式和兼容程度可能不同,具体以对应 Agent 当前版本为准。实际使用中,Claude Code 这类原生支持 Skill 的客户端通常体验更顺。

二、运行环境 / 依赖

项目 要求
Agent 支持 Skill 加载机制的 AI Agent
项目代码 需要有一个待接入 Antithesis 的项目
网络 接入 Antithesis 平台时通常需要
其他依赖 以官方 SKILL.md 和 Antithesis 文档为准

官方资料未明确列出 Node.js、Python、Docker 等具体版本硬性要求,此处不做猜测。

三、权限

  • 文件读取:必需,用于了解项目结构
  • 文件写入:可选,用于生成或修改配置文件
  • Shell:可选,用于执行配置检查命令
  • 网络:可选,接入平台时需要

四、账号 / API Key

这个 Skill 本身不需要账号或 API Key。接入 Antithesis 平台时,平台侧通常需要相应的访问凭证,这属于后续操作项目所需,与 Skill 是否可用无关。是否需要以及如何配置,以 Antithesis 官方说明为准。

最小使用条件

  1. 一个支持 Skill 的 AI Agent
  2. 一个待接入 Antithesis 的项目
  3. 按需授予文件读写与 Shell 权限

Skill 安装、使用与卸载教程

一、安装

可以直接复制本页面提供的 Skill 安装指令,粘贴到对应的 Agent 或终端中执行。LemonAIKit 的 Skill 详情页已经给出安装指令,不需要在正文里重复一整套克隆与复制流程。

如果不清楚自己的 Agent 如何安装 Skill,可以直接在当前 Agent 中提问:

如何安装 antithesishq/antithesis-skills#antithesis-setup?

如何在 Claude Code 中安装 antithesishq/antithesis-skills#antithesis-setup?

如何在 Cursor 中安装 antithesishq/antithesis-skills#antithesis-setup?

让 Agent 按照它自己的 Skill 加载与管理机制来指导安装,通常比手工摸索目录位置更稳妥。如果该 Skill 存在特殊安装要求,以官方 SKILL.md 为准。

二、安装后如何使用

安装后,在需要为项目接入 Antithesis、或进行初始化配置时,让 Agent 调用这个 Skill。适合交给它的任务是:准备接入配置、检查前置条件、梳理需要提交的文件。

向 Agent 描述需求时,说清楚项目位置和你想达成的初始化目标即可。例如:

使用 antithesis-setup,帮我把当前项目配置成可以接入 Antithesis 的状态。

使用 antithesis-setup,检查这个仓库还需要补哪些文件才能跑 Antithesis。

使用 antithesis-setup,给出接入 Antithesis 前需要完成的配置清单。

三、卸载

不同 Agent 的 Skill 安装位置和管理方式不同。优先使用对应 Agent 或 Skill 管理器提供的删除方式移除该 Skill。如果没有统一卸载命令,直接询问当前 Agent 通常更稳妥:

如何卸载 antithesishq/antithesis-skills#antithesis-setup?

卸载 Skill 不会影响已经生成的配置文件,如果需要一并清理,请手动处理这些文件。

常见问题

安装后 Agent 没识别到这个 Skill 怎么办?

先确认 Skill 被放在了该 Agent 规定的 Skill 目录下,并重启或重新加载 Agent 会话。如果仍不生效,直接问当前 Agent:“为什么我没有找到 antithesis-setup 这个 Skill?”让它自查加载路径。

可以同时安装到多个 Agent 吗?

可以。Skill 本质是指令文件,不绑定单一 Agent。只要各 Agent 有各自的加载目录,分别安装即可。注意不同 Agent 的兼容程度可能不同,表现未必一致。

这个 Skill 会修改我已有的项目文件吗?

在生成或调整配置时会涉及文件写入。是否自动写入取决于你授予 Agent 的权限。如果不希望自动修改,可以关闭自动写入,让 Agent 先给出变更建议,由你确认后再执行。

中国大陆使用有网络限制吗?

Skill 的安装与使用本身通常不依赖特定地区网络。但接入 Antithesis 平台时需要访问其服务,如果网络无法直连,可能需要自行处理网络环境。Skill 本体不涉及此类限制。

它和通用的项目初始化 Skill 有什么区别?

通用初始化 Skill 面向的是脚手架、依赖安装等常规起步工作,而这个 Skill 聚焦于 Antithesis 平台的接入配置。不做确定性仿真测试的项目通常用不到它。

Skill 更新后需要重新安装吗?

如果是从仓库直接获取的 Skill,更新通常意味着重新拉取最新版本或按官方说明更新。具体方式以该 Skill 的官方说明和你的 Agent 管理方式为准。

Skill 更新日志

版本列表
无版本号
更新 PR #204 的技能版本
无版本号
更新 PR #198 的技能版本
无版本号
更新 PR #201 的技能版本
无版本号
更新 PR #200 的技能版本
无版本号
更新 PR #195 的技能版本
无版本号
更新 PR #199 的技能版本
无版本号
更新 PR #194 的技能版本
无版本号
更新 PR #191 的技能版本
无版本号
fix: 将 podman compose 指南替换为 Docker Compose v2 (#191) * fix: 将 podman compose 指南替换为 Docker Compose v2 Antithesis 针对 podman 运行独立的 docker-compose 二进制文件。它 从不运行 `podman compose`。snouty 以相同方式驱动 Docker Compose v2: 独立的 `docker-compose` 二进制文件,或来自 snouty 0.7.0 的 `docker compose` CLI 插件。这些技能告诉 agent 优先使用 `podman compose`,而没有任何版本的 snouty 支持这一点。 compose CLI 和容器引擎是两个独立的选择。这些 技能现在说明了这一点,列出了两种受支持的组合,并指引 agent 使用 `snouty doctor` 来读取 snouty 在此机器上选择的组合。 snouty 从不构建镜像,也从不拉取镜像,因此构建必须落在 snouty 所选引擎的镜像存储中。setup 和 launch 技能现在包含两种引擎的构建命令,包括使 podman 支持独立二进制文件的 DOCKER_HOST 接线,以及用于在同时装有 podman 的机器上进行 docker 构建的 SNOUTY_CONTAINER_ENGINE 覆盖。 PREREQUISITES.md 从两个平台部分中删除了 `podman-compose`。在 Debian 上,`docker-compose-v2` 包仅提供 CLI 插件,因此 podman 组合改为下载独立二进制文件。 Co-Authored-By: Claude * docs: 审查后收紧 compose 指南 将构建指南从 docker-compose.md(该文件涵盖编写 yaml)移到 submit-and-test.md,agent 在那里运行构建。 这消除了两次指针跳转。 删除 snouty 版本注意事项、README.md 中重复的段落, 以及重复的“不要使用 podman compose”行。现在由一条正面 指令承载该规则:运行 `snouty doctor` 并使用它指定的组合进行构建。 指引 agent 查看 `snouty doctor` 的检查项,而不是其解析后的 设置。检查项会打印 `Container runtime: docker detected`,而 设置行会打印 `auto-detect`。 在 launch 技能和 README 中恢复 `docker compose build` 作为可运行命令, 并将 PREREQUISITES.md 中的 `snouty doctor` 步骤移到 安装 snouty 之后。 Co-Authored-By: Claude * 更新 SKILL.md 以提供更清晰的前置条件说明 澄清了运行 'snouty doctor' 的说明,并删除了前置条件中的冗余内容。 * docs: 每个文件只说明一次 compose CLI 选择 这些技能在每条命令处都重复“或 `docker-compose`”。来自 `snouty doctor` 的一次观察即可为整个运行确定 CLI,因此 每个文件现在只说明一次,然后直接写 `docker compose`。 Co-Authored-By: Claude * docs: 删除脆弱的 podman socket 单行命令 Compose 默认使用 Docker 守护进程 socket,因此 agent 自己的构建 在 podman 机器上需要 DOCKER_HOST。snouty 为其自己的 compose 调用设置它,而不是为构建设置。 不过,macOS 命令不应被直接交给用户。podman 从当前 TMPDIR 推导 socket 路径,而 socket 是在 `podman machine start` 时绑定到该 TMPDIR 下的, 因此 `podman machine inspect` 可能报告一个不存在的路径。snouty 正是 出于这个原因探测相邻位置。改为说明该要求和 macOS 陷阱。 Co-Authored-By: Claude * docs: podman 需要启动其 API socket 在全新的 podman 4.9.3 安装上验证。`podman info` 报告了一个 socket 路径,而 `RemoteSocket.Exists` 为 false,并且 `snouty doctor` 仍然 打印 "Container runtime: podman detected"。将 DOCKER_HOST 导出到 该路径会给 compose 一个失效的 socket。 将检查项和 `systemctl --user enable --now podman.socket` 修复 添加到构建指南和 podman 安装步骤中。 Co-Authored-By: Claude * docs: 在 podman 引擎上使用 `podman compose` 构建 `podman compose` 是一个包装器,而不是 `podman-compose`。它针对 podman 的 API socket 执行 Docker Compose v2 二进制文件,因此它自己完成 DOCKER_HOST 接线,镜像会落在 podman 的存储中。已在 podman 4.9.3 上使用独立二进制文件和 CLI 插件作为提供程序验证。 用它替换手动 DOCKER_HOST 导出,并删除 `podman compose` 不是替代品的说法。 socket 检查保留:当 podman 未监听时,无论哪种方式构建都会失败并显示 "Cannot connect to the Docker daemon"。 snouty 仍然需要 PATH 中的独立 `docker-compose`。在只有 podman 而没有 `docker` CLI 的情况下,`snouty doctor` 会报告 "no usable Docker Compose", 而 `podman compose` 可以工作。 Co-Authored-By: Claude * docs: 构建前检查 podman compose 提供程序 podman 从 ["docker-compose", "podman-compose"] 解析其 compose 提供程序,并回退到 podman-compose Python 工具,该工具 不是 Docker Compose。`podman compose version` 会指出运行的是哪一个: 对于 Compose v2 提供程序,stdout 输出 "Docker Compose version ...", 对于回退项则输出 "podman-compose version ..."。两者均已在 podman 4.9.3 上验证。 将该命令与 socket 检查一起替换 stderr 提供程序行的建议。 Co-Authored-By: Claude * docs: 应用 PR 191 的审查建议 从安装步骤中删除 podman socket 检查和 `snouty doctor` 行, 将 `systemctl --user enable --now podman.socket` 保留在 安装命令本身中。将 podman 构建提升为 launch 技能中的顶级要点, 并缩短引擎覆盖子要点。说明 `podman-compose` Python 工具与 harness 所需的 docker-compose 功能不兼容。 Co-Authored-By: Claude --------- Co-authored-by: Carl Sverre Co-authored-by: Claude
无版本号
更新 PR #189 的技能版本
无版本号
更新 PR #188 的技能版本
无版本号
更新 PR #184 的技能版本
无版本号
chore: 为 PR #182 回填 changelog 条目和技能版本号提升 (#183) * 更新 PR #182 的 changelog 回填:PR #182 合并时没有 changelog 标签,因此 pr-merge-changelog 工作流短路,未添加任何条目。 通过运行 `.ci-scripts/changelog.py add-entry` 并传入 `find_merged_pr.py` 本应生成的条目文本复现。 Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_018gQyXJukB6xdZzEieUvMTu * 更新 PR #182 的技能版本 回填:同样的短路跳过了版本号提升。通过 运行 `.ci-scripts/update_skill_versions.py update --sha 5b6aeb5` 复现, 使用工作流本应传入的 #182 合并提交 SHA。 Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_018gQyXJukB6xdZzEieUvMTu --------- Co-authored-by: Carl Sverre Co-authored-by: Claude Opus 5 (1M context)
无版本号
fix: 修复损坏的故障注入文档链接并解析重定向 (#182) * fix: 修复故障注入文档链接并解析重定向 故障注入文档已移至 /docs/product/fault_injection/。三个 技能指向了会 404 的过时路径:antithesis-setup 和 antithesis-workload 使用了 /docs/concepts/fault_injection.md,而 antithesis-setup-k8s 使用了 /docs/environment/fault_injection.md(该路径 302 重定向到 concepts 路径,然后 404)。 还将重定向的 agent 文档 URL 替换为其目标: docs.anthropic.com 和 docs.claude.com 的 Claude Code 页面现在指向 code.claude.com,developers.openai.com/codex 指向 learn.chatgpt.com/docs, discord.gg 指向 discord.com/invite。 有三个重定向被有意保留:snouty releases/latest/download URL 会解析为带版本固定、签名且令牌会过期的资产 URL;claude.ai/install.sh 是规范的 安装程序入口点;以及 GitHub issue 模板 URL 对于未认证请求只会重定向到登录页面。 Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_018gQyXJukB6xdZzEieUvMTu * fix: 将 Codex 链接指向 CLI 文档页面 审查反馈:所有四个 Codex 引用都应指向 learn.chatgpt.com/docs/codex/cli,而不是文档根目录或旧的 openai.com/index/openai-codex/ 公告页面。 Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_018gQyXJukB6xdZzEieUvMTu * chore: 从 lychee.toml 中删除失效的 openai.com 排除项 该排除项是在 #36 中添加的,因为 openai.com 对 GitHub Actions runner 返回 403。它覆盖的唯一 URL 是两个 openai.com/index/openai-codex/ 链接,现在已指向 learn.chatgpt.com/docs/codex/cli,因此它不再匹配任何内容。 www.npmjs.com 排除项保留;PREREQUISITES.md 仍然链接到那里。 Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_018gQyXJukB6xdZzEieUvMTu --------- Co-authored-by: Carl Sverre Co-authored-by: Claude Opus 5 (1M context)
无版本号
更新 PR #180 的技能版本
无版本号
更新 PR #179 的技能版本
无版本号
更新 PR #178 的技能版本
无版本号
feat: 创建 antithesis-setup-k8s 技能,以使用 Kubernetes 环境开始使用 Antithesis (#178) * feat: 创建 antithesis-setup-k8s 技能,以使用 Kubernetes 环境开始使用 Antithesis 此技能的目的是让被测系统在 Kubernetes 中运行,并在 Antithesis 中运行。该技能需要 helm chart 或 Kubernetes manifest,并以启动 basic_k8s_test 结束,以便让 客户在 Antithesis 中运行。 此技能目前不包含插桩或 SDK 断言。 * feat: 移除 k8s-onboarding-assistant,并将 antithesis-setup-k8s 提升为使用 Kubernetes 作为容器编排工具的 antithesis-setup 替代方案 移除 antithesis-k8s-onboarding-assistance 技能。它 已被 antithesis-setup-k8s 取代。 * 从 antithesis-setup-k8s 中移除可选依赖项
无版本号
更新 PR #177 的技能版本
无版本号
更新 PR #176 的技能版本
无版本号
更新 antithesis-setup 以显式使用 antithesis-launch 而不是 snouty launch (#176)
无版本号
fix: 文档站点重组后更新 Antithesis 文档链接 (#175) Antithesis 文档在新的 concepts/、reference/ 和 product/ 前缀下重组了其 URL 结构,这导致多个技能中引用的 markdown (.md) 文档链接出现 404。此更改将每个受影响的链接重新指向其当前位置,通过文档自身的重定向映射解析,并与 llms.txt 交叉核对。 它还将 research 和 setup 技能(及其参考资产)中剩余的面向 agent 的 HTML 文档链接转换为 markdown 版本,以便 agent 直接获取 markdown。README 和入门指南中面向人类的正文链接,以及 antithesis-documentation 技能的说明性 URL 示例,则有意保留为 HTML 页面 URL。 make validate-links 通过且无问题。 Co-authored-by: Claude
无版本号
更新 PR #169 的技能版本
无版本号
更新 PR #165 的技能版本
无版本号
更新 PR #162 的技能版本
无版本号
更新 PR #168 的技能版本
无版本号
fix: 不要将 ANTITHESIS_SDK_LOCAL_OUTPUT 挪用于 setup-complete (#168) setup-complete.sh 之前会在 ANTITHESIS_OUTPUT_DIR 未设置时, 回退为将 setup_complete 事件写入 ANTITHESIS_SDK_LOCAL_OUTPUT。该变量 仅用于重定向库 SDK 的输出;将其用作 shell 脚本的通用输出路径 暗示了比其实际更广泛的角色。该脚本现在仅在 ANTITHESIS_OUTPUT_DIR 设置时输出(按需创建目录), 否则打印清晰的无操作消息并干净退出。 还从 Rust 插桩参考中删除了 ANTITHESIS_SDK_LOCAL_OUTPUT 的提及, 因为它不是这些技能需要呈现的概念,并且可以从文档中推断出来。 Co-authored-by: Claude
无版本号
更新 PR #161 的技能版本
无版本号
更新 PR #167 的技能版本
无版本号
更新 PR #164 的技能版本

暂无评论

none
暂无评论...