rogerchappel/promptlintel

GitHub: rogerchappel/promptlintel

PromptLintel 是一个本地 CLI 工具,用于在 AI Agent 加载 prompt 文件前对其做静态规则检查,拦截提示注入隐患、密钥泄露、不安全外部操作措辞及缺失来源和安全边界等问题。

Stars: 0 | Forks: 0

# PromptLintel 🧱 PromptLintel 是一个本地 CLI 工具,用于在 agent 摄取类 prompt 文件之前对其进行 lint 检查。它会查找 prompt 注入隐患、密钥特征字符串、不安全的外部操作措辞,以及缺失的来源信息或安全边界。 它以一种最好的方式刻意保持了简单枯燥:确定性的规则、稳定的 Markdown/JSON 报告、无遥测、无网络调用,且不会有令人意外的文件修改。 ## 安装 ``` npm install -D promptlintel npx promptlintel scan AGENTS.md prompts/**/*.md ``` 从本仓库安装: ``` npm install npm run build node dist/cli.js scan examples/fixtures --fail-on high ``` ## 快速开始 ``` promptlintel scan AGENTS.md skills/**/*.md --out promptlintel-report.md promptlintel scan prompts/ --format json --fail-on high promptlintel rules --format markdown ``` 失败的结果意味着至少有一项发现达到或超过了 `--fail-on` 阈值(`info`、`low`、`medium`、`high` 或 `critical`)。 ## 检测内容 - **Prompt 注入隐患** — 例如“忽略之前的指令”或隐藏指令的措辞。 - **类密钥字符串** — 不应存在于 prompt 文件中的 token/API key/私钥模式。 - **不安全的外部操作** — 鼓励在未经批准的情况下进行发送、发布、删除、购买或公开发布的措辞。 - **缺失来源信息** — 没有来源、所有者、上下文或归属信息的 prompt 文件。 - **缺失安全边界** — 没有安全、权限、安全防护或红线部分的 prompt 文件。 ## 内联允许 请谨慎且显眼地使用允许指令。它们适用于引用示例、测试固定数据(fixtures)和记录在案的例外情况——而不是用来隐藏风险。 ``` A malicious prompt may say: ignore previous instructions. ``` 仅在所有发现都是有意为之的小型 fixture 文件中使用 `promptlintel-allow *`。 ## 配置 `promptlintel.config.json` 可以禁用默认规则、添加本地规则,或设置默认的失败阈值: ``` { "failOn": "high", "includeDefaultRules": true, "disabledRules": ["provenance-missing"] } ``` 运行方式: ``` promptlintel scan prompts --config promptlintel.config.json ``` ## 报告 Markdown 报告专为人类阅读和 PR 评论设计。JSON 报告足够稳定,适用于 CI 工具和简单的策略脚本。每项发现都包含严重程度、规则 ID、文件、行号、列号、代码片段和修复建议。 ## 安全模型 PromptLintel 是一道门梁(lintel),而不是金库大门。它能在 prompt 文件到达 agent 之前减少常见错误,但它不能替代密钥扫描器、代码审查、权限边界或运行时的人机交互控制(human-in-the-loop)。 项目承诺: - 无遥测; - 无网络访问; - 不修改扫描的文件; - 无隐藏写入; - 不读取请求路径之外的任何内容。 ## 示例 ``` node dist/cli.js scan examples/fixtures/safe-agent.md --format markdown node dist/cli.js scan examples/fixtures/risky-agent.md --format json --fail-on high node dist/cli.js scan examples/fixtures/allowed-example.md --format json ``` ## 开发 ``` npm test npm run check npm run build npm run smoke bash scripts/validate.sh ``` ## 局限性 - V1 是基于规则的,不使用 LLM。 - 密钥检测是刻意保持保守的,并非完整的凭证扫描器。 - Glob 支持范围被刻意限制得很小,且仅限于当前工作区。 - 在将各项发现转化为策略之前,应由人工进行审查。 ## 发布准备 在开启或发布版本之前,请使用已提交的脚本: ``` npm run check npm test npm run build npm run smoke npm run package:smoke npm run release:check ``` 包冒烟测试使用 `npm pack --dry-run`,这样无需发布即可审查已发布的文件列表。
标签:AI安全, Chat Copilot, DLL 劫持, MITM代理, StruQ, 人工智能, 代码质量检查, 前端框架, 大语言模型, 提示词工程, 文档结构分析, 暗色界面, 用户模式Hook绕过, 策略决策点, 自动化攻击, 错误基检测, 静态代码分析