AI 范围身份
状态:已准入,构建中 (Admitted, in build-out)
AIScopeRef 已在内核层面获得准入 (P-AISC-001..P-AISC-005)。应用所有的范围身份是当前产品路径; 模块和特性范围只在这些实体本身是规范 AI 所有者时准入。
AIScopeRef 是什么
AIScopeRef 是 AI 配置范围的规范身份契约。它通过一个不依赖于瞬态 UI 状态的稳定、唯一键来回答:“这是谁的 AI 配置?”
AIScopeRef {
kind: 'app' | 'module' | 'feature'
ownerId: string
surfaceId?: string
}kind + ownerId + surfaceId? 三元组在整个系统中构成一个稳定的唯一键。
封闭的类型枚举
kind | 所有者身份 | 备注 |
|---|---|---|
app | 应用身份 | surfaceId 可用于标识应用内部独立的 AI 特性界面 |
module | 独立的模块身份 | 仅当模块本身是规范所有者时 |
feature | 跨应用可复用特性所有者 | 不得碎片化本应由应用拥有的 AI 真理 |
kind 枚举是封闭的。应用和消费者不能发明额外类型。
应用范围的规范形态
应用拥有的 AI 配置规范形态是固定的:
AIScopeRef {
kind: 'app'
ownerId: <stable app id>
surfaceId: <stable surface id>
}只有当一个应用拥有多个独立 AI 配置界面时才需要 surfaceId。它必须稳定并由产品定义;调用方不得从瞬态标签页、会话、提示词或路由 ID 推导它。
范围身份为何重要
如果没有规范的范围身份,平台最终将陷入一堆即席键的混乱:“此 AI 配置属于应用 foo 会话 A 的第 3 个标签页”——这些键依赖于 UI 状态,无法在应用重启后存活,也无法在不同界面间保持一致的查找能力。
AIScopeRef 规则消除了这些故障模式:
| 规则 | 阻止的问题 |
|---|---|
封闭的 kind 枚举 | 消费者不能发明新的范围类型 |
| 要求稳定的所有者 ID | UI 本地键不能成为 AI 范围身份 |
| 稳定的应用界面身份 | 标签页/会话/线程的激增不会造成隐式范围爆炸 |
| 无隐式继承 | 范围 A 的配置不会隐式回退到范围 B |
| 所有者驱动的生命周期 | 范围的创建/销毁与所有者实体的生命周期绑定 |
无隐式继承
范围之间没有继承链。每个范围的 AIConfig 都完全具体化。如果产品需要“从父范围继承默认值”的用户体验,其实现方式是配置文件应用(写时复制)——绝不是运行时回退链。
跨界面适用性
AIScopeRef 统一适用于桌面端和网页端。界面特定的行为差异存在于各自的内核契约中;本契约不引入界面特定的规则。
允许的消费者
AIScopeRef 可由以下消费者使用:
| 消费者 | 用途 |
|---|---|
| 桌面内核 | AIConfig 键控存储和 UI 范围选择 |
| SDK 内核 | 类型化的 config / profile / snapshot API 范围参数 |
| 运行时内核 | 执行快照范围证据 |
消费者不得使用消费者本地字段扩展 AIScopeRef 模式。注解需求应存储在独立的消费者本地注解记录中——绝不能通过修改 AIScopeRef 来实现。
使用场景:应用配置其 AI 界面
应用拥有一个使用 AI 的工作区界面。
- 应用身份。 应用拥有稳定的应用 ID(例如
nimi.example-app)。 - 范围身份。 应用将 AI 配置应用到
AIScopeRef{ kind: 'app', ownerId: 'nimi.example-app', surfaceId: 'workspace' }下。 - 配置文件应用。 用户在 AI 配置 UI 中选择一个配置文件;配置文件(写时复制)应用到工作区范围的
AIConfig中。 - 持久化。 配置由规范范围身份作为键;它在应用重启后依然存在。
使用场景:具有多个 AI 界面的应用
假设一个应用确实托管了多个一流的 AI 界面——每个界面都有自己的配置文件应用/探测/快照历史。
- 显式范围扩展。 应用准入多个
AIScopeRef{ kind: 'app', ownerId: <app id>, surfaceId: <稳定的界面名称> }实例。 - 稳定的工作区名称。 界面必须是人类可识别的;
surfaceId不是瞬态 UI 键。 - 非按标签页/按会话/按文档。 如果用户只是在一个工作区内切换当前文档,那属于该工作区范围内的领域状态——而不是一个新的
AIScopeRef。
该契约正是通过防止范围扩散来维护配置的可靠性。
使用场景:范围生命周期与所有者绑定
用户卸载一个应用。
- 所有者实体被销毁。 应用包被移除。
- 范围被销毁。 所有与该应用绑定的
AIScopeRef实例同步销毁。 - 绑定的
AIConfig被清理。 与被销毁范围绑定的配置被失效或清理。没有悬空配置存留。
范围身份不做什么
- 它不跨消费者转移所有权。
- 它不允许范围之间进行运行时回退。
- 它不允许 UI 键成为范围身份。
- 它不允许范围 A 的
AIConfig将范围 B 的配置作为回退引用。 - 它不允许消费者使用自己的字段扩展模式。
职责边界摘要
| 关注点 | 所有者 |
|---|---|
AIScopeRef 模式 + 身份规则 | 平台 (P-AISC-*) |
由 AIScopeRef 键控的 AIConfig 意图 | 范围所有者通过 SDK projection |
| SDK 配置/配置文件/快照 API 上的范围参数 | SDK 内核 |
| 执行快照范围证据 | 运行时内核 |