配置拉取代码生成
/install config-pull-template
配置拉取代码生成
根据用户提供的配置信息,生成对应的代码模板。
交互流程
第一步:询问配置作用
向用户确认:这个配置的作用是什么? 例如:ANR 监控配置、服务费配置、活动配置等。
第二步:确认接入方式
让用户选择接入方式:
-
配置中心 - 需要提供:
- 配置中心组件 Key(如
com.youzan.retailHD.anr) - 字段 Key(如
config) - 模板 Value(JSON 字符串,可选)
- 配置中心组件 Key(如
-
白名单 - 需要提供:
- 白名单 Key(如
anr_feature)
- 白名单 Key(如
-
单独接口 - 需要提供:
- 接口 URL(如
youzan.retail.trade.misc.shopsetting.query/1.0.0)
- 接口 URL(如
-
推拉结合 - 需要提供:
- 推送 Key
- 拉取接口 URL
第三步:确认所属模块
让用户选择配置所属模块:
- 商品模块(module_goods)
- 营销模块(module_marketing)
- 其他模块
代码生成规则
通用规则
- 代码优先使用 Kotlin 编写
- 数据模型如果跟网络相关需要添加
@Keep注解 - 生成代码后,必须写入到 workspace 对应文件,并展示给用户看
白名单接入
生成 WhiteListManager(如果已存在则复用):
object WhiteListManager {
fun is{Feature}Enabled() {
WhiteListTask.isInWhiteList("{key}").subscribe({ result ->
// TODO 待实现
}, { error ->
// TODO 待实现
})
}
}
生成 Plugin 钩子(方法名必须与注解名一致!)
在对应模块的 PluginModule 中添加三个方法:
// 文件位置:/modules/module_xxx/src/common/java/com/youzan/retail/xxx/PluginModule.kt
@ShopSwitched
fun onShopSwitched() {
WhiteListManager.is{Feature}Enabled()
}
@AppStart
fun onAppStart() {
WhiteListManager.is{Feature}Enabled()
}
@ConfigFetch
fun onConfigFetch() {
WhiteListManager.is{Feature}Enabled()
}
配置中心
根据模块 + 作用,在对应模块的 common 下创建 XXXConfigManager 类:
- 路径:
/modules/module_xxx/src/common/java/com/youzan/retail/xxx/ CONFIG_KEY_CONFIG_VERSION固定为1.0.0- 如果提供了模板 JSON,需要生成对应的配置类(使用
@Keep注解)
同时生成 Plugin 钩子(方法名必须与注解名一致!):
@ShopSwitched
fun onShopSwitched() {
{Name}ConfigManager.init()
}
@AppStart
fun onAppStart() {
{Name}ConfigManager.init()
}
@ConfigFetch
fun onConfigFetch() {
{Name}ConfigManager.init()
}
单独接口
在对应模块的 common 下创建:
XXXConfigManager- 业务逻辑XXXTask- Task 层XXXService- Service 接口(包含 @POST 注解和 URL)
同时生成 Plugin 钩子(方法名必须与注解名一致!):
@ShopSwitched
fun onShopSwitched() {
{Name}ConfigManager.query{Name}Config()
}
@AppStart
fun onAppStart() {
{Name}ConfigManager.query{Name}Config()
}
@ConfigFetch
fun onConfigFetch() {
{Name}ConfigManager.query{Name}Config()
}
推拉结合
在对应模块的 common 下创建 XXXRefreshUtils 类,内部实现 IConfigDataNotification 接口注册推送通知。
同时生成 Plugin 钩子(方法名必须与注解名一致!):
@ShopSwitched
fun onShopSwitched() {
{Name}RefreshUtils.register{Name}Notification()
{Name}ConfigManager.query{Name}Config()
}
@AppStart
fun onAppStart() {
{Name}RefreshUtils.register{Name}Notification()
{Name}ConfigManager.query{Name}Config()
}
@ConfigFetch
fun onConfigFetch() {
{Name}ConfigManager.query{Name}Config()
}
Plugin 钩子说明
配置拉取的调用时机通过 Plugin 实现。不同模块的 Plugin 位置:
- 商品模块:
modules/module_goods/src/common/java/com/youzan/retail/goods/PluginModule.kt - 营销模块:
modules/module_marketing/src/common/java/com/youzan/retail/marketing/PluginModule.kt
可用的注解:
@ShopSwitched- 店铺切换时调用@AppStart- 应用启动时调用@ConfigFetch- 配置同步时调用
重要规则:
- 每次生成配置时,必须同时生成这三个 Plugin 钩子方法!
- 方法名必须与注解名一致:
@ShopSwitched→onShopSwitched(),@AppStart→onAppStart(),@ConfigFetch→onConfigFetch() - 生成代码后,必须写入到 workspace 对应文件
- 确保已安装 OpenClaw(本地或 Docker 部署)
- 在对话框中输入安装命令:
/install config-pull-template - 安装完成后,直接呼叫该 Skill 的名称或使用
/config-pull-template触发 - 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
配置拉取代码生成 是什么?
生成配置拉取代码模板。用于在 Android 项目中接入配置中心、白名单、单独接口或推拉结合的配置。 触发条件:用户想要创建配置拉取功能,需要生成对应的 Kotlin/Java 代码模板。 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 200 次。
如何安装 配置拉取代码生成?
在 OpenClaw 或 Claude Code 对话框中运行命令「/install config-pull-template」即可一键安装,无需额外配置。
配置拉取代码生成 是免费的吗?
是的,配置拉取代码生成 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。
配置拉取代码生成 支持哪些平台?
配置拉取代码生成 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。
谁开发了 配置拉取代码生成?
由 hefuwei-95(@hefuwei-95)开发并维护,当前版本 v1.0.2。