用途:该技能面向 Effect(TypeScript 函数式效果库)中的状态管理,帮助在并发环境下安全地读写可变状态。
主要能力:提供三种原语。Ref 是基础可变引用,支持 make、get、set、update、getAndSet、updateAndGet、modify 等原子操作;SynchronizedRef 支持带效果的更新,如 updateEffect、modifyEffect,适合更新中需要调用 API、写日志或处理错误的场景;SubscriptionRef 支持变更通知,通过 changes 返回 Stream,可让多个订阅者响应状态变化。三者均为 fiber 安全,可并发访问。
使用方式:通过 Effect.gen 生成器创建与操作,例如 const counter = yield* Ref.make(0),再用 Ref.get、Ref.set、Ref.update 等读写;SynchronizedRef 用 updateEffect 包裹异步逻辑;SubscriptionRef 用 changes 配合 Stream.runForEach 订阅。也可将 Ref 封装进 Layer.effect 构造服务,如计数器服务。
适用场景:计数器、累加器、状态机(idle/loading/success/error 转换)、带异步刷新的缓存、配置变更广播等。
限制与建议:简单状态用 Ref,异步更新用 SynchronizedRef,需要通知用 SubscriptionRef;保持状态最小,不存派生数据,优先不可变更新。更完整文档见 ${CLAUDE_PLUGIN_ROOT}/references/llms-full.txt。