为什么我装了工具,它还是调不动
装上工具包之后,智能体说「板上有这只手」,却调不起来。
这不是故障。这是这套东西最核心的一条设计在起作用:
模型不能给自己授权。
这一页说清楚:为什么要这样、它具体是怎么判的、授权该由谁给。
一、为什么模型不能给自己授权
这个产品卖的是一句话:它不会越界。
而那句话要成立,"能不能做这件事"这个判断就不能由要做这件事的那一方给出。 如果模型自己写一条「我有权限」,闸就读它自己写的那条—— 那道闸挡的就只是"忘了写",不是"不该做"。
一个能被要做事的一方自己解除的约束,不是约束。
所以:授权必须来自模型之外——一个人,或者一条你亲手注册的受信通道。
二、它具体怎么判:四臂对照,比任何解释都清楚
同一块板,同一只手,只改两个条件:
| 装了工具包? | 授权从哪来? | 结果 |
|---|---|---|
| 没装 | 受信通道 | 调得动 ✅ |
| 没装 | 模型自己断言 | 调不动 |
| 装了 | 模型自己断言 | 调不动 ❌ |
| 装了 | 受信通道 | 调得动 |
两条结论:
- 工具包不是必要条件——没装包,授权对了照样能调;
- 工具包不是充分条件——装了包,授权不对照样调不动。
唯一起决定作用的变量是「授权从哪来」。
判据是接地档:那条授权事实的来源必须是受信的; 模型经普通提交写下的同一句话,档位不够,不算数。
三、那道闸完整要求什么
一只手被派出去,要同时满足四件:
| # | 要有 | 它回答什么 |
|---|---|---|
| 1 | 一个动作意图 | 想做什么、风险多大 |
| 2 | 一条授权(覆盖这个动作) | 谁允许的、允许到多大风险 |
| 3 | 风险 ≤ 授权上限 | 这次的风险在授权范围内吗 |
| 4 | 一个可用的执行器 | 有没有人真能去做 |
四件缺一件,就派不出去。而其中第 2 件的来源,就是本页说的那条闸。
若你看到的是空的工单列表,它可能是四件里的任何一件没齐—— 今天那个列表不区分是哪一件,这是已知的不足。
四、⚠️ 授权今天怎么给:这一格我们还没有交付给你
必须如实说:
今天的控制台,没有任何一个地方把「给这只手授权」呈现成一个动作。
机制上有一条路存在(一条受信通道可以承载这类事实), 但它长得像「接一个数据源」,不像「给一个授权」—— 而且没有人以客户的身份从头走通过它。
⇒ 所以本页不给可照抄的模板。 一份教你怎么做的文档,如果那条路没有人走过,那它给的就不是模板,是猜测—— 而照着猜测做,失败时你分不清是你做错了还是它本来就不通。
这一格已作为一条缺口报出。在它有客户面入口之前,需要这个能力请联系我们。
五、这一页和「智能体由什么构成」的关系
四样里的工具那一格,说的是「有哪几只手」。 这一页说的是「手能不能动」。
两件事:一只手被声明了,与一只手被允许使用,是两回事。
⇒ 这也是为什么装包成功不等于能调——装包回答的是第一件,不是第二件。
相关
- 智能体由什么构成 —— 四样里「工具」那一格
- 接入计算后端与执行器 —— 手在你自己的机器上怎么跑起来
- 写一份宪法 —— 另一道闸:什么不许做
正文住
content/*.md;能力清单、工具清单、字段矩阵由生成器从实现代码抽取
(快照在 facts.json)——改了实现而忘了改文档,校验会自己发现。