内容
# TAR 引擎 - 在部署前审计 AI 技能安全性
> **审计 AI 技能安全性** 在 CI 中或从您的代理。静态规则 + 语义 LLM 分析 + 8 模型受害者池的对抗性模糊测试。BYOK。免费层托管在 [tarai.dev](https://tarai.dev/)。
[](LICENSE)
[](https://www.python.org/)
`tar-engine` 是一个用于 AI 代理技能的安全性和质量审计管道。它涵盖 **SKILL.md** (OpenClaw,Claude Code),**Codex `skill.yaml`**,**Claude Code 自定义命令** (`.claude/commands/*.md`),和 **OpenCode 配置**开箱即用。设计用于在不更改技能创作方式的情况下集成到 CI 中。
**集成到 CI** - `tar-engine scan ./skills --min-score 70` 如果任何技能得分低于阈值,则退出 1。请参见下面的 [CLI 用法](#cli--audit-ai-skill-from-the-command-line)。
**或连接到您的代理** - Claude Code、Cursor 或 Codex CLI 可以调用审计管道作为 MCP 工具。请参见下面的 [MCP 安装](#install)。
---
## CLI - 从命令行审计 AI 技能
`tar-engine` CLI 遍历目录,审计找到的每个技能,并退出时带有 CI 友好的状态码。
```bash
# 审计 ./skills 下的所有技能,如果任何技能得分低于 70,则构建失败
tar-engine scan ./skills --min-score 70
# 列出发现的技能而不审计
tar-engine list ./skills
# JSON 输出用于下游处理
tar-engine scan ./skills --json
```
发现涵盖五种格式:
| 文件模式 | 格式 |
| --- | --- |
| `**/SKILL.md` | OpenClaw,Claude Code,通用 md |
| `**/.claude/commands/*.md` | Claude Code 自定义命令 |
| `**/skill.yaml` / `.yml` | Codex |
| `**/manifest.json` | Codex / Claude Code(密钥检测) |
| `**/opencode.json` | OpenCode |
每个审计有效载体捆绑主要技能文件以及同一目录中的 sibling `.sh / .py / .js / .ts / .yaml / .json` 帮助文件(200 KB 限制)。捕获“SKILL.md干净但`install.sh`恶意”的模式。
**GitHub Actions 示例:**
```yaml
- name: Audit AI skills
run: |
uvx --from "git+https://github.com/qingxuantang/tar-engine@v0.3.0" \
tar-engine scan ./skills --min-score 70
```
**预提交钩子:**
```bash
#!/usr/bin/env bash
tar-engine scan ./skills --min-score 80 || exit 1
```
退出代码:`0` 清洁,`1` 低于阈值,`2` 用法/路径丢失。
---
## 安装
TAR 引擎作为 Python 包提供 MCP 服务器,可使用 [`uvx`](https://docs.astral.sh/uv/) 运行,无需 Docker。默认情况下,它与 [tarai.dev](https://tarai.dev/) 上的托管后端通信(免费,速率限制)。
### 阅读此内容 - 您正在信任的内容
- **SKILL.md 去向**。使用默认配置,MCP 服务器将您要求审计的 SKILL.md 内容发布到 `https://tarai.dev`。我们不会将技能文本写入磁盘或记录,但它会离开您的机器。如果您正在审计专有或敏感技能,[自托管](#self-host) 并设置 `TAR_ENGINE_URL=http://localhost:8765`。
- **无静默密钥转发**。服务器 **不** 转发您的 `OPENAI_API_KEY`。语义 + 对抗性审计层需要通过 `TAR_ENGINE_BYOK_OPENAI_KEY` 在 MCP 服务器配置中显式选择加入 - 请参见下面的 [BYOK](#byok-semantic--adversarial-layers)。
- **哪些环境有效**。Claude Code CLI、Cursor、Codex CLI - 您的代理可以启动子进程的任何地方。**Claude Desktop、Claude.ai 网页和移动应用无法安装本地 MCP 服务器**;托管端点即将到来 - [tarai.dev 候补名单](https://tarai.dev/)。
### 步骤 0 - 安装 `uv`(一次性,~5 秒)
该包通过 `uvx` 运行,`uvx` 随 `uv` 提供。一次性安装:
```bash
# macOS / Linux
curl -fsSL https://astral.sh/uv/install.sh | sh
# Windows (PowerShell)
irm https://astral.sh/uv/install.ps1 | iex
# 替代方案 - 通过 pipx 如果您不信任 curl|sh
pipx install uv
# 替代方案 - 通过 pip
pip install --user uv
```
通过 `uvx --version` 验证。
### 步骤 1 - 与您的代理注册
**一键注册:** 获取 [`setup-mcp.sh`](setup-mcp.sh) 并运行它 - 它会检查 `uv`,提示输入可选的 BYOK 密钥(隐藏输入,脚本永远不会写入磁盘),并使用您的代理注册服务器:
```bash
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(默认);添加 --client cursor|codex
```
或手动配置。下面这些固定到 **`v0.3.0`** 版本标签,因此每次启动都会安装相同的故意剪裁的版本。如果您想跟踪最新的未发布作品,请替换为 `@master`,或在我们剪裁其他标签后替换为其他标签。
<details open>
<summary><b>Claude Code</b></summary>
```bash
claude mcp add tar-engine -- uvx --from "git+https://github.com/qingxuantang/tar-engine@v0.3.0" tar-engine-mcp
```
验证:`/mcp list` 应该显示 `tar-engine` 已连接。重启 Claude Code 以使此会话使用新的工具界面,然后询问:
> 审计此 SKILL.md:[粘贴技能]
</details>
<details>
<summary><b>Cursor</b></summary>
编辑 `~/.cursor/mcp.json`(或项目级 `.cursor/mcp.json`):
```json
{
"mcpServers": {
"tar-engine": {
"command": "uvx",
"args": ["--from", "git+https://github.com/qingxuantang/tar-engine@v0.3.0", "tar-engine-mcp"]
}
}
}
```
在 Cursor 中重新加载 MCP 服务器(或重启应用程序),然后从 Cursor 内调用 `audit_skill_text`。
</details>
<details>
<summary><b>Codex CLI</b></summary>
添加到 `~/.codex/config.toml`:
```toml
[mcp_servers.tar-engine]
command = "uvx"
args = ["--from", "git+https://github.com/qingxuantang/tar-engine@v0.3.0", "tar-engine-mcp"]
```
重启 Codex CLI,然后调用 `audit_skill_text`。
</details>
<details>
<summary><b>任何其他 MCP 兼容的代理</b></summary>
大多数代理接受带有 `command` + `args` 的 MCP 服务器规范(JSON 或 TOML)。添加:
- **command:** `uvx`
- **args:** `["--from", "git+https://github.com/qingxuantang/tar-engine@v0.3.0", "tar-engine-mcp"]`
- **env(可选):**
- `TAR_ENGINE_URL=http://localhost:8765` 自托管
- `TAR_ENGINE_BYOK_OPENAI_KEY=sk-...` 启用语义 + 对抗性层
重新加载代理并调用 `audit_skill_text` 以验证。
</details>
### BYOK(语义 + 对抗层)
默认情况下,只有 **静态规则层** 在您的技能上运行 - 免费,确定性,无 LLM 成本。要启用语义 LLM 审查和对抗性提示模糊测试,请显式提供您自己的 LLM 密钥:
```json
"tar-engine": {
"command": "uvx",
"args": ["--from", "git+https://github.com/qingxuantang/tar-engine@v0.3.0", "tar-engine-mcp"],
"env": {
"TAR_ENGINE_BYOK_OPENAI_KEY": "sk-..."
}
}
```
我们故意 **不** 从您的一般环境中读取 `OPENAI_API_KEY`。大多数 Claude Code / Cursor / OpenAI SDK 用户出于无关目的设置了该密钥 - 静默中继是不正确的。仅当您希望此 MCP 服务器使用您的密钥时,请设置 `TAR_ENGINE_BYOK_OPENAI_KEY`。
### 自托管
如果托管后端的隐私/延迟权衡对您不起作用,请在本地运行引擎:
```bash
git clone https://github.com/qingxuantang/tar-engine
cd tar-engine
cp .env.example .env # 如果您想要语义 + 对抗层,请添加 OPENAI_API_KEY
docker compose up -d
```
然后将 MCP 服务器指向它:
```json
"env": {
"TAR_ENGINE_URL": "http://localhost:8765"
}
```
相同的工具界面,数据不会离开您的机器,您自己的 OpenAI 密钥,无速率限制。
---
## 它是什么
TAR 引擎是 AI 代理的 **愿望机器**。
您将其安装在笔记本或服务器上,将其指向您的 LLM 密钥(BYOK),并用纯英语与它对话:*“为策略 A 找到最佳参数。”* / *“总结此 URL 并发布到 LinkedIn 的草稿。”*
引擎:
1. **计划** - 将愿望分解为技能链
2. **执行** - 运行技能(引擎端,无需 IDE 插件)
3. **跟踪** - 记录每个步骤(令牌,时间,参数,输出)
4. **审计** - 扫描每个技能操作的可配置规则集
5. **反思** - 可选的回顾性 LLM 传递,将经验教训提炼到您的个人资料中
这是开源核心。**精选领域包** - 特定垂直领域的交钥匙技能链,例如量化交易或内容发布 - 单独出售,并附带自己的规划器模板,领域知识和技能包。
---
## 5 分钟快速入门
```bash
# 1. 克隆
git clone https://github.com/qingxuantang/tar-engine.git
cd tar-engine
# 2. 配置
cp .env.example .env
# 编辑 .env 并设置 OPENAI_API_KEY
# 3. 运行
docker compose up -d
# 4. 验证
curl http://localhost:8765/healthz
# 5. 提交您的第一个愿望(使用 Hello World Pack)
curl -X POST http://localhost:8765/api/cockpit/wish \
-H "Content-Type: application/json" \
-H "X-LLM-Api-Key: $OPENAI_API_KEY" \
-d '{"wish": "echo hello world", "pack": "hello-world"}'
# 响应:
# { "task_id": "tsk_...", "status": "queued" }
# 6. 获取结果
curl http://localhost:8765/api/cockpit/wish/tsk_...
```
---
## 为什么选择 TAR 引擎
三个具体设计选择使 TAR 引擎与其他通用技能市场区分开来:
- **引擎端执行**。技能在引擎容器内运行,而不在您的 IDE 中。您的 IDE 不需要插件。CI / cron / Telegram 都可以触发愿望。
- **内置审计管道**。L1 静态规则 + L2 能力位图 + L3 动态 LLM 审查。每个技能操作都会被评分。您的 CFO / 合规官可以信任跟踪。
- **回顾性 + 个人资料**。愿望不仅运行;它们还会**教会**引擎。回顾性从每次运行中提取经验教训,将它们存储在您的个人资料中,并将它们注入下一个计划中。引擎使用得越多,它就越好。
---
## 此仓库中有什么
```
tar-engine/
├── backend/
│ ├── app.py # FastAPI 入口
│ ├── cockpit/ # 愿望机器:规划器/调度器/技能执行器/跟踪/回顾性
│ ├── auditor/ # 审计管道:L1 / L2 / L3 + 风险评分器 + 协调器
│ ├── adapters/ # IDE/运行时适配器(Claude Code,Codex CLI,通用 webhook)
│ └── knowledge/ # 知识 L3 RAG(LlamaIndex + ChromaDB)
├── packs/
│ ├── hello-world/ # 参考演示包 - 5 分钟安装验证器
│ └── postall-content/ # 多平台内容发布包(需要 postall-agent)
├── frontend/ # Web UI(静态,可选)
├── docker-compose.yml
├── Dockerfile
├── requirements.txt
└── docs/ # 架构,部署,贡献说明
```
---
## 精选领域包(付费,不在此仓库中)
开源引擎足以让您创建自己的包。如果您想要一个交钥匙的领域解决方案,我们以付费附加包的形式提供精选包:
- **量化交易包** - 策略研究,因素挖掘,测试审计,实时信号监控(首先发布)
- **内容发布包** - 多平台内容生成,带有内置 QA 门控和跨平台一致性审计(第二发布)
这些包附带精选的技能链,领域调优的规划器少样本模板,领域知识语料库,个人资料模式和审计仪表板预连接。
访问 [tarai.dev](https://tarai.dev) 获取包详情和定价。
---
## 审计报告(米其林指南)
我们每周发布来自主要技能平台的热门开源技能的审计报告 - Smithery,Claude Hub,MCPHub。每个报告包括安全分数,具体发现和补救建议。用于生成这些报告的审计管道与此开源引擎中提供的管道相同。在您自己的技能上试试吧:
```bash
curl -X POST http://localhost:8765/api/cockpit/audit/static \
-H "Content-Type: application/json" \
-d '{"skill_text": "<your SKILL.md content>"}'
```
在 **[AI 米其林指南](https://tarai.dev/)** 上阅读最新的报告 - 技能审计的公开指南,带有实时 Playground,您可以粘贴任何 SKILL.md。
---
## 状态
这是 **0.1.0 最小公开版本**。核心愿望机器 + 审计管道 + 跟踪 + 回顾性 + hello-world 包都有效。Web UI 功能正常但简洁。贡献者文档和 CI 尚未完善。
当前有效的内容:
- ✅ 愿望 → 规划器 → 技能链 → 执行
- ✅ 执行跟踪,带有令牌 + 时间测量
- ✅ 审计管道(L1 静态规则 + L2 能力位图)
- ✅ Hello World Pack 通过 curl 运行
- ✅ Docker Compose 部署
即将推出(未来 4-12 周):
- AI 回顾与经验教训提炼 + 个人资料注入
- Web UI 改进 + 运行时间线面板
- Telegram 机器人入口
- L3 动态 LLM 审计
- 技能生态系统覆盖率审计内容引擎(米其林指南模型)
- 量化包(第一个付费包 - 领域精选的量化交易工作流)
- 高级内容包增强功能,基于 OSS PostAll 包
---
## 贡献
这是早期阶段。帮助的最快方式是:
1. 尝试 5 分钟快速入门并报告摩擦
2. 编写您自己的包并在讨论中链接它
3. 在您喜欢的技能上运行审计管道并分享发现
欢迎对 `backend/cockpit/`、`backend/auditor/` 和 `packs/hello-world/` 进行 PR 贡献。付费包(量化交易,内容发布)仅限第一方 - 我们不会接受在 `packs/` 目录中添加 UGC 包的 PR。
---
## 许可证
Apache 2.0 - 有关完整条款,请参阅 [LICENSE](LICENSE)。
---
## 致谢
TAR 引擎最初是用于 AI 量化交易工作流的审计工具。它通过与量化工程师,内容创作者和安全团队的实际对话发展成为一个通用的愿望机器,他们都提出了相同的问题:*“我如何让我的 AI 代理执行实际工作而不被虚幻的交易取代我的工作?”*
由 [Mark Zhou](https://tarai.dev) 与 [Claude Code](https://claude.com/code) 构建。