Skip to content

Git 备份纳入 .claude,已装技能不进 Git、换机后自动重装 - #124

Merged
wxkingstar merged 1 commit into
mainfrom
claude/workspace-git-include-claude-agents
Oct 11, 2026
Merged

wxkingstar merged 1 commit into
mainfrom
claude/workspace-git-include-claude-agents

Conversation

@wxkingstar

Copy link
Copy Markdown
Owner

背景

模拟「新服务器 + 从 Git 恢复机器人」后发现:首次备份可能因节点的全局忽略文件整体失败;.mcp.json 可被明文提交;迁移后技能全部标为失败需逐个手动重装;.claude 被排除导致技能链接无法备份。

改动

  • .claude 进 Git:从排除名单移除;工作区内、不指向敏感文件的相对链接可以原样备份。
  • 已装技能不进 Git:.agents/skills、.claude/skills、skills-lock.json 与 .mcp.json(含 MCP 令牌与请求头)不在备份列表、拒绝备份,并在「不进 Git」列表里显示。用仓库内容初始化或一键还原时,这些以本地为准保留。
  • 备份不再整体失败:管理用 Git 加 core.excludesFile=/dev/null,不受节点用户 ~/.config/git/ignore 影响;勾选的文件用 add -f,工作目录自己的 .gitignore 也不会让首次备份失败。
  • 换机后自动重装技能:switch_relay 绑定新实例后,按原环境分组、数据源和用户变量排队重装(migrate 模式,由执行换机的机器人管理员或 manager 发起)。内部技能沿用当前生效的那次批准(审批人与时间须与安装记录一致),不新建审批;排不上队的保持失败并提示手动重装。last_data_source 移到 installation.py 供两处复用。

测试

  • tests/unit/test_runtime_workspace.py:全局忽略与 .gitignore 下的首次备份、技能与 .mcp.json 不列出且拒绝备份、还原时本地技能优先。
  • tests/api/test_bot_skills.py:换机后内部技能按原批准重装,不产生新审批。
  • tests/api/test_workspace_migration.py:复制迁移绑定新实例后触发重装。
  • 本地全量 pytest 3035 passed。

兼容性

运行时改动需升级节点。无数据库迁移。

🤖 Generated with Claude Code

- .claude 不再排除,可备份;工作区内的相对链接可以原样进 Git
- 已安装的技能(.agents/skills、.claude/skills、skills-lock.json)与含令牌的
  .mcp.json 不进 Git;用仓库内容初始化或还原时以本地为准保留
- 备份忽略节点用户的全局忽略文件,勾选的文件强制加入,不再因 .gitignore 整体失败
- 换机后按原配置自动排队重装技能,内部技能沿用当前生效的批准;排不上的仍提示手动重装

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@wxkingstar
wxkingstar merged commit b86c6ad into main Oct 11, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant