-
Notifications
You must be signed in to change notification settings - Fork 1
Client Modules zh
pawaca edited this page Aug 30, 2026
·
1 revision
Edge 用构建时静态组装替换了上游的运行时模块扫描。
上游参考:客户端模块
ClientModuleRegistry(ctx.clientModules)通过增量包扫描、boot graph 组合、bundle 路由和 index 注入管理 Web 插件集成。启动时扫描 package.json 中的 dsh.client 声明,构建带依赖边和内容哈希的 WebBootGraph,注入为 window.__DSH_BOOT__。Bundle 变更通过 stat 轮询触发 HMR 更新。
Edge 用构建时流水线替换运行时模块扫描:
-
assemble-standalone-web.mjs读取上游已发布的包,构建每个客户端插件的 bundle,输出到dist/plugins/。 - Boot graph 在构建时预计算并冻结——无运行时扫描,无 HMR。
-
verify-standalone.mjs对照expected-boot-graph.json检查组装结果,防止意外增删。 - Bundle 作为 Cloudflare Assets(静态文件)随 Worker 一起部署。
32 个上游客户端插件在浏览器中原样运行。Edge 加了一个自定义插件(ui-edge),用于工作区目录选择器和文件下载——共 33 个。
- 客户端插件代码——32 个上游 bundle 按发布版运行
- Boot graph 线上格式(
window.__DSH_BOOT__) - 浏览器中的插件依赖解析
- 客户端 cordis Context 组合
静态资源从 Cloudflare 边缘 CDN 投递——请求时无服务端渲染或模块扫描。Boot graph 是嵌入 HTML 的单个 JSON 对象。插件 bundle 按依赖顺序获取,使用内容哈希做缓存刷新。
verify-standalone.mjs 在构建时(CI)运行,耗时毫秒级。对比组装的插件列表与已审查的 expected-boot-graph.json。上游依赖变更导致客户端插件增删时,构建会失败,直到期望被显式更新。
| 组件 | 分类 | 上游对应 |
|---|---|---|
| 构建时组装 | 替换 | 运行时 ClientModuleRegistry
|
| 静态资源投递 | 替换 | Bundle 路由 + HMR |
| Boot graph 验证 | 替换 | 运行时 graph 组合 |
| 32 个上游客户端插件 | 复用 | — |
ui-edge |
替换 | 无对应(Edge 专属 UI) |
关键观察:Edge 用部署简单性(静态 bundle、构建时验证)换取了运行时灵活性(HMR、动态扫描)。客户端插件系统完全相同——只有投递机制变了。
- Home
- Architecture
- Core & Scope
- Session & Persistence
- Model & Context
-
Execution & Tools
- Tools
- Bash
- Subprocess 🚫
- PTY Session 🚫
- Background Jobs 🚫
- Filesystem
- LSP Navigation 🚫
- Code Runtime 🚫
-
Web Access
⚠️ -
Skills
⚠️ - Workflow 🚫
- Subagent 🚫
-
Policy & Interaction
- Goal
- Approval 🚫
- Permission Presets 🚫
-
Sandbox
⚠️ - Plan Mode 🚫
- User Interaction 🚫
- Commands 🚫
- Schedule 🚫
- Message Feedback 🚫
- Platform & Access
- Development
- 首页
- 架构
- 核心与作用域
- 会话与持久化
- 模型与上下文
- 执行与工具
- 策略与交互
- 平台与接入
- 开发