Aclif Agent CLI 框架概述
Aclif 为 AI 代理提供与 SaaS 服务商交互的统一抽象
Aclif 是一个专为解决 AI 代理中“工具泛滥”问题而设计的代理 CLI 框架。无需让代理为每个 SaaS 服务商管理多个不同的 API、登录方式和语法,Aclif 提供单一工具,采用统一语法和标准名称。这使得代理能够使用相同的名称在不同平台上访问同一记录,显著降低了跨平台操作的复杂性。
解决 LLM 上下文窗口问题
传统的模型上下文协议(MCP)服务器会发布一个固定的工具列表,这些工具在每次交互中都会占用代理的上下文窗口。这在覆盖范围(提供所有 API 操作)和成本(令牌消耗)之间造成了权衡。
"发布每个操作(典型的 API 有数百个定义)虽然能保持整个 API 可达,但每次交互都会消耗所有操作的令牌。"
Aclif 通过仅在代理明确请求时才加载命令定义来解决此问题。这确保了每个服务商的完整 API 始终可达,而不会在上下文窗口中产生持续成本,无论代理是与一个平台还是五个平台交互,令牌数量都保持稳定。
核心技术能力
统一语法和标准命名
Aclif 在所有服务商中实现单一命令结构、JSON 包装和错误词汇表。它使用别名集将标准名称映射到服务商特定术语(例如,将 customer 映射到 Salesforce 中的 Account,以及 ServiceNow 中的 core_company)。在部署时捕获的租户目录允许 CLI 处理自定义对象和字段,而无需更改服务商代码。
以探查优先的工作流
代理可以在不执行命令或消耗 API 配额的情况下发现和学习可用工具。使用 --schema、--examples 和 --shape 等标志,代理可以在进行实际 API 调用前探查命令的要求并预览响应。
可操作的错误恢复
Aclif 中的错误设计用于代理恢复。每个错误都会标识失败原因,建议修复命令,并在存在重写规则时提供修正后的输入。此类分类由普通代码处理,而非模型,确保设计时 shell 验证与运行时执行之间行为一致。
声明式安全与可审计性
Aclif 中的每个命令都声明其可变性、影响范围、可逆性和幂等性。这使得策略检查可以在代码加载前拒绝命令。此外,所有变更都支持 --dry-run,并可根据元数据要求 --confirm,每次运行都会生成一条审计记录。
部署与执行模式
Aclif 支持三种不同的执行模式,以平衡信任与安全性:
- 由代理运行:代理直接启动二进制文件。凭据通过标志、环境变量或本地配置文件管理。适用于单操作员环境,其中代理与操作员共享信任边界。
- 由宿主应用运行:宿主应用位于模型与 Aclif 之间,持有凭据,并以进程内或 CLI 方式执行命令。这可防止模型持有凭据,并将工具定义保留在上下文窗口之外。
- 由网关运行:一个长期运行的进程为多个代理服务。网关根据请求从企业密钥库中解析凭据,强制执行集中式策略,并维护单一审计日志。这确保代理无法扩大自身权限,且每次调用都可归因于特定的人类用户。
支持的服务商与可扩展性
Aclif 原生支持 Salesforce、ServiceNow、DocuSign 和 Agentforce,还支持 Google Workspace(Gmail、Calendar)的社区贡献。该框架采用 MIT 许可证,用户可使用脚手架命令构建自己的 CLI,仅包含特定服务商。通过将平台的 API 规范映射到 Aclif 命令界面,可轻松添加新服务商。
开发者洞察
关于工具选择的可靠性,作者指出,允许模型在运行时动态选择工具可能导致错误和安全风险:
"我们在部署多个企业代理后发现,让模型在运行时选择工具可能会引发问题。代理持有凭据,有时会选择错误的工具。始终使用同一工具可防止此类情况。"
这一洞察推动了 Aclif 的方法:允许人员或编写工具在设计时定义确切的命令字符串,代理在运行时将其作为普通代码执行,无需进一步推理。
Sources
相关
- 项目
- 项目
- 项目
- Dispatch
- 项目