Agent Room 是一个运行在目标机器上的 Web 控制台,用来管理 Claude / Codex agent 会话,并提供项目文件管理、代码编辑和 Git 工作区操作。
它适合部署在已经安装好 claude、codex 的 Linux 机器上,通过浏览器访问该机器的端口。
主界面:
Token 登录页:
左侧 Files 面板:
进入 Web Server 目录:
cd web
bash dev.sh默认监听:
http://localhost:3766
远端机器运行后,浏览器打开:
http://<远端 IP>:3766
Web Server 默认启用 token 登录。启动服务的 Linux 用户可以在任意目录查看 token:
cat ~/.agentroom/token如果知道服务目录,也可以运行:
python3 /home/jhu/dev/repos/agentroom/server.py token认证相关文件:
~/.agentroom/token
~/.agentroom/session_secret
这两个文件会自动生成,权限为当前启动用户可读写。Web Server 不验证 Linux 密码,只验证 token;能读取启动用户 ~/.agentroom/token 的用户才能登录。
页面右上角有 登出 按钮,会清除登录 cookie 并返回登录页。
启动时会按以下顺序查找 CLI:
CLAUDE_BIN/CODEX_BIN环境变量。- 当前启动用户的
~/.local/npm/bin/claude、~/.local/npm/bin/codex。 - 当前启动用户的
~/.local/bin/claude、~/.local/bin/codex。 PATH里的claude、codex。
如果以上位置都找不到,需要显式指定:
CLAUDE_BIN=/path/to/claude CODEX_BIN=/path/to/codex bash dev.sh前台运行:
cd /home/jhu/dev/repos/agentroom
PORT=3766 bash dev.sh后台运行:
cd /home/jhu/dev/repos/agentroom
setsid env \
PORT=3766 \
CLAUDE_RUN_TIMEOUT=600 \
CODEX_RUN_TIMEOUT=120 \
bash dev.sh > /tmp/agentroom-3766.log 2>&1 < /dev/null &如果 CLI 不在默认路径或 PATH 中:
cd /home/jhu/dev/repos/agentroom
setsid env \
CLAUDE_BIN=/home/jhu/.local/npm/bin/claude \
CODEX_BIN=/home/jhu/.local/npm/bin/codex \
PORT=3766 \
CLAUDE_RUN_TIMEOUT=600 \
CODEX_RUN_TIMEOUT=120 \
bash dev.sh > /tmp/agentroom-3766.log 2>&1 < /dev/null &查看服务是否监听:
lsof -nP -iTCP:3766 -sTCP:LISTEN查看日志:
tail -f /tmp/agentroom-3766.log| 变量 | 默认值 | 说明 |
|---|---|---|
PORT |
3766 |
Web 服务监听端口 |
CLAUDE_BIN |
空 | Claude CLI 路径或命令名;为空时按默认顺序查找 |
CODEX_BIN |
空 | Codex CLI 路径或命令名;为空时按默认顺序查找 |
CLAUDE_RUN_TIMEOUT |
600 |
Claude 单轮任务超时时间,单位秒 |
CODEX_RUN_TIMEOUT |
600 |
Codex 单轮任务超时时间,单位秒 |
CLAUDE_MAX_TURNS |
12 |
Claude 单轮最大 turns |
CLAUDE_PERMISSION_MODE |
acceptEdits |
Claude permission mode |
AGENTROOM_AUTH_DIR |
~/.agentroom |
token 和 session secret 保存目录 |
AGENTROOM_TOKEN |
空 | 直接指定登录 token;为空时读取或生成 token 文件 |
AGENTROOM_TOKEN_PATH |
~/.agentroom/token |
token 文件路径 |
AGENTROOM_SESSION_SECRET_PATH |
~/.agentroom/session_secret |
登录 cookie 签名密钥文件路径 |
AGENTROOM_AUTH_MAX_AGE |
604800 |
登录 cookie 有效期,单位秒 |
AGENTROOM_SESSIONS_PATH |
web/.agentroom_sessions.json |
Agent Room 会话恢复文件 |
同一台机器上跑多个实例时,建议同时设置不同的 PORT 和 AGENTROOM_SESSIONS_PATH:
PORT=3767 AGENTROOM_SESSIONS_PATH=/tmp/agentroom-3767-sessions.json bash dev.sh左侧栏:
新建房间:输入项目目录、选择 Claude 或 Codex、填写初始任务并启动 agent。项目:显示当前项目和当前 agent 类型。Files:显示当前项目文件树,支持新建、打开、编辑和拖拽移动文件。
中间工作区:
房间卡片:显示所有会话,点击切换当前会话。对话:显示结构化的System / You / Agent消息。Raw:查看 Claude / Codex CLI 的原始输出,便于排错。文件:点击 Files 中的文件后,会在中间打开代码编辑器标签页。- 底部输入框:给当前 agent 继续发送下一条指令。
右侧栏:
当前房间:显示当前会话状态、命令和目录。Git:显示当前项目 Git 状态、提交图、变更文件和 diff,并提供 stage、commit、fetch、pull、push 操作。
右上角:
深色 / 浅色:切换主题。登出:清除登录状态并返回登录页。
- 在左侧
项目目录输入项目路径,例如/home/jhu/dev/repos/demo。 - 在
Agent中选择Claude或Codex。 - 在
任务指令中输入初始任务。 - 点击
启动 agent。 - 中间会出现房间卡片和对话窗口,后续消息从底部输入框发送。
同一工作目录已有未结束房间时,再次启动会切换到已有房间,避免误触重复创建。
- 点击一个房间卡片。
- 在底部输入框输入下一条指令。
- 按 Enter 或点击
发送。
如果上一条任务仍在运行,新消息会排队,当前任务完成后自动继续。
点击中间顶部的 Raw 标签,可以查看 CLI 原始输出。
适合排查:
- Claude / Codex 是否启动。
- JSON stream 是否异常。
- CLI 是否报错。
- 工具调用是否卡住。
- 左侧 Files 面板会显示当前项目文件树。
- 点击文件夹可展开并选为当前目标目录。
- 点击
新建会在当前目标目录创建文件。 - 点击文件会在中间工作区打开编辑器标签页。
- 编辑后点击
保存。 - 文件可以拖拽到其它文件夹中移动。
文件读写和移动都限制在当前项目目录内。
- 选择一个 Git 仓库目录作为项目目录。
- 右侧 Git 面板会显示分支、HEAD、ahead/behind 和变更文件。
- 点击变更文件查看 diff。
- 使用
Stage file/Unstage file处理单文件。 - 使用
Stage all/Unstage all处理全部变更。 - 输入提交信息后点击
Commit。 - 可使用
Fetch、Pull --ff-only、Push与远端同步。
Git graph 是 SVG 分支图,提交行可点击查看对应提交。
会话元数据会保存到:
web/.agentroom_sessions.json
服务重启后,历史房间会以 ready 状态恢复。Claude / Codex 的 provider session/thread id 会保留,后续发送消息时会尝试继续原会话。
查看 token:
cat ~/.agentroom/token如果 token 文件不存在,启动一次服务会自动生成。
先在服务用户下检查:
which claude
which codex
ls -l ~/.local/npm/bin/claude ~/.local/npm/bin/codex如果不在默认位置,启动时指定:
CLAUDE_BIN=/path/to/claude CODEX_BIN=/path/to/codex bash dev.sh确认实际监听进程目录:
pid=$(lsof -tiTCP:3766 -sTCP:LISTEN)
pwdx "$pid"静态资源已经设置 Cache-Control: no-store。如果浏览器仍显示旧页面,强制刷新一次。
lsof -nP -iTCP:3766 -sTCP:LISTEN换端口启动:
PORT=3767 bash dev.sh确认项目目录是 Git 仓库:
cd /path/to/project
git rev-parse --show-toplevelWeb 编辑器只处理文本文件,并限制单文件大小不超过 1MB。二进制文件或过大的文件不会在编辑器中打开。


