用途:在编写或重构 Effect-TS 代码时提供专家指导,涵盖类型化错误处理、依赖注入、服务组合、并发、资源管理、流式操作与测试。
主要能力:以服务(Context.Tag、Effect.Service、Context.Reference、Context.ReadonlyTag)和 Layer 实现依赖注入;用 Data.TaggedError、Effect.catchTag、Effect.catchAll、Match 模块处理错误分类与模式匹配;用 Effect.gen、Effect.fn 组织代码;用 acquireUseRelease、scoped、addFinalizer 管理资源;用 Ref、Deferred、SubscriptionRef 做状态管理;用 Schedule 实现重试与定时;支持 Config 环境变量与敏感值(Redacted);并行与 fiber 操作。
使用方式:开始前确认 Effect 源码位于 ~/.effect,缺失则执行 git clone https://github.com/Effect-TS/effect.git ~/.effect。优先参照当前项目已有 Effect 模式;复杂类型错误或行为不明时查阅 ~/.effect/packages/effect/src/。中高复杂度任务建议先调研最佳实践。编写前需阅读 ./references/critical-rules.md。
适用场景:实现服务与 Layer、复杂错误层次、Stream 响应式操作、作用域资源清理、并发与性能敏感代码、测试模式,以及将 try-catch、Promise 代码重构为 Effect 模式。
限制:同一任务在 Effect 中有多种实现方式,需依惯例选择可读、可维护的方案;避免类型断言,Effect.gen 中 try-catch 无效;SubscriptionRef 不要用 unsafeMake;无限流需注意背压。资料未提供具体收费、价格、平台支持与效果数据。