aymandakir-gh/gh-aegis

GitHub: aymandakir-gh/gh-aegis

一款基于纯规则引擎的零 ML 防护中间件,用于在大语言模型调用的输入、输出及工具执行阶段检测并拦截 OWASP LLM Top 10 安全威胁。

Stars: 0 | Forks: 0

# gh-aegis [![npm 版本](https://img.shields.io/npm/v/gh-aegis.svg)](https://www.npmjs.com/package/gh-aegis) [![CI](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/b494d578f0013435.svg)](https://github.com/aymandakir-gh/gh-aegis/actions/workflows/ci.yml) [![许可证: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](./LICENSE) [![node](https://img.shields.io/badge/node-%3E%3D18-brightgreen.svg)](https://nodejs.org) [![零 ML](https://img.shields.io/badge/zero--ML-deterministic-8A2BE2.svg)](#为什么是零-ml) **一个针对 [OWASP LLM Top 10](https://genai.owasp.org/llm-top-10/) 的确定性、零 ML 防护工具。** `gh-aegis` 包装了你的 LLM 调用,并在模型看到 **用户输入** 前对其进行检查,在用户看到 **模型输出** 前对其进行检查,并在你的 agent 运行 **工具调用** 前对其进行检查。没有模型,没有推理,没有网络,没有遥测 —— 只有 regex + 一个能在微秒内返回判定并且 **从不抛出异常** 的规则引擎。每一条规则都是可审计的;每一个结果都是可复现的。 ``` import { createAegisGuard } from "gh-aegis"; const aegis = createAegisGuard({ enabled: true }); const result = await aegis.scan(userMessage, { scope: "input" }); if (!result.safe) throw new Error(`Blocked: ${result.threatType}`); ``` - 🛡️ **8 个 OWASP 类别** — LLM01, LLM02, LLM04, LLM05, LLM06, LLM07, LLM08, LLM10(见 [映射](#owasp-llm-top-10-coverage))。 - 🔒 **PII 与密钥脱敏** — 获取一份安全的模型输出 `sanitized` 副本。 - 🧩 **声明式策略** — 通过一个经过校验的 JSON 文件来开关检测器/作用域/阈值/脱敏。 - 🔌 **即插即用集成** — Express, Fastify, Vercel AI SDK, LangChain,以及流式输出防护。 - 🖥️ **CLI + playground** — `npx gh-aegis scan app.log`,外加一个本地的零网络直观演示。 - 📊 **可复现基准测试** — `npm run bench` 报告在已提交数据集上的 precision/recall/F1;如果出现倒退,CI 会失败。 - 📦 **零运行时依赖。** ## 安装 ``` npm install gh-aegis ``` 要求 Node ≥ 18。以 ESM 形式提供,并附带 TypeScript 类型。 ## OWASP LLM Top 10 覆盖范围 | OWASP | 捕获内容 | `ThreatType` | 作用域 | |---|---|---|---| | **LLM01** Prompt Injection | “忽略之前的指令”,`` 注入,DAN/`[JAILBREAK]`,“developer mode”,“disable your guardrails”,“override your safety” | `PROMPT_INJECTION`, `JAILBREAK` | 输入 | | **LLM02** 不安全的输出 / PII | 电子邮件,电话,IBAN,OpenAI/Stripe/GitHub/Anthropic 密钥,codice fiscale,Bearer token — **检测并脱敏** | `PII_OUTPUT` | 输出 | | **LLM04** 数据与模型投毒 | 不可见 Unicode 负载走私 — Tags-block “ASCII 走私” (U+E00xx),bidi 覆盖 (Trojan Source),隐藏在单词中的零宽字符 | `DATA_POISONING` | 输入, 输出 | | **LLM05** 不当的输出处理 | 指向下游渲染器的活动内容 — `