用 git 管理日常运维和 AI 协作

用 daily 仓库管理日常运维和 AI 协作

维护服务器时,最容易遗忘的往往是一次操作背后的细节:某个服务为什么换了端口,上次故障改了哪份配置,部署脚本放在哪里,以及当时用什么方法确认问题已经解决。

把这些信息保存在一个私有 Git 仓库里。日常使用时,在项目中向 AI 助手提出任务,让它先查阅相关记录,再执行工作、验证结果,最后把新的技术点和脚本归档。下一次处理同一主题,就有了可以继续使用的上下文。

这个仓库的内容以服务器运维、网络配置和自动化为主,也包含音频生成等日常工具。使用它的入口是任务和文档;具体工具在各自目录中运行。

daily 是我的私有 git 的仓库名称。

AGENTS.md 项目协作规则

项目根目录的 AGENTS.md 定义了会话归档和 Git 操作约定,内容如下:

## 本目录工作要求

 - 会话开始前,必须确定此会话的id,id可以是以下形式顺序确定:
   - 当英文字母开头遇到空格的时候,这串英文字符就是id:举例 nginx 重启,id为 nginx
   - 会话明确指定id:举例 会话id是 zhangzhang,id为 zhangzhang
   - 网址:举例 https://dmit.io,id为 dmit.io
   - 服务器命名:举例 这是 aivps 的信息,id为 aivps
   - IP地址:举例 登录 10.0.22.21 查看服务器磁盘大小,id为 10.0.22.21
   - 技术名称:举例 使用 wireguard 将这3台服务器组网,id为 wireguard
   - 专有名词:举例 调整 special.list 路由,id为 路由的英文 routing
 - 确认此会话的id以后,优先在会话中输出给我看,在同一个会话当中,id是不会变的
 - 在 docs 目录寻找相关文件名:
    - 会话执行完以后将相关的技术点更新到该文件
    - 寻找不到相关文件名就创建对应的 md 文件
    - 会话执行中产生的脚本等文件,放入到同样名称的文件夹中
    - 举例:dmit.io 网站购买的 vps 信息放在了 docs/dmit.io.md 位置,这些 vps 进行 wireguard 组网等脚本放在了 docs/dmit.io/ 文件夹
 - 线上服务器默认备份目录:/root/backup/
 - 登录服务器默认密钥使用 ~/.ssh/id_rsa

 ## Git 约定

 - 默认 git 是个私密 git,不会对外公开
 - 用户已要求:以后每次改动后,按改动范围自己 先 `git pull --rebase`、`git add` 和 `git commit`,然后 `git push`,需要的 PrivateKey 路径 和 Passphrase 在 .env 文件中
 - 提交只包含本轮相关文件,不要把无关生成物混进去。
 - 生成物和依赖目录应保持 ignored,写入.gitignore
 - 提交信息明确,例如:
   - `修复:调整窗口标题栏布局`
   - `文档:添加代理指南`
   - `新增:更新工作区路径`
 - git pull、git push 的 PrivateKey 和 Passphrase 在 .env 文件中

目录怎样组织

仓库的组织方式很简单:根目录放协作规则,docs 保存长期记录,每个主题还可以有一个同名目录存放配套文件。下面用虚构的 web01 服务器和 nginx 主题演示这种结构:

daily/
├── AGENTS.md
├── .gitignore
├── .env
└── docs/
    ├── web01.md
    ├── web01/
    │   └── check-disk.sh
    ├── nginx.md
    └── nginx/
        └── example.conf

AGENTS.md 约定助手在这个项目里怎样工作,包括如何确定会话 ID、文档和脚本放在哪里,以及怎样提交 Git 改动。docs/web01.md 保存服务器相关记录;docs/web01/ 则保存可复用的脚本、配置等文件。

这样查找资料时,可以先阅读主题文档,了解背景和使用条件,再进入同名目录查看实现。即使暂时不用 AI,也可以直接阅读文档和运行经过检查的脚本。

用会话 ID 确定任务归属

每次会话开始,先确定一个 ID,并在会话中输出。这个 ID 在同一次会话里保持不变,用来定位相关记录和配套目录。

最直接的写法是在请求开头放一个英文主题,后面接空格和具体任务:

web01 检查服务器磁盘使用情况,只读检查,记录大目录和处理建议

这次会话的 ID 就是 web01。助手应先查阅 docs/web01.md,结束后把本次技术点更新到该文件;如果需要编写检查脚本,就放入 docs/web01/。

项目还支持从明确指定的 ID、网址、服务器名、IP 地址或技术名称中确定归属。例如:

请求示例 会话 ID
nginx 检查配置并记录排查结果 nginx
这次会话的 ID 是 web01,检查备份任务 web01
检查 https://example.com 的证书 example.com
登录 192.0.2.10 查看磁盘大小 192.0.2.10

上面的域名、地址和服务器名仅作示例。实际使用时,尽量沿用已经存在的主题名称,可以减少同一件事散落在多个文档里的情况。

把任务目标和执行范围说清楚

一个好用的请求通常包含操作对象、目标和限制条件。例如,排查问题时可以这样写:

web01 先阅读已有记录,再检查磁盘为什么接近满容量。
本轮只做只读检查,不删除文件、不重启服务。
记录主要占用目录、判断依据和后续处理建议。

需要实际修改配置时,可以说明允许执行的动作和验证标准:

web01 调整已经确认需要修改的日志保留配置。
修改前备份原配置,修改后检查配置语法和服务状态,
把变更位置、验证结果及回退方法更新到文档。

仓库约定线上服务器的默认备份目录是 /root/backup/,登录服务器的默认 SSH 密钥是 ~/.ssh/id_rsa_nopassword。执行时仍需核对目标主机的用户、端口和实际配置。备份可以按任务和时间建立子目录,让文档中的回退说明能够指向明确的位置。

“先查记录、再检查环境、执行变更、验证结果”适合多数运维任务。验证要对应任务目标:检查配置语法只能说明配置能否解析,服务状态说明进程是否运行,对外访问测试才能进一步确认用户实际使用的链路。

任务结束后留下可复用的记录

项目要求在会话结束后,把相关技术点更新到已有主题文档;找不到对应文件时再创建。记录的价值在于,下一次遇到问题时,能够据此继续工作。

一条实用的记录可以写清楚这些内容:

  • 日期、操作对象和问题现象。
  • 关键判断及其依据。
  • 修改过的配置、脚本和备份位置。
  • 实际执行的验证及结果。
  • 尚未解决的问题,以及需要时如何回退。

对于持续维护的主题,可以在同一个文件中按日期追加记录。如果新操作替代了旧方案,也要注明旧方案已经停用,避免以后照着过期步骤操作。

脚本则保存到同名目录中。例如检查磁盘的脚本位于 docs/web01/check-disk.sh,文档应解释它检查什么、如何运行,以及是否会修改系统。可复用脚本和配置值得保留,依赖目录、缓存、构建产物及临时输出则按 .gitignore 管理。

用 Git 保存每一次相关改动

这个项目约定,每轮改动完成后先执行 git pull --rebase,再暂存、提交并推送本轮相关文件。提交信息应说明具体改了什么,例如“文档:记录 web01 磁盘检查结果”。

本项目把 Git 认证所需的私钥路径和口令配置在根目录 .env 中,字段为 PrivateKey 和 Passphrase。它与登录服务器的 SSH 配置承担不同用途,使用前应分别确认。私钥内容和口令不要复制进博客或操作日志。

仓库按私有仓库使用,其中可能包含实际连接信息和环境配置。对外分享时,应单独整理需要公开的文章和示例。新建自己的同类仓库时,可以先配置敏感文件的忽略规则,再放入本地凭据;.gitignore 不会自动移除已经被 Git 跟踪的文件。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇