关于 electricsql
ElectricSQL 技能介绍基于 Postgres Shapes 的实时同步,适用于构建本地优先客户端应用的开发者。它同步读取数据,写入仍经由现有 API。
主要功能
- 01实时同步 Postgres 数据
- 02按行和列筛选副本
- 03支持 ShapeStream 与 React hook
- 04通过 API 代理处理认证
- 05写入后同步已确认状态
适用场景
- 01为客户端应用提供 Postgres 实时数据
- 02减少轮询并接收流式更新
- 03构建基于 TanStack DB 的应用
- 04支持由 Postgres 驱动的协作应用
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ oakoss/ agent-skills --skill electricsql安装后在 Claude Code 中输入/electricsql确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/auth-and-security.mderror-handling.mdmonitoring.mdsetup.mdshapes-and-streams.mdsync-performance.mdwrite-patterns.md详细介绍
ElectricSQL
概述
ElectricSQL 是一个同步引擎,通过 Shapes 将 Postgres 数据的部分副本流式传输到本地客户端。它负责读取路径——使用逻辑复制,将 Postgres 中的行实时同步到客户端。写入操作通过你现有的 API 返回;Electric 会将已确认的状态同步回所有已连接的客户端。
适用场景: 将 Postgres 实时同步到客户端应用、需要从 Postgres 获取实时数据的本地优先架构、用流式更新替代轮询、使用 Electric 集合的 TanStack DB 应用、由 Postgres 支持的多客户端协作应用。
不适用场景: 非 Postgres 数据库、需要引擎内置客户端到服务端同步功能的应用(Electric 仅处理读取)、没有实时需求的简单 REST CRUD、无法从本地数据中获益的应用。
快速参考
| 模式 | API / 方法 | 要点 |
|---|---|---|
| Shape 请求 | GET /v1/shape?table=items&offset=-1 | 首次同步会获取完整快照 |
| 实时更新 | ?live=true&handle=...&offset=... | 首次同步后通过长轮询获取实时变更 |
| SSE 流式传输 | ?live=true&live_sse=true | 持久的 Server-Sent Events 连接 |
| Where 子句 | ?where=status='active' | 在服务端按 SQL 风格筛选行 |
| 参数化 where | ?where=user_id=$1¶ms[1]=abc | 使用可防止 SQL 注入的参数化筛选 |
| 列选择 | ?columns=id,title,status | 仅同步所需列以减少带宽 |
| 完整副本 | ?replica=full | 更新和删除时提供完整行数据 |
| 仅变更 | ?log=changes_only | 跳过初始快照,仅接收新变更 |
| ShapeStream(JS) | new ShapeStream({ url, params: { table } }) | 底层流式客户端,支持自动重连 |
| Shape(JS) | new Shape(stream) | 将流物化为包含当前值的 Map |
| useShape(React) | useShape({ url, params: { table } }) | 提供加载和错误状态的 React Hook |
| 身份验证代理 | 通过你的 API 服务路由 shapes | 验证令牌,并按用户注入 where 子句 |
| Docker 设置 | docker run -e DATABASE_URL=... electricsql/electric | 单个容器,需要 wal_level=logical |
| Electric 密钥 | ELECTRIC_SECRET=key 环境变量 | 生产环境必需;开发环境使用 ELECTRIC_INSECURE=true |
常见错误
| 错误 | 正确做法 |
|---|---|
| 直接将 Electric 暴露到互联网 | 将 Electric 放在能够验证令牌的身份验证代理之后 |
忘记在 Postgres 配置中设置 wal_level=logical | 逻辑复制必需;未设置时 Electric 将无法启动 |
| 使用 Electric 执行写入 | Electric 仅用于读取路径;写入应通过你的 API 完成 |
写入处理程序未返回 txid | 返回 { txid },以便 Electric 确认同步已完成 |
| 将整个表同步到每个客户端 | 使用 where 子句和列选择进行部分复制 |
| 在客户端代码中硬编码 shape URL | 使用代理端点,在服务端添加身份验证和 where 子句 |
每次请求都使用 offset=-1 | 仅在初始同步时使用 offset=-1;之后使用返回的 offset |
未在 ShapeStream 中处理 FetchError 401 | 使用 onError 回调刷新令牌并重试 |
委派
如果有
local-firstskill,请将架构决策和同步引擎比较委派给它。 否则,建议使用:pnpm dlx skills add oakoss/agent-skills -s local-first -a claude-code -y如果有tanstack-dbskill,请将集合设置、实时查询和乐观变更模式委派给它。 否则,建议使用:pnpm dlx skills add oakoss/agent-skills -s tanstack-db -a claude-code -y如果有tanstack-startskill,请将使用服务器函数实现 shape 代理委派给它。 否则,建议使用:pnpm dlx skills add oakoss/agent-skills -s tanstack-start -a claude-code -y
- 设置和部署:使用
TaskAgent 配置 Docker 和 Postgres - 架构审查:使用
PlanAgent 设计身份验证代理和写入模式