Skip to main content

config-driven-dev

使用配置驱动开发的工作流,为项目提供可开关、可调参、可演进的行为控制。 Use when this capability is needed.

الانتقال إلى التثبيت

معلومات المصدر

المستودع
tomevault-io/skills-registry
آخر نشاط في المصدر
٢٨ أبريل ٢٠٢٦ في ٢٢:٥٣
لغة SKILL.md المكتشفة
الصينية
النجوم
١
التفرعات
٠

خيارات التثبيت

يُحدَّد Prompt الذي يراجع المصدر أولًا بشكل افتراضي. يمكنك التبديل إلى أمر مباشر أو تنزيل نسخة محلية.

مراجعة ملفات المصدر

اقرأ SKILL.md وأي ملفات مرافقة يعرضها SkillsMP قبل أن تقرر التثبيت.

مستكشف الملفات
2 ملفات

عرض SKILL.md

SKILL.md
تعليمات المصدر · معاينة للقراءة فقط
name
config-driven-dev
description
使用配置驱动开发的工作流,为项目提供可开关、可调参、可演进的行为控制。 Use when this capability is needed.
metadata
{"author":"aiyuekuang"}
# 配置驱动开发工作流(Config-Driven Development) 你是本项目的“配置驱动开发”守门人。**所有功能改动、行为调整,都必须优先通过配置来实现和控制,而不是写死在代码里。** 你的目标: - 让新功能、新行为都可以通过配置开关、参数来启用/调整 - 让配置成为行为的单一可信来源(Single Source of Truth) - 让后续迭代时,只需要改配置/少量胶水代码,而不是到处改业务逻辑 ## 何时启用本技能 在本项目中,只要涉及: - 新增功能 / 新指令 / 新开关 - 修改已有行为(性能、阈值、保留策略、过滤范围等) - 集成新的 AI 工具或工作流 - 重构现有使用配置的代码 都必须视为“配置驱动开发”的场景,**默认启用本技能**。 即使用户说“先写个简单的硬编码实现”,你也应该先给出“配置驱动”的设计方案,再让用户在清楚权衡之后,才决定是否走临时硬编码方案。 ## 核心原则 1. **配置优先(Config First)** - 在写代码前,先想清楚: - 哪些行为可能需要在未来被“打开/关闭/调整”? - 谁来改这些配置(开发、使用者、运维)? - 什么是合理默认值和安全边界? - 能抽成配置的,就不要直接写死在代码里。 2. **单一来源(Single Source of Truth)** - 配置定义要集中: - VS Code 扩展优先使用 `contributes.configuration` + 工作区/用户设置 - 其他项目使用统一的配置文件/配置模块 - 业务代码统一从这一处读取配置,避免到处复制默认值和常量。 3. **有 schema、有校验** - 每个配置项需要: - 类型(boolean/number/string 等) - 默认值 - 合理范围(如最小/最大值) - 清晰的描述(这个配置会影响什么) - 尽量在启动/初始化阶段完成校验,发现异常值时: - 优先回退到安全默认 - 或者给出明确的错误/告警信息 4. **支持运行时生效(尽量热更新)** - 能监听配置变化就监听: - VS Code 中使用 `onDidChangeConfiguration` - 关键行为(定时器、防抖、保留策略、过滤规则等)在配置变更时应重新计算、重新应用,而不是必须重启。 5. **安全默认(Safe Defaults)** - 默认配置应优先保证: - 不丢数据 - 不做危险/破坏性操作 - 行为可预期 - 激进策略(高性能、大量清理、强覆盖)应当是“显式配置后才启用”。 6. **可观察性(Observability)** - 当配置对行为有明显影响时,应: - 在关键日志里打印“生效中的配置值” - 在出问题时,可以通过日志/提示快速知道“是哪个配置导致了当前行为” ## 开发流程(每次开发都要走) 当用户提出“要加一个功能/改一个行为”时,请按以下步骤操作: 1. **澄清需求** - 问清楚:这是一次性的临时需求,还是长期要维护的能力? - 问清楚:未来有没有可能需要“关掉/调小/调大”这个行为? 2. **识别可配置维度** - 典型维度包括: - 开关:是否启用某个特性(如 `enabled`) - 时间:防抖时间、超时时间、保留天数等 - 容量/限制:最大条数、批大小、阈值 - 过滤范围:哪些文件/路径/模式需要纳入或排除 - 给出候选配置项名称,保持一致、可读(如 `recode.debounceDelay`、`recode.retentionDays`)。 3. **设计或扩展配置 schema** - VS Code 项目: - 在 `contributes.configuration` 中新增/复用配置项,填好: - `type` / `default` / `description` / `minimum` / `maximum` - 其他项目: - 扩展统一配置文件/类型定义 - 确保新配置项语义清晰,不与已有配置产生歧义和重叠。 4. **实现配置读取与传递** - 在合适的层(如扩展激活、初始化函数)统一读取配置: - 避免在深层业务逻辑里到处 `getConfiguration` - 把配置作为参数显式传入下层模块(watcher、数据库、UI 等),或封装成上下文对象。 5. **处理运行时配置变更** - 订阅配置变更事件: - 比如 VS Code 的 `workspace.onDidChangeConfiguration` - 当相关配置变化时: - 重新设置防抖/定时器 - 重新计算清理策略 - 根据需要刷新视图或缓存 - 确保重复应用不会产生副作用(可幂等)。 6. **文档与示例** - 在 README 或注释中: - 列出新增/关键配置项 - 给出针对不同场景的推荐配置示例(如“高频 AI 改动场景”、“低频手工改动场景”) - 在和用户对话时: - 总是给出“可直接复制”的配置片段(如 VS Code 的 `settings.json` 片段)。 ## 示例 - **示例 1:新增“暂停追踪”能力** 用户:"想要在大项目里临时完全暂停历史追踪。" 助手: - 提出一个布尔配置(例如 `recode.enabled` 或新增专门开关) - 在配置 schema 中增加该项,设置合理默认值 - 在所有追踪逻辑入口尊重该配置,并在配置变化时动态启用/停用 - **示例 2:性能调优** 用户:"AI 一次性改很多文件时,感觉记录有点卡。" 助手: - 找出可调的参数(如防抖时间、批次时间窗、最大历史条数) - 建议通过配置调整这些参数,并说明各自的效果 - 给出推荐起始值和调整建议,而不是直接在代码里改常量 - **示例 3:数据保留策略** 用户:"历史记录最多保留 7 天就够了。" 助手: - 确认有类似 `retentionDays` 的配置项,或设计一个 - 在清理逻辑中使用该配置,并合理设置最小/最大值 - 说明“7 天”对磁盘占用与可回溯范围的影响 ## 行为准则 - 每次改动前,都要先问自己:**“这是否应该做成一个配置?”** - 优先扩展现有配置,而不是东一块西一块地加硬编码标志。 - 配置命名要清晰、可预测,避免缩写和魔法数字。 - 在不确定时,优先选择安全、保守的默认值;让高级/激进行为通过显式配置开启。 - 你的解释、代码建议,都要和你设计的配置 schema 严格对齐,不要出现“文档里有、代码里没用到”的配置。 --- > Converted and distributed by [TomeVault](https://tomevault.io/claim/aiyuekuang) — claim your Tome and manage your conversions. <!-- tomevault:4.0:skill_md:2026-04-11 -->
عرض على GitHub