ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Cloudflare Computer执行追踪器详解:并发exec状态跟踪的完整设计指南

Cloudflare Computer执行追踪器详解:并发exec状态跟踪的完整设计指南 Cloudflare Computer执行追踪器详解并发exec状态跟踪的完整设计指南【免费下载链接】computerGive your agent a computer 项目地址: https://gitcode.com/GitHub_Trending/computer1/computerCloudflare Computer 是一个为 AI Agent 提供一台计算机的开源项目Give your agent a computer 它把虚拟文件系统和可插拔的执行后端封装在 Durable Object 中。当多个exec命令同时在不同后端容器、Worker Shell、Worker JavaScript上并发运行时系统如何准确跟踪每个执行execution属于哪个运行时runtime答案就是ExecutionRuntimeTracker执行追踪器——本文带你用最短的时间理解它的状态跟踪设计。Cloudflare Computer 的整体架构Durable Object 持有权威状态执行面可插拔为什么并发 exec 需要执行追踪器一个 Workspace 可以同时注册多个后端workspace.runtime.exec()是唯一的执行入口。每条命令执行后系统会拿到一个executionId后端容器可能随时被替换reconnect、重建。这时候有两个经典问题后续操作该发给谁对某条 exec 执行killExec、disposeExec、拉取事件流getExec时必须确认它当前所在的运行时运行时被换了怎么办如果容器已重建旧 exec 已经丢失系统要快速、明确地报错而不是把命令发到错误的运行时上。执行追踪器就是为这两个问题设计的记录最近活跃的执行 → 所属运行时的映射关系。双层结构有界内存 LRU SQLite 持久化追踪器的核心实现非常克制只有 100 行左右位于 execution-runtime-tracker.ts。层级实现作用内存层Map实现的有界 LRU默认1024条快速命中避免无界增长持久层SqlExecutionRuntimeStoreSQLite 表computer_execution_runtimeDurable Object 重启/缓存淘汰后恢复所有权几个关键设计点LRU 淘汰#touch()方法在读取时把条目重新插入到 Map 末尾利用 Map 的插入顺序把最久未访问的键淘汰——最近活跃的执行永远不会先被挤出去持久兜底内存命中不了时回查 SQLite查到的映射会被回填进内存缓存乐观删除delete(key, expectedRuntimeId)只有当前值与期望的 runtimeId 一致时才真正删除防止并发场景下晚到的旧操作误删新执行刚写入的映射。Workspace 构造时这样装配追踪器见 workspace.tsthis.#executionRuntimes new ExecutionRuntimeTracker( 1_024, new SqlExecutionRuntimeStore(this.#db), );一次并发 exec 的完整状态跟踪流程整个闭环体现在 workspace.ts 的命令适配层中流程大致是exec 返回时记忆每条命令的返回信封envelope自带runtimeId通过#rememberExecutionRuntime()写入追踪器键由JSON.stringify([backendId, executionId])组合天然区分不同后端下的同号执行 ID后续操作前查表getExec/killExec/disposeExec先查追踪器拿到期望的 runtimeId断言校验真正下发前assertExecutionRuntime()会把期望值与当前运行时对比。若容器已被替换立即抛出WorkspaceExecutionLostError错误码EEXEC_LOST明确告知这条执行在运行时替换时丢失了清理收尾disposeExec成功后用带期望值的乐观删除清理映射避免脏数据残留。这样即使缓存被淘汰、甚至 Durable Object 整体重建新的 Workspace incarnation持久层也能把谁属于哪个运行时的信息恢复回来——测试用例 execution-runtime-tracker.test.ts 覆盖了 LRU 淘汰、持久回退、跨实例恢复和乐观删除全部场景。设计亮点小结✅有界内存LRU 上限固定缓存占用不随 Durable Object 生命周期无限增长✅持久兜底SQLite 保证跨实例incarnation的所有权连续性✅失败即明确运行时不匹配时报EEXEC_LOST而不是静默执行到错误环境✅并发安全乐观删除 键中携带后端 ID双保险防并发误操作。相关资料追踪器实现packages/computer/src/execution-runtime-tracker.tsWorkspace 集成packages/computer/src/workspace.ts行为测试packages/computer/src/execution-runtime-tracker.test.ts运行时接口规范docs/05_runtime_interface.md同步协议含并发变更说明docs/02_sync_protocol.md可运行示例examples/container、examples/worker-shell【免费下载链接】computerGive your agent a computer 项目地址: https://gitcode.com/GitHub_Trending/computer1/computer创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表