参考资料

Claude Code 本机配置手册

已验证(2026-07-08,John 本机 Ubuntu)。记录本机四项配置:①状态栏 ②中文输出 ③全局规则 ④密钥防护。命令均实跑过,真实输出已回填。


1 · 状态栏(statusline):底部显示会话信息

问题:底部只有 auto mode on… 操作提示,看不到模型 / 目录 / 分支 / 花费。 原因:Claude Code 没有"一键开关"——statusLine 的机制是"跑一个命令,把输出显示在底部",必须给它一个产生这行的命令。

方案(二选一):

方案装法说明
ccstatusline(11.5k⭐)npx 一条命令 + TUI 勾选首选:star 最多、可视化配置、不需 Nerd Font
/statusline 内置命令输入框敲 /statusline 显示模型、目录、分支、花费官方原生,Claude 自动生成脚本;可控性一般

安装 ccstatusline(已验证)

node 由 nvm 管理,普通终端可能没加载 nvm(会 npx: 未找到命令),命令前统一加 . ~/.nvm/nvm.sh &&。TUI 要在你自己的终端跑(手敲别粘贴,避免 ^[[200~ 括号粘贴残留)。

. ~/.nvm/nvm.sh && npx -y ccstatusline@latest

TUI 内:选 📦 Install to Claude Code → 选 Pinned global install(直接跑二进制,快)→ Ctrl+S 保存 → 🚪 Exit。导航:↑↓ 移动、Enter 选、Esc 返回、Ctrl+S 存。

核对写入:

jq '.statusLine' ~/.claude/settings.json
# → {"type":"command","command":"ccstatusline","padding":0,"refreshInterval":10}

新开会话,底部出现 Model: Opus 4.8 | Ctx: … | ⎇ 分支。想加花费/用时:回 TUI 📝 Edit Lines 加 Session Cost / Duration。

  • 日后改配置:. ~/.nvm/nvm.sh && ccstatusline(已全局装,无需再 npx)→ Edit Lines / Edit Colors → Ctrl+S → 重开会话。
  • 回滚:jq 'del(.statusLine)' ~/.claude/settings.json > /tmp/s.json && mv /tmp/s.json ~/.claude/settings.json

2 · 中文输出:修好断掉的全局指令

问题:跟 Claude 聊天动不动输出英文 / 日文 / 韩文。 原因:~/.claude/CLAUDE.md 曾是指向 dotfiles/agents.md(不存在、大小写还对不上)的坏软链接,且本机没装 chezmoi,全局指令实际为空 → Claude 无语言约束,跟着读到的素材语言跑偏。 修复:改成独立实体文件(不绕 dotfiles/chezmoi,更稳),首条即"默认简体中文":

rm ~/.claude/CLAUDE.md   # 删坏软链接
cp /home/john/dotfiles/home/.chezmoitemplates/ai-agents.md ~/.claude/CLAUDE.md

隐患:dotfiles 里 home/dot_claude/CLAUDE.md.tmpl 还在;哪天装了 chezmoi 并 chezmoi apply,会用模板覆盖这份手工文件——届时需决定二者留哪个。


3 · 全局规则:~/.claude/CLAUDE.md 的内容

对所有会话生效的缺省基线。原则:越短越好,别写 Claude 默认就会做的事(优先用 rg、优先改文件不新建、没要求不提交、回复简洁——这些是默认行为,写了只浪费上下文额度)。

当前分节:

  • 输出语言 —— 默认简体中文,API/CLI/SDK 等术语保留原文
  • 沟通 —— 直接、不谄媚,有更优方案直接指出
  • 编码原则 —— 通用 / PHP / Python
  • 执行原则 —— 先明确、最小改动、简洁、阻塞才问、验证收尾、破坏性操作先确认、临时文件卫生

优先级:项目自带的 CLAUDE.md / AGENTS.md > 这份全局。冲突时以项目为准。


4 · 密钥防护:settings.json 硬拦截

文字规则 Claude 只"大致遵守",敏感文件要靠机制挡。~/.claude/settings.jsonpermissions.deny(工具层直接拒绝读取,任何项目通用):

"deny": [
  "Read(**/.env)", "Read(**/.env.*)", "Read(**/secrets.env)",
  "Read(**/secrets/**)", "Read(**/credentials)", "Read(**/credentials.json)",
  "Read(**/*.pem)", "Read(**/*.key)", "Read(**/id_rsa)", "Read(**/id_ed25519)"
]
  • 硬拦截:确需让 Claude 读某个 .env,得先临时删掉对应 deny 条(deny 不能靠授权临时放行)。
  • .env.* 会连 .env.example 一起挡;常看示例配置就加例外。

排错表(statusline)

现象原因解决
npx: 未找到命令该 shell 没加载 nvm(加载块在 .bashrc,登录/粘贴场景可能没生效)命令前加 . ~/.nvm/nvm.sh &&;或用绝对路径 ~/.nvm/versions/node/v22.22.3/bin/npx …
行首出现 ^[[200~终端"括号粘贴"控制符漏出,可能弄脏命令手敲别粘贴;或粘完删掉行首那串再回车
状态栏没出现没重开会话;或用 nvm 切了 node 版本导致全局包不在新版本里新开会话;切了版本就重跑一次安装
图标显示成方块选了需 Nerd Font 的组件但终端字体不对换纯文本组件,或装 Nerd Font

出处

On this page