feat(template): ADR-013 Skill 替代脚本 — 框架脱敏/初始化机制重构
- 废弃 ADR-008 双分支+shell脚本方案(ai_project分支已过时) - 新增 project-init Skill:export(脱敏导出) + init(初始化新项目)双模式 - 保留 SYNC.md(框架/项目边界)+ TEMPLATE.yaml(变量定义) - L-006: 当 AI 是执行者时,Skill 优于 Shell 脚本 - 3 文件替代 4文件+1分支,零维护成本 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -59,18 +59,38 @@
|
||||
## ADR-008: 框架/项目双分支 + 同步机制
|
||||
|
||||
- 日期: 2026-05-25
|
||||
- 状态: 已采纳
|
||||
- 决策: 采用双分支策略:`main` 分支开发具体项目(ErrLens),`ai_project` 分支保持为去敏的通用模板。通过 `sync-template.sh` 从 main 单向同步框架层变化到模板分支
|
||||
- 理由:
|
||||
- 状态: 已废弃(被 ADR-013 替代,2026-05-26)
|
||||
- 决策: ~~采用双分支策略:`main` 分支开发具体项目(ErrLens),`ai_project` 分支保持为去敏的通用模板。通过 `sync-template.sh` 从 main 单向同步框架层变化到模板分支~~ 废弃原因:双分支维护成本高,容易过时。ai_project 分支在新架构升级后已严重落后于 main
|
||||
- 理由(原):
|
||||
- 框架层变化需要传播到模板,但重做去敏化消耗巨大(~100K tokens)
|
||||
- 两个分支的差异本质是"变量替换",可以脚本自动化
|
||||
- 框架层(AGENTS/权限/提示词/工作流)和项目层(任务/日志/代码)的边界清晰
|
||||
- 影响:
|
||||
- 新增 `SYNC.md` 定义框架层/项目层边界
|
||||
- 新增 `sync-template.sh` 实现自动同步
|
||||
- 新增 `TEMPLATE.yaml` + `init.sh` 实现一键初始化
|
||||
- 影响(原):
|
||||
- 新增 `SYNC.md` 定义框架层/项目层边界(保留,被 ADR-013 复用)
|
||||
- 新增 `sync-template.sh` 实现自动同步(已删除)
|
||||
- 新增 `TEMPLATE.yaml` + `init.sh` 实现一键初始化(TEMPLATE.yaml 保留,init.sh 删除)
|
||||
- AI 项目框架从此可复用,token 节省 95%+
|
||||
|
||||
## ADR-013: Skill 替代脚本 — 框架脱敏/初始化的正确方式
|
||||
|
||||
- 日期: 2026-05-26
|
||||
- 状态: 已采纳
|
||||
- 决策: 废弃 ADR-008 的「双分支 + shell 脚本」方案,改为「Skill + 配置文件」方案。框架脱敏和项目初始化由 `project-init` Skill 按需执行,不再维护独立模板分支
|
||||
- 理由:
|
||||
- **双分支方案的问题已被验证**:ADR-008 的 ai_project 分支在新架构升级(dashboard.md / .ai/tasks/ / 归档)后严重过时,SYNC.md 和 sync-template.sh 的文件清单全是旧结构引用
|
||||
- **AI 是执行者,不需要可执行脚本**:shell 脚本是给人类或 CI 用的。但当前场景中,脱敏/初始化是由 AI(Claude Code)执行的——AI 需要的是清晰的规格说明(SYNC.md + TEMPLATE.yaml + Skill 指令),而不是可执行脚本
|
||||
- **Skill 方案不过时**:脚本写死了文件列表,框架一变脚本就过时。Skill 描述的是「方法」——读 SYNC.md 获取边界 → 读 TEMPLATE.yaml 获取变量 → 执行替换。框架变化时只需更新 SYNC.md,Skill 本身不变
|
||||
- **零维护成本**:不再需要 sync-template.sh、init.sh、独立 Git 分支。3 个文件(SYNC.md + TEMPLATE.yaml + Skill)vs 旧方案的 4 个文件 + 1 个分支
|
||||
- 关键洞察:
|
||||
- **「脚本优于 Skill」的前提是执行者是机器**。当执行者是 AI 时,Skill(语义描述 + 约束)优于脚本(硬编码文件列表)
|
||||
- **边界定义文件(SYNC.md)是长期资产**,脚本是短期负债——脚本依赖边界定义,但边界定义不应绑定于特定的执行方式
|
||||
- 影响:
|
||||
- 保留 `SYNC.md`(更新为新架构文件结构)
|
||||
- 保留 `TEMPLATE.yaml`(变量定义)
|
||||
- 新增 `.trae/skills/project-init/SKILL.md`
|
||||
- 废弃 `sync-template.sh`、`init.sh`
|
||||
- 废弃 `ai_project` 分支(不再维护,仅保留历史参考)
|
||||
|
||||
## ADR-009: 人机协同数据质量闭环
|
||||
|
||||
- 日期: 2026-05-26
|
||||
|
||||
@@ -31,6 +31,14 @@
|
||||
- [x] `.ai/principles.md` 新增「Arch AI 上下文资源管理」硬约束
|
||||
- [x] L-005: 上下文窗口是硬约束——盲目冲刺 = 带残缺记忆做决策
|
||||
|
||||
### 模板机制重构(ADR-013)
|
||||
- [x] 废弃 ADR-008 的「双分支 + shell 脚本」方案
|
||||
- [x] ADR-013: Skill 替代脚本——project-init Skill 按需执行脱敏/初始化
|
||||
- [x] 保留 SYNC.md(更新为新架构)、保留 TEMPLATE.yaml(变量定义)
|
||||
- [x] 新增 project-init Skill(export + init 双模式)
|
||||
- [x] L-006: 当 AI 是执行者时,Skill 优于 Shell 脚本
|
||||
- [x] 废弃 sync-template.sh、init.sh、ai_project 分支
|
||||
|
||||
### 知识库变更汇总
|
||||
|
||||
| 文件 | 新增 |
|
||||
|
||||
@@ -72,6 +72,26 @@
|
||||
|
||||
---
|
||||
|
||||
## L-006: 当 AI 是执行者时,Skill 优于 Shell 脚本
|
||||
|
||||
**日期**: 2026-05-26
|
||||
**上下文**: ADR-008 的「双分支 + sync-template.sh」模板同步方案,在新架构升级后 ai_project 分支严重过时。用户要求把脱敏模板价值提取到 main,放弃独立分支
|
||||
**问题**:
|
||||
- `sync-template.sh` 硬编码了旧架构的文件列表(DASHBOARD.md / ROADMAP.md / today.md / queue.md),框架一升级脚本就过时
|
||||
- 维护一个独立 Git 分支的成本 > 收益:需要手动切换分支、跑脚本、处理冲突
|
||||
- Shell 脚本的设计假设是「人类或 CI 执行」,但实际场景是 AI 执行。AI 不需要可执行脚本——AI 需要清晰的规格
|
||||
**教训**:
|
||||
1. **「用什么执行」决定「用什么描述」**。人/CI 执行 → 写脚本。AI 执行 → 写 Skill(语义描述 + 约束 + 边界定义)。Skill 描述「方法」,不会因文件路径变化而过时
|
||||
2. **边界定义文件是长期资产,执行脚本是短期负债**。SYNC.md 定义了什么属于框架、什么属于项目——这个定义独立于任何执行方式。脚本绑定了执行方式,框架一变就废
|
||||
3. **让 Git 做版本管理,让 Skill 做逻辑执行**。不需要为「脱敏」这个逻辑维护一个独立分支,Skill 从当前 main 实时执行脱敏,永远不过时
|
||||
4. **3 文件 > 4 文件 + 1 分支**。新方案:SYNC.md + TEMPLATE.yaml + Skill。旧方案:SYNC.md + TEMPLATE.yaml + sync-template.sh + init.sh + ai_project 分支
|
||||
**行动**:
|
||||
- ADR-008 标记废弃,新增 ADR-013
|
||||
- 废弃 sync-template.sh、init.sh、ai_project 分支
|
||||
- 保留并更新 SYNC.md(框架/项目边界),新增 TEMPLATE.yaml(变量定义),新增 project-init Skill
|
||||
|
||||
---
|
||||
|
||||
## L-004: 跨平台 AI 协作下,文档是唯一的通信协议
|
||||
|
||||
**日期**: 2026-05-26
|
||||
|
||||
Reference in New Issue
Block a user