Skip to content

Repository files navigation

dotfiles

这是个人 dotfiles 仓库,使用 chezmoi 管理跨机器通用配置。

仓库只应该保存可公开同步的个人通用配置。机器私有配置、公司环境配置、AI 工具 token/hook/监控相关配置必须放在本机 local 文件中,不提交到远程;Git 身份按 remote 条件加载,不设置 local 兜底身份。

管理范围

当前主要管理:

  • Shell 基础配置:~/.zshrc
  • Git 通用配置:~/.gitconfig、~/.config/git/config、~/.config/git/ignore
  • Neovim 通用配置:~/.config/nvim
  • 终端与工具配置:WezTerm、tmux、Yazi、AeroSpace、Karabiner 等
  • Pi 通用配置:模型/UI 偏好、包清单、自定义主题、通用扩展与通用 skills
  • 部分静态文件:proxy.pac、tvbox.json

不管理:

  • .git、node_modules、.vscode
  • tmux/Neovim/opencode 等插件或依赖产物
  • legacy tmux 路径:~/.tmux、~/.tmux.conf、~/.config/.tmux.conf
  • OpenCode 本机目录:~/.config/opencode/**
  • Claude/Codex/OpenCode/Cursor/Raven/Git-AI 的会话、hooks、日志、监控状态
  • Pi 的 auth、provider 私密配置、项目 trust、session/history、memory、日志、缓存和数据库
  • Pi 自动生成的 npm/、git/ 包安装目录,以及公司环境专用 skill selectors
  • 本机私有 shell/git/AI provider 配置

Local 配置

这些文件只存在本机,已被 .chezmoiignore 和 .gitignore 排除:

  • ~/.zshrc.local.pre
  • ~/.zshrc.local
  • ~/.config/chezmoi/chezmoi.toml 中的机器专用 data
  • ~/.config/git/config.netease.local
  • 所有 *.local、*.local.*
  • ~/.config/opencode/**
  • ~/.config/nvim/lua/plugins/local/**
  • ~/.config/nvim/lua/codemaker.lua
  • ~/.config/nvim/lua/plugins/minuet/codemaker.lua

~/.zshrc.local.pre 用于需要早加载的本机设置,例如 completion 路径、工作目录环境变量。

~/.zshrc.local 用于本机命令、代理函数、公司工具 alias、CodeMaker/Claude/Raven/Git-AI 相关命令等。

~/.config/git/config.netease.local 只在 Git remote 命中公司仓库时加载,用于公司 Git 身份、credential、lfs、proxy 等本机配置。GitHub remote 使用 ~/.config/git/config.github 中的个人身份;不要配置无条件 local 兜底身份。不要把 trace2.*、notes.*、Git-AI socket 或 Raven/Git-AI hook 写回通用配置。

所有以 .local 或 .local.* 结尾的文件默认视为本机覆盖文件,不进入 chezmoi。例如 ~/.config/tmux/tmux.conf.local 应只保留在宿主。

Neovim 的 AI provider、公司 endpoint、token 获取逻辑应放到 ignored local plugin 中,例如:

~/.config/nvim/lua/plugins/local/minuet.lua

OpenCode 的 provider、API key、本机 MCP 命令路径、插件依赖和运行缓存都放在 ~/.config/opencode/**,不进入 chezmoi。

Pi 只同步 ~/.pi/agent/settings.json 中不含密钥的通用偏好和包清单,以及通用扩展、skills、主题和相关测试。settings.json 通过 chezmoi 模板把 HOME 路径渲染为当前机器的目录。跨机器默认使用安全策略 defaultProjectTrust: "ask" 和 yoloMode: false;当前机器如需覆盖,只写入本机 ~/.config/chezmoi/chezmoi.toml 的 [data],不提交远程。auth.json、models.json、trust.json、会话、memory、日志、数据库和自动安装的包目录始终留在本机;公司环境专用的 skill selectors 也不进入远程。

隐私边界

不要提交以下内容:

  • ~/.claude/**
  • ~/.codex/**
  • ~/.git-ai/**
  • ~/.raven/**
  • ~/.raven-monitor-home/**
  • ~/.raven-privacy-trash/**
  • ~/.github/hooks/**
  • ~/.cursor/hooks.json
  • ~/.config/opencode/**
  • ~/.config/chezmoi/chezmoi.toml
  • ~/.pi/agent/auth.json、~/.pi/agent/models.json、~/.pi/agent/trust.json
  • ~/.pi/agent/{sessions,npm,git,tmp,pi-hermes-memory,projects-memory}/**
  • ~/.pi/agent/extensions/**/logs/**
  • 包含 ANTHROPIC_*、OPENAI_*、CODEMAKER_*、access token、auth key、公司 endpoint 的文件

如果误提交过 token/auth key,删除当前文件不等于清除 Git 历史,需要轮换密钥,并视情况重写远程历史。

新设备应用

新设备上只需要拉取并应用 chezmoi 源仓库。建议先预览再应用:

chezmoi init git@github.com:zhouatie/dotfiles.git
chezmoi diff
chezmoi apply

如果设备还没有 chezmoi,先安装:

brew install chezmoi

应用前或应用后,按需创建本机 local 配置。这些文件不会从远程同步:

touch ~/.zshrc.local.pre
touch ~/.zshrc.local
mkdir -p ~/.config/git
touch ~/.config/git/config.netease.local
mkdir -p ~/.config/nvim/lua/plugins/local

~/.gitconfig 由 chezmoi 管理为相对软链,指向 .config/git/config。新设备执行 chezmoi apply 后不需要手动创建这个软链。

Pi 会根据同步后的 ~/.pi/agent/settings.json 自动安装缺失 packages,因此不需要同步 ~/.pi/agent/npm。同步的通用 skill selector 依赖新设备已在 ~/.agents/skills 安装对应 skill;公司环境专用 selectors 仍需在本机按需创建。新设备未设置本机 chezmoi data 时会保留 ask/非 YOLO 的安全默认值。

如果某台设备需要公司邮箱、credential、proxy、AI provider、MCP server、Raven/Git-AI/CodeMaker 等配置,只写入按条件加载的 local 文件或工具自己的本机配置,不写入本仓库。Git 身份不要放在无条件加载的 local 兜底里。

修改规则

通用配置可以同步到远程,例如 shell 通用 alias、Neovim 普通插件配置、WezTerm/Yazi/tmux 通用偏好。

本机绑定内容不要同步到远程,包括:

  • 绝对 HOME 路径,例如 /Users/zhoushitie/...
  • 公司邮箱、工号、token、API key、auth key
  • 公司 endpoint、内网 npm registry、代理地址
  • AI 工具 hooks、session、log、monitor、trace2、checkpoint 配置
  • 插件依赖目录、node_modules、工具生成的 receipt/cache/backup

路径写法优先使用 $HOME、~、相对软链,或工具提供的 home API。例如:

  • zsh 使用 $HOME
  • Git 使用 ~/.config/...
  • Neovim Lua 使用 vim.fn.expand("~/...")
  • WezTerm 使用 wezterm.home_dir
  • Yazi 配置中使用 ~
  • Pi JSON 中的 HOME 路径使用 chezmoi 的 {{ .chezmoi.homeDir }} 模板

常用命令

初始化:

chezmoi init git@github.com:zhouatie/dotfiles.git
chezmoi apply

查看宿主与源仓库差异:

chezmoi status
chezmoi diff

添加或更新通用配置:

chezmoi add ~/.zshrc
chezmoi re-add ~/.config/nvim

停止管理某个文件:

chezmoi forget ~/.zshrc

应用源仓库配置到宿主:

chezmoi apply

提交前检查敏感关键词:

rg -n -i "api[_-]?key|token|auth_key|anthropic|openai|codemaker|git-ai|raven|trace2|checkpoint" .
git status --short
git diff --cached --name-status

静态文件访问

proxy.pac、tvbox.json 放在这里主要是利用 GitHub raw 文件作为远程静态访问地址。

示例:

https://raw.githubusercontent.com/zhouatie/dotfiles/main/proxy.pac

About

我的 dotfiles 配置集合

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages