Uni-CLI
一条命令覆盖所有界面:让智能体在 API、浏览器、桌面、本地工具和 MCP 之上搜索、执行并检查真实软件,并返回结构化回执。
证据显示较完善:SECURITY.md 明确 cookie 以 0700/0600 权限存储、显式持久化命令、SSRF 检查、fail-closed 权限策略、日志排除参数与凭据(敏感数据处理可得 3)。最小权限、确认机制(Y/N 升级选择、confirm/locked 档案、scoped approvals)与外部效果治理有文档支持,但策略实现细节主要靠链接到 docs/guide/trust.md,本次未提供该文件内容,故记 2。自动更新默认以 detached worker 进行虽有 opt-out(--no-auto-update),仍是对无人值守场景的默认放宽,扣分。身份矛盾:npm 作者为 ZenAlexa,LICENSE 版权为 OLo (olo-dot.io),发布者未经验证,attribution 记 1。
失败路径处理突出:稳定错误信封含 adapter_path、step、suggestion、retryable,退出码分类齐全(failure_messages 3)。自一致性有 stats:check 与 truth:check 门禁支撑,但 Cargo workspace 版本 0.218.0 与 npm 1.2.1 分叉,仅能推断 sidecar 独立版本,记 2。依赖可用性有 browser doctor、Node 22.19+ 声明与多平台 CI,但未展示依赖降级策略全貌,记 2。
受众(Agent 开发者)与场景(API/浏览器/桌面/本地/MCP)描述清晰且有路由决策表(3)。能力边界有明示(视觉路由需显式后端、quarantine 机制、Chrome 136+ 限制),但大量边界依赖未提供的 trust.md 内容,记 2。触发精度由任务边界表与显式选择机制支撑,记 2。环境适配覆盖 Linux/macOS/Windows CI 与 Rust sidecar 交叉编译,记 2。
信息架构优秀:目录网格、操作契约表、生成式目录站点(3)。安装说明简洁(npm install -g)但缺少凭据引导与卸载说明之外的细节,记 2。许可证为完整 Apache-2.0 文本,与元数据一致(3)。版本化用 changesets 且有 release history 产物,但本次未看到 CHANGELOG.md 本体,记 2。维护责任薄弱:仅一个个人邮箱(connect.ust.hk)作为安全联络,治理与团队构成不明,且 0.x 支持表与 npm 1.x 版本自相矛盾,记 1。命名稳定(unicli/@zenalexa/unicli 一致)记 2;示例丰富但无 FAQ 记 2;已知限制散布于 README/SECURITY 记 2。
输出可用性强:多格式(/yaml/csv/compact)、schema_version、meta 元数据、面向 Agent 的 MCP/CLI 双入口(3)。边际价值在于统一多界面运行时与自修复/evolve 工作流,但这些价值声称未经执行验证,记 2。成本收益合理:本地运行、无强制云依赖,但 1891 个命令的维护负担与适配器漂移风险未量化,记 2。
声称可追溯:README 统计由 CI 生成并设 stats:check 门禁,测试计数入档(2,因本次静态审无法独立验证 10389 tests 等数字)。跨来源互证:README、package.、CI workflow、SECURITY.md 在版本、审计、许可上相互一致(2,扣分点:Cargo/npm 版本分叉、作者与版权主体不一致)。事实与推断分离良好:文档明确区分声明(如 'npm audit 实际结果为准')与静态描述,记 2。
- 发布者身份未经验证且作者(ZenAlexa)与版权主体(OLo)不一致,采用前请自行核实供应链来源。
- 默认自动更新为 detached worker 模式;无人值守 Agent 环境应显式使用 --no-auto-update 并锁定版本。
- auth import / browser cookies 会将 cookie 以明文 JSON 写入 ~/.unicli/cookies/,仅在 POSIX 上有权限收紧,Windows 依赖文件系统 ACL;避免在共享主机使用。
- Cargo sidecar 版本(0.218.0)与 npm 版本(1.2.1)分叉,升级时注意 sidecar 兼容性。
- 宣称的 10389 项测试与 CI 门禁为静态声称,本次审查未执行任何验证;关键部署前应自行运行 npm run verify。
这个 Agent 能做什么,适合哪些场景?
Uni-CLI 是一个开源(Apache-2.0)的命令行运行时,把自然语言意图转换为选定的操作和结构化回执,覆盖 Web、浏览器、桌面、本地子进程和 MCP 等界面。它内置静态目录,包含 338 个站点、1891 个注册命令和 1268 个适配器,按任务边界自动路由到结构化 API、本地运行时、浏览器协议(CDP)、桌面无障碍树或视觉计算机操作等执行算子。每次调用都返回稳定的成功/错误信封(schema_version 2),失败时附带 adapter_path、错误码和修复命令。适配器是可读的 YAML 文件,遇到漂移可通过 unicli repair 在自有边界内修复,或通过 evolve adapter 走配对与留出评估的晋升门槛。它只提供界面运行时,模型、规划器和智能体循环由使用者自由选择,可通过原生 CLI 或 MCP(stdio 与 Streamable HTTP)接入任意宿主。
Uni-CLI 的执行模型为 intent → candidate operations → explicit selection → policy → substrate → receipt。具体流程:用 unicli search 做双语检索并返回带选择依据的排名候选;调用者选定一个操作并声明策略与底层介质;open/confirm/locked 权限档位评估影响范围;随后由适配器、核心命令、浏览器(CDP 导航、语义动作、截图)、桌面(AX/UIA/AT-SPI 控制树)或协议路径执行;每个命令返回稳定的 ok/error YAML/JSON 信封,错误包含 code、adapter_path、step、suggestion 和 retryable 字段。失败时可运行 unicli repair <site> <command> 在 ~/.unicli/adapters/ 保存覆盖,或用 unicli evolve adapter 提交单个 YAML 候选,经配对基线评估、预测校验和留出用例通过后晋升。桌面操作通过 unicli compute apps/snapshot/find/click 优先使用无障碍引用。MCP 接入通过 npx @zenalexa/unicli-mcp 或 unicli mcp serve,默认档位暴露四个元工具。
- 开发者在编码智能体(Claude Code、Codex、Cursor)中需要一个 CLI 或 MCP 工具,从 arXiv、OpenReview、Hacker News 等站点检索和导出数据,并要求机器可读的 JSON/YAML 输出。
- 研究人员需要抓取带认证的会议归档,例如用 unicli --auth-retry openreview conference 逐年拉取会议记录并支持断点续传。
- 自动化工程师需要操作原生桌面应用,如通过无障碍树点击 macOS 计算器按钮,而不依赖像素截图。
- 维护自有智能体流程的团队,当上游网站改版导致适配器漂移时,用 repair/evolve 在本地覆盖并经评估后晋升,不必改源码。
- 需要统一权限治理的安全团队,用 open/confirm/locked 档位、deny 规则和录像回放约束浏览器、文件、剪贴板和子进程副作用。
这个 Agent 有哪些优点和局限?
- 任务边界路由机制明确:结构化 API、本地运行时、浏览器协议、无障碍树、视觉操作按最小有效范围择优执行,失败路径保留原始原因和修复命令。
- 适配器是可读、可本地替换的 YAML,repair 只重跑有界子进程并在目标返回 ok:true 且退出码 0 时才算成功,覆盖在 npm 更新后仍保留。
- 每个命令返回 schema_version 2 的稳定信封,退出码区分成功、空结果、依赖缺失、临时失败、认证和配置错误,便于智能体程序化处理。
- 信任边界清晰:浏览器 cookie 默认留在进程内存,权限规则在副作用发生前授权,格式错误的策略显式失败关闭,诊断日志排除参数、内容和凭据。
- 要求 Node.js 22.19 或更新版本,且 Chrome 136+ 不支持在默认用户数据目录上远程调试,浏览器交付需用 browser doctor 检查并按提示修复。
- 完整验证需运行 npm run verify(全量 E2E 与适配器覆盖),对贡献者来说是显著的本地成本。
- 视觉路由必须配置真实后端,缺失提供者只会返回结构化错误,没有隐藏的降级路径。
- evolve 的晋升范围有严格限制:操作身份、输入输出契约、流水线拓扑、请求方法和头、子进程调用均保持固定,替换网络源需要显式 --allow-origin 声明。
如何安装或部署这个 Agent?
需要 Node.js 22.19 或更新版本。全局安装:npm install -g @zenalexa/unicli。安装后可用 unicli upgrade --check -f 检查更新,unicli upgrade 升级;非交互的智能体环境默认由分离 worker 自动更新,可用 unicli upgrade --no-auto-update 改回手动确认。开发方式:克隆仓库后 npm install,再运行 npm run typecheck、npm run lint、npm test、npm run verify。
如何使用这个 Agent?
基础用法:unicli search "list the top Hacker News stories" 发现操作,unicli hackernews top --limit 3 -f 执行。用 unicli list --site reddit 查看某个界面,unicli browser doctor -- 检查浏览器交付状态。输出管道默认 Markdown,需要稳定格式时用 -f /yaml/csv/compact。接入 MCP 宿主时配置 {"mcpServers":{"unicli":{"command":"npx","args":["-y","@zenalexa/unicli-mcp"]}}},或直接运行 npx -y @zenalexa/unicli mcp serve,用 unicli mcp health -f 检查工具投影。桌面操作:unicli compute apps --format compact → snapshot → find --role AXButton → click --ref <ref>。认证用 unicli auth setup <site>,修复用 unicli repair <site> <command>。
这个 Agent 与同类方案有什么区别?
仓库自身提及与编码智能体(Claude Code、Codex、Cursor)的集成关系,但 Uni-CLI 定位为这些智能体之下的界面运行时,而非同类竞争产品;源材料未给出可直接对比的同类替代品。