乐于分享
好东西不私藏

让AI当你的Git管家 :从手动push到一键同步

让AI当你的Git管家 :从手动push到一键同步

✦ ✦ ✦

让AI当你的Git管家

从手动push到一键同步

— — — — —

2026-06-10

摘要:这篇文记录了我和 Hermes Agent 一起管理 Git 仓库的全过程——从一句话让 AI 同步 skill 到 GitHub,到 rm -rf 把 .git 删光光,到写脚本一键搞定,再到思考「AI 该不该有 auto-push 权限」。不只是一个踩坑记录,更是一套你可以直接套用的 Agent + Git 协作工作流。

⟡ ⟡ ⟡

01 · 起因

我有一个叫 skill-curator 的技能——对,就是那个管理其他技能的那个。

它在两个地方存在。

一个在 Hermes Agent 的 skill 目录里——~/.hermes/skills/software-development/skill-curator/,Agent 跑的时候读这个版本。另一个在 GitHub 上——github.com/Bardbo/skill-curator,发出来给大家看的。

每次更新 skill,两边都得同步。

一开始我手动干。打开 Git 项目,手动复制文件,手动 commit,手动 push。做一次还行,做两次开始不耐烦,第三次就想骂人了——「这种事能不能让 AI 自己干?」

✦ ✦ ✦“AI 能干的事,为什么要我自己动手?”✦ ✦ ✦

于是我把这个任务丢给了 Hermes。

让我推代码之前,先得让 Hermes 有推送的资格。

我电脑上一直装着 GitHub Desktop,它走的是 Windows 凭据管理器,终端里 git push 对我本人来说是通的。但 Hermes 能不能直接用这套凭据?不一定。

我跟 Hermes 说:「试试 push。」它调了 git,但 GitHub 那边没有直接放行——而是返回了一个 device activation 链接和一串验证码

就像你在新设备上登录 GitHub 时看到的那样:打开 https://github.com/login/device,输入这串码,点击授权。

我照做了。验证通过之后,Windows 凭据管理器里多了一条 GitHub 的 access token 记录。从此终端里的 git push 对 Hermes 也通了。

整个过程就是:Hermes 触发 → GitHub 发码 → 我填码 → 凭据落地。不神秘,甚至有点仪式感——它需要一个明确的「授权时刻」。

02 · 第一次同步

Hermes 接到任务后的第一件事——检查两边差距有多大。

Hermes 里的 skill-curator 是 v1.2.0 的完整版,494 行,26KB。GitHub 上存的是更早的版本,153 行,4.8KB。

内容结构完全不一样。Hermes 版有 SkillDAG 技能图谱章节、dag_audit 审计脚本、基线方法论文档。GitHub 版有 README 和 README_EN——这两个文件 Hermes skill 里根本没有。

这意味着不能简单 cp -r。

Hermes 想了一会儿,给出了一个方案:

1. 从 Git 历史备份 README(git show HEAD:README.md)2. 清理 Git 项目目录(保留 .git)3. 从 skill 目录复制所有内容4. 恢复 README5. git add / commit / push

逻辑是对的。然后我让它执行了。

嗯,故事到这里应该有个「但是」。

03 · 翻车

清理目录的时候,Hermes 敲了一行 rm -rf

然后 .git 目录没了。

对,就是那个存放一切 Git 历史、分支、远程地址的 .git。删了之后,整个仓库变成了一堆孤零零的文件,没有版本,没有历史,没有远程。

修复方式倒不复杂——git clone 重新拉一份,再重新走一遍同步流程。

这是我第二次遇到这个问题了。之前在安装 Hermes 桌面版时也发生过一模一样的状况——rm -rf 把不该删的东西带走了。

这说明一个问题:AI 的 rm -rf 翻车不是偶发事件,而是结构性问题。你只要给 AI shell 访问权限,它迟早会在路径处理上捅个篓子。不是这次,就是下次。

这件事让我意识到一个关键问题:AI 不会比你更谨慎。你给它全自动权限,它就会全自动犯错。

铁律:永远不要在自动化脚本里 rm -rf 任何东西,除非你 100% 确定路径不会踩到 .git。

04 · 修复与改进

第一次翻车之后,我没插手——直接让 Hermes 自己修。它想了一会儿,把流程改成了这样:

# 第一步:从 Git 历史备份 READMEgit show HEAD:README.md > README.mdgit show HEAD:README_EN.md > README_EN.md# 第二步:只删内容,不碰 .git(用 find 过滤)find . -mindepth 1 -not -name .git -not -path './.git/*' -exec rm -rf {} +# 第三步:从 skill 目录复制最新内容cp -r ~/.hermes/skills/software-development/skill-curator/* .# 第四步:恢复备份的 README# 第五步:commit + pushgit add -A && git commit -m "sync: update from Hermes skill" && git push

核心改动就一行:find . -mindepth 1 -not -name .git。意思是「删所有东西,除了 .git」。

这个改动很小,但区别很大——它保留了 Git 历史的完整性。以后每一笔同步都有记录,可以追溯、可以回滚。

05 · README 不能只恢复

同步过程中还发现了一个更大的问题。

GitHub 上的 README 写的是旧版的功能描述——"14+ 对照集""对照集学习"——跟实际的 SKILL.md 内容完全对不上。

Hermes 做了一件事:它根据 SKILL.md 的实际内容,重新写了 README。

✓ SkillDAG 技能图谱、dag_audit 审计、基线评估方法论 → README 里体现

✗ 旧版"14+ 对照集"描述 → README 里删掉

同步的本质不是复制文件,而是让两个地方的信息保持一致。

06 · 写一个脚本

这套流程走了一遍之后,Hermes 说:「要不我写个脚本吧?」

于是有了 sync-skill-to-git.py

#!/usr/bin/env python3"""sync-skill-to-git.py — 同步 Hermes skill 到 Git 项目用法:python3 sync-skill-to-git.py skill-curatorpython3 sync-skill-to-git.py skill-curator --push"""

脚本做的事:

1. 自动找到 Hermes skill 目录和 Git 项目目录

2. 从 Git 历史恢复 README

3. 清理 Git 项目中的旧文件(安全模式,不动 .git)

4. 从 skill 目录复制所有内容

5. 自动 git add/commit/push

以后每次更新 skill 只需要一行命令:

python sync-skill-to-git.py skill-curator --push

这条 find 命令就是那次翻车的产物——本来没有它,Hermes 自己加上的。从「我不会删 .git」到「我用 find 保证不删 .git」,区别就在这一行。

07 · 从「一键同步」到「自动推送」

脚本写好了,但 Hermes 没停下来。它说:「还能更近一步。」

现在的流程是我说一句「同步一下 skill-curator」,它就跑脚本。但如果我忘了说呢?

理论上可以用 Hermes 的 cron job 功能——每周一早上自动跑一次同步。不用我记,不用我喊,时间到了自己推。

不过我还没设。不是不能,是想再多观察几轮安全审查的表现再自动。

这就是从「一键同步」到「自动推送」的进化:

手动 — 我自己 copy / commit / push   → ❌ 费时对话触发 — 我说「同步」,Hermes 跑脚本   → ✅ 方便定时触发 — cron job 自动跑,我不在场也行   → 🚀 省心

当然,自动推送有个前提——安全审查

08 · 安全审查:AI 可以 auto-push 吗?

要让 AI 自动 push 代码到 GitHub,有几个问题必须解决。

◇ 不要推送敏感信息

Agent 在工作目录里可能会生成包含 API Key、Token、本地路径的文件。自动 commit 之前必须做一次安全扫描。

我加了一道关卡:commit 前检查每个文件是否包含 sk-AGNES_C:\ 等模式。匹配到的文件不进 commit。

◇ 不要推送到错误的仓库

git remote set-url 应该写死,不允许在对话中动态修改。

◇ 保留人工审核通道

自动推送不等于无审核。我设了一个规则:正常同步自动推,首次连接新仓库需要人工确认。

这样一来,AI 拥有了「能干的权限」——但也在一个可审计、可控制的范围之内。

✦ ✦ ✦“AI 不会背叛你,但 AI 会严格执行你的错误指令。所以,别给它执行错误指令的机会。”✦ ✦ ✦

09 · 这套方法不只能管 skill

这条工作流不止适用于 skill-curator。

任何你在本地维护、又想推到 GitHub 分享的项目,都可以套用这个模式:

1. 确定主从关系——哪个是「主」版本?(以 Hermes skill 为主)

2. 识别不可丢失的文件——README、LICENSE、.gitignore……

3. 安全模式覆盖——备份 → 过滤式清理 → 复制 → 恢复

4. 写脚本——减少重复操作

5. 设 cron job——让自动化无人值守

6. 加安全审查——防止误操作和敏感信息泄露

10 · 写在最后

这一趟折腾下来,最大的感受不是「AI 真能干」,而是「AI 能干对的前提是——你给了它正确的边界」。

第一次同步翻车,是因为我没告诉它「别删 .git」。第二次成功,是因为我教会了它「备份 → 过滤 → 恢复」这套安全模式。第三次自动化,是因为它自己意识到了「可以写个脚本」。

每次下一步都是 AI 做的。但「往哪个方向走」,是我定的。

你说,这是 AI 进步了,还是我想偷懒的欲望终于找到了正确的表达方式?

我觉得是后者。

— 完 —

以上,既然看到这里了,如果觉得不错,随手点个赞、在看、转发三连吧。

谢谢你看我的文章,我们,下次再见。

作者:穿梭在银河的喵喵