面向 Codex agent 的 Web 工作台:在浏览器中统一管理项目、会话卡片、隔离 worktree、可编排工作流和人工介入。
核心能力 · 界面展示 · 快速开始 · 首次使用 · 配置 · 数据与安全 · 运维与排错
- 在一个工作台中管理多个项目和会话,集中查看运行状态、优先级、TODO 与代码变更。
- Git 项目的会话可基于指定分支创建独立 worktree,减少并行任务互相干扰。
- 同时支持直接与 Codex 交互的会话模式,以及包含条件、重试、审批和合并节点的流程模式。
- Codex 可以通过 App Server 动态工具
questions请求用户补充决策;工作流也可以暂停并等待人工审批。 - Codex 可以为容器内测试程序创建带鉴权的 Cloudflare 临时隧道,并由会话或管理界面查看和关闭;概览页会实时显示运行中的隧道数量。
- 会话时间线实时展示文本、推理、命令、工具调用和文件变更,执行完成后仍可回看。
- 从服务端可访问的目录添加项目,自动检测 Git 仓库和可用分支。
- 通过独立的项目管理页新增或移除项目,并进入项目设置和流程配置。
- 创建会话时选择基础分支、运行模式、Codex 模型、推理强度和文件系统权限;Git 项目可为会话创建隔离 worktree。
- 通过卡片集中查看运行状态、基础分支、工作分支、当前流程节点、优先级、Token 用量和最近活动,并在同一 Codex 会话中持续追加需求。
- 在全局设置的“常规”分组配置并发上限,以及“工作区写入”模式下 Agent 可额外写入的绝对路径;结合会话优先级控制执行队列。
- 桌面概览可在紧凑的卡片视图与横向视图之间切换,并按项目筛选需要关注的会话。
- 横向视图将多个活跃会话的完整详情并排展开,可直接跟进时间线和执行操作,无需频繁切换页面。
- 会话列支持横向滚动和独立调宽,列宽偏好会保存在当前浏览器中。
- 在全局设置中新增、编辑和删除快捷指令,并在输入需求时快速插入常用内容。
- 可在运行中的卡片和事件流底部显示轮换的思考语句,也可关闭展示或选择不同语气。
- 使用每日自动更新的 Bing 壁纸、上传的 JPEG/PNG 自定义壁纸,或中国传统纯色色系作为应用背景。
- 自动提取 Bing 与自定义壁纸的主色,并通过可选的 Material 3 选色算法生成完整的明暗主题色板。
- 独立调节背景遮罩,在保留壁纸视觉效果的同时维持内容可读性。
- 为项目编排由 Codex、表达式、人工审批、合并和关闭节点组成的可视化流程。
- 根据节点结果执行条件分支和重试,并在需要决策或审批时暂停运行。
- 在界面中集中回答 Codex 提出的问题;人工审批时可结合节点输出、Diff 和产物完成审核。
- 查看单文件或完整 Diff、按需展开上下文,并浏览会话提交历史。
- 上传附件作为 Codex 输入,并在后续追加需求中继续引用附件或会话产物。
- 归档并在线预览图片、PDF、音视频和文本产物;其他格式可直接下载。
- 关闭卡片时清理可变输出和归档产物,同时保留删除审计记录;提示中的产物引用不会复制文件。
- 卡片关闭后异步清理经确认由 AnyCode 创建并登记的 worktree;可从会话详情重试清理失败的任务。
- Docker Engine
- Docker Compose 插件 2.20 或更高版本(使用
docker compose命令) curl- x86-64(
linux/amd64)宿主机;当前官方 Arch Linux 基础镜像仅提供 amd64 - 可用于 Codex 的 ChatGPT 账号或 OpenAI API key
无需克隆仓库;启动只需要 compose.yml 和 .env.example。
默认推荐使用 Docker Compose。需要直接在 Linux 宿主机运行时,请参阅 systemd 部署说明;每个 GitHub Release 都提供 amd64 和 arm64 二进制归档,以及 Debian、Red Hat 和 Arch Linux 安装包与校验和。
创建部署目录并下载必要文件:
mkdir -p anycode
cd anycode
curl -fsSL -o compose.yml https://raw.githubusercontent.com/nzlov/anycode/master/compose.yml
curl -fsSL -o .env https://raw.githubusercontent.com/nzlov/anycode/master/.env.example编辑 .env,至少把下面的默认值替换为足够长且随机的访问密钥:
ANYCODE_ACCESS_KEY=replace-with-a-long-random-secret不要原样使用示例值。
默认配置把 ./data 挂载为容器用户目录,把 ./workspaces 挂载到容器的 /workspaces:
mkdir -p data workspaces需要由 AnyCode 管理的项目应位于 ANYCODE_WORKSPACES_DIR 指向的宿主机目录中。进入界面后,应使用对应的容器路径(默认是 /workspaces/<项目目录>)添加项目,而不是宿主机绝对路径。
docker compose pull
docker compose run --rm anycode codex login --device-auth
docker compose run --rm anycode codex login status也可以通过标准输入配置 OpenAI API key:
printf '%s' "$OPENAI_API_KEY" | docker compose run --rm -T anycode codex login --with-api-key
docker compose run --rm anycode codex login statusCodex 凭据写入容器的 /home/anycode/.codex,并由 ANYCODE_HOST_DATA_DIR 对应的宿主机目录持久化。不要共享该目录。
docker compose up -d
docker compose ps默认使用本地 Turso 数据库。要改用 Compose 内置 PostgreSQL,请在 .env 中设置非默认密码并启用 profile:
COMPOSE_PROFILES=postgres
POSTGRES_PASSWORD=replace-with-a-strong-password
DATABASE_URL=postgres://anycode:replace-with-a-strong-password@postgres:5432/anycode?sslmode=disable然后照常运行 docker compose up -d。PostgreSQL 数据默认保存在 ./postgres-data。
使用默认端口时,健康检查地址为:
curl --fail http://127.0.0.1:8080/healthz然后打开 http://127.0.0.1:8080,输入 .env 中的 ANYCODE_ACCESS_KEY。
ANYCODE_HTTP_PORT 会同时改变服务监听端口、宿主机映射端口和镜像内置的 Docker healthcheck 地址。
- 首次打开且没有项目时,在自动弹出的目录选择窗口中选择
/workspaces下的项目目录。 - 如需执行依赖安装等准备工作,为项目配置 worktree 初始化命令;如需流程模式,先配置并启用项目工作流。
- 返回概览页创建卡片,选择项目、基础分支、会话或流程模式,以及 Codex 模型、推理强度和权限。
- 输入需求并附加必要文件。启动后可从卡片查看实时状态、TODO、待回答问题、待审批结果和 Diff。
- 进入会话详情查看完整时间线、追加需求、管理产物或停止/关闭会话。
部署配置以 .env.example 和 compose.yml 为准。常用变量如下:
| 变量 | 默认值 | 用途 |
|---|---|---|
ANYCODE_ACCESS_KEY |
无可用默认值 | 访问 Web 数据、GraphQL、WebSocket 和会话文件的密钥;Compose 要求显式设置。 |
PACMAN_MIRROR |
空 | 容器启动时更新软件包前写入 pacman mirrorlist 的单个 Arch Linux 镜像地址模板。 |
ANYCODE_EXTRA_PACKAGES |
空 | 容器启动时以 root 权限安装的、由空白分隔的 Arch Linux 官方仓库包名。 |
ANYCODE_INIT_SCRIPT |
空 | 容器每次启动时以 root 权限执行的 shell 脚本;在安装额外软件包后、AnyCode 降权启动前运行。 |
ANYCODE_HTTP_PORT |
8080 |
宿主机发布端口和容器监听端口。 |
ANYCODE_HOST_DATA_DIR |
./data |
挂载到容器 /home/anycode 的宿主机目录,用于持久化 AnyCode 数据和 Codex 凭据。 |
ANYCODE_DATA_DIR |
/home/anycode/.anycode |
容器内数据库、附件、产物以及 AnyCode 创建的 worktree 目录。通常无需修改。 |
ANYCODE_WORKSPACES_DIR |
./workspaces |
挂载到容器 /workspaces 的宿主机项目目录。 |
CLOUDFLARED_BIN |
cloudflared |
Cloudflare 临时隧道客户端命令;官方镜像已内置。 |
DATABASE_URL |
空 | 数据库切换入口;支持 postgres://、postgresql://、libsql://、https:// 和本地 Turso 路径。为空时回退到 TURSO_DATABASE_URL。 |
TURSO_DATABASE_URL |
/home/anycode/.anycode/anycode.turso.db |
本地 Turso/libSQL 数据库路径,也可改为 libsql:// 云数据库地址。 |
TURSO_AUTH_TOKEN |
空 | 使用远程 Turso 数据库时的认证 token。 |
POSTGRES_HOST_DATA_DIR |
./postgres-data |
Compose PostgreSQL profile 的宿主机数据目录。 |
Turso 缓存变量可在 .env.example 中查看;产物大小限制、Playwright 和 Chromium 配置可在 compose.yml 中查看。
ANYCODE_ACCESS_KEY是高权限访问凭据。持有者可以读取服务进程有权访问的目录,并可通过项目 worktree 初始化命令执行 shell。请使用随机密钥并只交给受信用户。ANYCODE_EXTRA_PACKAGES在入口脚本降权前通过pacman安装,只接受包名而不执行任意命令。仅配置受信的官方仓库包;缺少包时会更新系统并增加启动耗时,容器重建后会重新安装。ANYCODE_INIT_SCRIPT会在每次容器启动时由/bin/sh以 root 权限执行,失败会阻止 AnyCode 启动。它可以修改容器和已挂载目录;只配置可信脚本,并确保脚本可重复执行。安装官方仓库软件包时优先使用约束更窄的ANYCODE_EXTRA_PACKAGES。- 登录后,访问密钥会保存在浏览器
localStorage中。只使用受信浏览器;使用共享设备后应在界面中退出登录,并在必要时清除该站点数据。 - 访问密钥只提供应用鉴权,不提供传输加密。Compose 的端口映射通常会监听宿主机所有网络接口;不要把服务直接暴露到不受信网络。远程访问时应自行配置防火墙和带 TLS 的可信反向代理或私有网络。
- 只把需要 AnyCode 访问的项目放入
ANYCODE_WORKSPACES_DIR。该挂载默认可读写,项目内命令和 Codex 进程拥有容器用户权限范围内的文件访问能力。 - 运行容器默认使用 UID/GID
1000。workspace 必须对该用户可读写;入口脚本会调整/home/anycode挂载内容的所有权,因此不要把无关目录用作ANYCODE_HOST_DATA_DIR。 - 本地数据库、附件、会话产物、活动 worktree 和 Codex 凭据都保存在
ANYCODE_HOST_DATA_DIR下。备份时应保护整个目录,删除该目录会丢失持久化状态。 - Compose 为容器内浏览器能力增加了
SYS_ADMINcapability,并放宽 AppArmor/seccomp。只在受信宿主机上运行,并审查挂载范围。 - 不要手动删除、移动或重建 AnyCode 创建的会话 worktree;关闭卡片会按已记录的所有权提交异步清理,失败时应从会话详情使用重试操作。
查看状态和日志:
docker compose ps
docker compose logs -f anycode拉取最新镜像并启动:
docker compose pull
docker compose up -d停止服务:
docker compose downdocker compose down 不会删除默认的宿主机 bind mount 数据。仍应在升级或迁移前备份 ANYCODE_HOST_DATA_DIR。
常见问题:
- Compose 提示必须设置
ANYCODE_ACCESS_KEY:确认部署目录存在.env,且该值不是空字符串。 - 页面提示访问密钥无效:输入
.env中的原始值,不要添加Bearer前缀。 - 服务启动失败并出现
probe codex cli:先运行docker compose run --rm anycode codex login status检查凭据;凭据有效时,查看容器日志并重新拉取镜像,确认镜像内 Codex CLI 完整且版本兼容。 - 会话执行时返回 Codex 认证错误:重新执行“拉取镜像并登录 Codex”中的任一登录命令,再确认
codex login status。 - 无法添加或写入项目:确认宿主机目录已挂载到
/workspaces,并允许 UID/GID1000读写。 - 本地数据库或附件写入失败:确认
ANYCODE_HOST_DATA_DIR有可用空间且允许容器用户写入。 - 使用远程 Turso 失败:同时核对
TURSO_DATABASE_URL、TURSO_AUTH_TOKEN和容器网络连接。 - 使用 PostgreSQL 失败:核对
DATABASE_URL、PostgreSQL profile、账号密码和docker compose logs postgres。 - 镜像拉取失败:确认当前网络可以访问
ghcr.io,然后重新执行docker compose pull。
AnyCode 使用 MIT License。