feat: separate updates and manage shell config blocks

This commit is contained in:
叶林立
2026-08-19 00:13:39 +08:00
parent 68490db454
commit 04ad87b54d
6 changed files with 497 additions and 87 deletions
+33 -8
View File
@@ -15,7 +15,7 @@
- `@gotgenes/pi-permission-system@26.2.1`:负责工具、路径、MCP、硬拒绝和兜底权限基线。
- `extensions/tool-routing.ts`:保留 Pi 默认系统提示词,并按当前激活工具追加简短的工具与搜索路由规则;提供 `/dump-system-prompt` 导出当前有效提示词。
## 安装与卸载
## 安装、升级与卸载
推荐从仓库检出目录运行安装脚本:
@@ -36,22 +36,46 @@ pi install git:git@bitbucket.org:siakitem/my-pi.git
可用后继续检查并可通过官方 `themes` kitten 配置 `Solarized Dark`
- 检查 Oh My Zsh。安装采用官方 unattended 模式,不切换默认 shell、不立即启动 Zsh,
也不覆盖现有 `.zshrc`
- 检查 Powerlevel10k;可克隆到 Oh My Zsh 的 custom themes 目录,并在没有现有
`~/.p10k.zsh` 时复制仓库内置的 `config/p10k.zsh`。该配置来自当前使用的 Powerlevel10k
Rainbow/ASCII 单行紧凑主题;脚本会把 `ZSH_THEME` 和配置加载语句写入 `.zshrc`,因此
首次启动不会进入交互配置向导。已有 `~/.p10k.zsh` 始终保留,不会被覆盖
- 检查 Powerlevel10k;可克隆到 Oh My Zsh 的 custom themes 目录,并把仓库内置的
`config/p10k.zsh` 原子同步到 `~/.config/my-pi/p10k.zsh`(遵循 `XDG_CONFIG_HOME`)。
该配置来自当前使用的 Powerlevel10k Rainbow/ASCII 单行紧凑主题;用户自己的
`~/.p10k.zsh` 不会被覆盖。脚本只在 `.zshrc` 中写入带首尾标记的主题和加载受管块
- 逐项检查 `git``zsh-autosuggestions``zsh-syntax-highlighting` 是否已经在
`.zshrc``plugins` 数组中启用。后两个插件缺少源码时会先克隆到 Oh My Zsh 的
custom plugins 目录;语法高亮按最后一个插件处理。
- 最后继续检查 `codegraph``kotlin-lsp`、Java 21+ 和 `jdtls`。Kotlin、Java 和 JDT LS
的自动安装使用 Homebrew。
脚本首次改动 `.zshrc` 前会在同目录创建带时间戳的备份。若机器没有所需的 Homebrew
`curl``git`,脚本会保留已完成的安装结果、继续检查其他项目,并最终返回非零状态。
脚本首次实际改动 `.zshrc` 前会在同目录创建带时间戳的备份。Oh My Zsh loader
Powerlevel10k 主题/配置和各 Zsh 插件使用 `# >>> my-pi:<id> >>>`
`# <<< my-pi:<id> <<<` 的受管块协议;以后只替换块内内容,块外用户配置保持不变。
标记缺失、重复或不完整时脚本会拒绝修改。若机器没有所需的 Homebrew、`curl``git`
脚本会保留已完成的安装结果、继续检查其他项目,并最终返回非零状态。
`rtk` 只供默认关闭的命令改写使用,因此不会作为必装依赖检查。
也可以绕过脚本,直接运行上面的 `pi install` 命令,此时机器级 CLI 不会被检查。
升级已安装的组合包请使用独立脚本:
```bash
./update.sh
```
升级脚本先执行:
```bash
pi update git:git@bitbucket.org:siakitem/my-pi.git
```
随后只处理已经安装的项目,未安装项直接跳过且不会询问安装:Kitty 及已启用的
Solarized Dark、Oh My Zsh、Powerlevel10k、两个第三方 Zsh 插件、CodeGraph,以及由
Homebrew 管理的 Kotlin LSP、Java 21 和 JDT LS。Git checkout 使用 `pull --ff-only`
Homebrew 包使用 `brew upgrade`;无法确认安装来源时保留现状并报告。
升级时会优先从 `pi update` 后的已安装组合包目录读取最新 `config/p10k.zsh`,再与受管副本比较,
只在内容不同时备份并原子同步;`.zshrc` 也只更新已有的 my-pi 受管块,不触碰块外配置。因此安装流程负责补齐缺失项,升级流程只升级
已安装项并同步已受管配置。
卸载组合包:
```bash
@@ -60,11 +84,12 @@ pi install git:git@bitbucket.org:siakitem/my-pi.git
卸载脚本只调用 `pi remove`,不会删除 Kitty、终端主题、Oh My Zsh、Powerlevel10k、Zsh
插件、CodeGraph、Kotlin LSP、JDT LS 或 Java,因为这些用户环境或机器级工具可能仍被其他
项目使用。个脚本都可通过 `PI_PACKAGE_SOURCE` 覆盖默认包源,
项目使用。个脚本都可通过 `PI_PACKAGE_SOURCE` 覆盖默认包源,
例如在本地检出中测试:
```bash
PI_PACKAGE_SOURCE="$PWD" ./install.sh
PI_PACKAGE_SOURCE="git:git@bitbucket.org:siakitem/my-pi.git" ./update.sh
```
`package.json` 使用精确版本,`package-lock.json` 固定完整依赖树。不要再用项目级