Camil-H/cli-agent-lint

GitHub: Camil-H/cli-agent-lint

一款针对 CLI 工具 AI 代理就绪性的自动化审计工具,生成五类 34 项检查的字母评分。

Stars: 29 | Forks: 0

# cli-agent-lint 审计 CLI 工具的 AI 代理就绪性。在 5 个类别中运行 34 项检查,并生成一个字母等级评分卡,告诉你 CLI 与自主代理的配合程度。 ## 演示 **Google Workspace CLI** ![cli-agent-lint auditing gws](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/f3aca7bf50120133.gif) **GitHub CLI** ![cli-agent-lint auditing gh](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/d76d97e135120135.gif) ## 安装 **Homebrew**(macOS) ``` brew install Camil-H/tap/cli-agent-lint ``` **Debian / Ubuntu**(来自 GitHub Releases 的 .deb 包) ``` curl -LO https://github.com/Camil-H/cli-agent-lint/releases/latest/download/cli-agent-lint_linux_amd64.deb sudo dpkg -i cli-agent-lint_linux_amd64.deb ``` **Go** ``` go install github.com/Camil-H/cli-agent-lint@latest ``` **二进制文件** — 从 [GitHub Releases](https://github.com/Camil-H/cli-agent-lint/releases) 下载。 ## 快速开始 ``` # 审核 CLI 工具 cli-agent-lint check ./my-tool # JSON 输出 cli-agent-lint check --output json ./my-tool # 仅被动模式 — 解析帮助文本,不执行目标 cli-agent-lint check --no-probe ./my-tool # 列出所有检查 cli-agent-lint checks # 描述特定检查 cli-agent-lint checks TE-1 ``` ## 检查内容 每一项检查都针对 AI 代理以非交互方式驱动 CLI 时所关心的特定属性。检查分为五个类别,分别对应实践中代理可能遇到的不同失败模式。 | 类别 | ID | 摘要 | 重要性 | |---|---|---|---| | **流程安全** | `FS-*` | 这会阻塞我的代理吗? | 如果代理卡在交互式提示、无法认证或无法区分成功与失败,就会成为“死”代理。这些检查确保你的 CLI 不会阻塞自主循环——无 TTY 提示、非交互式认证路径、清晰的 stderr/stdout 分离,以及可靠的退出码。 | | **令牌效率** | `TE-*` | 这会耗尽我的上下文窗口吗? | CLI 输出的每一字节都会占用代理的上下文窗口。冗长的输出会迅速填满窗口,降低代理遵循指令和理解结果的能力。这些检查确保你的 CLI 支持 JSON 输出、`--quiet`/`--no-color` 模式、分页列表命令以及字段过滤——让代理获得信号而非噪声。 | | **自描述性** | `SD-*` | 我的代理能仅从 `--help` 学习这个 CLI 吗? | 代理通过阅读 `--help` 来学习 CLI。如果帮助文本缺少示例、错误信息晦涩难懂,或无法发现命令模式,代理就会退回到试错——浪费令牌并中断流程。这些检查确保你的 CLI 在第一次尝试时就教会代理如何正确使用它。 | | **自动化安全** | `SA-*` | 我的代理能安全地使用这个 CLI 而不造成破坏吗? | 代理会重试失败命令、传递不可信输入,且无法阅读“确定吗?”类提示。这些检查确保你的 CLI 在破坏性命令上提供 `--yes`/`--force` 标志,拒绝路径遍历和控制字符,并支持 `--dry-run` 以便代理在提交前预览。 | | **可预测性** | `PV-*` | 我的代理能信任输出吗? | 无法信任工具输出的代理会对每一步都产生怀疑。这些检查确保你的 CLI 产生确定性输出、为不同错误类别记录明确的退出码、支持 `--timeout` 以实现有时间限制的执行,并暴露重试/速率限制信息。 | ### 检查方法 - **被动** — 仅分析 `--help` 文本;始终安全,零副作用。 - **主动** — 使用精心构造的输入执行目标 CLI。可以通过 `--no-probe` 禁用。 ### 安全提示 主动检查会以子进程方式执行目标 CLI。该工具会清理敏感环境变量并实施资源限制,但目标 CLI 仍可能发起网络请求、读取本地文件或在探测时表现不同。**在审计不可信 CLI 时请使用 `--no-probe`。如需完全隔离,请在容器中运行。** ## 评分 | 等级 | 分数 | 含义 | |:---:|:---:|---| | **A** | ≥ 90% | 代理就绪 | | **B** | ≥ 70% | 基本可用,存在部分差距 | | **C** | ≥ 50% | 存在显著差距 | | **D** | ≥ 30% | 需要大量工作 | | **F** | < 30% | 不适合代理 | ## 参数 | 参数 | 描述 | 默认值 | |---|---|---| | `--output, -o` | 输出格式:`text`、`json` | `text` | | `--no-color` | 禁用彩色输出 | | | `--quiet, -q` | 抑制信息输出 | | | `--no-probe` | 仅执行被动检查 | | | `--severity` | 最低严重级别:`info`、`warn`、`fail` | `info` | | `--category` | 仅运行某一类别的检查 | | | `--skip` | 跳过特定检查 ID(可重复) | | | `--timeout` | 探测命令超时时间 | `5s` | ## 退出码 | 代码 | 含义 | |:---:|---| | `0` | 所有检查通过 | | `1` | 存在一个或多个失败的严重性检查 | | `2` | 使用错误或运行时错误 | ## 从源码构建 ``` go build -o cli-agent-lint . go test ./... go vet ./... ``` ## 许可证 MIT — 参见 [LICENSE](LICENSE)。
标签:Agent 友好, AI 代理, AI 工具链, CLI, CLI 工具, Debian Ubuntu, EVTX分析, GitHub Releases, Go 安装, Homebrew 安装, JSON 输出, LLM 工具, SEO: AI agent CLI, SEO: automated CLI checks, SEO: cli-agent-lint, SEO: CLI readiness, WiFi技术, 上下文窗口, 二进制发布, 二进制发布, 交互式阻塞, 令牌效率, 威胁情报, 对称加密, 工具审计, 帮助文本解析, 开发者工具, 开源工具, 开源工具, 无 TTY 提示, 日志审计, 标准输出分离, 标准错误分离, 流控安全, 自动化审计, 自动化检查, 被动模式, 退出码可靠性, 非交互式认证