OpenClaw 技能 — 给定一个 GitHub 仓库 URL,自动解析出 owner/repo 名称,发现其中的 YAML/properties 配置文件及其配对的中文字段说明;在 `workspace/{repo}/` 目录下按同步日期(格式为 `YYYY-MM-DD`)创建时间戳子目录;写入 `.openclaw-config-state.json` 状态文件。每次用户提问前,先比对远程仓库当前 ref(如 `main` 或 `master`)的最新提交 SHA 与本地状态文件中记录的 SHA:
OpenClaw:GitHub 配置同步、按日版本与参数影响分析是一项面向实际任务的技能,主要用于能力总览(与用户任务一一对应);配置在 GitHub;
解析 owner/repo;项目文件夹名默认 = repo;在仓库内搜索 配置文件/ 、 config/ 等及 *字段说明*.md。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。
实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。
| # | 能力 | 实现要点 |
|---|---|---|
| 1 | 配置在 GitHub | 用 Raw URL、Contents API 或已克隆仓库读取;私有库需 token。 |
| 2 | 从链接得「项目名」并找配置 | 解析 owner/repo;项目文件夹名默认 = repo;在仓库内搜索 配置文件/、config/ 等及 *字段说明*.md。 |
| 3 | 在工作区建项目目录 | {workspace}/{repo}/,其下为按日期的版本子目录(见下节)。 |
| 4 | 读配置与字段说明 | 成对加载;YAML 展平为点分键与表格「字段」列对齐。 |
| 5 | 下载到工作区 | 每次非最新或首次同步时,写入新版本目录内,保持与仓库相同的相对路径。 |
| 6 | 用户提问 → 解释参数与变更影响 | 必须先完成新鲜度检查;再基于当前最新版本目录作答(见「参数解释答题模板」)。 |
| — | 版本管理 | 每次成功同步用更新当日日期作为文件夹名;历史目录保留不覆盖。 |
| — | 每次提问先判断是否最新 | 比较远程 remote_ref 的 tip commit_sha 与 .openclaw-config-state.json;一致则只读 latest_version_dir;不一致则先同步再分析。 |
owner/repo),需要定位、同步、解释配置。g3fo-user-dev.yml 与 g3fo-user-dev-字段说明.md。app.cache.caffeine.max-size)对应 YAML 嵌套结构;分析前将 YAML 展平再与表格对齐。{workspace}/{repo}/(repo 为仓库 slug,除非用户另指定文件夹名)。{workspace}/{repo}/{版本文件夹名}/...,其下子路径与 GitHub 仓库内相对路径一致,例如:.../2026-04-08/配置文件/g3fo-dx-dev.yml.../2026-04-08/配置文件/g3fo-dx-dev-字段说明.mdYYYY-MM-DD(在回复中说明所用时区,如 UTC+8)。YYYY-MM-DD_2、YYYY-MM-DD_3 或 YYYY-MM-DDTHHmm(任选一种,与 state 一致)。路径:{workspace}/{repo}/.openclaw-config-state.json
用于记录「当前应读哪一版」以及「上次同步时远程 ref 指到哪一提交」。所有「当前配置」类读取只认 latest_version_dir 指向的目录。
建议字段:
| 字段 | 含义 |
|---|---|
owner, repo |
GitHub 坐标 |
remote_ref |
跟踪的分支名或 tag(如 main、v1.2.0) |
commit_sha |
同步时该 ref 在远程的 tip 完整 SHA |
latest_version_dir |
当前应使用的版本目录名(如 2026-04-08) |
synced_at |
ISO 时间戳(可选) |
tracked_paths |
已同步的配置与说明文件在仓库中的相对路径(可选) |
示例:
{
"owner": "acme",
"repo": "g3fo-config",
"remote_ref": "main",
"commit_sha": "a1b2c3d4e5f6789abcdef0123456789abcdef01",
"latest_version_dir": "2026-04-08",
"synced_at": "2026-04-08T10:30:00+08:00",
"tracked_paths": [
"配置文件/g3fo-dx-dev.yml",
"配置文件/g3fo-dx-dev-字段说明.md"
]
}
在回答任何依赖「仓库里当前配置内容」的问题之前(解释参数、影响、环境对比等),先执行本节。未完成判断前,不要仅凭旧本地文件下结论。
owner、repo、remote_ref(无则默认 main 或仓库默认分支,见 API)。.openclaw-config-state.json:视为非最新,进入「全量同步」后再分析。remote_ref 当前指向的 commit SHA(分支 tip 或 tag 解析对象)。state.commit_sha 比较(remote_ref 须一致;若用户改跟踪分支/tag,一律重新同步并更新 remote_ref)。tracked_paths 下文件变更才更新(需按路径查 last commit,更省带宽但实现更复杂)。| 条件 | 动作 |
|---|---|
SHA 一致 且 latest_version_dir 存在 |
仅 Read 该目录下文件,再进行分析或解释。 |
| SHA 不一致 或 无 state | 新建版本目录 → 发现并下载配置与 *字段说明*.md → 更新 state → 简短告知用户(版本目录名、短 SHA)→ 再分析。 |
若 API 失败(网络、权限、限流):
state.latest_version_dir 对应目录中的上次成功快照,并明确标注「未校验远程,可能已过期」。在「步骤 C」要求同步时执行:
配置文件/、config/ 等及 .yml/.yaml/.properties 与成对的 *字段说明*.md(见 reference.md)。.openclaw-config-state.json:commit_sha、latest_version_dir、remote_ref、tracked_paths、synced_at。GITHUB_TOKEN 或等价方式(见 reference)。解析 URL;若只给根链接,按典型目录与扩展名搜索;记录 remote_ref 与默认分支。
优先 Raw URL;目录列举用 API;本地已有克隆则可直接 Read。
有两次状态(两文件、两 commit、或片段):
仅描述意图(如「把 Redis 库从 2 改成 5」):
## 变更摘要 - 共 N 个键变化(M 个有文档依据) | 配置键 | 原值 | 新值 | 文档摘要 | 可能影响 | 风险 | |--------|------|------|----------|----------|------| | ... | ... | ... | ... | ... | 低/中/高 | ## 文档未覆盖的键 - ... ## 建议验证 - 重启/热更新是否生效 - 依赖服务(DB/Redis/注册中心)是否一致
## 参数说明(基于当前最新版本目录:{latest_version_dir},commit 短 SHA:{short_sha})
| 配置键 | 当前值 | 含义(文档) | 若修改的典型影响 | 风险 |
|--------|--------|--------------|------------------|------|
| ... | ... | ... | ... | 低/中/高 |