ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

【研发类-AI和ML开发Skills】ai-native-cli 技能

【研发类-AI和ML开发Skills】ai-native-cli 技能

包含98条规则的设计规范,用于构建AI代理可以安全使用的CLI工具。涵盖结构化JSON输出、错误处理、输入契约、安全护栏、退出代码和代理自我描述。

技能概述

ai-native-cli 技能用于构建AI原生CLI工具的综合设计规范。它定义了跨三个认证级别(Agent-Friendly、Agent-Ready、Agent-Native)的98条规则,具有优先级要求(P0/P1/P2)。该规范涵盖结构化JSON输出、错误处理、输入契约、安全护栏、退出代码、自我描述以及通过内置问题系统的反馈循环。

下载地址:agentic-awesome-skills/skills/ai-native-cli at main · sickn33/agentic-awesome-skills · GitHub

触发条件

  • 构建AI代理将调用的新CLI工具
  • 改造现有CLI使其对代理友好
  • 为自动化管道设计命令行界面
  • 审计CLI工具对代理安全标准的合规性

核心理念

  • 代理优先:默认输出是JSON;人类友好通过--human选择加入
  • 代理不受信任:在与公共API相同的级别验证所有输入
  • 失败关闭:当验证逻辑本身出错时,默认拒绝
  • 可验证:每条规则的编写都可以自动检查

层模型

此规范使用两个正交轴:

  • 层回答推出范围:core、recommended、ecosystem
  • 优先级回答严重性:P0、P1、P2

认证级别

级别要求描述
Agent-Friendly所有core规则通过CLI是稳定的、可调用的API
Agent-Ready所有core + recommended规则通过CLI是自我描述的、命名良好的、管道友好的
Agent-Native所有层通过完整的代理原生集成

工作原理

步骤1:输出模式

默认是代理模式(JSON)。显式标志切换:

$ mycli list # 默认 = JSON输出(代理模式) $ mycli list --human # 人类友好:彩色、表格、格式化 $ mycli list --agent # 显式代理模式(如果需要,覆盖配置)

步骤2:agent/目录约定

每个CLI工具必须在其项目根目录下有一个agent/目录。这是工具的身份和行为契约。

agent/ brief.md # 一段话:我是谁,我能做什么 rules/ # 行为约束(自动注册) trigger.md # 代理何时应使用此工具 workflow.md # 逐步使用流程 writeback.md # 如何写回反馈 skills/ # 扩展能力(自动注册) getting-started.md

步骤3:四个级别的自我描述

  1. --brief(名片,注入代理配置)
  2. 每个命令响应(始终在线上下文:数据+规则+技能+问题)
  3. --help(完整自我描述:简介+命令+规则+技能+问题)
  4. skills <name>(按需深入特定技能)

Level 1:Agent-Friendly(core - 20条规则)

目标:CLI是稳定的、可调用的API。代理可以调用、解析和处理错误。

输出

  • [P0] O1:默认输出是JSON。无需--json标志
  • [P0] O2:JSON必须通过jq .验证
  • [P0] O3:JSON模式在相同版本内不得更改

错误

  • [P0] E1:错误→stderr的{"error":true, "code":"...", "message":"...", "suggestion":"..."}
  • [P0] E4:错误具有机器可读的code(例如MISSING_REQUIRED)
  • [P0] E5:错误具有人类可读的message
  • [P0] E7:出错时,永不进入交互模式——立即退出
  • [P0] E8:错误代码是API契约——版本间不得重命名

退出代码

  • [P0] X3:参数/用法错误必须退出2
  • [P0] X9:失败必须退出非零——永不退出0然后在stdout中报告错误

可组合性

  • [P0] C1:stdout仅用于数据
  • [P0] C2:日志、进度、警告仅进入stderr

输入

  • [P1] I4:缺少必需参数→结构化错误,永不交互式提示
  • [P1] I5:类型不匹配→退出2 + 结构化错误

安全

  • [P1] S1:破坏性操作需要--yes确认
  • [P1] S4:拒绝../../路径遍历、控制字符

护栏

  • [P1] G1:未知标志被拒绝并退出2
  • [P1] G2:检测参数中的API密钥/令牌模式,拒绝执行
  • [P1] G3:拒绝敏感文件路径(*.env、*.key、*.pem)
  • [P1] G8:拒绝参数中的shell元字符(; | && $())

最佳实践

  1. 默认使用JSON输出,人类友好格式通过标志选择
  2. 所有错误输出到stderr,使用结构化JSON格式
  3. 实现全面的输入验证和安全护栏
  4. 使用一致的退出代码约定
  5. 提供agent/目录进行自我描述
  6. 支持四个级别的自我描述

技能元数据

  • 风险等级:safe
  • 来源:https://github.com/ChaosRealmsAI/agent-cli-spec
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进