第 09 章
工作原理
适配器负责写,Switch 负责管。这一章讲清楚一次部署从粘贴到写入经过了哪些环节,以及每个环节守住的边界。
一次部署经过的环节
粘贴提示词或选择本地 .md
↓
提示词库(版本 · 哈希校验)
↓
部署计划(现在 → 部署后)── 你确认 ──→ Agent 适配器 ──→ Agent 配置
└── 写入前自动备份
- 入库:提示词存进
~/.keysmith-switch/,记录正文的哈希。 - 预览:Switch 把正文写进一个临时文件,交给适配器的预览命令。适配器只计算会写什么、会备份什么,不写入。
- 确认:你在计划里点「部署」。如果这之间正文变过(哈希对不上),执行会被拒绝。
- 执行:适配器用同一份计划写入,写之前先备份;临时文件随后清理。
- 记录:结果写进操作记录,顶部状态更新为「当前已部署」。
守住的边界
- 适配器负责写,Switch 负责管。 所有真实的配置写入都经过四个 Agent 适配器,GUI 不直接改写 Agent 的配置文件。例外只有:清理时清空
~/.claude/CLAUDE.md、~/.codex/AGENTS.md和移动~/.codex/memories,写入前会确认路径正是这几个、文件是普通文件、文件夹不是链接;以及输入替换连接时改的那一个配置项。 - 交给适配器的只有正文。 库里的 Markdown 带有元数据;交给适配器的临时文件只包含提示词正文,预览或执行完成后就清理。
- 不暗中改写。 同一 Agent 的相同正文复用已有的库条目;原条目的标题或标签不同时,返回并部署原条目,不会悄悄改它的元数据。
- 不替你部署官方正文。 Switch 不会自动部署任何官方提示词,快速部署也不会从其他 Keysmith 仓库的远程分支抓取内容。官方提示词包可以通过可选的拓展包安装,装进库里之后仍要你确认才会部署。
- 版本锁定。 每个适配器的版本和 App 要求的版本必须一致,否则确认部署会被拒绝。
适配器从哪里来
四个适配器以 sidecar 的形式打包在 App 里(third_party/keysmith/ 中锁定版本),不需要你安装对应的 Keysmith 仓库,也不需要 Python。它们是开源的 MIT 项目,各自也有独立的命令行版本。
应用内更新
- App 启动后会检查公开仓库
keysmith-switch-releases的最新稳定版,之后每 6 小时、或窗口回到前台且距上次超过 1 小时再检查一次。 - 更新包用独立的生产 minisign 密钥签名,客户端安装前先验签;签名失败、离线、下载中断时保留当前版本。
- 是否安装由你确认。Windows 上会读取系统代理。