关于 effect-queues-background
该 Effect 技能面向 TypeScript 开发者,介绍队列、PubSub 和后台 Fiber。内容涵盖有界队列的背压、事件广播、平稳关闭,以及实现 API 前查阅本地 Effect 源码的流程。
主要功能
- 01支持背压的有界队列
- 02PubSub 事件广播
- 03后台 Fiber 与中断
- 04工作进程并发指导
- 05查阅本地 Effect 源码的流程
适用场景
- 01解耦生产者与消费者
- 02向多个订阅者广播事件
- 03运行可平稳关闭的后台循环
- 04编码前核对 Effect 实现
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ mepuka/ effect-ontology --skill effect-queues-background安装后在 Claude Code 中输入/effect-queues-background确认已加载。
详细介绍
队列、PubSub 与后台任务
适用场景
- 通过背压解耦生产者和消费者
- 向多个订阅者广播事件
- 运行可优雅关闭的后台循环
队列(有界)
import { Queue } from "effect"
const q = yield* Queue.bounded<string>(32)
yield* Queue.offer(q, "job")
const job = yield* Queue.take(q)
PubSub(广播)
import { PubSub } from "effect"
const ps = yield* PubSub.bounded<string>(32)
yield* PubSub.publish(ps, "evt")
后台 Fiber
const fiber = yield* Effect.fork(loop)
yield* Fiber.interrupt(fiber)
指引
- 优先使用有界队列,以实现自然背压
- 通过派生消费者来使用多个工作线程
- 确保在关闭期间中断后台 Fiber
注意事项
- 无界队列会导致内存持续增长
- 后台任务静默失败 → 添加日志/指标
交叉链接
- 并发:了解池和中断
- 时间/日志:了解后台任务的可观测性
本地源码参考
关键:实现前请先搜索本地 Effect 源码
完整的 Effect 源代码位于 docs/effect-source/。编写 Effect 代码前,务必先搜索实际实现。
关键源文件
- Queue:
docs/effect-source/effect/src/Queue.ts - PubSub:
docs/effect-source/effect/src/PubSub.ts - Fiber:
docs/effect-source/effect/src/Fiber.ts
搜索示例
# Find Queue patterns
grep -F "bounded" docs/effect-source/effect/src/Queue.ts
grep -F "offer" docs/effect-source/effect/src/Queue.ts
grep -F "take" docs/effect-source/effect/src/Queue.ts
# Study PubSub operations
grep -F "publish" docs/effect-source/effect/src/PubSub.ts
grep -F "subscribe" docs/effect-source/effect/src/PubSub.ts
# Find background fiber patterns
grep -F "fork" docs/effect-source/effect/src/Fiber.ts
grep -F "interrupt" docs/effect-source/effect/src/Fiber.ts
# Look at Queue test examples
grep -F "Queue." docs/effect-source/effect/test/Queue.test.ts
工作流
- 确认所需的 Queue 或 PubSub API
- 在
docs/effect-source/effect/src/Queue.ts或PubSub.ts中搜索其实现 - 研究类型和背压模式
- 查看测试文件中的用法示例
- 根据实际实现编写代码
真实源码 > 文档 > 假设
参考资料
- Agent Skills 概览:https://www.anthropic.com/news/skills
- Skills 指南:https://docs.claude.com/en/docs/claude-code/skills
评论
支持 Markdown