backuplisted
Install: claude install-skill xhqing/CapabilityManagerAgent
# 多端点备份(backup)
## 为什么做多端备份
AI 已经渗透到线上工作的方方面面,Agent 手里的权限越来越大——能读写文件、能操作云端账户、能执行删除。一旦误操作或凭证泄露,单点存储(只在本机、或只在一个云端)里的重要文件可能被彻底删除、无处找回。对策是把私有文件**同时备份到多个互相独立的端点**(飞书云盘、其它网盘、WebDAV、S3 等):攻击或误删要同时命中所有端点才能让信息真正消失,端点越多,彻底丢失的概率越低。
本 skill 就是这个对策的落地:统一的备份范围(目录制)+ 可插拔的备份端点(注册制)。做这个 skill 的完整动机与设计考量见 `README.md`。
## 备份范围:目录制(每个项目根一份 backup/)
- 项目 `.gitignore` 必须含 `backup/` 一行(整目录忽略;**只写目录名,绝不写成员文件名**——.gitignore 是公开文件,文件名即信息)。
- **只收用户明确点名的文件**:`backup/` 是用户的备份清单,不是 agent 的收纳箱——只有用户主动说「XX 要备份 / 把 XX 备份一下」的文件才放进去。agent 觉得某文件值得备份时先建议、经用户确认再放——点名之外的文件进备份目录 = 被上传云端,等于替用户决定了什么该上云。
- **backup/ 里放副本,原文件留在原地**:普通文件**复制**进 `backup/`,不移动。完整的多端模型是三份:本地原文件一份(tmp/、docs/ 等工作位置)+ `backup/` 内副本一份 + 云端一份——备份的价值全在冗余,若移动进来(原位置没了),backup/ 那份成了孤本、本地反而少一层,且文件离开工作位置会破坏日常使用。原文件日后有更新,重新复制覆盖 `backup/` 内副本再执行备份。
- **固定路径的配置文件**(如 `CLAUDE.local.md`、`.claude/settings.local.json` 这类有加载机制约定的):在 `backup/` 里放**符号链接**指向原文件——`ln -s ../CLAUDE.local.md backup/CLAUDE.local.md`。链接自动跟随原件更新、不像副本会过期,且原件始终在场、冗余天然成立。备份脚本 `tar -h` 会解引用链接、打包实际内容;恢复时解压出文件实体,移回原位即完成还原。
- **端点子目录(目录即端点归属)**:`backup/` 下的一级子目录若与某个**已注册端点同名**(如 `backup/feishu/`),该目录内容**只备份到该端点**;根下散文件与其它名字的子目录(普通归档目录)**备份到全部端点**。「只备份到飞书」= 把文件放进 `backup/feishu/`,无需任何额外标记。子目录里同样可放符号链接。
**为什么不加密**:风险模型是「本地丢失为真风险(高概率)、云端泄露为低概率低损失」——加密反而引入「本地密钥丢失则备份作废」的更大风险。明文备份即可。
## 端点体系:注册制
- **注册表**:`endpoints/endpoints.json`(本 skill 目录下),登记每个已授权端点的:name、display、type、credential(凭证位置 + 用法)、reference(详情文档)、authorized_at。做任何端点操作前先读它,确认端点已注册。
- **凭证纪律**:注册表与文档只记「凭证在哪、怎么用」,**凭证本体一律放工具自管的