Skip to content

Commit 9555399

Browse files
committed
feat: add continuous verification and plugin scouting
1 parent c838bd0 commit 9555399

7 files changed

Lines changed: 497 additions & 6 deletions

File tree

.github/workflows/ci.yml

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
name: CI
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
pull_request:
8+
9+
permissions:
10+
contents: read
11+
12+
jobs:
13+
verify:
14+
runs-on: ubuntu-24.04
15+
env:
16+
GODOT_VERSION: 4.6.2
17+
steps:
18+
- name: Checkout
19+
uses: actions/checkout@v4
20+
21+
- name: Install system dependencies
22+
run: |
23+
sudo apt-get update
24+
sudo apt-get install -y jq unzip
25+
26+
- name: Install Godot
27+
run: |
28+
set -euo pipefail
29+
godot_zip="Godot_v${GODOT_VERSION}-stable_linux.x86_64.zip"
30+
godot_url="https://github.com/godotengine/godot-builds/releases/download/${GODOT_VERSION}-stable/${godot_zip}"
31+
curl -L --fail --retry 3 --output /tmp/${godot_zip} "${godot_url}"
32+
unzip -q /tmp/${godot_zip} -d /tmp/godot
33+
sudo install -m 0755 /tmp/godot/Godot_v${GODOT_VERSION}-stable_linux.x86_64 /usr/local/bin/godot
34+
godot --version
35+
36+
- name: Check shell syntax
37+
run: bash -n scripts/*.sh templates/base/scripts/*.sh
38+
39+
- name: Check JSON syntax
40+
run: |
41+
python3 -m json.tool packs.manifest.json >/dev/null
42+
python3 -m json.tool upstreams.lock.json >/dev/null
43+
44+
- name: Verify toolbox layout
45+
run: bash ./scripts/verify_toolbox_layout.sh
46+
47+
- name: Verify bootstrap flow
48+
run: bash ./scripts/verify_bootstrap_flow.sh

README.md

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,14 +40,15 @@
4040
- `templates/base/`:基础项目模板
4141
- `packs/`:可选插件 pack
4242
- `scripts/bootstrap_toolbox_project.sh`:按 pack 组装新项目
43+
- `scripts/verify_bootstrap_flow.sh`:验证真实产物链路,覆盖 bootstrap、headless import 和 `gdUnit4` smoke
4344
- `scripts/import_plugin_from_upstream.sh`:首次从 upstream 导入插件子树
4445
- `scripts/update_plugin_from_upstream.sh`:基于 lock 文件升级已纳入插件
4546
- `scripts/verify_toolbox_layout.sh`:校验工具箱布局
4647
- `docs/plugin-catalog.md`:插件目录与建议
4748
- `docs/plugin-integration-standard.md`:插件接入标准
4849
- `docs/maintenance-workflow.md`:维护、导入、升级、组装与验证手册
4950
- `docs/selection-framework.md`:选型框架与当前归类理由
50-
- `docs/research/similar-projects.md`:外部参考项目速记
51+
- `docs/research/`:外部参考项目速记、插件探索智能体说明、热门插件扫描快照
5152
- `upstreams.lock.json`:上游来源与版本锁定
5253
- `packs.manifest.json`:pack 定义、默认策略和适用场景
5354

@@ -66,6 +67,23 @@
6667
`bootstrap_toolbox_project.sh` 不再在脚本里硬编码 `pack -> plugin.cfg` 映射。
6768
如果请求的 pack 不存在于 `packs.manifest.json`,脚本会直接报错。
6869

70+
## 持续稳定验证
71+
72+
本地最小验证链:
73+
74+
```bash
75+
bash ./scripts/verify_toolbox_layout.sh
76+
bash ./scripts/verify_bootstrap_flow.sh
77+
```
78+
79+
`verify_bootstrap_flow.sh` 会创建临时项目,默认叠加 `validation,debug,stateful,juice`,然后依次执行:
80+
81+
- bootstrap 临时项目
82+
- `godot --headless --editor --quit-after 1 --import`
83+
- 生成项目内的 `gdUnit4` smoke
84+
85+
CI 也跑同一条真实产物链。当前 workflow 固定使用官方 Linux 构建的 Godot `4.6.2`,本地建议保持 `4.6.x`,如果本机 Godot 不在 `PATH`,可通过 `GODOT_BIN=/path/to/godot` 显式指定。
86+
6987
## 维护工具箱
7088

7189
首次纳入一个 git upstream 插件:

docs/maintenance-workflow.md

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -168,11 +168,7 @@ python3 -m json.tool upstreams.lock.json >/dev/null
168168
### 3. 真实产物检查
169169

170170
```bash
171-
tmpdir=$(mktemp -d)
172-
./scripts/bootstrap_toolbox_project.sh "$tmpdir" --packs=validation,debug,stateful,juice
173-
godot --headless --editor --quit-after 1 --path "$tmpdir/godot" --import
174-
GODOT_BIN="$(command -v godot)" bash "$tmpdir/scripts/gdunit4_smoke.sh"
175-
rm -rf "$tmpdir"
171+
bash ./scripts/verify_bootstrap_flow.sh
176172
```
177173

178174
如果本轮改动涉及 `import/update`,还应补:
@@ -202,3 +198,15 @@ rm -rf "$tmpdir"
202198
5. 最后提交并推送
203199

204200
这样可以把选型错误、版本错误、路径错误和验证错误尽量提前暴露。
201+
202+
## H. CI 基线
203+
204+
仓库级 CI 入口在 `.github/workflows/ci.yml`,当前固定跑 4 类检查:
205+
206+
1. 布局检查:`bash ./scripts/verify_toolbox_layout.sh`
207+
2. Shell 语法检查:`bash -n scripts/*.sh templates/base/scripts/*.sh`
208+
3. JSON 语法检查:`python3 -m json.tool ...`
209+
4. 真实产物检查:`bash ./scripts/verify_bootstrap_flow.sh`
210+
211+
当前 workflow 显式安装官方 Linux Godot `4.6.2` 构建,并在该版本上运行 headless import 与 `gdUnit4` smoke。
212+
本地开发建议维持 `4.6.x`;如果本机二进制路径不标准,统一通过 `GODOT_BIN` 注入。
Lines changed: 139 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,139 @@
1+
# Godot 插件探索智能体说明
2+
3+
## Snapshot
4+
5+
这是面向 `godot-toolbox` 的可复用探索智能体说明。
6+
7+
- 版本:`2026-04` 工作流快照
8+
- 目标:为当前仓库持续扫描 Godot 4.x 生态里仍活跃、仍有采用价值的插件,并给出是否值得内化的判断
9+
10+
## 角色职责
11+
12+
这个探索智能体不负责直接接入插件,只负责做一轮可复核的市场扫描,并把结论整理成适合维护者决策的短名单。
13+
14+
它要回答 4 个问题:
15+
16+
1. 这个插件在 `Godot 4.x` 生态里是否仍活跃。
17+
2. 它解决的问题是否贴合 `godot-toolbox` 的基线或 pack 方向。
18+
3. 它是否满足当前仓库的 `selection framework`
19+
4. 它应该进入哪一类决策结果:
20+
- 适合进 `base`
21+
- 适合进新 `pack` 或现有 `pack`
22+
- 只应作为外部参考
23+
- 不建议纳入
24+
25+
## 输入
26+
27+
探索智能体默认接收这些输入:
28+
29+
- 扫描时间窗口
30+
- 关注方向
31+
- 验证 / 测试
32+
- 调试
33+
- 工作流效率
34+
- 状态机 / 行为
35+
- 存档 / 数据
36+
- 对话
37+
- 导航
38+
- 资源管线
39+
- UI 工作流
40+
- AI / agent 友好能力
41+
- 当前仓库的约束
42+
- `docs/selection-framework.md`
43+
- `packs.manifest.json`
44+
- 已纳入和已排除项
45+
46+
## 来源优先级
47+
48+
默认按以下顺序取证:
49+
50+
1. `Godot Asset Library`
51+
2. GitHub 仓库主页
52+
3. GitHub Releases / Tags
53+
4. 必要时再看维护者文档或项目主页
54+
55+
不以零散社区传闻作为主证据。
56+
57+
## 评估维度
58+
59+
探索智能体必须沿当前仓库既有的 5 个维度给候选打判断:
60+
61+
1. 自动化价值
62+
- 是否适合脚本化、headless、CI、agent 调用
63+
2. 复用面
64+
- 是否能覆盖多数 Godot 项目,而不是只服务单一玩法
65+
3. 领域耦合
66+
- 是否强绑定某个项目的业务模型、编辑器流程或内容生产方式
67+
4. 维护成本
68+
- upstream 是否稳定,版本是否可锁,升级成本是否可控
69+
5. 真相边界风险
70+
- 是否会把项目核心真相埋进第三方插件或重编辑器配置
71+
72+
## 活跃度判断
73+
74+
最小可用扫描里,活跃度至少看这几类信号:
75+
76+
- Godot Asset Library 中仍有 `4.x` 兼容条目
77+
- GitHub 仓库仍可访问,且存在近期 release、tag 或提交信号
78+
- README / release 描述没有明显停留在 Godot 3 时代
79+
80+
## 输出格式
81+
82+
每次扫描至少产出一份快照文档,建议命名:
83+
84+
- `docs/research/hot-plugin-scan-YYYY-MM.md`
85+
86+
文档最少包含这些部分:
87+
88+
1. 扫描范围与时间
89+
2. 来源类型
90+
3. 5-8 个候选短名单
91+
4. 每个候选的:
92+
- 分类
93+
- 推荐优先级
94+
- 适配判断
95+
- 简短理由
96+
- 来源
97+
5. 总结性建议
98+
99+
## 推荐优先级定义
100+
101+
- `P1`
102+
- 值得尽快做 pack 级验证或 PoC
103+
- `P2`
104+
- 有明显价值,但先作为外部参考,等主线稳定后再验证
105+
- `P3`
106+
- 暂时记录,不进入近期路线
107+
108+
## 交付边界
109+
110+
探索智能体的交付止于研究和判断,不自动执行:
111+
112+
- 插件 vendoring
113+
- `packs.manifest.json` 修改
114+
- `upstreams.lock.json` 修改
115+
- pack 目录创建
116+
117+
如果扫描结论被采纳,再由主线维护者进入:
118+
119+
1. 选型确认
120+
2. upstream 锁定
121+
3. pack 设计
122+
4. bootstrap 验证
123+
5. 升级与维护接线
124+
125+
## 当前默认判断准则
126+
127+
`godot-toolbox` 而言,默认更偏好这些候选:
128+
129+
- 能直接增强自动化验证或 agent 工作流
130+
- 不要求复杂原生编译链
131+
- 不强制把项目内容创作流程绑定到某个编辑器插件
132+
- 能作为可选 pack 清晰装卸
133+
134+
默认更谨慎对待这些候选:
135+
136+
- 主要价值来自重编辑器交互
137+
- 需要额外运行时或桌面服务
138+
- GDExtension / 原生依赖较重
139+
- 会与项目主逻辑强耦合

0 commit comments

Comments
 (0)