通过tmux控制Claude Code (cc)执行开发任务。用于:启动CC开发会话、发送开发命令、监控进度等。
openclaw- claudicode Skill.是一项面向实际任务的技能,主要用于Control Claude Code 通过 tmux 会话进行长期开发任务. 环境检查和初始化( 需要先使用). 0.1 Check tmux.0. 0.2 Claud。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;
涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。
通过 tmux 会话控制 Claude Code,以支持长期运行的开发任务。
# 检查是否已安装 tmux which tmux || echo "tmux not found" # 若未安装,则安装 tmux # CentOS/RHEL/Rocky: dnf install -y tmux || yum install -y tmux # Ubuntu/Debian: apt install -y tmux # Alpine: apk add tmux
# 检查 claude 命令是否可用 which claude || echo "claude not found" # 若未安装,则安装 Claude Code npm install -g @anthropic-ai/claude-code # 或使用官方安装脚本 curl -fsSL https://claude.ai/install.sh | sh
# 查看版本 claude --version # 测试简单调用(需有效认证) claude --print "hello" 2>&1 | head -5
常见问题:
Not logged in → 先运行 claude /login,或配置 ANTHROPIC_API_KEYmodel not found → 检查 API 端点是否支持所指定的模型# 检查普通用户是否存在 id|| echo "user not found" # 创建用户(如不存在) useradd -m -s /bin/bash # 设置密码(可选) echo " : " | chpasswd
推荐用户名:claudecode、developer、ccdev
运行完整环境检查:
# 一键检查脚本
check_env() {
echo "=== tmux ==="
which tmux && tmux -V || echo "❌ tmux missing"
echo "=== claude ==="
which claude && claude --version || echo "❌ claude missing"
echo "=== user ==="
id || echo "❌ user missing"
echo "=== auth ==="
claude --print "test" 2>&1 | grep -E "error|Error" && echo "❌ auth failed" || echo "✅ auth ok"
}
check_env
所有检查项必须全部通过,方可继续后续操作
# 检查目录是否存在 ls -la# 检查是否为 Git 仓库(CC 要求) ls -la /.git
若目录未找到 → 立即提示用户确认路径
# 创建后台会话(并指定工作目录) tmux new-session -d -s-c # 验证会话是否创建成功 tmux list-sessions
会话命名建议:cc- 或 claude-
CC 拒绝 root 权限,必须切换至普通用户:
# 发送命令:切换用户 + cd + 启动 CC tmux send-keys -t"su - -c 'cd && claude --dangerously-skip-permissions'" Enter
关键参数说明:
--dangerously-skip-permissions:跳过所有确认提示,完全自动化执行--print:静默模式,缓冲输出直至任务完成(适用于后台任务)# 单行命令 tmux send-keys -t" " Enter # 多行命令(使用 load-buffer) cat << 'EOF' | tmux load-buffer - First line Second line Third line EOF tmux paste-buffer -t tmux send-keys -t Enter
# 查看最近输出 tmux capture-pane -t-p | tail -30 # 查看完整滚动历史 tmux capture-pane -t -p -S - # 检查是否需要人工输入 tmux capture-pane -t -p | tail -10 | grep -E "❯|Yes.*No|proceed|permission|y/n"
# 发送确认(y) tmux send-keys -ty Enter # 发送取消(n) tmux send-keys -t n Enter # 发送 Ctrl+C 中断 tmux send-keys -t C-c
# 0. 环境检查 which tmux || dnf install -y tmux which claude || npm install -g @anthropic-ai/claude-code id claudecode || useradd -m claudecode # 1. 创建会话 tmux new-session -d -s cc--c # 2. 启动 CC(使用普通用户) tmux send-keys -t cc- "su - claudecode -c 'cd && claude --dangerously-skip-permissions'" Enter # 3. 等待 CC 启动(约 5 秒) sleep 5 # 4. 发送开发任务 tmux send-keys -t cc- " " Enter # 5. 监控进度 tmux capture-pane -t cc- -p | tail -20
# 检查 CC 是否正在运行 ps aux | grep -i claude | grep -v grep # 检查运行时长 ps -o pid,etime,cmd -p $(pgrep -f "claude --dangerously")
# 列出所有会话 tmux list-sessions # 列出所有 attach 客户端 tmux list-clients # 附加到会话(交互式查看) tmux attach -t# 终止会话 tmux kill-session -t # 终止其他 attach 客户端(保留当前会话) tmux detach-client -t -a # 从已附加的会话中分离 # 快捷键:Ctrl+B 后按 D
解决方案:切换至非 root 用户
tmux send-keys -t"su - -c 'cd && claude --dangerously-skip-permissions'" Enter
原因:Claude API 服务端临时错误
解决方案:等待 1–2 分钟后重启 CC
# 中断当前进程 tmux send-keys -tC-c # 重启 tmux send-keys -t "claude --dangerously-skip-permissions" Enter
检测方式:
tmux capture-pane -t-p | tail -5 | grep -E "y/n|Yes|No|proceed"
解决方案:
tmux send-keys -ty Enter
检测方式:
tmux list-clients ps aux | grep "tmux attach" | grep -v grep
清理方式:
# 终止多余的 attach 进程 kill# 或踢出其他客户端 tmux detach-client -t -a
# 检查是否已返回 shell 提示符 tmux capture-pane -t-p | tail -3 | grep -E "\$|#|❯" # 检查 Git 提交记录 cd && git log --oneline -3
cc-- 格式,便于多任务管理capture-pane 查看输出tmux list-clients 并清理冗余客户端| 命令 | 用途 |
|---|---|
tmux new-session -d -s NAME -c DIR |
创建后台会话 |
tmux send-keys -t NAME "CMD" Enter |
发送命令 |
tmux capture-pane -t NAME -p |
捕获输出 |
tmux capture-pane -t NAME -p -S - |
捕获完整历史 |
tmux list-sessions |
列出所有会话 |
tmux list-clients |
列出所有 attach 客户端 |
tmux kill-session -t NAME |
终止会话 |
tmux attach -t NAME |
附加到会话 |
tmux detach-client -t NAME -a |
踢出其他客户端 |
tmux send-keys -t NAME C-c |
发送 Ctrl+C |
tmux send-keys -t NAME y Enter |
发送确认 |
tmux send-keys -t NAME n Enter |
发送取消 |
| 检查命令 | 用途 |
|---|---|
which tmux |
检查 tmux 是否存在 |
which claude |
检查 claude 是否存在 |
claude --version |
检查版本 |
id |
检查用户是否存在 |
ps aux | grep claude |
检查 claude 进程 |