ARTICLE DETAIL

资讯详情

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

Cloudflare Computer celld示例实战:Celld JavaScript运行时上的聊天Agent(完整教程)

Cloudflare Computer celld示例实战:Celld JavaScript运行时上的聊天Agent(完整教程) Cloudflare Computer celld示例实战Celld JavaScript运行时上的聊天Agent完整教程【免费下载链接】computerGive your agent a computer 项目地址: https://gitcode.com/GitHub_Trending/computer1/computerCloudflare Computer是一个把虚拟文件系统装进 Durable Object 的持久化工作区项目口号就是 Give your agent a computer 。本文带你实战它的celld 示例一个运行在 Celld JavaScript 运行时上的聊天 Agent——Agent 拥有持久化工作区Workspace能用 8 个文件工具读写自己的文件还能在隔离的 Dynamic Worker 里执行 JavaScript 模块全程只需一个终端就能跑起来。为什么这个 celld 示例值得看大多数 Agent 示例都依赖容器或重型运行时而 celld 示例展示了一条轻路线只依赖一个 Durable Object聊天历史和工作区文件存在同一个 SQLite 数据库里没有额外存储不写 RPC 接口Agent 通过 src/index.ts 中的withWorkspace混入直接获得工作区能力终端即客户端用 AI SDK TUI 做聊天界面一条npm run chat命令进入对话。注意该示例是原型Prototype当前 celld 为 v0.1.0 级别适合学习和实验。celld 聊天 Agent 架构解析整体数据流非常简单终端npm run chat │ AgentClient WebSocket ▼ /agents/celld-agent/name ▼ CelldAgentAIChatAgent withWorkspace ├─ 聊天历史SQLite ├─ cloudflare/computer Workspace同一 SQLite │ └─ read / ls / find / grep / write / edit / delete 工具 ├─ celld-javascript 运行时后端 │ └─ 当 env.LOADER 可用时提供 exec 工具 └─ Cloudflare Workers AIREST API关键设计点单对象持久化CelldAgent同时是聊天对象和工作区宿主--name每指定一个新名字就多一个独立的 Agent 实例独立历史 独立工作区工具由框架生成src/index.ts 中onChatMessage()调用getWorkspace(this)拿到 Workspace再传给createAITools()源码见 packages/computer/src/tools/ai.ts模型的工具循环自动获得全部文件工具执行后端可插拔只有当 celld 注入了env.LOADER时才注册celld-javascript后端实现见 src/celld-javascript-backend.ts。快速上手5步跑通聊天Agent仓库地址https://gitcode.com/GitHub_Trending/computer1/computer第一步安装 celld 并确保 PATH 可用curl -fsSL https://celld.dev/install.sh | sh export PATH$HOME/.local/bin:$PATH celld --versioncelld deploy还需要esbuild在 PATH 中安装本仓库依赖后它就在node_modules/.bin里。第二步安装依赖并构建工作区包工作区包通过dist目录解析部署前必须先构建npm install npm run build --workspace cloudflare/computer export PATH$PWD/node_modules/.bin:$PATH第三步配置 Cloudflare 凭据celld 不提供托管的 Workers AI 绑定Agent 直接用账户 ID API Token 调 Workers AI REST API。创建具有 Workers AI 读权限的 API Token 后export CLOUDFLARE_ACCOUNT_IDaccount-id export CLOUDFLARE_API_TOKENapi-token⚠️ Token 只放在本地环境变量里不要写进 wrangler.jsonc 等被跟踪的文件。第四步启动本地服务npm run dev:local --workspace example/computer-celld这一步由 script/local-dev.mjs 驱动会自动启动本地 S3 兼容 shimscript/local-s3-shim.mjs、部署 Worker、启用 celld Worker Loader 作为env.LOADER并监听http://127.0.0.1:8080。第五步打开终端聊天另开一个终端npm run chat --workspace example/computer-celld想给 Agent 起独立身份npm run chat --workspace example/computer-celld -- --name demo聊天客户端是 cli/chat.mjs支持--worker URL、--name NAME、--title TITLE三个参数也可作为celld-chat命令使用。聊天Agent能做什么8个Workspace工具Agent 通过cloudflare/computer/tools自动获得这些工具工具用途read读取工作区文件ls列出目录find按路径查找grep搜索文件内容write创建或替换文件edit做定向替换修改delete删除文件或目录exec在 celld Dynamic Worker 中执行 ECMAScript 模块仅当env.LOADER注入时存在这些工具直接操作CelldAgent拥有的 Workspace因此文件操作是完整可用的。exec 工具使用要点只能跑完整模块exec不是跑一个文件名或跑一段脚本它要求传入一个完整的 ECMAScript 模块源码并且必须有默认导出。导出的函数会收到(input, ctx)两个参数ctx里包含env、cwd、stdinexport default async function main(input, ctx) { console.log(cwd:, ctx.cwd); return { received: input }; }两个新手常见的坑要知道隔离区看不到文件系统ctx.cwd只是元数据目录并未挂载进 Dynamic Workerctx.fs方法会直接抛错。需要文件操作时用read/write等工具在exec外部完成输出不是流式的结果会缓冲到执行结束才返回而非实时流式打印。快速验证一条命令的冒烟测试不确定链路通没通跑一下非交互的 WebSocket 冒烟测试npm run smoke --workspace example/computer-celld它会通过 Agents WebSocket 协议发一条消息并要求回复里包含celld smoke reply可用CELLD_PROMPT/CELLD_EXPECT自定义实现见 script/smoke.mjs。文件导读文件作用examples/celld/README.md示例完整说明examples/celld/src/index.ts聊天 Agent 与 Worker 入口examples/celld/src/celld-javascript-backend.tscelld Worker Loader 运行时后端examples/celld/cli/chat.mjsAI SDK 终端聊天客户端examples/celld/wrangler.jsonccelld 支持的 Worker 配置含 Durable Object 定义examples/celld/script/local-dev.mjs本地部署与启动脚本总结celld 示例用最小依赖演示了 Cloudflare Computer 的核心思想SQLite 是文件系统的唯一真相源执行运行时是可插拔的。把 Celld JavaScript 运行时接进来之后一个聊天 Agent 就同时拥有了持久记忆聊天历史、持久工作区文件工具和隔离执行能力exec。如果你想对比其他运行时可以继续看 examples/think-compare-runtimes/ 里同一任务在多运行时并行对比的示例。【免费下载链接】computerGive your agent a computer 项目地址: https://gitcode.com/GitHub_Trending/computer1/computer创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表