| # | 能力 | 实现要点 |
|---|------|----------|
| 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-字段说明.md
YYYY-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})
| 配置键 | 当前值 | 含义(文档) | 若修改的典型影响 | 风险 |
|--------|--------|--------------|------------------|------|
| ... | ... | ... | ... | 低/中/高 |
共 3 个版本