用同一种语言定义 Agent 可以做什么
身份回答“是谁在操作”。CLC 定义权限本身:具体动作、参数边界、约束条件,以及一次请求为什么被允许或拒绝。
身份不等于权限
一个经过认证的 Agent,仍然可能执行不该执行的操作。CLC 在执行之前,把授权判断变成明确、可复核的结果。
谁在操作
证书和令牌把密码学密钥绑定到 Agent;通过 AIC,还能进一步绑定到承担责任的主体。
可以做什么
CLC 明确动作与参数边界,而不是停留在“能访问数据库”或“能调用工具”这种过宽描述。
受到什么限制
约束、运行时策略、委托深度与未决义务保持显式,不藏在应用代码的隐含约定里。
贯穿整条链路的统一判定模型
CLC 把 grant、当前 operation、最终 decision 与决策证据分开表达。
grant:
id: std/database-v1:query:SELECT
params: { limit: 100 }
operation:
id: std/database-v1:query:SELECT
params: { limit: 50 }
50 ≤ 100,请求仍在 grant 的参数边界内。请求
limit: 150 → params_exceed_grant。allow_unresolved,不会被静默视为完全授权。CLC 标准化了什么
语言本身刻意保持精简;它的价值来自补上不同系统之间最容易产生分歧的语义缝隙。
能力标识
结构化命名空间与动作路径语法,明确通配符规则,并对覆盖失败采用 fail-closed。
参数边界
数值上下界、枚举、基数、嵌套对象、可选键、步长,以及 quantity、路径前缀等 scheme 声明域。
最小权限求交
多个 grant 只做收窄。后续来源可以限制权限,但不能创造出上游不存在的权限。
稳定原因码
拒绝会指出失败的语义层,使不同实现能比较判定结果,而不是比较自由文本错误。
委托包含关系
CLC-D 判断子 grant 是否仍在父 grant 内,并把约束、载体模式与链认证保留在各自正确的层。
决策记录
输入、上下文与 verdict 可绑定到 canonical record,为可复现验证和审计证据提供基础。
为什么 CLC 有意义
CLC 是一层共享语义,不是另一种凭据格式。
可迁移的权限
同一套 grant 与 operation 语义,可以从不同身份载体、策略系统和执行环境投影出来。
可组合的最小权限
主体授权、Agent 能力、网关策略与委托范围可以求交,而不会在某一步静默扩权。
确定性的执行
Canonical JSON、类型敏感相等、有界数值处理与固定判定层,减少跨语言行为分歧。
可测试的规范
规范正文配套可执行向量、属性用例与多语言 runner,而不是只靠散文解释。
带可执行语料的规范
每条语义规则都应留下可复现观察:正向、负向或属性测试。
边界清楚,标准才容易落地
CLC 不试图把身份、传输、证据与法律责任都塞进同一层。