Skip to content

Scope zh

pawaca edited this page Aug 30, 2026 · 2 revisions

作用域

上游作用域注册和 Agent 作用域生命周期词汇在 Edge 中的适配。

上游参考:Scope

上游提供了什么

scope 包()是一个库原语——不是 cordis Service——提供身份、载体和作用域层词汇,用于 Agent 作用域的注册:

  • ScopeKey — 不透明的对象标识,用于路由。Agent 循环使用 对象作为 key。
    • Scoped<T> — 品牌类型,标记由 创建的作用域过滤事件接收器。
    • ScopeLayer — 一个作用域对注册表的完整贡献,带空置追踪用于资源回收。
    • ScopedLayers — 管理全局和惰性创建的作用域特定层。读取不创建; 按插入顺序实体化条目。 此词汇由 、、 等需要按 Agent 可见性的注册表内部消费。它的工作方式类似编程语言的变量作用域:在 Agent 作用域内注册的资源对外部不可见,Agent dispose 时自动清理。

对 Edge 来说什么时候重要? 目前完全透明——Edge 只有一个 Agent preset,所有工具注册在根 Context。Scope 在以下场景变得关键:

  • Subagent:子 Agent 不能看到父 Agent 的工具,也不能把自己的工具泄漏给父 Agent。
    • Agent Preset:不同 session 使用不同 preset 时需要隔离的工具集。

Edge 改了什么

直接复用 Scope 词汇

是上游插件的传递依赖(AgentRegistry 使用 ,ToolRuntime 使用作用域过滤的工具可见性)。Edge 不直接导入或配置它——通过上游插件栈透明工作。

Edge Context 私有 cordis Context

创建自己的私有 (session-store.ts 第 193 行),而不是从外部接收。这是 Durable Object 生命周期驱动的 Edge 设计选择:

  • 每次 DO 激活创建新的 和新的 Context
    • 所有插件在 期间安装到此私有 Context
    • DO 休眠或被驱逐时 Context 销毁
    • 所有 workspace 和 session 共享同一个 DO 实例内的 Context 这与上游不同——上游的单个长生命周期 Context 贯穿 Node.js 进程生命周期。

Edge 没有改什么

  • ScopeKey 身份和路由机制
    • Agent 作用域事件过滤和可见性
    • ScopeLayer 空置追踪和资源回收
    • 上游注册表(tools、system prompt、projections)如何使用作用域层

性能特征

Context 初始化:Edge 在每次 DO 激活时创建新 Context 并安装约 30 个插件。耗时 50–200ms,取决于插件数量和存储读取。同一激活内的后续请求复用已初始化的 Context,零开销。

Scope 开销:作用域路由是 O(1) 查找—— 用作 Map key。通常每个 session 一个 agent,作用域层增加的开销可忽略。

架构总结

组件 分类 Edge 代码
词汇 复用 传递依赖,不直接导入
私有 cordis Context 替换 每次 DO 激活

关键观察:Scope 是不可见的基础设施——Edge 既不导入也不配置它。唯一的 Edge 特点是每个 DO 创建自己的短生命周期 Context,而不是共享长生命周期的进程 Context。这种隔离是 serverless 模型的自然结果,不是刻意的适配。

English

中文

Clone this wiki locally