Cloud Code 是一个结合了 Cloudflare 强大基础设施与 OpenCode 智能能力的容器化代理解决方案。
这是一个基于 Cloudflare Workers 和 Cloudflare Containers 的 TypeScript 项目。它利用 Cloudflare 的基础设施来运行和管理容器化工作负载。
- Node.js (推荐 v20+)
- pnpm (或 npm)
- Wrangler CLI (
npm install -g wrangler)
npm install启动本地开发服务器:
npm run dev
# 或者
npm run start该命令会启动 wrangler dev,模拟 Cloudflare Workers 环境。
如果你修改了 wrangler.jsonc 中的 bindings,需要重新生成类型文件:
npm run cf-typegen部署代码到 Cloudflare 全球网络:
npm run deploy.
├── src/
│ ├── index.ts # Workers 入口文件 (ExportedHandler)
│ ├── container.ts # AgentContainer 类定义 (继承自 Container)
│ └── sse.ts # SSE (Server-Sent Events) 流处理逻辑
├── worker-configuration.d.ts # 自动生成的环境绑定类型
├── wrangler.jsonc # Wrangler 配置文件
├── tsconfig.json # TypeScript 配置
└── package.json
为了保护你的 Agent 不被未经授权的访问,本项目支持标准的 HTTP Basic Auth 认证。
在 wrangler.jsonc 或 Cloudflare Dashboard 的环境变量中设置以下变量:
| 变量名 | 描述 | 默认值 |
|---|---|---|
SERVER_PASSWORD |
访问密码。如果未设置,则不启用认证保护。 | (空) |
SERVER_USERNAME |
访问用户名。 | (空) |
- 只有当
SERVER_PASSWORD环境变量被设置时,认证功能才会启用。 - 客户端请求必须包含
Authorization: Basic <credentials>头。 - 如果认证失败,Server 会返回
401 Unauthorized状态码。
Cloud Code 容器内置了对 S3 兼容存储(如 Cloudflare R2, AWS S3)的支持,通过 TigrisFS 将对象存储挂载为本地文件系统,实现数据的持久化保存。
要启用数据持久化,需要在容器运行环境中配置以下环境变量:
| 变量名 | 描述 | 是否必须 | 默认值 |
|---|---|---|---|
S3_ENDPOINT |
S3 API 端点地址 | ✅ 是 | - |
S3_BUCKET |
存储桶名称 | ✅ 是 | - |
S3_ACCESS_KEY_ID |
访问密钥 ID | ✅ 是 | - |
S3_SECRET_ACCESS_KEY |
访问密钥 Secret | ✅ 是 | - |
S3_REGION |
存储区域 | ❌ 否 | auto |
S3_PATH_STYLE |
是否使用 Path Style 访问 | ❌ 否 | false |
S3_PREFIX |
存储桶内的路径前缀(子目录) | ❌ 否 | (根目录) |
TIGRISFS_ARGS |
传递给 TigrisFS 的额外挂载参数 | ❌ 否 | - |
- 挂载点: 容器启动时,会将 S3 存储桶挂载到
/root/s3。 - 工作目录: 实际的工作空间位于
/root/s3/workspace。 - OpenCode 配置: OpenCode 的配置文件(XDG 目录)也会存储在
/root/s3/.opencode中,确保编辑器状态持久化。 - 初始化:
- 如果 S3 存储桶(或指定的前缀路径)为空,容器会自动将预置的
workspace目录内容复制进去。 - 如果 S3 配置缺失,容器将回退到非持久化的本地目录模式。
- 如果 S3 存储桶(或指定的前缀路径)为空,容器会自动将预置的
容器内预装了 cloudflared CLI,可用于将容器内运行的服务(如开发服务器、Web 应用)通过 Cloudflare Tunnel 暴露到公网。
这在以下场景非常有用:
- 调试容器内运行的 Web 服务
- 临时共享开发环境
- 配置 SSH 访问
使用示例(在容器终端中):
# 将容器内的 8080 端口暴露到公网
cloudflared tunnel --url http://localhost:8080- Runtime: Cloudflare Workers
- 语言: TypeScript
- 核心库:
cloudflare:workers: Workers 标准库@cloudflare/containers: 容器管理与交互
- 工具: Wrangler
- 容器环境:
nikolaik/python-nodejs: Python 3.12 + Node.js 22tigrisfs: S3 文件系统挂载cloudflared: Cloudflare Tunnel 客户端opencode: 智能编码代理
本项目官方语言为中文。 详细的开发规范、代码风格和 Agent 行为准则,请参考 AGENTS.md。