thread_id、checkpoint、interrupt 与沙箱配额一次对齐,图才能在笔记本与远程 Mac 上同样长跑不翻车。
若你已在 Mac 上跑通 LLM 子系统,可把本文当作 LangGraph 侧的「接线图」。推理与批参对照见《M4 本地推理决策矩阵》;RAG 入库与向量配额见《本地 RAG 管线矩阵》;网关侧 Schema 与重试模板见《OpenClaw 工具调用治理》。入口:首页了解场景,需要下单时打开购买页。下面先给决策表,再给远程 Mac 长跑验收清单与 HowTo 摘要。
| 维度 | 关键设计点 | 远程 Mac 长跑提示 |
|---|---|---|
| thread_id | 一会话一线程键;与业务 user/session 映射写入审计;禁止并发写同一键 | 多客户端经网关转发时,在网关生成并回传,避免客户端随意拼串撞档 |
| checkpoint | 命名空间与部署单元一致;记录图版本号,升级图时考虑迁移或回放策略 | 长跑写放大明显:监控表或 SQLite 文件体积、WAL、 vacuum / autovacuum 窗口 |
| SQLite / Postgres | 单机低并发、快速起步用 SQLite + WAL,路径放本地 SSD | 多 worker、集中审计或 HA 需求用 Postgres + 连接池;勿把 SQLite 放在网络盘或同步盘 |
| interrupt | 人机回路节点显式挂起,保存待输入状态与 UI 提示文案 | 超时无人响应要有默认分支或安全中止,避免图永久占住 worker |
| tool timeout | 单工具硬超时 + 子图预算 + LLM 首包/总长分层 | 按机房 RTT 与下游 p95 调参,与 OpenClaw 侧熔断策略对齐日志字段 |
| 目录配额 | workspace、checkpoint、artifact、临时下载分桶;软告警硬拒绝 | 关注 inode 与小文件风暴;定时清理与只读代码区隔离(可参考IDE 桥接沙箱) |
checkpoint:SQLite 还是 Postgres?
SQLite适合个人开发者与单进程编排:零运维、嵌入式、与 Apple Silicon 本机 SSD 搭配延迟低。开启 WAL、固定单一路径、避免与 iCloud/网盘同目录;长跑注意 checkpoint 文件单调增长与备份锁定窗口。Postgres适合多实例 worker、需要跨机观测或合规留痕:用连接池限制总连接,迁移脚本纳入发布流程,并监控表膨胀与 autovacuum。远程 Mac 若只做「执行端」而状态在中央库,记得把时钟漂移与断线重连纳入集成测试。
沙箱工作区配额:验收清单
- thread_id 与文件落盘路径前缀绑定,删除会话时可级联清理 scratch。
- checkpoint 路径 与业务上传目录分离,避免一次大附件写爆图状态表同盘。
- 单工具 输出单文件上限、总目录硬上限、inode 软告警三项齐备。
- interrupt 挂起期间仍计占用:为等待队列设 TTL 或转交其他 worker。
- tool timeout 触发后工具子进程可被收割(SIGTERM→SIGKILL),无僵尸句柄。
- 长跑回放:随机 kill 进程后从最新 checkpoint 恢复,对比关键业务不变量。
HowTo 摘要(可对照 JSON-LD 展开)
① 定 thread_id 生成与传递链。② 选 SQLite 或 Postgres 并固化连接串与迁移。③ 为审批类节点接 interrupt,写清 resume 契约。④ 分层超时与错误码。⑤ 配额与清理脚本进 CI。⑥ 在专用远程 Mac上跑满几小时压测并看磁盘曲线。
远程 Mac 长跑:运维侧再补三刀
把编排进程交给 launchd 或容器化入口时,务必把标准输出、checkpoint 与 scratch 根目录指到同一块本地盘,并在面板里设磁盘告警先于用户报错。夜间批跑建议单写者原则:同一 thread_id 不要笔记本与云端双写。断网恢复后先读最新 checkpoint 再继续,避免「以为在续跑其实在分叉」。
# 命名约定示例(按团队前缀调整)
CHECKPOINT_DIR="$HOME/agent-state/checkpoints"
SANDBOX_WORKSPACE="$HOME/agent-state/scratch/$THREAD_ID"小结:决策矩阵把「谁的状态」「存哪」「卡在哪」「写多少」四件事拆开;验收清单保证远程长跑下磁盘、连接与人工节点都不会悄悄拖垮整图。
延伸:需要稳定网关与工具策略时,继续读OpenClaw 工具调用;算力与节点选型从首页进入,再在购买页对比配置。