-
Notifications
You must be signed in to change notification settings - Fork 1
Architecture Charter zh
指导每一个设计决策的原则。实现细节属于各模块的文档。
dsh-edge 是适配层,不是 fork。 它将上游已发布的包运行在 Cloudflare Workers 上。上游拥有所有业务逻辑。Edge 只拥有让这些包在 serverless 环境中工作的传输和存储。
应用逻辑完全不变,只有管道变了。
上游提供了插件,安装它。上游提供了扩展点,使用它。上游提供了抽象类,实现它。永远不重新实现上游已发布的能力。如果你在 Edge 代码里写业务逻辑,那你大概率做错了。
上游按单进程设计——服务之间在内存里互相调用,客户端直接读取状态。Edge 唯一的职责是在上游假设本地性的地方补上网络传输。每个 Edge 拥有的组件必须恰好归入三类之一:
- 直接复用 — 上游插件原封安装,零 Edge 代码。
- 最小替换件 — 上游接缝(抽象类或能力接口)的平台相关实现。
- 传输桥 — 将进程内信号转发到网络上,不包含任何业务逻辑。
上游在一个进程里运行两个 cordis Context——服务端和客户端——通过进程内插件连接。Edge 把它们分到两个物理运行时,通过 WebSocket 和 HTTP 连接。架构不变,只是通信介质不同。
补丁是最后手段。每个保留的补丁需要版本绑定的文件名、缺少补丁时的失败测试、理由说明和记录在案的移除条件。组合和扩展点永远优先。
-
安装上游插件。 检查它的
inject要求——如果所有依赖都能满足,直接安装。这是默认选择,不需要理由。 - 实现上游接缝。 当上游提供了抽象类或能力接缝,需要平台相关的后端时,写最小的符合实现。
- 加传输桥。 当上游假设进程内通信时,通过上游的扩展点捕获信号,转发到网络上。桥里不应有任何业务逻辑。
- 打补丁。 当以上都因为硬性的平台不兼容而无法工作时。记录移除条件——每个补丁都应该在上游演进后可以删除。
Edge 拥有:平台入口。Durable Object 生命周期。服务端与浏览器之间的网络传输。存储后端。文件系统委托。Owner 认证。HTTP 路由分发。
上游拥有:Agent 行为。工具定义。系统提示词。模型编排。Session 事件格式。目标追踪逻辑。压缩策略。所有面向用户的交互设计。所有客户端 UI 插件。
当一个新的上游能力到来时,第一个问题不是"我们怎么实现这个",而是 "什么阻止了它直接工作?" 答案几乎总是:缺少存储后端、缺少网络传输、或某个 Node.js API 在 Workers 里不可用。修复那个特定的缺口——仅此而已。
- 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
- 首页
- 架构
- 核心与作用域
- 会话与持久化
- 模型与上下文
- 执行与工具
- 策略与交互
- 平台与接入
- 开发