LAYER 02 · 掌握组合语法

Scope、Realm 与 Rescope

把同一套全局能力安全地投影成每个 Agent 自己的运行世界

16 min3 处源码锚点upstream@47f9438
global defaults + agent-local shadowing
本章要解决的问题

两个 Agent 为什么可以看到不同工具、人格和工作目录,却仍共享同一进程?

先建立直觉

同一栋写字楼共享电梯和消防系统,但每家公司有自己的门禁、办公室与设备。Realm 是可发布服务的边界,Scope 是你当前拿着哪张门禁卡。

MECHANISM

机制拆解

createScope/scopeOf/scopeTarget 提供零依赖作用域原语;服务注册表和事件分发在调用时解析当前 Agent 目标。

Agent 创建阶段在 agent.ctx 内挂载 preset 与局部贡献;局部同名项 shadow 全局默认,dispose 时随 Agent 一起回收。

第 1 步 / 共 5 步

声明全局默认

部署级 provider 与工具挂在根世界。

INVARIANTS

无论怎么扩展,都不能破坏

  • Agent 局部能力不得发布到根 service realm
  • 作用域过滤发生在权威分发路径中
  • scoped registration 的身份必须受保护
FAILURE MODES

最容易踩中的坑

  • ×把 cwd 当成完整隔离边界
  • ×在全局数组里按 agentId 手动过滤
  • ×允许用户 preset 向根 realm 发布服务
VERIFY IN SOURCE

不要相信结论,去源码里复核

以下链接固定到官方 deepseek-harness@47f9438;查看当前上游时请留意后续 breaking changes。

KNOWLEDGE CHECK

先停十秒,再揭晓答案

工具 restriction 为什么不限制 Agent 自己局部注册的工具?

为什么下一章紧接在这里

Scope 解决运行时隔离,Profile、Bundle 与 Patch 则解决启动时产品组合。

Learn DeepSeek Harness

独立教学项目。解释力来自源码,判断边界以官方仓库为准。