我把 agileconfig 交给我了 openclaw
我把 agileconfig 交给我了 openclaw
我把 AgileConfig 交给了 Openclaw
大家都知道 AgileConfig 是我的开源项目,一般有人提新的需求我是不接的。最近有人提了一个 issue(https://github.com/dotnetcore/AgileConfig/issues/232),正好最近在折腾 AI 写代码,于是我就让 openclaw 给我看看这个 issue,让他给我出出主意。
方案设计
原本以为它会顺着 issue 作者的思路出个方案。事实上它给出的建议远远要比 issue 上原来的想法高级。 Openclaw 给我设计了一个 Sync Plugin 机制,核心思路是让 AgileConfig 在保持原有配置中心角色的同时,能够将配置变更推送到外部存储系统。 这个方案有点惊艳到我了。但是 AI 也不是完美无缺。比如它就没想到同步失败怎么处理。再跟它讨论几轮之后,最终确认了方案。
核心原则:
- 单向同步:AgileConfig 是唯一的配置写入源,避免双向同步的冲突问题
- 插件化:同步目标可扩展(etcd、consul、k8s configmap、redis 等)
- 异步可靠:配置变更异步同步,失败可重试
- 可选功能:不影响原有核心功能,用户可按需开启
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
┌─────────────────────────────────────────────────────────────────┐
│ AgileConfig Server │
├─────────────────────────────────────────────────────────────────┤
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐ │
│ │ Admin UI │───▶│ Config Store│───▶│ WebSocket Push │ │
│ │ (管理配置) │ │ (主存储) │ │ (实时推送给.NET客户端)│ │
│ └─────────────┘ └──────┬──────┘ └─────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────┐ │
│ │ Sync Engine │ │
│ │ (同步引擎) │ │
│ └────────┬────────┘ │
│ │ │
│ ┌──────────────────┼──────────────────┐ │
│ ▼ ▼ ▼ │
│ ┌────────────┐ ┌────────────┐ ┌────────────┐ │
│ │ EtcdPlugin │ │ConsulPlugin│ │ K8sPlugin │ ... │
│ └────────────┘ └────────────┘ └────────────┘ │
└─────────────────────────────────────────────────────────────────┘
│ │ │
▼ ▼ ▼
┌─────────┐ ┌─────────┐ ┌─────────────┐
│ etcd │ │ consul │ │ ConfigMap │
└─────────┘ └─────────┘ └─────────────┘
│ │ │
▼ ▼ ▼
┌──────────────────────────────────────────────────┐
│ Go / Java / Node.js / Python 等原生客户端读取 │
└──────────────────────────────────────────────────┘
代码实现
接下来,我让 Openclaw 按照这个设计思路去实现代码。整个过程我都是口头描述需求,Openclaw 负责具体的编码工作。这没啥可说的,哗哗哗就写出来了。这个生产力简直了。
主要完成的内容包括:
- 实现 SyncPlugin 基础框架和契约接口
- 实现 etcd 同步插件
- 修复事件总线实例分裂问题
- 完善配置解析鲁棒性
- 调整 UI 自动化测试选择器
测试阶段
代码写完后,我同样让 Openclaw 去跑测试。不光是单元测试。我还它设计了一些 e2e 测试的用例。然后它就把前后端全部跑起来以及 etcd 也跑起来。通过 playwright 自己操作浏览器去测试。如果测试失败它会自动分析原因,尝试修复测试脚本或者修复代码。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# AgileConfig SyncPlugin E2E 测试报告
## 测试结果汇总
- 总计:7
- 通过:7 ✅
- 失败:0 ❌
## 详细结果
- T0-1 Etcd 健康检查 ✅ PASS
- T1-1 App 页面可见 Create 按钮 ✅ PASS
- T2-1 Config API 新增并可查询 ✅ PASS
- T3-1 Config Publish 后待发布计数归零 ✅ PASS
- T4-1 Config 编辑并删除链路 ✅ PASS
- T5-1 UI Add/Edit/Delete + Publish All ✅ PASS
- T6-1 SyncPlugin 发布后写入 etcd ✅ PASS
...
总结
回顾整个过程,我没有写一行代码,没有跑一个测试,完完全全是由 Openclaw 替我完成的。我只是在手机上确认这个过程,给出意见而已。
这个模式可能就是未来程序员写代码的模式——不再是亲手敲击每一行代码,而是与 AI 协作,把精力放在更高层次的设计和决策上。
本文由作者按照 CC BY 4.0 进行授权