Effect 架构约定
运行时大量逻辑用 Effect 描述,以便取消、依赖注入与按目录隔离。对外边界通过 makeRuntime 转成 Promise/回调;会话级并发由 Runner 单飞,避免两个外环写乱同一会话。
makeRuntime
Section titled “makeRuntime”将服务 Layer 接到普通 TypeScript:runPromise / runFork / runSync。共享 memo 避免重复构建 Layer;可附带实例引用与遥测。出界处把 Effect 失败映射为调用方可处理的错误。
InstanceState
Section titled “InstanceState”按项目 directory 缓存的作用域状态:多项目同进程不串台;销毁时跑 finalizer。两目录不应共享可变状态时,状态必须放进 InstanceState,而不是模块级全局变量。与实例边界一致。
Runner
Section titled “Runner”stateDiagram-v2 [*] --> Idle Idle --> Running: ensureRunning Idle --> Shell: startShell Running --> Idle: 完成/取消 Shell --> Idle: 完成/取消同会话同时只跑一个主任务;忙时拒绝并发 prompt。取消以可识别的取消错误收尾。内核侧行为见实例边界与并发调度。
相关阅读: