最近我在好几台无桌面环境的机器上设置了vibe coding环境,作为记录。操作环境都是基于arch linux的服务器,没有图形界面,完全通过命令行操作。
安装mise
通过 paru -S mise 或者 yay -S mise 安装mise。
官方文档 https://mise.jdx.dev/getting-started.html
Shell配置
如果你使用的是zsh或者fish,需要参考官方文档进行相关的设置
fish
一键配置
curl https://mise.run/fish | sh
# Installs mise and adds activation to ~/.config/fish/config.fish
或者手动在你的fish配置加入
# ~/.config/fish/config.fish
if status is-interactive
mise activate fish | source
else
mise activate fish --shims | source
end
zsh
一键配置
curl https://mise.run/zsh | sh
# Installs mise and adds activation to ~/.zshrc
手动配置
# ~/.zprofile or ~/.zshrc
eval "$(mise activate zsh --shims)"
bash
一键配置
curl https://mise.run/bash | sh
# Installs mise and adds activation to ~/.bashrc
手工配置
# ~/.bash_profile or ~/.bash_login or ~/.profile
eval "$(mise activate bash --shims)"
安装编程环境
mise use -g nodejs bun rust go
不同的编码环境可能需要配置国内的各种镜像源,请自行查阅相关文档进行配置。
安装编程Agent
mise use -g claude-code codex opencode
后续要全部更新 执行 mise upgrade 就可以了。
mise不具备加速功能,有些工具需要自备代理才能正常下载
安装serverless浏览器
可以通过安装agent-browser来实现serverless浏览器的功能。arch用户安装命令
paru -S agent-browser
但是agent-browser只是一个壳子,可以通过agent-browser install来自动安装chrome。如果你倾向于使用轻量级的,可以通过 paru -S lightpanda来安装lightpanda浏览器
参考
安装herdr
herdr号称agent的tmux,安装还是很简单的,直接 paru -S herdr-bin 即可。然后在远程主机上运行herdr即可使用。
使用tips
- 如果herdr升级,可能需要
herdr server stop以后才能继续使用 - 如果claude被升级干掉,可以用
claude -r恢复会话,参考附录 - 0.5.6版本新增了 herdr –remote ,这样您就可以将 Herdr 用作远程服务器的瘦客户端,而无需事先通过 SSH 连接。Herdr 通过 SSH 连接,在需要时引导匹配的远程 herdr 二进制文件,自动启动远程服务器,并将高效的终端视图流式传输回您的本地终端。
Agent跨设备同步
Agent配置
在有界面的设备上,使用cc-switch配置好,然后通过webdav上传配置到云端。
桌面端的可以使用
paru -S cc-switch-bin安装cc-switch。
同步到无头设备
在无桌面环境的设备上,通过命令安装 paru -S cc-switch-cli 安装cc-switch-cli。通过命令cc-switch打开程序,在菜单 “配置-webdav同步”,设置好webdav的地址和账号密码后,选择“webdav下载到本地”就行了。
附录
Claude Code Session 管理指南
核心概念
Session 是 Claude Code 保存的完整对话历史,包括你的提示词、每一次工具调用、文件读取记录和 Claude 的回复。进程退出后 session 自动写入磁盘,随时可以恢复。
重要:session 保存的是对话上下文,不是文件系统状态。Claude 对文件做的修改是真实发生的,不随 session 恢复而回滚。
恢复 Session 的三种方式
| 命令 | 行为 | 适合场景 |
|---|---|---|
claude -c / --continue |
继续当前目录最近一次 session | 同一个 repo,快速接着干 |
claude -r / --resume |
按名称或 UUID 恢复指定 session | 多任务并行,精确跳回某个 session |
claude -r(无参数) |
打开交互选择器,手动挑选 | 忘记名字或 ID 时 |
# 继续最近一次 session
claude -c
# 交互选择器
claude -r
# 按名称恢复(实验性,见下方说明)
claude -r "auth-refactor"
# 按 UUID 恢复(最可靠)
claude -r "9ecddef3-b9e9-47c1-83b2-2e02ce005005"
# 恢复并立即发送提示
claude -r "auth-refactor" "继续完成单元测试"
交互选择器快捷键:
P— 预览对话内容R— 重命名 session- 直接输入关键词可过滤
Session 名称
名称从哪来
- 自动生成:不命名时系统根据对话内容自动生成一个名称,通常比较泛,不好区分
- 手动命名:在 session 内执行
/rename <名称>
# 会话中执行
/rename auth-refactor
/rename payment-debug
# 不带参数:让 Claude 根据对话自动生成名称
/rename
名称只是展示标签
真正的唯一标识是 UUID,不是名称。
- 两个 session 可以重名,Claude Code 不会阻止
claude -r "name"目前按名称匹配属于实验性功能,不保证准确(见 GitHub issue #54796)- 同名 session 在选择器中会同时出现,需靠时间戳或
P预览区分 - 可以配合
/color给 session 设置颜色(如/color blue),多开终端时便于视觉区分
最佳实践
# 加项目前缀,避免重名
/rename myapp-auth-refactor
/rename myapp-payment-debug
session 结束时终端会打印:
Resume this session with: claude --resume <uuid>
保存这个 UUID 是最可靠的做法,适合在脚本或自动化中使用。
进程被 Kill 后能恢复吗
能。 无论是手动 Ctrl+C、终端关闭、进程被强制 kill,还是机器重启,只要 ~/.claude/projects/ 目录完好,session 数据就不会丢失。
恢复时整个消息历史会被完整还原,包括:
- 已读取的文件内容
- 已执行的命令记录
- 之前所有的对话上下文
Session 永不过期,数月前的 session 同样可以恢复。
已知 Bug 和注意事项
Bug 1:恢复后 skip-permissions 丢失
用 --dangerously-skip-permissions 启动的 session,通过 -r 恢复后该 flag 不会自动还原,进程恢复为普通权限模式(GitHub issue #21974)。
解决方法:恢复时手动带上 flag:
claude -r "your-session" --dangerously-skip-permissions
# 或
claude -r "your-session" --permission-mode bypassPermissions
Bug 2:skip-permissions 中途自动关闭
用 --dangerously-skip-permissions 启动后,在长时间运行的 session 中(尤其触发上下文压缩时),permission mode 可能中途自动重置,通过 Shift+Tab 重拨也无法持久生效(GitHub issue #45290)。
建议替代方案:使用 --permission-mode auto,这是 Anthropic 官方推出的更稳定替代方案,通过模型分类器判断操作安全性,危险操作被拦截时 Claude 会自动寻找更安全的替代路径,而不是中断等待。
Bug 3:恢复后 session_id 变化
通过 --resume 恢复的 session 会生成新的 UUID,hooks 和外部日志系统无法通过 session_id 追踪跨终端的同一会话(GitHub issue #12235)。
Session 数据存储位置
~/.claude/projects/<project-path-hash>/<session-uuid>.jsonl
每个 .jsonl 文件对应一个 session,消息以 JSON Lines 格式逐行记录。可以直接读取这些文件做自定义分析或元数据检索。
快速参考
# 日常使用
claude -c # 继续最近 session
claude -r # 选择器选 session
claude -r "name-or-uuid" # 恢复指定 session
# 命名
/rename my-feature # 手动命名当前 session
/rename # 自动生成名称
/color blue # 设置颜色(多终端区分用)
# 带权限恢复
claude -r "session" --dangerously-skip-permissions
# 自动化脚本
claude -r "deploy-staging" -p "Verify the deploy status" --output-format json