关于 TAR Engine
TAR Engine 用于审计 AI Agent 技能及相关配置,面向技能作者和安全审查者。它结合静态、语义、对抗和供应链检查,并可通过 CLI、CI、托管 Playground 或 MCP 服务运行。
主要功能
- 01静态规则与语义审计
- 02对抗式提示词探测
- 03依赖漏洞与仿冒检查
- 04评分、等级及逐行发现
- 05CLI、CI 与网页审计
适用场景
- 01发布前检查技能安全性
- 02在 CI 中按分数阻止构建
- 03编写技能时通过 Agent 触发审计
MCP 相关
提供 MCP 服务,允许兼容客户端调用 audit_skill_text 审计技能。语义与对抗检查需显式配置自带的 LLM 密钥;默认托管后端会接收待审计的技能文本。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
uvx tar-engineTAR_ENGINE_URLOverride the audit backend. Default is the hosted playground at https://tarai.dev. Set to http://localhost:8765 (or your own tar-engine deployment) to self-host and keep SKILL.md content on your machine.TAR_ENGINE_BYOK_OPENAI_KEY密钥OpenAI API key that unlocks the semantic LLM and adversarial prompt-fuzz layers. Static and supply-chain layers run without it.TAR_ENGINE_BYOK_ANTHROPIC_KEY密钥Anthropic API key alternative to the OpenAI key for the semantic and adversarial layers.本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
TAR Engine — 发布前审核 AI 技能的安全性
面向 AI Agent 技能的静态、语义、对抗和供应链审核。可在 CI 中运行,也可从 Claude Code / Cursor / Codex 将其作为 MCP 工具调用。大模型层支持自带 API 密钥(BYOK);可免费使用托管版,并在 tarai.dev 体验在线 Playground。
已列入官方 Model Context Protocol Registry,并已发布到 PyPI——可一键安装到任何兼容 MCP 的 Agent 中。
tar-engine 可审核 SKILL.md(OpenClaw、Claude Code)、Codex skill.yaml、Claude Code 自定义命令(.claude/commands/*.md)和 OpenCode 配置,无需改变技能的编写方式。核心理念是:技能通过所有静态危险信号检查后,运行时仍可能表现恶意。TAR Engine 能捕捉到这一点。
三种运行方式——其中两种无需在你的机器上安装任何东西:
- 托管版——无需安装。 在 tarai.dev Playground 中粘贴或上传技能,然后在浏览器中查看审核结果。无需安装,也无需在本地信任任何内容。
- 在 CI 中运行——无需安装到你的 Agent。 GitHub Action 会在你自己的 CI 沙箱中运行一个固定版本的发布包:
tar-engine scan ./skills --min-score 70,如果任何技能的得分低于门槛,就会以状态码1退出。这是发布前的关卡,而不是一张更精致的目录卡片。 - 在你的 Agent 中运行——按需选择。 安装 MCP 服务,在编写技能时审核任意
SKILL.md。这是一个固定版本、可通过哈希验证的 PyPI 发布包——不会安装任意git+https包。详情见下文。
审核结果示例
将它用于一个看起来没问题的技能。一个“每周笔记格式整理器”,其 SKILL.md 看起来干净无误——但其中暗藏着一个 curl … | bash 步骤、一个会将 ~/.aws 和 ~/.ssh 打包归档的“云同步”功能,还有一条指令,要求 Agent 对你隐瞒这些网络调用:
weekly-note-formatter 0 / 100 grade F risk CRITICAL
L01 static SS-003 critical remote script piped to shell (curl … | bash)
L01 static PI-002 critical hidden instruction — "don't tell the user"
L02 semantic SEM-003 critical only formats docs, yet packages up AWS creds + SSH keys
L02 semantic SEM-004 high instructs the model to lie about its network calls
L03 adversarial AR-002 high 3/3 role-jailbreak probes changed the skill's behavior
→ below --min-score 70, exit 1
正则表达式能捕捉到 curl | bash。语义和对抗层则能捕捉正则表达式无法发现的部分:超出技能所声明用途的意图,以及让 Agent 反过来对付用户的指令。每条发现都会标明确切的源代码行,并附上修复方法。
四个审计层
| 层级 | 检查内容 | 需要大模型? |
|---|---|---|
| L01 静态 | 正则匹配风险信号:curl|bash 安装、凭据/SSH 外传、混淆或 Base64 字符串、隐藏的“忽略之前指令”类指令、超出范围的文件写入 | 否 |
| L02 语义 | 阅读技能实际要求 Agent 执行的操作,并标记超出其声明用途的意图 | 是(BYOK) |
| L03 对抗 | 将 SKILL.md 视为系统提示词,并在 5 类攻击中运行 15 项探测,检查能否诱使其做出不安全行为 | 是(BYOK) |
| L06 供应链 | 解析声明的依赖项,并与 OSV.dev 公告及仿冒拼写参考列表进行核对 | 否 |
5 类对抗攻击(L03):
| 类别 | ID | 探测内容 |
|---|---|---|
| 指令覆盖 | AR-001 | ignore previous、new system prompt 劫持 |
| 角色越狱 | AR-002 | DAN/假设情境/虚构角色扮演绕过 |
| 隐藏载荷 | AR-003 | Base64/leet 语/相似 Unicode 字符走私 |
| 权限伪造 | AR-004 | I'm the developer / admin / platform staff |
| 反射式注入 | AR-005 | 将输出循环用作指令 |
每项技能都会获得一个 0–100 分数、一个 A–F 等级和一个风险类别。L01 和 L06 具有确定性且免费;L02 和 L03 需要你提供自己的大模型密钥(BYOK)。
这四个层级实现了一项供应商中立标准——技能审计维度清单(静态、语义、对抗/行为、供应链)。这些维度就是标准;TAR Engine 是一个开源参考实现。该清单还规定,审计工具本身也必须达到供应链标准——因此 TAR Engine 以固定版本、可验证哈希的 PyPI 发布包形式提供,并支持零安装的托管和 CI 路径,而不是通过 git+https 安装。
CLI — 从命令行审计 AI 技能
tar-engine CLI 会遍历目录,审计找到的每项技能,并返回适合 CI 使用的状态码。
# audit every skill under ./skills, fail the build if any scores below 70
tar-engine scan ./skills --min-score 70
# list discovered skills without auditing
tar-engine list ./skills
# JSON output for downstream processing
tar-engine scan ./skills --json
开箱即支持以下五种格式:
| 文件模式 | 格式 |
|---|---|
**/SKILL.md | OpenClaw、Claude Code、通用 Markdown |
**/.claude/commands/*.md | Claude Code 自定义命令 |
**/skill.yaml / .yml | Codex |
**/manifest.json | Codex / Claude Code(通过键检测) |
**/opencode.json | OpenCode |
每个审计载荷会打包主要技能文件,以及同一目录中的同级 .sh / .py / .js / .ts / .yaml / .json 辅助文件(上限为 200 KB)。可捕获“SKILL.md 干净,但 install.sh 有恶意内容”这类情况。
在 CI 中运行——零安装。 审计在你自己的 CI 沙箱中通过固定版本运行;不会向你的 Agent 安装任何内容,也无需信任任意 Git 获取操作:
- name: Audit AI skills
uses: qingxuantang/[email protected] # pinned release
with:
path: ./skills
min-score: 70
更喜欢普通步骤?直接运行固定版本的 PyPI 发布包——仍然无需 git+https:
- run: uvx --from tar-engine==0.3.3 tar-engine scan ./skills --min-score 70
Pre-commit 钩子:
#!/usr/bin/env bash
tar-engine scan ./skills --min-score 80 || exit 1
退出码:0 表示干净,1 表示低于阈值,2 表示用法错误/路径缺失。
安装为 MCP 工具
TAR Engine 以 Python 包形式提供 MCP 服务,可通过
uvx 运行——无需 Docker。默认情况下,它会连接到
托管后端 tarai.dev(免费,
但有速率限制)。
请先阅读 — 你信任的内容
- SKILL.md 会被发送到哪里。 使用默认配置时,MCP 服务会将你要求它审核的 SKILL.md 内容 POST 到
https://tarai.dev。我们不会将技能文本写入磁盘或记录日志,但它确实会离开你的设备。如果你要审核专有或敏感技能,请自行托管,并设置TAR_ENGINE_URL=http://localhost:8765。 - 不会在你不知情时转发密钥。 服务绝不会转发你的
OPENAI_API_KEY。语义和对抗性审核层需要你在 MCP 服务配置中通过TAR_ENGINE_BYOK_OPENAI_KEY明确选择启用——见下文的 BYOK。 - 适用的环境。 Claude Code CLI、Cursor、Codex CLI——任何 Agent 能启动子进程的环境都可以。Claude Desktop、Claude.ai 网页版和移动应用无法安装本地 MCP 服务;这些环境的托管端点即将推出——请前往 tarai.dev 登记候补。
步骤 0 — 安装 uv(一次性,约 5 秒)
该软件包通过 uvx 运行,而 uvx 随 uv 一同安装。只需安装一次:
# macOS / Linux
curl -fsSL https://astral.sh/uv/install.sh | sh
# Windows (PowerShell)
irm https://astral.sh/uv/install.ps1 | iex
# Alternative — via pipx if you don't trust curl|sh
pipx install uv
# Alternative — via pip
pip install --user uv
使用 uvx --version 验证。
步骤 1 — 在 Agent 中注册
一键安装: 获取 setup-mcp.sh 并运行——它会检查是否已安装 uv,提示你输入可选的 BYOK 密钥(输入内容不可见,脚本也绝不会将其写入磁盘),然后在 Agent 中注册服务:
curl -fsSL https://raw.githubusercontent.com/qingxuantang/tar-engine/master/setup-mcp.sh -o setup-mcp.sh
chmod +x setup-mcp.sh
./setup-mcp.sh # Claude Code (default); add --client cursor|codex
或者手动配置。支持两种安装方式:
- 从 PyPI 安装——推荐,版本固定且可验证:
uvx --from tar-engine==0.3.3 tar-engine-mcp。每个版本都会发布到 PyPI,并提供可锁定在 lockfile 中的已发布哈希值——这是规范、可复现的安装方式,也是 MCP 注册表/Anthropic MCPB 客户端采用的方式。不要使用任意git+https;固定版本,确保始终清楚自己运行的内容。 - 从源代码安装——仅用于开发: 从 git 检出安装会运行尚未发布的代码,且没有已发布版本的哈希值。只有在你要修改 TAR Engine 本身时才使用这种方式——这并非推荐的运行方式,正是因为“安装这个未经审查的 git URL”就是供应链审计应该警示的做法。
Claude Code
claude mcp add tar-engine -- uvx --from tar-engine==0.3.3 tar-engine-mcp
验证:/mcp list 应显示 tar-engine Connected。重启 Claude
Code,让当前会话加载新的工具,然后询问:
审核此 SKILL.md:[粘贴一个技能]
Cursor
编辑 ~/.cursor/mcp.json(或项目级 .cursor/mcp.json):
{
"mcpServers": {
"tar-engine": {
"command": "uvx",
"args": ["--from", "tar-engine==0.3.3", "tar-engine-mcp"]
}
}
}
在 Cursor 中重新加载 MCP 服务(或重启应用),然后在 Cursor 内调用
audit_skill_text。
Codex CLI
添加到 ~/.codex/config.toml:
[mcp_servers.tar-engine]
command = "uvx"
args = ["--from", "tar-engine==0.3.3", "tar-engine-mcp"]
重启 Codex CLI,然后调用 audit_skill_text。
任何其他兼容 MCP 的 Agent
大多数 Agent 都接受包含 command + args 的 MCP 服务规范(JSON 或 TOML):
- command:
uvx - args:
["--from", "tar-engine==0.3.3", "tar-engine-mcp"]— 固定到 PyPI 已发布版本,以实现可复现且可验证哈希的安装
env(可选):
TAR_ENGINE_URL=http://localhost:8765用于自行托管TAR_ENGINE_BYOK_OPENAI_KEY=sk-...用于启用语义和对抗性审核层
重新加载 Agent,并调用 audit_skill_text 进行验证。
默认情况下,只会对你的技能运行静态规则层—— 免费、确定性执行,不产生大模型费用。若要启用语义大模型审查和 对抗式提示词模糊测试,请明确提供你自己的大模型密钥:
"tar-engine": {
"command": "uvx",
"args": ["--from", "tar-engine==0.3.3", "tar-engine-mcp"],
"env": {
"TAR_ENGINE_BYOK_OPENAI_KEY": "sk-..."
}
}
密钥层兼容 OpenAI,因此你可以将其指向任何兼容的端点(TAR_ENGINE_BYOK_OPENAI_BASE_URL / TAR_ENGINE_BYOK_OPENAI_MODEL)。我们有意不会从你的通用环境中读取 OPENAI_API_KEY——大多数 Claude Code / Cursor / OpenAI SDK 用户设置此密钥是为了其他用途,而在未告知的情况下转发请求是不妥的。只有当你希望此 MCP 服务使用你的密钥时,才设置 TAR_ENGINE_BYOK_OPENAI_KEY。
自托管
如果托管后端在隐私和延迟方面的权衡不适合你, 可以在本地运行引擎:
git clone https://github.com/qingxuantang/tar-engine
cd tar-engine
cp .env.example .env # add OPENAI_API_KEY if you want semantic + adversarial
docker compose up -d
然后将 MCP 服务指向它:
"env": {
"TAR_ENGINE_URL": "http://localhost:8765"
}
工具接口保持不变,数据不会离开你的设备,使用你自己的密钥, 且不会受到超出硬件能力范围之外的速率限制。
公开审计报告 + 在线 Playground(AI 米其林指南)
我们持续发布对主要技能平台上的热门开源技能的审计报告,包括 Smithery、Claude Hub 和 MCPHub。每份报告都包含安全评分、 具体发现和修复建议,均由本仓库提供的同一套流水线生成。
阅读报告,并将任意 SKILL.md 粘贴到 tarai.dev 上的在线 Playground,约 60 秒即可获取评估结果——无需安装。想要自托管?只需一条 curl 命令,即可调用同一静态端点:
curl -X POST http://localhost:8765/api/cockpit/audit/static \
-H "Content-Type: application/json" \
-d '{"skill_text": "<your SKILL.md content>"}'
不止于审计
大多数人安装此项目是为了使用审计流水线,它也是开源核心。同一引擎还包含一个愿望机器控制台——规划 → 执行 → 追踪 → 审计 → 反思——并为精选领域包(量化交易、内容发布)提供支持,这些领域包作为付费附加项出售。它们是审计用例之外的次要功能;领域包详情和定价请参阅 tarai.dev,控制台架构请参阅 docs/。
本仓库包含什么
tar-engine/
├── backend/
│ ├── app.py # FastAPI entry
│ ├── auditor/ # Audit pipeline: L01 static / L02 semantic / L03 adversarial / L06 supply chain + risk scorer
│ ├── cockpit/ # Wish machine: planner / dispatcher / skill executor / trace / retrospective
│ ├── adapters/ # IDE/runtime adapters (Claude Code, Codex CLI, generic webhook)
│ └── knowledge/ # Knowledge RAG (LlamaIndex + ChromaDB)
├── mcp-server/ # MCP server + CLI (tar-engine / tar-engine-mcp entry points)
├── packs/
│ ├── hello-world/ # Reference demo pack — 5-min install verifier
│ └── postall-content/ # Multi-platform content publishing pack
├── frontend/ # Web UI (static, optional)
├── setup-mcp.sh # One-click MCP registration
├── docker-compose.yml
└── docs/ # Architecture, deployment, contribution notes
状态
当前版本:v0.3.3——已发布至 PyPI,并列入官方 MCP Registry。
当前可用功能:
- ✅ CLI
scan/list,支持适用于 CI 的退出码和--min-score门槛 - ✅ MCP 服务(
audit_skill_text),适用于 Claude Code / Cursor / Codex - ✅ 四个审计层——L01 静态、L02 语义、L03 对抗式(15 个探测 × 5 类)、L06 供应链
- ✅ 开箱即用,可识别五种技能格式,并打包同级辅助文件
- ✅ 托管免费套餐 + tarai.dev 在线 Playground
- ✅ 通过 Docker Compose 自托管(BYOK,数据不会离开你的设备)
规划中:
- 面向 Claude Desktop / Web / 移动端的托管 MCP 端点
- 托管高级套餐中的多受害者对抗式集成
- 更深入的供应链覆盖范围 + 更多技能格式适配器
贡献
以下是最快捷的参与方式:
- 对你使用的技能运行
tar-engine scan,并在 Issues 中分享发现(或误报) - 添加技能格式适配器或审计规则——欢迎向
backend/auditor/和mcp-server/提交 PR - 尝试自托管快速入门,并反馈使用中的问题
付费领域包(量化交易、内容发布)仅由官方团队维护——我们不接受向 packs/ 添加 UGC 领域包的 PR。
许可证
Apache 2.0——完整条款请参阅 LICENSE。
致谢
TAR Engine 最初是用于审计 AI 量化交易工作流的工具,后来通过与量化工程师、 内容创作者和安全团队的实际交流,发展为通用技能审计工具——他们提出的问题虽各不相同,却都围绕着同一个疑问: “怎样才能让我的 AI Agent 真正干活,同时又不把我从未读过的恶意内容交给它们?”
由 Mark Zhou 使用 Claude Code 构建。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。