Uni-CLI 的工作方式
Uni-CLI 为网站、浏览器、桌面 App、本地工具、文件和协议服务提供统一命令模型。每次调用都经过四个步骤。运行时查找操作并查看合同,通过声明的接口运行,随后返回结构化结果。
1. 在本地查找操作
unicli search "查看 Hacker News 热门文章"搜索在已安装目录中完成。运行时只编译一次任务,解析精确或带拼写误差的 provider 名称,再对中英文命令描述排序。Effect、operator、target surface、category 和 platform 过滤会在检索阶段移除不兼容命令。每条结果都带有具名排序信号。Discovery 不会执行外部操作。
2. 操作会说明自己的参数
unicli describe hackernews top操作合同包含以下字段。
- 参数和默认值
- 登录要求
- 目标 surface 与 execution operator
- effect 与 interaction impact
- adapter 源文件和修复入口
Agent 可以在打开浏览器、启动桌面 provider 或访问服务前准备好调用。
3. 通过声明的接口执行
一条操作可以使用 structured API、browser protocol、native CLI、browser semantics、desktop accessibility、visual control 或 local runtime。目录通过 operator 和 minimum_capability 记录选择。
unicli hackernews top --limit 5 -f json参数可以来自 Shell flag、stdin JSON 或 args file。运行时会先验证参数,再取得目标接口。
4. 每次调用都返回 envelope
{
"ok": true,
"schema_version": "2",
"command": "hackernews.top",
"meta": {
"duration_ms": 2853,
"count": 5,
"surface": "web"
},
"data": [],
"error": null
}成功和失败共享同一外层结构。程序可根据 ok 分支,从 data 读取结果,并用 error.code 选择下一步。
软件发生变化时
adapter failure 可以指出源文件和失败步骤。更新 adapter 后,repair 会重新运行原命令完成验证。
unicli repair <site> <command> --dry-run
unicli repair <site> <command>~/.unicli/adapters/ 中的用户 adapter 可在本地开发时覆盖 packaged adapter。
同类失败重复发生时
Evolution session 会把选定的失败 run 整理成私有 evidence packet 和一个隔离的 YAML candidate。Uni-CLI 通过公开 CLI 分别执行 baseline 与 candidate,保持 validation case 和 held-out case 分离,并记录每次接受或拒绝的 attempt。
unicli evolve adapter <site> <command> \
--run <proposal-run> \
--candidate <candidate.yaml> \
--validation <validation-eval.yaml> \
--held-out <held-out-eval.yaml> \
--promotePromotion 要求 validation 严格提升且 held-out 没有回退。安装后的 override 保留精确 rollback artifact。Agent 提出修改,Uni-CLI 负责执行证据和 promotion 决策。
CLI、MCP 与 ACP
CLI 提供完整命令面,适合进程型 Agent、管道、文件和 CI。MCP 把 Uni-CLI 接入 tool server 客户端。ACP 提供 agent-client server。三种入口使用同一操作目录。