确认与安全
智能体操作云端账号时,最危险的往往不是手滑打错字,而是它信心十足地做了看似正确的错事:删掉的是生产模型而不是测试模型、发布一份没人审过的草稿、部署到你早就忘了的设备上。SenseCraft CLI 的解法是一套确认协议,每个智能体都必须照做。
你的第一句话表达意图,不等于同意。
你: 删除模型 63760智能体:将删除 Global 环境中的模型 63760。删除后无法恢复,是否确认?你: 确认智能体:完成,已删除。所有 L2 写操作都要走这个流程:智能体先发问,点明操作、环境和对象(带 ID),并说明后果。只有你另外回一句“confirm”“yes”或“确认”,它才会带上 --yes 执行真正的命令。需要确认的完整命令清单见输出与安全。
以下这些都不算确认:
- “删除模型 63760”(这只是最初的请求)
- 在同一条消息里紧接着说“我刚才不是说了要删吗”
- 任何靠语气或上下文推测出来的“同意”
这套规则有两道强制保障——一道写进智能体读取的技能,一道内建在 CLI 里:非交互式(智能体模式)执行 L2 命令时若缺 --yes,会直接报 confirmation required 失败。所以哪怕提示词再“狡猾”,也跨不过这道关卡。
两个额外的同意参数
Section titled “两个额外的同意参数”控制台里有两个对话框具有法律效力,因此各配一个专用参数:
| 参数 | 用在 | 控制台对应项 |
|---|---|---|
--agree-declaration | app publish | “Declaration for Publishing”(发布声明)勾选框 |
称职的智能体会先把声明原文给你看(declaration / disclaimer),等你单独回复“我同意”后,才会使用其中任一参数。
- 智能体展示令牌、访问密钥、开发套件的
device_key/token时会脱敏,你看到的只是sk-****这类形式,不会出现完整值。 - 别把密钥粘进对话。需要配置凭据时,正确做法是由你在账号中心创建访问密钥,并在本地运行
auth add。 - 公开模型的
file_url平台本身就不提供,因此永远不会展示——谁找智能体要“公开模型下载链接”,都是在要一个不存在的东西。
会被拒绝的操作
Section titled “会被拒绝的操作”遵守技能的智能体不会做下面这些事:
- 替你运行
auth add或auth init——它们要处理原始密钥或浏览器登录,只能由你在本地执行。 - 没有单独一轮确认,就发布、删除、下架、部署、安装、解绑、停止、克隆、重新绑定。
- 抓取控制台页面,或者拿猜来的令牌编造 HTTP 调用——只使用真实存在的 CLI 命令。
- 获取公开模型的产物,或者想办法“绕过”仅限部署的策略。
- 涉及 L4 操作(管理员审核状态、
privacy=1)。 - 假装给设备烧录——Web Serial / USB 烧录属于 L3:智能体可以给你链接,但绝不能声称已经完成烧录。
- 编造命令——CLI 没有的能力(比如导出数据集),智能体会直说,而不是自己临时编一个。
智能体不守协议怎么办
Section titled “智能体不守协议怎么办”协议写在技能里,没加载技能的智能体自然不知道“先询问”的约定——好在 CLI 的 --yes 关卡依然有效:没确认的写操作一律失败。想要完整的保护,请确认技能已经接入(见技能),并优先选择能读取项目本地技能文件的智能体。
要是某个智能体为了“省一步”,让你亲自对一个破坏性的生产操作输入 --yes——这时候该踩刹车,而不是踩油门。