init.
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
{
|
||||
"name": "Arch AI",
|
||||
"role": "架构设计师",
|
||||
"description": "allowed_paths = 可写路径(含读);read_only_paths = 只读路径;不在二者中的路径禁止访问。详细权限见 AGENTS.md 权限矩阵。",
|
||||
"responsibilities": [
|
||||
"需求分析和产品规划",
|
||||
"系统架构设计",
|
||||
"技术选型和评估",
|
||||
"跨模块协调和集成",
|
||||
"编写架构文档",
|
||||
"定义验收标准",
|
||||
"评估变更影响",
|
||||
"维护共享资源",
|
||||
"指导 Dev AI 和 QA AI 工作"
|
||||
],
|
||||
"allowed_paths": [
|
||||
"docs/",
|
||||
"shared/",
|
||||
"projects/*/src/",
|
||||
"projects/*/docs/",
|
||||
"review/*/acceptance.md",
|
||||
"review/*/impact.md",
|
||||
"review/*/task.md",
|
||||
"tools/",
|
||||
"data/"
|
||||
],
|
||||
"read_only_paths": [
|
||||
".ai/",
|
||||
"projects/*/tests/",
|
||||
"reports/",
|
||||
"review/*/feedback/"
|
||||
],
|
||||
"forbidden_paths": [],
|
||||
"prompt_templates": {
|
||||
"architecture": ".ai/prompts/architecture/",
|
||||
"documentation": ".ai/prompts/architecture/"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
{
|
||||
"name": "Dev AI",
|
||||
"role": "代码开发者",
|
||||
"description": "allowed_paths = 可写路径(含读);read_only_paths = 只读路径;不在二者中的路径禁止访问。详细权限见 AGENTS.md 权限矩阵。",
|
||||
"responsibilities": [
|
||||
"编写业务代码",
|
||||
"生成技术文档",
|
||||
"维护项目级文档",
|
||||
"维护开发工具",
|
||||
"维护训练数据",
|
||||
"定义验收标准",
|
||||
"评估变更影响",
|
||||
"维护共享资源"
|
||||
],
|
||||
"allowed_paths": [
|
||||
"projects/*/src/",
|
||||
"projects/*/docs/",
|
||||
"docs/",
|
||||
"tools/",
|
||||
"data/",
|
||||
"shared/",
|
||||
"review/*/acceptance.md",
|
||||
"review/*/impact.md"
|
||||
],
|
||||
"read_only_paths": [
|
||||
"review/*/task.md",
|
||||
"review/*/feedback/"
|
||||
],
|
||||
"forbidden_paths": [
|
||||
"projects/*/tests/",
|
||||
"reports/"
|
||||
],
|
||||
"prompt_templates": {
|
||||
"coding": ".ai/prompts/coding/",
|
||||
"documentation": ".ai/prompts/coding/"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
{
|
||||
"name": "QA AI",
|
||||
"role": "测试工程师",
|
||||
"description": "allowed_paths = 可写路径(含读);read_only_paths = 只读路径;不在二者中的路径禁止访问。详细权限见 AGENTS.md 权限矩阵。",
|
||||
"responsibilities": [
|
||||
"编写测试用例",
|
||||
"执行测试",
|
||||
"生成测试报告",
|
||||
"提供反馈"
|
||||
],
|
||||
"allowed_paths": [
|
||||
"projects/*/tests/",
|
||||
"reports/",
|
||||
"review/*/acceptance.md",
|
||||
"review/*/feedback/"
|
||||
],
|
||||
"read_only_paths": [
|
||||
"projects/*/src/",
|
||||
"projects/*/docs/",
|
||||
"docs/",
|
||||
"data/",
|
||||
"shared/",
|
||||
"review/*/task.md"
|
||||
],
|
||||
"forbidden_paths": [
|
||||
".ai/",
|
||||
"tools/",
|
||||
"review/*/impact.md"
|
||||
],
|
||||
"prompt_templates": {
|
||||
"testing": ".ai/prompts/testing/"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
{
|
||||
"workflow": "human-ai-collaboration",
|
||||
"roles": ["human", "arch-ai", "dev-ai", "qa-ai"],
|
||||
"stages": [
|
||||
{
|
||||
"name": "需求分析",
|
||||
"actor": "arch-ai",
|
||||
"output": ["docs/01_产品需求/PRD.md", "review/{task_id}/task.md"]
|
||||
},
|
||||
{
|
||||
"name": "架构设计",
|
||||
"actor": "arch-ai",
|
||||
"input": ["docs/01_产品需求/PRD.md", "review/{task_id}/task.md"],
|
||||
"output": ["docs/02_系统架构/", "review/{task_id}/impact.md", "review/{task_id}/acceptance.md"]
|
||||
},
|
||||
{
|
||||
"name": "开发实现",
|
||||
"actor": "dev-ai",
|
||||
"input": ["review/{task_id}/task.md", "review/{task_id}/acceptance.md"],
|
||||
"output": ["projects/*/src/", "projects/*/docs/"]
|
||||
},
|
||||
{
|
||||
"name": "测试验证",
|
||||
"actor": "qa-ai",
|
||||
"input": ["review/{task_id}/task.md", "review/{task_id}/acceptance.md"],
|
||||
"output": ["projects/*/tests/", "reports/test-results/", "review/{task_id}/feedback/round{round}.md"]
|
||||
},
|
||||
{
|
||||
"name": "验收确认",
|
||||
"actor": "human",
|
||||
"input": ["review/{task_id}/feedback/", "reports/test-results/"]
|
||||
}
|
||||
],
|
||||
"retry": {
|
||||
"max_rounds": 3,
|
||||
"loop": ["测试验证", "开发实现"],
|
||||
"escalation": {
|
||||
"trigger": "第 3 轮测试仍有 BLOCKER 或 HIGH 级别 Bug",
|
||||
"action": "暂停任务流转,等待人类负责人裁决"
|
||||
},
|
||||
"skip_acceptance_on_retry": true
|
||||
},
|
||||
"ci_triggers": {
|
||||
"on_push_to_main": ["run-tests", "generate-reports"],
|
||||
"on_pr_open": ["run-tests", "code-review"],
|
||||
"on_task_update": ["notify-qa-ai"]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,111 @@
|
||||
# 经验教训
|
||||
|
||||
## 目的
|
||||
|
||||
记录开发过程中学到的东西。每条记录包含:
|
||||
- 上下文(我们在做什么)
|
||||
- 问题(出了什么问题/什么让我们意外)
|
||||
- 教训(学到了什么)
|
||||
- 行动(因此改变了什么)
|
||||
|
||||
---
|
||||
|
||||
## L-001: 单体 AGENTS.md 浪费 AI 上下文
|
||||
|
||||
**日期**: 2026-05-25
|
||||
**上下文**: 项目启动阶段,每次 AI 会话都需要读 AGENTS.md 来了解角色和权限
|
||||
**问题**: AGENTS.md 239 行,约 80% 内容与当前 AI 角色无关。AI 有效上下文被大量无关信息占据
|
||||
**教训**: 为人类设计的文档结构不适用于 AI 的信息获取模式。AI 需要"最少必要信息",而不是"全局完整视图"
|
||||
**行动**: 重构为分层信息架构:角色工作台 → 阶段上下文 → 知识沉淀。AI 只需读 2 个小文件即可开工
|
||||
|
||||
---
|
||||
|
||||
## L-002: 角色边界划分是 AI Agent 协作的反模式
|
||||
|
||||
**日期**: 2026-05-26
|
||||
**上下文**: Phase 1 收尾后,重新审视「1 人 + 3 AI」的 Arch/Dev/QA 角色划分架构。调研了 2025-2026 年业界最新实践(MegaAgent、Claude Code Agent Swarm、Devin、JiuwenSwarm、Microsoft 多 Agent 参考架构等)
|
||||
**问题**:
|
||||
- 按角色边界(Arch/Dev/QA)划分 Agent 导致协调成本急剧上升,Token 消耗是单体的 3-10 倍
|
||||
- Arch AI 承担了过多职责:架构设计 + 任务分配 + 文档维护 + 看板更新,成为单点瓶颈
|
||||
- `.ai/` 目录膨胀到 47 个文件,但 Phase 2 代码一行还没写——架构本身成了负担
|
||||
- Anthropic 和 Cognition(Devin)都承认:并行 Agent 在编码领域的实际收益有限,隐性决策冲突和整合成本往往超过并行收益
|
||||
**教训**:
|
||||
1. **按业务上下文划分,而非按角色划分**。正确的做法是「用户认证流 Agent」拥有路由+数据库+前端组件,「芯片验证流 Agent」拥有数据采集+仿真+结果分析——每个 Agent 拥有完成任务所需的全部上下文
|
||||
2. **架构规模应与项目阶段匹配**。Phase 1 只有需求+设计,不需要 47 个配置文件。应该在需要时渐进式添加,而非提前搭建「完整」架构
|
||||
3. **调度层应该是确定性代码,而非 LLM**。用 LLM 做任务路由和状态更新是反模式——不稳定、成本高。这些应该用脚本/CI/工作流引擎实现
|
||||
4. **子 Agent 的甜蜜点是只读研究,而非并行编码**。隔离上下文中做信息收集然后压缩回传——这是验证最有效的模式
|
||||
5. **「高模型指挥小模型」的方向是对的,但规模要匹配**。1 人项目的「编排层」就是人类+Claude Code 本身,不需要额外的编排 Agent
|
||||
**行动**:
|
||||
- 启动 `.ai/` 配置精简审计,目标砍到 20 个文件以内
|
||||
- Arch AI 的 today.md 和 queue.md 合并,消除重复
|
||||
- Phase 3 前评估是否引入正式模型分层(Opus 做判断 → Sonnet/Haiku 做执行)
|
||||
- 当前阶段保留角色划分但降低形式化程度,实际工作由 Claude Code 子 Agent 机制承载
|
||||
|
||||
---
|
||||
|
||||
## L-003: 知识库「生产者」流程缺失
|
||||
|
||||
**日期**: 2026-05-26
|
||||
**上下文**: 一次关于 Agent 架构的深度讨论产生了有价值的洞察(L-002 + ADR-011 + P-004),但发现把这些洞察写入知识库的动作没有 formalized 流程
|
||||
**问题**: `share-context` Skill 覆盖了知识库的「消费者」侧(.ai/knowledge/ → docs/share/),但「生产者」侧(开发讨论 → .ai/knowledge/)是断的。有价值的想法和教训可能因为没人记得写而丢失
|
||||
**教训**: 一条完整的信息流水线需要两端都 formalized:摄入端(什么时候写、写到哪里、怎么写)和输出端(什么时候翻译、翻译成什么)。目前只有输出端
|
||||
**行动**:
|
||||
- 更新 `share-context` Skill,增加「反向检查」步骤:每次执行时先检查是否有未入库的讨论/想法
|
||||
- 建立触发条件:当讨论产生「可复用的判断」「反直觉的发现」「被验证的错误方向」时,主动记录
|
||||
|
||||
---
|
||||
|
||||
## L-005: Arch AI 上下文窗口是硬约束——盲目冲刺 = 带残缺记忆做决策
|
||||
|
||||
**日期**: 2026-05-26
|
||||
**上下文**: 持续数小时的高强度架构讨论(ADR-011、ADR-012、信息架构升级),Arch AI 的上下文窗口承载了全部对话历史
|
||||
**问题**: 复杂任务容易让人想「一口气做完」,但 Arch AI 的上下文窗口有限。做一半触发自动压缩 → 前面的讨论、决策细节、已排除的选项全部丢失 → 后续判断基于不完整记忆 → 决策质量崩盘
|
||||
**教训**:
|
||||
1. **上下文不是无限的**。每次对话都是消耗品,越长的讨论越容易触发压缩
|
||||
2. **决策即记录**。每个判断产生后立即写入 knowledge/,不留在对话里。对话是易失的,文件是持久的
|
||||
3. **主动 checkpoint 优于被动压缩**。感觉吃力时主动收尾(commit + push),开新会话继续——带着干净记忆比带着残缺记忆强
|
||||
4. **拆分到可提交粒度**。大任务拆成独立子任务,每个子任务结束后 commit。即使后续会话压缩,已完成的部分已经落地
|
||||
**行动**:
|
||||
- 写入 `.ai/principles.md` 作为 Arch AI 硬约束
|
||||
- 任务前评估上下文余量
|
||||
- 接近窗口上限时执行主动收尾协议:已完成 → commit → 告知人类进展 → 建议开新会话
|
||||
|
||||
---
|
||||
|
||||
## 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
|
||||
**上下文**: 澄清了实际的三平台配置——Arch AI (Claude Code + DeepSeek V4 Pro)、Coder AI (Trae CN + GLM-4.6)、Tester AI (Coze CN)。之前的设计假设所有角色在同一个 AI 平台内切换,这一假设被推翻
|
||||
**问题**:
|
||||
- 之前的架构分析得出了「精简文档」的结论(ADR-011),但这个结论基于错误的前提——以为所有 AI 共享同一个上下文空间
|
||||
- 实际场景中,三个平台的 AI 之间**零共享上下文**。Trae + GLM-4.6 不会知道 Claude Code 里讨论了什么,Coze 沙盒不会知道架构设计的动机
|
||||
- 如果把文档精简了,Coder AI 拿到的 task 就会缺失关键上下文,GLM-4.6 又没有能力自行推断
|
||||
**教训**:
|
||||
1. **架构结论绑定于部署拓扑**。同一个设计,在「单平台多角色切换」和「跨平台多 Agent 协作」下是完全不同的东西。先搞清楚运行环境,再做架构决策
|
||||
2. **跨平台协作中,Git 仓库不是存储,是通信介质**。每个 commit 是一次消息传递,每个文件是一份消息体。消息必须自包含,接收方不能依赖「上次聊过」
|
||||
3. **任务交接密度必须适配接收方模型能力**。GLM-4.6 不是 Claude——不能给一个需要跨 5 个文件推理的任务。每个 task 应该是单文件或强内聚的 2-3 个文件
|
||||
4. **低能力模型不是劣势,是约束**。只能处理小范围任务 → 强迫架构设计更清晰 → 反而减少 bug。这就是「限制产生创造力」
|
||||
**行动**:
|
||||
- 修正 ADR-011 的结论:不做精简,改为「重定位」——架构文档从内部备忘录升级为跨平台交接协议(ADR-012)
|
||||
- Task 模板增加四个必填字段:输入、输出、约束、参考 ADR
|
||||
- Dev queue.md 的每个任务需独立可读,不依赖前后文
|
||||
@@ -0,0 +1,142 @@
|
||||
# 可复用模式
|
||||
|
||||
## 目的
|
||||
|
||||
记录开发过程中发现的可持续复用的模式和做法。
|
||||
同样的模式出现 3 次以上时,应当记录在这里。
|
||||
|
||||
---
|
||||
|
||||
## P-001: AI 任务交接 (review/active/)
|
||||
|
||||
**上下文**: AI 角色之间需要传递工作成果
|
||||
**问题**: 如何结构化任务交接,让任何 AI 都能接手
|
||||
**方案**: 标准化 `review/active/{任务ID}/` 结构:
|
||||
- `task.md` — 任务描述(Arch AI 定义)
|
||||
- `acceptance.md` — 验收标准(Arch AI + Dev AI + QA AI 共同维护)
|
||||
- `impact.md` — 变更影响范围(Arch AI + Dev AI 评估)
|
||||
- `feedback/` — 反馈记录(QA AI 提交)
|
||||
|
||||
**何时用**: 每个跨 AI 角色的任务
|
||||
**何时不用**: 单角色任务(如纯文档更新、配置修改)
|
||||
|
||||
---
|
||||
|
||||
## P-002: 角色工作台 (daily task board)
|
||||
|
||||
**上下文**: AI 每次会话需要快速进入工作状态
|
||||
**问题**: 从头探索项目结构浪费时间
|
||||
**方案**: `.ai/roles/{role}/today.md` 每日任务清单,AI 只需读 2 个文件(card + today)
|
||||
**何时用**: 每次 AI 会话
|
||||
**维护者**: Arch AI 负责分配,各 AI 自己更新完成状态
|
||||
|
||||
---
|
||||
|
||||
---
|
||||
|
||||
## P-003: 模板同步 (framework sync)
|
||||
|
||||
**上下文**: 项目框架层(AGENTS/权限/提示词/工作流)的变化需要传播到通用模板分支
|
||||
**问题**: 手动同步耗时且容易遗漏,AI 重做去敏化消耗 ~100K tokens
|
||||
**方案**:
|
||||
- 双分支:`main`(具体项目)+ `ai_project`(通用模板)
|
||||
- `SYNC.md` 明确定义框架层/项目层文件边界
|
||||
- `sync-template.sh` 自动 checkout 框架文件 + 重新应用 {{变量}}
|
||||
- 框架层 ~15 个文件自动同步,project 层永久隔离
|
||||
**何时用**: main 分支框架有变化时
|
||||
**维护者**: Arch AI 触发,脚本执行
|
||||
|
||||
---
|
||||
|
||||
## P-004: 编排器-执行者模式 (Orchestrator-Worker)
|
||||
|
||||
**上下文**: AI Agent 协作中,不同任务需要不同能力的模型。高能力模型(Opus)做规划和判断,低成本模型(Sonnet/Haiku)做执行
|
||||
**来源**: MegaAgent (NUS)、Claude Code Agent Swarm (Anthropic)、JiuwenSwarm (华为 openJiuwen)、Microsoft 多 Agent 参考架构
|
||||
**方案**:
|
||||
|
||||
```
|
||||
决策层 (Opus) → 意图理解、方案设计、最终验收 (~10% Token, 最贵)
|
||||
调度层 (代码) → 任务路由、负载均衡、重试熔断 (确定性代码, 不用 LLM!)
|
||||
执行层 (Haiku) → 专注单一原子任务 (~60% Token, 最便宜)
|
||||
```
|
||||
|
||||
**核心原则**:
|
||||
1. 按业务上下文划分 Agent(「认证流 Agent」),而非按角色(「数据库 Agent」)
|
||||
2. 调度层是确定性代码——用 LLM 做调度是反模式
|
||||
3. 子 Agent 的甜蜜点是只读研究/探索,并行编码效果不佳
|
||||
4. 写范围严格分离——并发写任务之间不能有重叠的文件所有权
|
||||
5. Agent 粒度围绕内聚能力组织——不要为「调用一个 API」建 Agent
|
||||
|
||||
**何时用**:
|
||||
- 团队规模 ≥ 3 个 AI Agent 并行工作
|
||||
- 任务可清晰分解为独立子任务,且协调成本 < 并行收益
|
||||
- 有明确的模型成本优化需求
|
||||
|
||||
**何时不用**:
|
||||
- 1 人项目——编排层就是人类 + Claude Code 本身
|
||||
- 编码任务的并行化——行业共识是效果不佳
|
||||
- 简单 bug 修复——分解成本 > 直接修复成本
|
||||
|
||||
**本项目实例** (SoC_SW):
|
||||
|
||||
```
|
||||
Arch AI: Claude Code + DeepSeek V4 Pro → 架构推理、方案设计、任务分解
|
||||
Coder AI: Trae CN + GLM-4.6 → 代码生成、文件操作(单文件粒度)
|
||||
Tester AI: Coze CN → 沙盒执行、自动化测试报告
|
||||
|
||||
通信介质: Git 仓库(唯一集成总线)
|
||||
交接粒度: 单次 commit = 一个交接单元
|
||||
```
|
||||
|
||||
**关键适配**:
|
||||
- Coder AI 用的是 GLM-4.6,不能假设它有跨文件推理能力 → task 分解到单文件粒度
|
||||
- 跨模块协调在 Arch AI 设计阶段完成,不在 Coder AI 执行阶段
|
||||
- Tester AI 的 Coze 沙盒做真正的自动化闭环——不只是跑测试,是拉代码 → 执行 → 生成报告 → commit
|
||||
|
||||
---
|
||||
|
||||
## P-005: 跨平台任务交接协议 (Cross-Platform Task Handoff)
|
||||
|
||||
**上下文**: 多个 AI Agent 运行在不同平台/IDE 上,零共享上下文,Git 是唯一通信介质
|
||||
**问题**: 如何让 Trae + GLM-4.6 拿到 task 后能直接开工,不需要追问「这个是什么意思」
|
||||
**方案**: 每个 task 必须自包含,包含四个必填字段:
|
||||
|
||||
```markdown
|
||||
## Task: {编号} {标题}
|
||||
|
||||
### 输入
|
||||
- 读哪些文件(完整路径)
|
||||
- 参考哪些 ADR(ADR-XXX)
|
||||
- 依赖哪些上游任务(P01-XXX,已完成/产出是 X)
|
||||
|
||||
### 输出
|
||||
- 生成/修改哪些文件(完整路径)
|
||||
- 输出格式(代码/文档/配置)
|
||||
- 验收方式(跑什么命令看什么结果)
|
||||
|
||||
### 约束
|
||||
- 不碰哪些目录
|
||||
- 用什么库/版本
|
||||
- 遵循什么规范(code-style.md / doc-template.md)
|
||||
|
||||
### 参考
|
||||
- ADR-XXX: 一句话说明关联性
|
||||
- 相关文件: 一行说明
|
||||
```
|
||||
|
||||
**核心原则**:
|
||||
1. **零隐含上下文**:接收方不能依赖「上次聊过」,所有信息必须显式写在 task 里
|
||||
2. **适配接收方能力**:给 GLM-4.6 的任务粒度 = 单文件;给 Claude 的任务可以跨 3-5 个文件
|
||||
3. **Git commit 即消息**:每次 commit 是发送一次消息,接收方 pull 即收到
|
||||
4. **任务与代码分离**:task 定义在 `.ai/roles/{role}/queue.md`,代码在 `projects/`,通过 Git 同步
|
||||
|
||||
**何时用**: 跨平台/跨模型协作
|
||||
**何时不用**: 同一平台内的角色切换(直接对话即可)
|
||||
|
||||
---
|
||||
|
||||
## 反模式(避免)
|
||||
|
||||
- 在多个文件中重复同一状态信息 → 只在 ROADMAP.md 记录
|
||||
- 决策讨论散落在任务 feedback 中 → 提炼到 knowledge/decisions.md
|
||||
- 大段文档内联而非链接 → 用链接 + 一句话摘要
|
||||
@@ -0,0 +1,17 @@
|
||||
# 阶段索引
|
||||
|
||||
| 阶段 | 名称 | 状态 | 目录 |
|
||||
|------|------|------|------|
|
||||
| 1 | 基础搭建 | DONE | `phase-01-foundation/` |
|
||||
| 2 | MVP | ACTIVE | `phase-02-mvp/` |
|
||||
| 3 | 功能完善 | PLANNED | `phase-03-features/` |
|
||||
| 4 | 打磨发布 | PLANNED | `phase-04-polish/` |
|
||||
|
||||
## 阶段切换规则
|
||||
|
||||
1. 当前阶段 completion.md 全部打勾
|
||||
2. 人类签字确认
|
||||
3. Arch AI 更新本索引文件
|
||||
4. Arch AI 更新所有角色 card.md(当前阶段字段)
|
||||
5. Arch AI 更新 dashboard.md(进度条 + task 状态面板 + 最近事件)
|
||||
6. 产出阶段复盘(docs/share/phase-NN/)
|
||||
@@ -0,0 +1,91 @@
|
||||
# 信息架构设计原则
|
||||
|
||||
## 为什么这样设计
|
||||
|
||||
AI 的上下文窗口有限。每个读入上下文的字都是成本。这套分层架构的核心思想:**每个角色只加载必要信息,按需展开细节。**
|
||||
|
||||
## Token 预算
|
||||
|
||||
| 层级 | 预算 | 内容 | 加载时机 |
|
||||
|------|------|------|----------|
|
||||
| 入口(dashboard/card) | < 2K | 身份+全貌+任务 | 每次会话必读 |
|
||||
| Task 文件 | < 1K | 单任务全部信息 | Coder/Tester 开工时 |
|
||||
| 知识沉淀 (knowledge) | < 3K | 决策/模式/教训 | 按需加载 |
|
||||
| 阶段上下文 (phase) | < 5K | 目标+范围+架构 | 按需加载 |
|
||||
|
||||
## 信息分层(三层架构)
|
||||
|
||||
```
|
||||
指挥层: dashboard.md → 人类 + Arch AI 唯一入口
|
||||
决策层: DECISIONS.md → 待人类决策事项
|
||||
执行层: .ai/tasks/active/ → Coder/Tester 各自 task 文件
|
||||
```
|
||||
|
||||
## 维护规则
|
||||
|
||||
1. **不超预算**:每个文件严格遵守 token 预算,超了就拆分
|
||||
2. **不重复状态**:状态只在一处记录(dashboard.md),其他地方引用
|
||||
3. **Git 管历史**:文档只描述"现在是什么",历史由 Git 负责
|
||||
4. **一文一答**:每个文件独立回答一个问题,不需要串联阅读
|
||||
5. **角色无关设计**:任何 AI 模型都能通过读 card.md 快速接管角色
|
||||
|
||||
---
|
||||
|
||||
## AI 上下文资源管理(硬约束,适用于所有 AI 角色)
|
||||
|
||||
**问题**:每个 AI 每次会话有上下文窗口限制。如果盲目冲刺大任务,到一半触发自动压缩,前面的讨论、决策细节、已排除的选项全部丢失——代价不是「重来」,是「用不完整的记忆做决策」。
|
||||
|
||||
### 通用规则(所有角色遵守)
|
||||
|
||||
1. **任务前评估**:开始一个复杂任务前,先判断能否在自己的有效上下文内完成。不能 → 拆分到多个独立会话
|
||||
2. **做完一件再开始下一件**:不积累未完成的工作。阶段收尾了(commit + push),再启动下一个
|
||||
3. **决策即记录**:每个重要判断产生后,立即写入对应文件,不要留在对话里。对话是易失的,文件是持久的
|
||||
4. **接近窗口上限时主动收尾**:感觉上下文开始吃力时,主动 checkpoint——已完成写入文件、commit、告知人类当前进展和下一步。**宁可多开一个会话,不要带着残缺记忆继续**
|
||||
5. **拆分到可提交粒度**:大任务拆成独立子任务。每个子任务结束后 git commit,确保即使后续会话压缩,已完成的部分不会丢失
|
||||
|
||||
### 角色特定约束
|
||||
|
||||
| 角色 | 主要风险 | 应对策略 |
|
||||
|------|---------|---------|
|
||||
| Arch AI (Claude Code) | 长对话积累上下文,架构讨论容易收不住 | 每个 ADR 产出后立即写入 decisions.md;感知吃力时主动收尾 |
|
||||
| Coder AI (Trae + GLM-4.6) | 上下文窗口更小,多文件任务容易超出 | 每个 session 只做 1 个 task 文件;不读其他 task,不读架构文档 |
|
||||
| Tester AI (Coze CN) | 沙盒执行时间有限 | 1 个 session 只测 1 个 T01-XXX task;报告立即写回 repo |
|
||||
|
||||
### 信号识别(何时应立即执行规则 4)
|
||||
|
||||
- 需要反复回看前面的讨论才能做判断
|
||||
- 开始忘记用户几分钟前说过的话
|
||||
- 回复质量出现可感知的下降
|
||||
- 同一个问题被重复提出
|
||||
- (Coder AI)需要同时修改 3 个以上文件才能完成 task
|
||||
|
||||
### 反模式
|
||||
|
||||
- 「一口气做完再 commit」——做一半触发压缩,前面做的全丢
|
||||
- 「这个 task 简单,我顺便把下一个也做了」——超边界 = 超上下文
|
||||
- 「先放着,等会儿一起处理」——对话不等人,放着 = 丢了
|
||||
|
||||
---
|
||||
|
||||
## 文件约定
|
||||
|
||||
- 控制面板: `dashboard.md`
|
||||
- 决策入口: `DECISIONS.md`
|
||||
- 角色工作台: `.ai/roles/{role}/card.md`
|
||||
- 执行任务: `.ai/tasks/active/`
|
||||
- 阶段上下文: `.ai/phases/phase-NN-name/`
|
||||
- 知识沉淀: `.ai/knowledge/`
|
||||
- 提示词模板: `.ai/prompts/{domain}/`
|
||||
- Skill 工具: `.trae/skills/`
|
||||
- 框架边界: `SYNC.md`
|
||||
- 模板变量: `TEMPLATE.yaml`
|
||||
|
||||
## 阶段切换检查清单
|
||||
|
||||
切换阶段时 Arch AI 必须:
|
||||
- [ ] 更新所有角色的 card.md(当前阶段字段)
|
||||
- [ ] 更新 dashboard.md(进度条 + task 状态面板 + 最近事件)
|
||||
- [ ] 更新 phases/INDEX.md
|
||||
- [ ] 生成上一阶段的 completion.md
|
||||
- [ ] 产出阶段复盘(docs/share/phase-NN/)
|
||||
- [ ] 审计 token 预算
|
||||
@@ -0,0 +1,6 @@
|
||||
# 架构提示词模板
|
||||
|
||||
| 文件 | 用途 |
|
||||
|------|------|
|
||||
| `architecture-design.md` | 系统架构设计模板 |
|
||||
| `technical-evaluation.md` | 技术选型评估模板 |
|
||||
@@ -0,0 +1,44 @@
|
||||
# 系统架构设计模板
|
||||
|
||||
## 输入
|
||||
|
||||
- 产品需求文档 (PRD)
|
||||
- 技术约束(已有技术栈、团队能力)
|
||||
- 非功能性需求(性能、安全、可扩展性)
|
||||
|
||||
## 输出结构
|
||||
|
||||
### 1. 架构概述
|
||||
- 一句话描述架构核心思路
|
||||
- 系统边界和范围
|
||||
|
||||
### 2. 架构图(文字描述 + ASCII)
|
||||
- 模块划分和职责
|
||||
- 模块间通信方式
|
||||
- 数据流向
|
||||
|
||||
### 3. 技术选型
|
||||
- 每个模块的技术栈及理由
|
||||
- 对比方案及淘汰原因
|
||||
- 风险点和缓解措施
|
||||
|
||||
### 4. 接口设计
|
||||
- 模块间接口定义
|
||||
- API 契约(请求/响应格式)
|
||||
- 数据模型概要
|
||||
|
||||
### 5. 非功能性设计
|
||||
- 性能目标及实现策略
|
||||
- 安全设计(认证、授权、数据保护)
|
||||
- 可扩展性考虑
|
||||
|
||||
### 6. 部署架构
|
||||
- 运行环境
|
||||
- 服务拓扑
|
||||
- CI/CD 流程
|
||||
|
||||
## 注意事项
|
||||
|
||||
- 架构文档面向 Arch AI 和 Dev AI,不要写人类才需要的背景介绍
|
||||
- 决策必须写理由,方便后续 AI 理解为什么这样设计
|
||||
- 每个模块标注影响范围(HIGH/MEDIUM/LOW),供 QA AI 确定回归测试范围
|
||||
@@ -0,0 +1,41 @@
|
||||
# 技术选型评估模板
|
||||
|
||||
## 输入
|
||||
|
||||
- 需要解决的技术问题
|
||||
- 约束条件(预算、时间、团队、已有技术栈)
|
||||
|
||||
## 输出结构
|
||||
|
||||
### 1. 需求描述
|
||||
- 要解决什么问题
|
||||
- 关键约束是什么
|
||||
|
||||
### 2. 候选方案(2-4 个)
|
||||
|
||||
每个方案描述:
|
||||
- 方案名称和简介
|
||||
- 优势(3-5 条)
|
||||
- 劣势(3-5 条)
|
||||
- 与本项目技术栈的兼容度
|
||||
|
||||
### 3. 评估维度
|
||||
|
||||
| 维度 | 权重 | 方案A | 方案B | 方案C |
|
||||
|------|------|-------|-------|-------|
|
||||
| 性能 | 30% | — | — | — |
|
||||
| 生态成熟度 | 25% | — | — | — |
|
||||
| 学习曲线 | 20% | — | — | — |
|
||||
| 社区活跃度 | 15% | — | — | — |
|
||||
| 团队熟悉度 | 10% | — | — | — |
|
||||
| **加权总分** | 100% | — | — | — |
|
||||
|
||||
### 4. 推荐方案
|
||||
- 推荐哪个、为什么
|
||||
- 主要风险
|
||||
- 如果失败,备选方案是什么
|
||||
|
||||
## 注意事项
|
||||
|
||||
- 评估维度可调整,但必须说明理由
|
||||
- 不追求"最优",追求"最适合当前阶段"
|
||||
@@ -0,0 +1,6 @@
|
||||
# Dev AI 提示词库
|
||||
|
||||
| 文件 | 说明 |
|
||||
|------|------|
|
||||
| [code-style.md](code-style.md) | 代码风格、命名规范、目录组织 |
|
||||
| [doc-template.md](doc-template.md) | impact.md / acceptance.md 等文档模板 |
|
||||
@@ -0,0 +1,105 @@
|
||||
# Dev AI 代码风格规范
|
||||
|
||||
## 适用技术栈
|
||||
|
||||
| 层 | 技术 | 语言 |
|
||||
|-----|------|------|
|
||||
| 前端 | Taro 4 + React 18 | TypeScript 5.x |
|
||||
| 样式 | Tailwind CSS 4 | — |
|
||||
| 后端 | NestJS 10 | TypeScript 5.x |
|
||||
| 训练 | PyTorch 2.0 | Python 3.10+ |
|
||||
|
||||
---
|
||||
|
||||
## 1. 文件命名
|
||||
|
||||
| 类型 | 规则 | 示例 |
|
||||
|------|------|------|
|
||||
| 页面组件 | kebab-case | `error-detail.tsx` |
|
||||
| UI 组件 | kebab-case | `button.tsx` |
|
||||
| 工具函数 | kebab-case | `format-date.ts` |
|
||||
| 类型定义 | kebab-case | `error-entry.d.ts` |
|
||||
| NestJS 模块 | kebab-case | `auth.module.ts` |
|
||||
| Python 模块 | snake_case | `data_loader.py` |
|
||||
|
||||
## 2. 目录组织(前端)
|
||||
|
||||
```
|
||||
src/
|
||||
├── pages/{page-name}/ # 页面 —— 一个目录一个页面
|
||||
│ ├── index.tsx
|
||||
│ ├── index.config.ts
|
||||
│ └── index.css
|
||||
├── components/ # 通用组件
|
||||
│ └── {component-name}/
|
||||
│ └── index.tsx
|
||||
├── lib/ # 工具函数、hooks
|
||||
├── types/ # 全局类型声明
|
||||
├── server/ # NestJS 后端
|
||||
└── config/ # Taro 构建配置
|
||||
```
|
||||
|
||||
## 3. 目录组织(NestJS 后端)
|
||||
|
||||
```
|
||||
src/server/src/
|
||||
├── modules/{name}/ # 一个模块一个目录
|
||||
│ ├── {name}.module.ts
|
||||
│ ├── {name}.controller.ts
|
||||
│ ├── {name}.service.ts
|
||||
│ ├── dto/
|
||||
│ └── entities/
|
||||
├── common/ # 共享:拦截器、守卫、管道
|
||||
└── main.ts
|
||||
```
|
||||
|
||||
## 4. 命名风格
|
||||
|
||||
**TypeScript:**
|
||||
- 组件:PascalCase —— `ErrorCard`
|
||||
- 函数/变量:camelCase —— `getUserProfile`
|
||||
- 常量:UPPER_SNAKE —— `MAX_PAGE_SIZE`
|
||||
- 接口/类型:PascalCase —— `ErrorEntry`
|
||||
|
||||
**Python:**
|
||||
- 类:PascalCase —— `DataLoader`
|
||||
- 函数/变量:snake_case —— `load_dataset`
|
||||
- 常量:UPPER_SNAKE —— `BATCH_SIZE`
|
||||
|
||||
## 5. 导入顺序(TypeScript)
|
||||
|
||||
```
|
||||
1. 第三方库
|
||||
2. Taro 相关
|
||||
3. 项目内部(@/ 别名)
|
||||
4. 相对路径
|
||||
5. 样式文件
|
||||
```
|
||||
|
||||
示例:
|
||||
```typescript
|
||||
import { useState } from 'react';
|
||||
import Taro from '@tarojs/taro';
|
||||
import { Button } from '@/components/ui/button';
|
||||
import { formatDate } from './lib/date';
|
||||
import './index.css';
|
||||
```
|
||||
|
||||
## 6. 组件规范
|
||||
|
||||
- 优先使用函数组件,不用 class 组件
|
||||
- 一个文件只有一个 export default 组件
|
||||
- 组件 props 必须声明类型接口
|
||||
- 跨端兼容:避免使用 `document`、`window`(用 Taro API 代替)
|
||||
|
||||
## 7. API 调用规范
|
||||
|
||||
- 前端统一使用 `@/network.ts` 中的 `Network.request`,不要直接调用 `Taro.request`
|
||||
- 后端Controller 只做参数校验和路由,业务逻辑放在 Service
|
||||
- API 响应统一使用 Envelope 格式 `{ code, msg, data }`
|
||||
|
||||
## 8. 不能做的事
|
||||
|
||||
- 不要在 `src/` 下写测试文件(测试在 `tests/`)
|
||||
- 不要引入未经 package.json 声明的依赖
|
||||
- 不要在组件中硬编码后端地址(用 `PROJECT_DOMAIN` 全局变量)
|
||||
@@ -0,0 +1,76 @@
|
||||
# Dev AI 文档模板
|
||||
|
||||
下面三个模板用于 Dev AI 在 `review/{task_id}/` 下产出标准化文件。
|
||||
|
||||
---
|
||||
|
||||
## A. impact.md 模板(变更影响范围)
|
||||
|
||||
```markdown
|
||||
# {TASK_ID} - 变更影响范围
|
||||
|
||||
## 修改的文件
|
||||
| 文件路径 | 修改类型 | 影响等级 |
|
||||
|---------|---------|---------|
|
||||
| projects/P01_soc_sw_app/src/server/src/modules/auth/auth.service.ts | 新增 | HIGH |
|
||||
| projects/P01_soc_sw_app/src/server/src/modules/auth/dto/login.dto.ts | 新增 | MEDIUM |
|
||||
|
||||
> 影响等级:HIGH=核心逻辑变更 | MEDIUM=新增文件 | LOW=注释/格式
|
||||
|
||||
## 影响的功能模块
|
||||
- [x] 用户认证模块
|
||||
- [ ] 芯片验证模块(无影响)
|
||||
|
||||
## 需要回归测试的场景
|
||||
- 场景1: 用户登录成功流程
|
||||
- 场景2: 密码错误返回 401
|
||||
- 场景3: Token 过期后刷新
|
||||
|
||||
## 环境依赖变更
|
||||
- 新增依赖: bcrypt, @nestjs/jwt
|
||||
- 数据库迁移: 新增 users 表
|
||||
```
|
||||
|
||||
**要点:**
|
||||
- `修改的文件` 必须使用从仓库根目录开始的完整路径
|
||||
- 影响等级要实事求是,不要全写 HIGH
|
||||
- `需要回归测试的场景` 要写**用户视角**的场景,不是代码内部细节
|
||||
|
||||
---
|
||||
|
||||
## B. acceptance.md 模板(验收标准)
|
||||
|
||||
```markdown
|
||||
# {TASK_ID} - 验收标准
|
||||
|
||||
## 功能验收
|
||||
- [ ] 用户可以注册新账户(邮箱+密码)
|
||||
- [ ] 密码强度不足时提示明确错误信息
|
||||
- [ ] 登录成功返回有效 JWT Token
|
||||
|
||||
## 非功能验收
|
||||
- [ ] API 响应时间 < 200ms
|
||||
- [ ] 密码使用 bcrypt 加密存储
|
||||
- [ ] JWT Token 有效期 24 小时
|
||||
|
||||
## 测试覆盖要求
|
||||
- 单元测试覆盖率: >= 80%
|
||||
- 集成测试覆盖率: >= 60%
|
||||
- E2E 测试场景: >= 3 个
|
||||
|
||||
## 验收通过条件
|
||||
- 所有功能点验证通过
|
||||
- 测试覆盖率达标
|
||||
- 无重大安全漏洞
|
||||
```
|
||||
|
||||
**要点:**
|
||||
- 功能验收用「用户可以…」句式,让 QA AI 和人类都能看懂
|
||||
- 每个功能点对应 task.md 里的一项交付物
|
||||
- 非功能验收写具体的可测量指标,不要写「性能好」「代码整洁」
|
||||
|
||||
---
|
||||
|
||||
## C. 没有 task.md 模板
|
||||
|
||||
task.md 由人类负责人创建,Dev AI 只读不写。Dev AI 如需补充技术细节,写在 impact.md 的「技术备注」段落中,不要直接修改 task.md。
|
||||
@@ -0,0 +1,5 @@
|
||||
# QA AI 提示词库
|
||||
|
||||
| 文件 | 说明 |
|
||||
|------|------|
|
||||
| [bug-report.md](bug-report.md) | 测试反馈 / Bug 报告模板与格式规范 |
|
||||
@@ -0,0 +1,67 @@
|
||||
# QA AI Bug 报告模板
|
||||
|
||||
以下模板用于 QA AI 在 `review/{task_id}/feedback/round{round}.md` 中提交测试反馈。
|
||||
|
||||
---
|
||||
|
||||
## 模板
|
||||
|
||||
```markdown
|
||||
# {TASK_ID} - 第 {N} 轮测试反馈
|
||||
|
||||
## 基本信息
|
||||
- 测试时间: YYYY-MM-DD
|
||||
- 测试项目: P01_soc_sw_app / P02_soc_sw_training / P03_soc_sw_web
|
||||
- 测试环境: Node 20.x / Python 3.10
|
||||
|
||||
## 测试结果概览
|
||||
| 指标 | 数值 |
|
||||
|------|------|
|
||||
| 测试用例总数 | N |
|
||||
| 通过 | N |
|
||||
| 失败 | N |
|
||||
| 跳过 | N |
|
||||
| 代码覆盖率 | XX% |
|
||||
|
||||
## 失败用例清单
|
||||
|
||||
### Bug #1: {简短标题}
|
||||
- **严重程度**: BLOCKER / HIGH / MEDIUM / LOW
|
||||
- **涉及文件**: `projects/...`(完整路径)
|
||||
- **测试场景**: 用户登录时输入正确密码
|
||||
- **预期结果**: 返回 200 和 JWT Token
|
||||
- **实际结果**: 返回 500 Internal Server Error
|
||||
- **复现步骤**:
|
||||
1. POST /api/auth/login
|
||||
2. body: {"email": "test@example.com", "password": "correct"}
|
||||
- **建议修复**: 检查 auth.service.ts 第 42 行的异常处理
|
||||
|
||||
### Bug #2: ...
|
||||
(同上格式)
|
||||
|
||||
## 改进建议(非 Bug)
|
||||
- 建议 1: 登录接口缺少限流保护
|
||||
- 建议 2: 密码重置的邮件模板可以更友好
|
||||
|
||||
## 下一步
|
||||
- [ ] Dev AI 修复上述 Bug 后,QA AI 进行第 {N+1} 轮测试
|
||||
- [ ] 如第 3 轮仍未通过,升级给人类负责人裁决
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 严重程度定义
|
||||
|
||||
| 级别 | 含义 | 举例 |
|
||||
|------|------|------|
|
||||
| BLOCKER | 核心功能不可用,无法继续测试 | 登录接口直接崩溃、数据库连不上 |
|
||||
| HIGH | 功能逻辑错误,用户无法正常使用 | 登录成功但不返回 Token |
|
||||
| MEDIUM | 功能可用但与预期有偏差 | 返回的日期格式不对、错误码不对 |
|
||||
| LOW | 不影响功能的瑕疵 | 提示文案不友好、缺少空值校验 |
|
||||
|
||||
## 规则
|
||||
|
||||
1. **每轮反馈用新文件**:`round1.md` → `round2.md` → `round3.md`
|
||||
2. **最多 3 轮**:第 3 轮仍有 BLOCKER/HIGH Bug → 在报告中标注「建议人类负责人介入」
|
||||
3. **涉及文件必须用完整路径**:从仓库根目录开始,方便 Dev AI 定位
|
||||
4. **改进建议不要超过 3 条**:聚焦最重要的
|
||||
@@ -0,0 +1,57 @@
|
||||
# AI 角色工作台
|
||||
|
||||
## 三层架构
|
||||
|
||||
```
|
||||
控制面板 (dashboard.md) → 人类 + Arch AI 共享入口,项目唯一真实来源
|
||||
↓ Arch AI 拆解任务
|
||||
执行层 (.ai/tasks/active/) → Coder/Tester 各自独立 task 文件,自包含
|
||||
```
|
||||
|
||||
## 四个角色入口
|
||||
|
||||
| 角色 | 平台+模型 | 入口 | 读几个文件 |
|
||||
|------|----------|------|-----------|
|
||||
| 人类 | — | [dashboard.md](../../dashboard.md) 顶部「人类区」 | 1 |
|
||||
| Arch AI | Claude Code + DeepSeek V4 Pro | [dashboard.md](../../dashboard.md) 全文 | 1 |
|
||||
| Coder AI | Trae CN + GLM-4.6 | [card.md](dev/card.md) → 对应 task 文件 | 2 |
|
||||
| Tester AI | Coze CN | [card.md](qa/card.md) → 对应 task 文件 | 2 |
|
||||
|
||||
## 使用方式
|
||||
|
||||
**Arch AI**:
|
||||
```
|
||||
1. 读 dashboard.md → 了解全貌 + ADR 摘要 + task 状态
|
||||
2. 需要细节 → 按链接按需加载
|
||||
3. 人类决策 → 读 DECISIONS.md
|
||||
4. 拆分新任务 → 按模板写 .ai/tasks/active/P01-XXX.md
|
||||
5. 完成后 → 更新 dashboard.md task 状态
|
||||
```
|
||||
|
||||
**Coder AI (Trae + GLM-4.6)**:
|
||||
```
|
||||
1. 读 card.md → 身份+权限
|
||||
2. 读对应 task 文件 → 输入/输出/约束/验收方法
|
||||
3. 写代码
|
||||
4. 自验 → 填写完成报告 → commit [READY_FOR_TEST]
|
||||
```
|
||||
|
||||
**Tester AI (Coze)**:
|
||||
```
|
||||
1. git pull + 读 card.md
|
||||
2. git log --grep="READY_FOR_TEST" → 找待测 task
|
||||
3. 读对应 Tester task 文件 → 测试内容/执行方式/报告格式
|
||||
4. 拉代码 → 沙盒执行 → 生成 JSON 报告
|
||||
5. commit 报告
|
||||
```
|
||||
|
||||
## 关键原则
|
||||
|
||||
1. **每个角色只有一个入口文件** — 不拼图,不切换
|
||||
2. **Worker AI 不需要知道项目全貌** — task 文件就是它的全部世界
|
||||
3. **Git 是唯一的集成总线** — 跨平台交接通过 commit message 信号
|
||||
4. **弱模型适配强约束** — 给 GLM-4.6 的任务 = 单文件粒度,零隐含上下文
|
||||
|
||||
## 归档
|
||||
|
||||
旧的 DASHBOARD.md / ROADMAP.md / roles/*/today.md / roles/*/queue.md → `.ai/archive/`
|
||||
@@ -0,0 +1,43 @@
|
||||
# Arch AI — 架构师
|
||||
|
||||
## 身份
|
||||
|
||||
我是架构 AI。负责需求分析、架构设计、技术选型、任务分解。
|
||||
|
||||
**平台**: Claude Code + DeepSeek V4 Pro(最强推理 + Agent 框架)
|
||||
|
||||
## 启动流程
|
||||
|
||||
1. 读 `dashboard.md` 全文(< 2K tokens)→ 项目全貌 + ADR 索引 + task 状态面板
|
||||
2. 需要细节 → 按 dashboard 中的链接按需加载
|
||||
3. 人类决策 → 读 `DECISIONS.md`
|
||||
4. 完成任务 → 更新 dashboard.md + 对应 ADR/knowledge 文件
|
||||
|
||||
## 当前阶段
|
||||
|
||||
Phase 1: 基础搭建 — `dashboard.md`
|
||||
|
||||
## 核心交付物
|
||||
|
||||
- 产品需求 + 系统架构设计
|
||||
- 技术选型 + 架构决策 (ADR)
|
||||
- 任务分解 → `.ai/tasks/active/P01-XXX.md`
|
||||
- 跨模块协调(Coder ↔ Tester 交接协议)
|
||||
- 人类决策梳理 → `DECISIONS.md`
|
||||
|
||||
## 关键入口
|
||||
|
||||
| 文件 | 说明 |
|
||||
|------|------|
|
||||
| `dashboard.md` | 唯一控制面板(替代旧 DASHBOARD.md / ROADMAP.md) |
|
||||
| `DECISIONS.md` | 待人类决策事项 |
|
||||
| `.ai/knowledge/decisions.md` | ADR 全文 |
|
||||
| `.ai/knowledge/lessons.md` | 经验教训 |
|
||||
| `.ai/knowledge/patterns.md` | 可复用模式 |
|
||||
| `.ai/tasks/active/` | 所有活跃 task 文件 |
|
||||
|
||||
## 权限
|
||||
|
||||
**可写**: docs/ shared/ projects/*/src/ projects/*/docs/ .ai/tasks/ .ai/knowledge/ dashboard.md DECISIONS.md
|
||||
**只读**: projects/*/tests/ reports/
|
||||
**禁止**: 无
|
||||
@@ -0,0 +1,40 @@
|
||||
# Dev AI — 开发者
|
||||
|
||||
## 身份
|
||||
|
||||
我是开发 AI。负责编写业务代码、技术文档、Bug 修复。
|
||||
|
||||
**平台**: Trae CN + GLM-4.6(代码生成 + 文件操作,单文件粒度)
|
||||
|
||||
## 启动流程
|
||||
|
||||
1. 读本文件(card.md)→ 我是谁、权限、当前阶段
|
||||
2. 读 dashboard.md → 找到自己对应的 task(状态为 `todo` 的 Coder 任务)
|
||||
3. 打开对应 task 文件(如 `.ai/tasks/active/P01-001.md`)→ **这就是你的全部世界**
|
||||
4. 按 task 文件中的「输入」「输出」「约束」「验收方法」执行
|
||||
5. 完成后 → 填写 task 文件的「完成报告」→ commit(message 含 `[READY_FOR_TEST]`)
|
||||
|
||||
**不需要**读 ADR 全文、知识库、或其他 task 文件。你的 task 文件已经包含了完成任务所需的全部信息。
|
||||
|
||||
## 当前阶段
|
||||
|
||||
Phase 1: 基础搭建
|
||||
|
||||
## 核心交付物
|
||||
|
||||
- 业务代码实现 (projects/*/src/)
|
||||
- 项目文档 (projects/*/docs/)
|
||||
|
||||
## 关键入口
|
||||
|
||||
| 文件 | 说明 |
|
||||
|------|------|
|
||||
| `dashboard.md` | 查找自己的 task |
|
||||
| `.ai/tasks/active/P01-XXX.md` | 你的 task 文件(开工时读这个) |
|
||||
| `.ai/tasks/templates/TASK_TEMPLATE_CODER.md` | task 格式说明 |
|
||||
|
||||
## 权限
|
||||
|
||||
**可写**: projects/*/src/ projects/*/docs/ docs/ tools/ data/ shared/
|
||||
**只读**: review/*/task.md review/*/feedback/ .ai/tasks/active/
|
||||
**禁止**: projects/*/tests/ reports/
|
||||
@@ -0,0 +1,42 @@
|
||||
# QA AI — 测试者
|
||||
|
||||
## 身份
|
||||
|
||||
我是测试 AI。负责在 Coze 沙盒中拉取代码、执行测试、生成报告。
|
||||
|
||||
**平台**: Coze CN(沙盒执行 + 自动化测试)
|
||||
|
||||
## 启动流程
|
||||
|
||||
1. 读本文件(card.md)→ 我是谁、权限
|
||||
2. `git pull` → 拉取最新代码
|
||||
3. `git log --oneline --grep="READY_FOR_TEST"` → 查找待测试的 task
|
||||
4. 打开对应 Tester task 文件(如 `.ai/tasks/active/T01-XXX.md`)→ **这就是你的全部世界**
|
||||
5. 按 task 文件中的「测试目标」「测试内容」「执行方式」执行
|
||||
6. 生成测试报告 → `reports/{编号}-{日期}.json`
|
||||
7. 填写 task 文件的「完成报告」→ commit
|
||||
|
||||
**关键**: 你不需要知道项目全貌、不需要读架构文档、不需要读 ADR。你的 task 文件 + 被测代码 = 你需要的一切。
|
||||
|
||||
## 当前阶段
|
||||
|
||||
Phase 1: 基础搭建
|
||||
|
||||
## 核心交付物
|
||||
|
||||
- 测试报告 (reports/)
|
||||
- Bug 反馈(在测试报告中标注 FAIL 项)
|
||||
|
||||
## 关键入口
|
||||
|
||||
| 文件 | 说明 |
|
||||
|------|------|
|
||||
| `dashboard.md` | 查找自己的 task |
|
||||
| `.ai/tasks/active/T01-XXX.md` | 你的 task 文件(开工时读这个) |
|
||||
| `.ai/tasks/templates/TASK_TEMPLATE_TESTER.md` | task 格式说明 |
|
||||
|
||||
## 权限
|
||||
|
||||
**可写**: projects/*/tests/ reports/
|
||||
**只读**: projects/*/src/ projects/*/docs/ docs/ data/ shared/ .ai/tasks/active/
|
||||
**禁止**: .ai/ tools/
|
||||
@@ -0,0 +1,47 @@
|
||||
# Task {编号}: {标题}
|
||||
|
||||
## 元信息
|
||||
|
||||
| 字段 | 值 |
|
||||
|------|-----|
|
||||
| 状态 | `todo` → `in_progress` → `done` → `tested` → `accepted` |
|
||||
| 优先级 | P0 / P1 / P2 |
|
||||
| 依赖 | {上游 task 编号,无则写「无」} |
|
||||
| 分配给 | Coder AI (Trae CN + GLM-4.6) |
|
||||
|
||||
## 输入
|
||||
|
||||
**要读的文件**:
|
||||
- `{完整路径}` — {一句话说明}
|
||||
|
||||
**参考的 ADR**:
|
||||
- ADR-XXX: {一句话说明关联}
|
||||
|
||||
**上游依赖产出**:
|
||||
- {上游 task 编号}: {产出是什么}
|
||||
|
||||
## 输出
|
||||
|
||||
**要生成/修改的文件**:
|
||||
- `{完整路径}` — {说明}
|
||||
- `{完整路径}` — {说明}
|
||||
|
||||
**验收方法**:
|
||||
```bash
|
||||
{具体命令或步骤,Coder 可以自己跑来验证}
|
||||
```
|
||||
|
||||
## 约束
|
||||
|
||||
- 不碰: `{目录路径}`
|
||||
- 技术栈: {库/版本}
|
||||
- 遵循: `{规范文件}`
|
||||
|
||||
## 完成报告
|
||||
|
||||
> Coder 完成后填写。Commit message 以 `[READY_FOR_TEST]` 结尾。
|
||||
|
||||
- [ ] 输出文件已生成
|
||||
- [ ] 验收命令通过
|
||||
- [ ] Commit: `{hash}`
|
||||
- [ ] Commit message: `feat({编号}): {描述} [READY_FOR_TEST]`
|
||||
@@ -0,0 +1,75 @@
|
||||
# Task {编号}: {标题}
|
||||
|
||||
## 元信息
|
||||
|
||||
| 字段 | 值 |
|
||||
|------|-----|
|
||||
| 状态 | `todo` → `in_progress` → `done` → `accepted` |
|
||||
| 优先级 | P0 / P1 / P2 |
|
||||
| 对应 Coder task | {P01-XXX} |
|
||||
| 分配给 | Tester AI (Coze CN) |
|
||||
|
||||
## 测试目标
|
||||
|
||||
{一句话 —— 验证什么功能/模块}
|
||||
|
||||
## 被测对象
|
||||
|
||||
**Coder 产出的 commit**:
|
||||
- 从 git log 查找 commit message 包含 `[READY_FOR_TEST]` 且 task 编号为 `{编号}` 的最新 commit
|
||||
- 或直接读 `.ai/roles/dev/card.md` 里指定的代码目录
|
||||
|
||||
**Coder task 文件**:
|
||||
- [P01-XXX]({路径}) — 理解该 task 的输入/输出/约束
|
||||
|
||||
## 测试内容
|
||||
|
||||
**关键路径**:
|
||||
- [ ] {关键路径 1}
|
||||
- [ ] {关键路径 2}
|
||||
- [ ] {边界条件}
|
||||
|
||||
**不应发生的**:
|
||||
- [ ] {错误情况 1}
|
||||
|
||||
## 执行方式
|
||||
|
||||
```
|
||||
1. git pull → 拉取最新代码
|
||||
2. 在 Coze 沙盒中执行测试
|
||||
3. 生成测试报告
|
||||
```
|
||||
|
||||
## 报告格式
|
||||
|
||||
输出 `reports/{编号}-{日期}.json`:
|
||||
|
||||
```json
|
||||
{
|
||||
"task": "{编号}",
|
||||
"date": "{YYYY-MM-DD}",
|
||||
"summary": {
|
||||
"total": {N},
|
||||
"passed": {N},
|
||||
"failed": {N}
|
||||
},
|
||||
"results": [
|
||||
{
|
||||
"case": "{用例名}",
|
||||
"status": "pass|fail",
|
||||
"details": "{失败时的详细信息}"
|
||||
}
|
||||
],
|
||||
"conclusion": "PASS|FAIL|RETRY"
|
||||
}
|
||||
```
|
||||
|
||||
## 完成报告
|
||||
|
||||
> Tester 完成后填写。
|
||||
|
||||
- [ ] 测试已执行
|
||||
- [ ] 报告已生成 → `reports/{编号}-{日期}.json`
|
||||
- [ ] Commit: `{hash}`
|
||||
- [ ] Commit message: `test({编号}): {结论}`
|
||||
- [ ] 结论: PASS / FAIL / RETRY
|
||||
@@ -0,0 +1,253 @@
|
||||
---
|
||||
name: "add-subproject"
|
||||
description: "Adds a new subproject to the existing '1 Human + 2 AI' collaboration framework. Invoke when you need to add a new subproject like web admin, data entry program, etc."
|
||||
---
|
||||
|
||||
# 添加子项目 Skill
|
||||
|
||||
## 功能
|
||||
|
||||
在现有的"1人+2AI"协作框架中动态添加新的子项目,自动创建:
|
||||
- 项目目录结构(src/、tests/、docs/)
|
||||
- 环境配置文件(ENVIRONMENT.md)
|
||||
- README.md 占位文件
|
||||
- 示例任务目录(含 task.md、acceptance.md、impact.md、feedback/)
|
||||
|
||||
## 使用方法
|
||||
|
||||
### 参数说明
|
||||
|
||||
| 参数 | 类型 | 必填 | 说明 |
|
||||
|------|------|------|------|
|
||||
| project_name | string | 是 | 子项目名称,如 "web_admin"、"data_entry" |
|
||||
| project_number | string | 否 | 项目编号,如 "P03",默认自动生成 |
|
||||
|
||||
### 调用方式
|
||||
|
||||
```bash
|
||||
# 方式1:仅提供项目名称(自动分配编号)
|
||||
# skill 会自动检测现有项目编号,分配下一个编号
|
||||
add-subproject --project_name="web_admin"
|
||||
|
||||
# 方式2:指定项目编号
|
||||
add-subproject --project_name="web_admin" --project_number="P03"
|
||||
```
|
||||
|
||||
## 创建的内容
|
||||
|
||||
### 目录结构
|
||||
```
|
||||
projects/
|
||||
└── P03_web_admin/ # 新项目目录
|
||||
├── src/ # Dev AI 工作区
|
||||
│ ├── server/ # NestJS 后端(如需要)
|
||||
│ ├── config/ # 构建配置
|
||||
│ ├── types/ # 全局类型
|
||||
│ └── README.md
|
||||
├── tests/ # QA AI 工作区
|
||||
│ └── README.md
|
||||
├── docs/ # 项目文档
|
||||
│ ├── 01_需求概要.md
|
||||
│ ├── 02_架构设计.md
|
||||
│ └── 03_接口定义.md
|
||||
└── ENVIRONMENT.md # 环境配置
|
||||
```
|
||||
|
||||
### 任务目录
|
||||
```
|
||||
review/
|
||||
└── active/
|
||||
└── P03-001/ # 新项目的第一个任务
|
||||
├── task.md # 任务描述(人类创建,AI 只读)
|
||||
├── acceptance.md # 验收标准
|
||||
├── impact.md # 变更影响范围
|
||||
└── feedback/ # 测试反馈
|
||||
└── round1.md
|
||||
```
|
||||
|
||||
## 执行命令
|
||||
|
||||
```bash
|
||||
# 获取下一个项目编号(PowerShell 兼容版本)
|
||||
get_next_project_number() {
|
||||
# 兼容 Linux/macOS
|
||||
if command -v ls >/dev/null 2>&1; then
|
||||
ls -la projects/ | grep -E '^P[0-9]+_' | sort | tail -1 | sed 's/P\([0-9]*\)_.*$/\1/'
|
||||
# 兼容 Windows PowerShell
|
||||
elif command -v powershell >/dev/null 2>&1; then
|
||||
powershell -Command "(Get-ChildItem projects -Directory | Where-Object { $_.Name -match '^P\d+_' } | Sort-Object Name | Select-Object -Last 1).Name -replace 'P(\d+)_.*', '$1'"
|
||||
else
|
||||
echo "0"
|
||||
fi
|
||||
}
|
||||
|
||||
# 创建项目目录
|
||||
PROJECT_NAME="web_admin"
|
||||
NEXT_NUM=$(get_next_project_number)
|
||||
PROJECT_NUM="P$(printf '%02d' $((NEXT_NUM + 1)))"
|
||||
PROJECT_DIR="projects/${PROJECT_NUM}_${PROJECT_NAME}"
|
||||
|
||||
mkdir -p "${PROJECT_DIR}"/{src/{server,config,types},tests,docs}
|
||||
|
||||
# 创建 ENVIRONMENT.md
|
||||
cat > "${PROJECT_DIR}/ENVIRONMENT.md" << EOF
|
||||
# ${PROJECT_NUM}_${PROJECT_NAME} - 环境准备
|
||||
|
||||
## 依赖
|
||||
- Node.js >= 20.x
|
||||
- pnpm >= 9.0.0
|
||||
|
||||
## 安装
|
||||
pnpm install
|
||||
|
||||
## 运行
|
||||
pnpm dev
|
||||
EOF
|
||||
|
||||
# 创建文档
|
||||
cat > "${PROJECT_DIR}/docs/01_需求概要.md" << EOF
|
||||
# ${PROJECT_NUM}_${PROJECT_NAME} - 需求概要
|
||||
|
||||
## 项目概述
|
||||
|
||||
## 功能需求
|
||||
|
||||
## 非功能需求
|
||||
EOF
|
||||
|
||||
cat > "${PROJECT_DIR}/docs/02_架构设计.md" << EOF
|
||||
# ${PROJECT_NUM}_${PROJECT_NAME} - 架构设计
|
||||
|
||||
## 技术选型
|
||||
|
||||
## 架构图
|
||||
|
||||
## 模块划分
|
||||
EOF
|
||||
|
||||
cat > "${PROJECT_DIR}/docs/03_接口定义.md" << EOF
|
||||
# ${PROJECT_NUM}_${PROJECT_NAME} - 接口定义
|
||||
|
||||
## API 列表
|
||||
|
||||
## 数据结构
|
||||
EOF
|
||||
|
||||
# 创建 README.md
|
||||
echo "# ${PROJECT_NAME} - src" > "${PROJECT_DIR}/src/README.md"
|
||||
echo "# ${PROJECT_NAME} - tests" > "${PROJECT_DIR}/tests/README.md"
|
||||
|
||||
# 创建示例任务
|
||||
mkdir -p "review/active/${PROJECT_NUM}-001/feedback"
|
||||
|
||||
cat > "review/active/${PROJECT_NUM}-001/task.md" << EOF
|
||||
# ${PROJECT_NUM}-001 - 项目初始化
|
||||
|
||||
## 任务信息
|
||||
- 任务编号:${PROJECT_NUM}-001
|
||||
- 项目:${PROJECT_NUM}_${PROJECT_NAME}
|
||||
- 创建时间:$(date +%Y-%m-%d)
|
||||
- 状态:TODO
|
||||
|
||||
## 任务描述
|
||||
完成 ${PROJECT_NAME} 项目的初始化工作。
|
||||
|
||||
## 交付物
|
||||
- 项目目录结构
|
||||
- 基础配置文件
|
||||
- README 文档
|
||||
EOF
|
||||
|
||||
cat > "review/active/${PROJECT_NUM}-001/acceptance.md" << EOF
|
||||
# ${PROJECT_NUM}-001 - 验收标准
|
||||
|
||||
## 功能验收
|
||||
- [ ] 项目目录结构完整
|
||||
- [ ] ENVIRONMENT.md 已创建
|
||||
- [ ] 文档目录已初始化
|
||||
|
||||
## 测试覆盖要求
|
||||
- 无需测试(初始化任务)
|
||||
EOF
|
||||
|
||||
cat > "review/active/${PROJECT_NUM}-001/impact.md" << EOF
|
||||
# ${PROJECT_NUM}-001 - 变更影响范围
|
||||
|
||||
## 修改的文件
|
||||
| 文件路径 | 修改类型 | 影响等级 |
|
||||
|---------|---------|---------|
|
||||
| ${PROJECT_DIR}/ | 新增 | LOW |
|
||||
|
||||
## 影响的功能模块
|
||||
- [x] 项目初始化
|
||||
|
||||
## 需要回归测试的场景
|
||||
- 无(新项目)
|
||||
|
||||
## 环境依赖变更
|
||||
- 无
|
||||
EOF
|
||||
|
||||
cat > "review/active/${PROJECT_NUM}-001/feedback/round1.md" << EOF
|
||||
# ${PROJECT_NUM}-001 - 第一轮测试反馈
|
||||
|
||||
## 基本信息
|
||||
- 测试时间: $(date +%Y-%m-%d)
|
||||
- 测试项目: ${PROJECT_NUM}_${PROJECT_NAME}
|
||||
- 测试环境: 待配置
|
||||
|
||||
## 测试结果概览
|
||||
| 指标 | 数值 |
|
||||
|------|------|
|
||||
| 测试用例总数 | 0 |
|
||||
| 通过 | 0 |
|
||||
| 失败 | 0 |
|
||||
| 跳过 | 0 |
|
||||
| 代码覆盖率 | 0% |
|
||||
|
||||
## 反馈
|
||||
待 Dev AI 完成开发后执行测试
|
||||
EOF
|
||||
|
||||
# 更新 README.md(如果存在)
|
||||
if [ -f README.md ]; then
|
||||
echo "- [${PROJECT_NUM}_${PROJECT_NAME}](${PROJECT_DIR})" >> README.md
|
||||
fi
|
||||
|
||||
echo "✅ 子项目 ${PROJECT_NUM}_${PROJECT_NAME} 创建成功!"
|
||||
echo "📖 请阅读 AGENTS.md 了解协作规则"
|
||||
echo "🚀 在 review/active/${PROJECT_NUM}-001/ 下查看示例任务结构"
|
||||
```
|
||||
|
||||
## 使用场景
|
||||
|
||||
**何时调用此 skill:**
|
||||
- ✅ 添加新的 Web 管理程序
|
||||
- ✅ 添加数据录入程序
|
||||
- ✅ 添加任何新的子项目模块
|
||||
- ✅ 扩展现有项目架构
|
||||
|
||||
**不适用场景:**
|
||||
- ❌ 项目尚未初始化(需先调用 ai-collab-setup)
|
||||
- ❌ 修改现有项目结构
|
||||
|
||||
## 后续步骤
|
||||
|
||||
skill 执行后:
|
||||
1. 检查 `projects/${PROJECT_NUM}_${PROJECT_NAME}/` 目录结构
|
||||
2. 阅读 `review/active/${PROJECT_NUM}-001/task.md` 示例任务
|
||||
3. 根据实际需求修改 `task.md` 为真实任务
|
||||
4. Dev AI 开始开发
|
||||
|
||||
---
|
||||
|
||||
**Version**: 2.0
|
||||
**Created**: 2026-05-22
|
||||
**Updated**: 2026-05-23
|
||||
**Based On**: SoC_SW AI Programming Project
|
||||
**Changes from v1**:
|
||||
- 目录结构新增 src/server/、src/config/、src/types/ 子目录
|
||||
- 示例任务增加完整的 feedback/round1.md 格式(含基本信息表格)
|
||||
- impact.md 增加「影响的功能模块」和「环境依赖变更」段落
|
||||
- 脚本兼容 Windows PowerShell 和 Linux/macOS
|
||||
- ENVIRONMENT.md 默认使用 pnpm 包管理器
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,173 @@
|
||||
---
|
||||
name: "git"
|
||||
description: "Wraps common git operations as parameterized actions. Invoke when user wants to commit, push, pull, branch, or check git status."
|
||||
---
|
||||
|
||||
# Git Skill
|
||||
|
||||
## 功能
|
||||
|
||||
将常用 git 操作封装为参数化动作,避免频繁手动提交,统一管理版本控制。
|
||||
|
||||
## 触发条件
|
||||
|
||||
- 用户要求提交代码
|
||||
- 用户要求查看状态/日志/差异
|
||||
- 用户要求创建/切换分支
|
||||
- 用户要求拉取/推送代码
|
||||
- 用户要求回退/重置
|
||||
|
||||
## 参数说明
|
||||
|
||||
| 参数 | 说明 | 示例 |
|
||||
|------|------|------|
|
||||
| `action` | 操作类型 | status, add, commit, push, pull, branch, log, diff, stash, reset |
|
||||
| `message` | 提交信息(commit 时必填) | "feat(P01-001): 实现用户登录" |
|
||||
| `branch` | 分支名(branch/push/pull 时使用) | feature/P01-001-login |
|
||||
| `files` | 指定文件(add 时使用,默认全部) | ["src/login.ts", "tests/login.test.ts"] |
|
||||
| `force` | 强制操作(push/reset 时使用) | true/false |
|
||||
| `count` | 日志条数(log 时使用) | 10 |
|
||||
|
||||
## 操作类型
|
||||
|
||||
### 1. status - 查看状态
|
||||
|
||||
```bash
|
||||
git status
|
||||
git status -s # 简洁模式
|
||||
```
|
||||
|
||||
**输出**:显示已修改、已暂存、未跟踪的文件
|
||||
|
||||
### 2. add - 添加文件
|
||||
|
||||
```bash
|
||||
git add -A # 添加所有变更
|
||||
git add <files> # 添加指定文件
|
||||
git add -p # 交互式选择(逐块确认)
|
||||
```
|
||||
|
||||
### 3. commit - 提交
|
||||
|
||||
**提交信息格式**(必须遵循 AGENTS.md 命名规范):
|
||||
```
|
||||
<type>(<scope>): <subject>
|
||||
|
||||
<body>
|
||||
|
||||
<footer>
|
||||
```
|
||||
|
||||
| type | 说明 |
|
||||
|------|------|
|
||||
| feat | 新功能 |
|
||||
| fix | Bug 修复 |
|
||||
| docs | 文档更新 |
|
||||
| style | 代码格式(不影响功能) |
|
||||
| refactor | 重构 |
|
||||
| test | 测试相关 |
|
||||
| chore | 构建/工具链 |
|
||||
|
||||
**示例**:
|
||||
```
|
||||
feat(P01-001): 实现用户登录功能
|
||||
|
||||
- 添加登录页面组件
|
||||
- 实现微信授权登录
|
||||
- 添加登录状态管理
|
||||
|
||||
Closes #123
|
||||
```
|
||||
|
||||
### 4. push - 推送
|
||||
|
||||
```bash
|
||||
git push # 推送到当前分支
|
||||
git push origin <branch> # 推送到指定分支
|
||||
git push -u origin <branch> # 首次推送并设置上游
|
||||
git push --force # 强制推送(谨慎使用)
|
||||
```
|
||||
|
||||
### 5. pull - 拉取
|
||||
|
||||
```bash
|
||||
git pull # 拉取并合并
|
||||
git pull --rebase # 拉取并变基
|
||||
```
|
||||
|
||||
### 6. branch - 分支管理
|
||||
|
||||
```bash
|
||||
git branch # 查看本地分支
|
||||
git branch -a # 查看所有分支
|
||||
git branch <name> # 创建分支
|
||||
git checkout <name> # 切换分支
|
||||
git checkout -b <name> # 创建并切换
|
||||
git branch -d <name> # 删除分支
|
||||
```
|
||||
|
||||
### 7. log - 查看日志
|
||||
|
||||
```bash
|
||||
git log --oneline -<count> # 简洁日志
|
||||
git log --graph --oneline # 图形化
|
||||
git log --since="2026-05-20" # 按日期过滤
|
||||
```
|
||||
|
||||
### 8. diff - 查看差异
|
||||
|
||||
```bash
|
||||
git diff # 未暂存变更
|
||||
git diff --cached # 已暂存变更
|
||||
git diff HEAD # 所有变更
|
||||
git diff <file> # 指定文件
|
||||
```
|
||||
|
||||
### 9. stash - 暂存
|
||||
|
||||
```bash
|
||||
git stash # 暂存当前变更
|
||||
git stash list # 查看暂存列表
|
||||
git stash pop # 恢复最新暂存
|
||||
git stash apply <stash@{n}> # 应用指定暂存
|
||||
```
|
||||
|
||||
### 10. reset - 重置
|
||||
|
||||
```bash
|
||||
git reset --soft HEAD~1 # 撤销提交,保留变更
|
||||
git reset --mixed HEAD~1 # 撤销提交,变更回暂存区
|
||||
git reset --hard HEAD~1 # 撤销提交,丢弃变更(危险)
|
||||
```
|
||||
|
||||
## 执行流程
|
||||
|
||||
### 提交流程(commit + push)
|
||||
|
||||
1. `git status` - 查看当前状态
|
||||
2. `git add -A` 或 `git add <files>` - 添加文件
|
||||
3. `git diff --cached` - 确认变更内容
|
||||
4. `git commit -m "<message>"` - 提交
|
||||
5. `git push` - 推送(如用户要求)
|
||||
|
||||
### 分支创建流程
|
||||
|
||||
1. `git branch` - 查看当前分支
|
||||
2. `git checkout -b <branch>` - 创建并切换
|
||||
3. 提示用户后续提交将在此分支进行
|
||||
|
||||
## 注意事项
|
||||
|
||||
1. **提交频率**:不要每改一个文件就提交,按功能/任务粒度提交
|
||||
2. **提交信息**:必须遵循 AGENTS.md 命名规范,包含项目编号和任务编号
|
||||
3. **推送前确认**:推送前必须让用户确认,除非明确要求
|
||||
4. **强制推送**:必须明确警告用户,确认后才能执行
|
||||
5. **冲突处理**:遇到合并冲突时,先展示冲突文件,让用户决定如何处理
|
||||
6. **文档同步**:代码提交后,提醒用户使用 `update-docs` Skill 同步文档
|
||||
|
||||
---
|
||||
|
||||
**Version**: 1.0
|
||||
**Created**: 2026-05-23
|
||||
**Based On**: SoC_SW AI Programming Project
|
||||
**Purpose**: 统一管理 git 操作,避免频繁提交,确保提交信息规范
|
||||
@@ -0,0 +1,107 @@
|
||||
---
|
||||
name: "project-init"
|
||||
description: "框架脱敏/初始化:将当前项目框架层导出为通用模板,或从模板初始化新项目。用户说「导出框架」「初始化新项目」「套这个框架开新项目」时调用。"
|
||||
---
|
||||
|
||||
# 项目框架脱敏与初始化
|
||||
|
||||
## 功能
|
||||
|
||||
将当前项目的「框架层」(AI 协作体系)与「项目层」(SoC_SW 具体内容)分离。框架层可导出为通用模板,用于初始化任意新项目。
|
||||
|
||||
**核心逻辑**:框架是骨架(角色、权限、工作流、Skill),项目是肉(PRD、架构、代码、ADR)。同一套骨架可以长出不同的肉。
|
||||
|
||||
## 触发条件
|
||||
|
||||
- 用户说「导出框架」「脱敏」「生成模板」
|
||||
- 用户说「初始化新项目」「套这个框架开新项目」「用这个骨架开个 IC 验证项目」
|
||||
- 当前项目框架层有重大更新后,用户想刷新模板
|
||||
|
||||
## 两个模式
|
||||
|
||||
### Export(脱敏导出)
|
||||
|
||||
将当前项目框架层文件复制 → 把 SoC_SW 具体值替换为 `{{变量}}` → 输出干净的模板目录。
|
||||
|
||||
### Init(初始化新项目)
|
||||
|
||||
读取模板 → 把 `{{变量}}` 替换为用户提供的新项目值 → 输出可开工的新项目目录。
|
||||
|
||||
## 变量定义
|
||||
|
||||
见 `TEMPLATE.yaml`。核心变量:
|
||||
|
||||
| 变量 | 当前值(SoC_SW) | 说明 |
|
||||
|------|-------------------|------|
|
||||
| `{{PROJECT_NAME}}` | SoC_SW | 项目名 |
|
||||
| `{{PROJECT_CONCEPT}}` | SoC回片软件验证测试AI辅助自动化数字化改造实行落地运行 | 核心概念 |
|
||||
| `{{PROJECT_DESCRIPTION}}` | AI辅助的SoC回片软件验证测试自动化数字化平台 | 一句话描述 |
|
||||
| `{{P01_NAME}}` | P01_soc_sw_app | 主应用目录名 |
|
||||
| `{{DATABASE_URL}}` | postgresql://.../soc_sw | 数据库连接 |
|
||||
|
||||
## 框架层 vs 项目层
|
||||
|
||||
见 `SYNC.md`。核心区分:
|
||||
|
||||
**框架层(导出/同步)**:
|
||||
- `AGENTS.md` — AI 角色+权限
|
||||
- `dashboard.md` — 控制面板结构
|
||||
- `DECISIONS.md` — 决策入口
|
||||
- `.ai/principles.md` — 设计原则
|
||||
- `.ai/config/` — AI 配置
|
||||
- `.ai/prompts/` — 提示词模板
|
||||
- `.ai/roles/*/card.md` — 角色身份卡
|
||||
- `.ai/phases/INDEX.md` — 阶段索引
|
||||
- `.ai/knowledge/patterns.md` — 可复用模式
|
||||
- `.ai/knowledge/lessons.md` — 框架级教训
|
||||
- `.ai/tasks/templates/` — Task 模板
|
||||
- `.trae/skills/` — 全部 Skill
|
||||
- `docs/使用手册.md` — 使用说明
|
||||
- `ENVIRONMENT.md` — 环境结构
|
||||
- `TEMPLATE.yaml` — 变量定义
|
||||
- `SYNC.md` — 边界定义
|
||||
|
||||
**项目层(不导出,新项目自己写)**:
|
||||
- `.ai/tasks/active/` — 具体 task
|
||||
- `.ai/phases/phase-*/goal.md, scope.md, architecture.md, decisions.md, completion.md`
|
||||
- `.ai/knowledge/decisions.md` — 项目 ADR
|
||||
- `.ai/knowledge/journal/` — 开发日志
|
||||
- `docs/01_*/ ~ docs/06_*/` — PRD、架构设计等
|
||||
- `docs/share/` — 对外分享
|
||||
- `projects/` — 代码
|
||||
- `reports/` — 测试报告
|
||||
|
||||
## 执行步骤
|
||||
|
||||
### Export 模式
|
||||
|
||||
1. 读 `SYNC.md` 确认框架层文件清单
|
||||
2. 读 `TEMPLATE.yaml` 获取变量清单和当前值
|
||||
3. 对每个框架层文件:
|
||||
- 复制内容
|
||||
- 将当前值(如 `SoC_SW`)替换为 `{{PROJECT_NAME}}`
|
||||
- 将 `soc_sw` 替换为 `{{PROJECT_NAME_LOWER}}`
|
||||
- 依此类推,覆盖 TEMPLATE.yaml 中所有变量
|
||||
4. 输出到指定目录(默认 `../project-template/`)
|
||||
|
||||
### Init 模式
|
||||
|
||||
1. 询问用户:项目名、核心概念、一句话描述
|
||||
2. 读 `TEMPLATE.yaml`,生成新值(如 `PROJECT_NAME: "ICValidator"`)
|
||||
3. 复制框架层文件到新项目目录
|
||||
4. 将所有 `{{变量}}` 替换为新值
|
||||
5. 创建项目层空目录结构(.ai/tasks/active/, .ai/phases/, docs/01_产品需求/ 等)
|
||||
6. 告知用户:新项目就绪,Arch AI 可以开始写 PRD
|
||||
|
||||
## 注意事项
|
||||
|
||||
1. **框架层不包含具体业务的 ADR**。ADR-009(人机协同)是 SoC_SW 特有的,不导出。ADR-007(分层架构)是框架级的,可导出
|
||||
2. **Skill 本身属于框架层**,会被导出。新项目自带全套 Skill
|
||||
3. **TEMPLATE.yaml 导出后变量值变为 `{{}}` 占位符**,等待 init 时填入新值
|
||||
4. **脱敏检查**:export 后应人工抽查,确保没有 SoC_SW 特有信息泄露到模板
|
||||
|
||||
---
|
||||
|
||||
**Version**: 1.0
|
||||
**Created**: 2026-05-26
|
||||
**Based On**: ADR-008(模板同步机制),废弃 ai_project 分支方案,改为 Skill 按需执行
|
||||
@@ -0,0 +1,195 @@
|
||||
---
|
||||
name: "resume-context"
|
||||
description: "Loads project context and syncs conversation history. Invoke when user switches computers, starts a new session, or says '接着干 开发'、'接着干 测试'、'接着干 架构'."
|
||||
---
|
||||
|
||||
# 接着干 - 上下文同步 Skill
|
||||
|
||||
## 功能
|
||||
|
||||
当用户更换电脑、开启新会话、或说"接着干"时,自动读取项目上下文文档,恢复之前的开发状态和讨论背景,并根据用户指定的角色设定 AI 权限。
|
||||
|
||||
## 触发条件
|
||||
|
||||
用户必须使用以下格式之一:
|
||||
|
||||
| 触发词 | 角色 | 权限 |
|
||||
|--------|------|------|
|
||||
| `接着干 开发` | Dev AI | 按宪法约束(coder.json) |
|
||||
| `接着干 测试` | QA AI | 按宪法约束(tester.json) |
|
||||
| `接着干 架构` | 人类负责人 | 最高权限,不受宪法约束 |
|
||||
|
||||
**别名**:`继续 开发/测试/架构`、`resume dev/test/arch`
|
||||
|
||||
## 执行步骤
|
||||
|
||||
### 1. 识别角色
|
||||
|
||||
根据用户输入的后缀词判断角色:
|
||||
|
||||
```
|
||||
开发/dev/coder → Dev AI
|
||||
测试/test/qa → QA AI
|
||||
架构/arch → Arch AI(架构设计师)
|
||||
```
|
||||
|
||||
### 2. 读取项目上下文
|
||||
|
||||
按以下顺序读取核心文档:
|
||||
|
||||
```
|
||||
1. docs/PROJECT_CONTEXT.md # 项目整体上下文
|
||||
2. docs/DECISIONS.md # 关键决策记录
|
||||
3. docs/06_开发日志/ # 最新开发日志(按日期倒序)
|
||||
4. AGENTS.md # AI 角色和权限约定
|
||||
```
|
||||
|
||||
### 3. 加载角色配置
|
||||
|
||||
根据识别的角色,读取对应的配置文件:
|
||||
|
||||
**Arch AI**:
|
||||
```
|
||||
.ai/config/architect.json
|
||||
```
|
||||
- 读取 `allowed_paths`、`read_only_paths`、`forbidden_paths`
|
||||
- 读取 `responsibilities`
|
||||
- 读取 `prompt_templates`
|
||||
- **拥有最高 AI 权限**,可以进行架构设计和跨模块修改
|
||||
|
||||
**Dev AI**:
|
||||
```
|
||||
.ai/config/coder.json
|
||||
```
|
||||
- 读取 `allowed_paths`、`read_only_paths`、`forbidden_paths`
|
||||
- 读取 `responsibilities`
|
||||
- 读取 `prompt_templates`
|
||||
|
||||
**QA AI**:
|
||||
```
|
||||
.ai/config/tester.json
|
||||
```
|
||||
- 读取 `allowed_paths`、`read_only_paths`、`forbidden_paths`
|
||||
- 读取 `responsibilities`
|
||||
- 读取 `prompt_templates`
|
||||
|
||||
### 4. 读取最新开发日志
|
||||
|
||||
```powershell
|
||||
# 获取最新的开发日志文件
|
||||
Get-ChildItem "docs/06_开发日志/" -Filter "*.md" | Sort-Object Name -Descending | Select-Object -First 3
|
||||
```
|
||||
|
||||
读取最近 3 篇日志,了解最近的讨论内容。
|
||||
|
||||
### 5. 同步状态
|
||||
|
||||
向用户报告当前状态和角色:
|
||||
|
||||
```markdown
|
||||
## 上下文同步完成
|
||||
|
||||
### 当前角色
|
||||
- **角色**: [Dev AI / QA AI / 人类负责人]
|
||||
- **权限**: [按宪法约束 / 最高权限]
|
||||
- **可写路径**: [列出 allowed_paths]
|
||||
- **只读路径**: [列出 read_only_paths]
|
||||
|
||||
### 项目状态
|
||||
- **当前阶段**: [从 PROJECT_CONTEXT.md 读取]
|
||||
- **最新任务**: [从 review/active/ 读取最新任务]
|
||||
- **最近工作**: [从最新开发日志读取]
|
||||
|
||||
### 待办事项
|
||||
- [从 PROJECT_CONTEXT.md 和开发日志中提取]
|
||||
|
||||
### 可以继续的工作
|
||||
- [列出可以继续开发的任务]
|
||||
```
|
||||
|
||||
### 6. 确认用户意图
|
||||
|
||||
询问用户:
|
||||
- 继续上次未完成的工作?
|
||||
- 开始新的任务?
|
||||
- 查看项目状态?
|
||||
|
||||
## 文档格式要求
|
||||
|
||||
### PROJECT_CONTEXT.md
|
||||
|
||||
```markdown
|
||||
# 项目上下文
|
||||
|
||||
## 项目愿景
|
||||
[一句话描述项目目标]
|
||||
|
||||
## 当前阶段
|
||||
[当前处于哪个阶段,已完成什么]
|
||||
|
||||
## 技术栈
|
||||
[主要技术选型]
|
||||
|
||||
## 团队架构
|
||||
[1 人 + 2AI 协作模式]
|
||||
|
||||
## 关键决策
|
||||
[列出重要决策和原因]
|
||||
|
||||
## 待解决问题
|
||||
[列出悬而未决的问题]
|
||||
|
||||
## 下一步计划
|
||||
[接下来的工作重点]
|
||||
```
|
||||
|
||||
### 开发日志格式
|
||||
|
||||
```markdown
|
||||
# YYYY-MM-DD_主题
|
||||
|
||||
## 讨论内容
|
||||
[主要讨论了什么]
|
||||
|
||||
## 关键决策
|
||||
[做出了什么决定]
|
||||
|
||||
## 完成的工作
|
||||
[做了什么改动]
|
||||
|
||||
## 待办事项
|
||||
[接下来要做什么]
|
||||
```
|
||||
|
||||
## 使用场景
|
||||
|
||||
**何时调用此 skill:**
|
||||
- ✅ 更换电脑后开始工作
|
||||
- ✅ 开启新会话,需要恢复上下文
|
||||
- ✅ 长时间未开发,需要回忆项目状态
|
||||
- ✅ 用户说"接着干 开发/测试/架构"
|
||||
|
||||
**不适用场景:**
|
||||
- ❌ 首次启动项目(应使用 ai-collab-setup)
|
||||
- ❌ 只需要查看代码(直接搜索即可)
|
||||
|
||||
## 注意事项
|
||||
|
||||
1. **角色必须明确**:用户必须指定"开发"、"测试"或"架构",否则询问用户
|
||||
2. **架构模式**:架构模式对应 Arch AI,拥有最高 AI 权限,可以进行架构设计和跨模块修改
|
||||
3. **不要修改文档**:此 skill 只读取上下文,不修改任何文件(除非用户明确要求)
|
||||
4. **关注最新内容**:优先读取最新的开发日志
|
||||
5. **识别阻塞点**:注意 PROJECT_CONTEXT.md 中的"待解决问题"
|
||||
6. **权限意识**:开发/测试/架构模式下严格遵循 AGENTS.md 中的权限约定
|
||||
|
||||
---
|
||||
|
||||
**Version**: 3.0
|
||||
**Created**: 2026-05-23
|
||||
**Updated**: 2026-05-23
|
||||
**Based On**: SoC_SW AI Programming Project
|
||||
**Purpose**: 解决用户多电脑切换时的上下文同步问题,明确 AI 角色和权限
|
||||
**Changes from v2.0**:
|
||||
- 架构模式从"人类负责人"改为"Arch AI(架构设计师)"
|
||||
- 新增 .ai/config/architect.json 配置读取
|
||||
- 支持"1 人+3AI"协作模式
|
||||
@@ -0,0 +1,136 @@
|
||||
---
|
||||
name: "share-context"
|
||||
description: "一鸡多吃:将内部开发文档(ADR、阶段复盘、开发日志)翻译为对外分享文章。阶段收尾时或用户说「一鸡多吃」「同步分享」「发布分享」时调用。"
|
||||
---
|
||||
|
||||
# 一鸡多吃 — 内部文档转对外分享 Skill
|
||||
|
||||
## 功能
|
||||
|
||||
将开发过程中积累的内部文档(架构决策、阶段完成记录、踩坑经验)翻译为对外可发布的分享文章,写入 `docs/share/` 目录。
|
||||
|
||||
**核心逻辑**:同一份工作,两种产出。内部文档(给 AI 看)→ 去敏 + 加故事 + 加思考过程 → 对外文章(给人看)。
|
||||
|
||||
## 触发条件
|
||||
|
||||
- 用户说「一鸡多吃」「同步分享」「发布分享」「更新分享」
|
||||
- 阶段收尾时(Phase completion)
|
||||
- 有新的 ADR 或重要决策产生后
|
||||
|
||||
## 执行步骤
|
||||
|
||||
### 0. 反向检查:知识库是否遗漏了有价值的洞察
|
||||
|
||||
**在扫描对外分享内容之前**,先检查是否有最近的开发讨论/决策/想法尚未写入知识库:
|
||||
|
||||
| 检查项 | 判断标准 | 写入目标 |
|
||||
|--------|---------|---------|
|
||||
| 近期是否有重要的架构讨论 | 讨论产生了「可复用的判断」或「方向性决策」 | `.ai/knowledge/decisions.md`(新 ADR) |
|
||||
| 近期是否有反直觉的发现或错误 | 讨论产生了「原来以为…但其实…」的洞察 | `.ai/knowledge/lessons.md`(新 L-XXX) |
|
||||
| 近期是否发现了可复用的模式 | 同样的做法出现了 2 次以上 | `.ai/knowledge/patterns.md`(新 P-XXX) |
|
||||
|
||||
**触发词**:当讨论中出现以下信号时,应主动提议记录:
|
||||
- 「这个很有价值」「值得记下来」「下次遇到可以…」
|
||||
- 「原来是这样」「之前没想到」「反直觉的是…」
|
||||
- 领域术语的定义或边界划分(如「蜂群模式」「编排器-执行者」)
|
||||
|
||||
如果发现遗漏,**先补知识库,再执行后续步骤**。知识库是分享的源头——源头空了,一鸡多吃也无米下锅。
|
||||
|
||||
### 1. 扫描内部文档,识别可分享内容
|
||||
|
||||
按以下来源对比 `docs/share/` 已有内容,找出新增/变化:
|
||||
|
||||
| 内部来源 | 对应对外产出 | 判断标准 |
|
||||
|---------|-------------|---------|
|
||||
| `.ai/knowledge/decisions.md` 中的新 ADR | `phase-XX/决策故事_ADR-XXX.md` | 有新 ADR 且无对应故事文件 |
|
||||
| `.ai/phases/phase-XX-*/completion.md` | `phase-XX/阶段复盘_XXX.md` | 阶段已完成且复盘文件为空/待写 |
|
||||
| `.ai/knowledge/lessons.md` | 踩坑记录(融入复盘或独立) | 有新的经验教训记录 |
|
||||
| `.ai/knowledge/journal/` | 开发周记 | 有新的日志文件 |
|
||||
|
||||
### 2. 确定本次要写的文章
|
||||
|
||||
列出待写文章清单,向用户确认优先级和范围。
|
||||
|
||||
### 3. 逐篇撰写
|
||||
|
||||
每篇文章遵循以下原则:
|
||||
|
||||
**内容要求**:
|
||||
- 不只说「做了什么」,重点说「为什么这么选」
|
||||
- 有具体的决策场景(当时遇到了什么问题)
|
||||
- 有可复用的方法论(下次遇到类似情况怎么做)
|
||||
- 有真实的踩坑和教训(不粉饰)
|
||||
- 一句话总结(可引用/可传播)
|
||||
|
||||
**安全要求**:
|
||||
- ❌ 不暴露 API 密钥、服务器地址、数据库连接串
|
||||
- ❌ 不暴露真实用户名、手机号、微信号
|
||||
- ❌ 不暴露未公开的第三方合作信息
|
||||
- ✅ 技术方案可以详细写
|
||||
- ✅ 决策过程可以完整写
|
||||
- ✅ 思考逻辑可以展开写
|
||||
|
||||
**写作风格**:
|
||||
- 第一人称(「我」),人类视角
|
||||
- 像讲故事,不像写文档
|
||||
- 目标读者是「对 AI 编程感兴趣的人」,不是机器
|
||||
- 每篇 800-1500 字,独立可读
|
||||
|
||||
### 4. 更新分享目录
|
||||
|
||||
更新 `docs/share/README.md` 中的文章列表和状态。
|
||||
|
||||
### 5. 告知用户
|
||||
|
||||
```markdown
|
||||
## 一鸡多吃完成
|
||||
|
||||
### 新增文章
|
||||
| 文件 | 内容 |
|
||||
|------|------|
|
||||
| [文章名](路径) | 一句话描述 |
|
||||
|
||||
### 更新文章
|
||||
| 文件 | 变更 |
|
||||
|------|------|
|
||||
| [文章名](路径) | 更新内容简述 |
|
||||
|
||||
### 分享目录
|
||||
→ `docs/share/README.md`
|
||||
```
|
||||
|
||||
## 文件结构
|
||||
|
||||
```
|
||||
docs/share/
|
||||
├── README.md # 分享目录索引
|
||||
├── 00_项目缘起.md # 项目背景(一次性写完,后续微调)
|
||||
├── 01_框架设计思路.md # 核心理念(一次性写完,后续微调)
|
||||
├── phase-01/ # Phase 1 分享内容
|
||||
│ ├── 阶段复盘_基础搭建.md # 阶段复盘
|
||||
│ ├── 决策故事_ADR-007.md # 信息架构决策
|
||||
│ ├── 决策故事_ADR-009.md # 人机协同决策
|
||||
│ └── 决策故事_旧架构合并.md # 旧架构合并决策
|
||||
├── phase-02/ # Phase 2 分享内容(待产生)
|
||||
│ └── ...
|
||||
└── templates/ # 写作模板
|
||||
├── 阶段复盘模板.md
|
||||
└── 决策故事模板.md
|
||||
```
|
||||
|
||||
## 注意事项
|
||||
|
||||
1. **先入库,后分享**:Step 0 必须在 Step 1 之前执行。知识库是米缸,分享是做饭——米缸空了做不出饭
|
||||
2. **不是做完再写**:开发过程中自动积累,阶段结束时批量产出
|
||||
3. **同一份工作,两种语言**:内部文档是「给 AI 看的结构化数据」,对外文章是「给人看的故事」
|
||||
4. **保持真诚**:有成功写成功,有失败写失败。读者能看出哪些是 PR 稿
|
||||
5. **去敏但不去肉**:去掉敏感信息,但保留具体细节。一个没有细节的故事没有价值
|
||||
6. **链接内部来源**:每篇文章底部可附「内部参考:ADR-XXX」但不暴露内部文件路径
|
||||
|
||||
---
|
||||
|
||||
**Version**: 1.1
|
||||
**Updated**: 2026-05-26 — 新增 Step 0「反向检查」,补上知识库摄入端
|
||||
**Created**: 2026-05-26
|
||||
**Based On**: SoC_SW 开发实践 — Phase 1 收尾时的「一鸡多吃」流程
|
||||
**Purpose**: 将内部开发文档自动转化为对外分享内容,实现「开发即内容」的闭环
|
||||
@@ -0,0 +1,143 @@
|
||||
---
|
||||
name: "switch-model"
|
||||
description: "Checks project context when switching AI models. Invoke when user says '切换模型 架构/开发/测试' or 'switch-model arch/dev/qa'."
|
||||
---
|
||||
|
||||
# 切换模型 Skill
|
||||
|
||||
## 功能
|
||||
|
||||
当用户更换大模型(Claude/TRAE/扣子/元宝等)时,快速加载项目上下文,确保新模型理解当前状态并遵循规则。
|
||||
|
||||
## 触发条件
|
||||
|
||||
**必须指定角色**:
|
||||
- `切换模型 架构` / `switch-model arch` → Arch AI
|
||||
- `切换模型 开发` / `switch-model dev` → Dev AI
|
||||
- `切换模型 测试` / `switch-model qa` → QA AI
|
||||
|
||||
**不指定角色时**:询问用户,不执行全面检查。
|
||||
|
||||
## 执行步骤
|
||||
|
||||
### 1. 识别角色
|
||||
|
||||
| 触发词 | 角色 | 配置文件 |
|
||||
|--------|------|---------|
|
||||
| 架构/arch | Arch AI | .ai/config/architect.json |
|
||||
| 开发/dev/coder | Dev AI | .ai/config/coder.json |
|
||||
| 测试/test/qa | QA AI | .ai/config/tester.json |
|
||||
|
||||
### 2. 安全检查(git 状态优先)
|
||||
|
||||
**必须先检查 git 仓库状态,确保在安全的环境下加载上下文**:
|
||||
|
||||
```bash
|
||||
git status # 工作区状态(干净/有变更/有冲突)
|
||||
git log --oneline -3 # 最近 3 次提交(了解最近做了什么)
|
||||
git branch # 当前分支(确认是否在正确分支)
|
||||
```
|
||||
|
||||
**异常处理**:
|
||||
|
||||
| 状态 | 处理方式 |
|
||||
|------|---------|
|
||||
| 工作区有未提交变更 | 提醒用户先提交或暂存,避免上下文不一致 |
|
||||
| 有合并冲突 | 立即告知用户需要解决冲突 |
|
||||
| 分支不对 | 提醒用户切换到正确分支 |
|
||||
| 远程有更新未拉取 | 提醒用户先 pull |
|
||||
|
||||
### 3. 加载基础上下文(所有角色通用)
|
||||
|
||||
```
|
||||
1. AGENTS.md # 团队架构和权限矩阵
|
||||
2. .ai/config/workflow.json # 工作流配置
|
||||
3. docs/PROJECT_CONTEXT.md # 项目整体状态
|
||||
```
|
||||
|
||||
### 4. 按角色加载专属上下文
|
||||
|
||||
#### Arch AI(架构AI)
|
||||
|
||||
```
|
||||
4. .ai/config/architect.json # 角色权限
|
||||
5. docs/02_系统架构/ # 架构文档
|
||||
6. review/active/*/task.md # 活跃任务
|
||||
7. .trae/skills/ # 可用 Skill 列表
|
||||
8. ENVIRONMENT.md # 环境配置
|
||||
```
|
||||
|
||||
#### Dev AI(编码AI)
|
||||
|
||||
```
|
||||
4. .ai/config/coder.json # 角色权限
|
||||
5. review/active/*/task.md # 活跃任务
|
||||
6. review/active/*/feedback/ # 待修 Bug
|
||||
7. .trae/skills/ # 可用 Skill 列表
|
||||
8. ENVIRONMENT.md # 环境配置
|
||||
```
|
||||
|
||||
#### QA AI(测试AI)
|
||||
|
||||
```
|
||||
4. .ai/config/tester.json # 角色权限
|
||||
5. review/active/*/acceptance.md # 验收标准
|
||||
6. reports/test-results/ # 最近测试报告
|
||||
7. .trae/skills/ # 可用 Skill 列表
|
||||
8. ENVIRONMENT.md # 环境配置
|
||||
```
|
||||
|
||||
### 5. 输出简洁检查报告
|
||||
|
||||
```markdown
|
||||
# 模型切换检查报告
|
||||
|
||||
## 角色确认
|
||||
- 当前角色: [角色名]
|
||||
- 权限: [可写路径] | 只读: [只读路径] | 禁止: [禁止路径]
|
||||
|
||||
## 项目状态
|
||||
- 当前阶段: [工作流阶段]
|
||||
- 活跃任务: [任务编号和名称]
|
||||
- 工作区: [干净/有变更]
|
||||
|
||||
## 最近提交 (3 条)
|
||||
- [commit 1]
|
||||
- [commit 2]
|
||||
- [commit 3]
|
||||
|
||||
## 待办事项
|
||||
- [ ] [待办 1]
|
||||
- [ ] [待办 2]
|
||||
|
||||
## 阻塞点
|
||||
- [无 / 具体问题]
|
||||
|
||||
✅ 已就绪,等待指令
|
||||
```
|
||||
|
||||
### 6. 等待用户指令
|
||||
|
||||
报告输出后,等待用户进一步指令。用户可以说:
|
||||
- `展开 [某项]` → 深入查看细节
|
||||
- `开始工作` → 进入角色模式
|
||||
- `切换角色` → 重新执行本 Skill
|
||||
|
||||
## 注意事项
|
||||
|
||||
1. **必须指定角色**:不指定时询问用户,不盲目全面检查
|
||||
2. **简洁优先**:报告控制在 1 屏内,用户需要细节时可展开
|
||||
3. **权限意识**:加载配置后立即确认权限边界
|
||||
4. **不修改文件**:此 Skill 只读取上下文,不修改任何文件
|
||||
5. **Skill 列表**:确保新模型知道有哪些 Skill 可用
|
||||
|
||||
---
|
||||
|
||||
**Version**: 1.1
|
||||
**Created**: 2026-05-23
|
||||
**Updated**: 2026-05-23
|
||||
**Based On**: SoC_SW AI Programming Project
|
||||
**Purpose**: 确保大模型切换时快速同步上下文,按角色差异化加载
|
||||
**Changes from v1.0**:
|
||||
- 新增安全检查步骤,git 状态优先于上下文加载
|
||||
- 增加异常处理(未提交变更/合并冲突/分支错误/远程更新)
|
||||
@@ -0,0 +1,95 @@
|
||||
---
|
||||
name: "update-constitution"
|
||||
description: "Updates AI constitution files (AGENTS.md, config files, permission matrix). Invoke when AI roles, permissions, or workflow rules change."
|
||||
---
|
||||
|
||||
# 更新宪法 Skill
|
||||
|
||||
## 功能
|
||||
|
||||
当 AI 角色、权限、工作流规则发生变更时,自动更新所有相关的宪法文件,确保一致性。
|
||||
|
||||
## 触发条件
|
||||
|
||||
- AI 角色增加/删除/修改
|
||||
- 权限矩阵变更(allowed_paths、read_only_paths、forbidden_paths)
|
||||
- 工作流阶段变更
|
||||
- 沟通规范变更
|
||||
- 命名规范变更
|
||||
|
||||
## 执行步骤
|
||||
|
||||
### 1. 识别变更类型
|
||||
|
||||
| 变更类型 | 影响文件 |
|
||||
|---------|---------|
|
||||
| 新增 AI 角色 | AGENTS.md、.ai/config/<role>.json、workflow.json、权限矩阵 |
|
||||
| 权限变更 | AGENTS.md 权限矩阵、.ai/config/*.json |
|
||||
| 工作流变更 | AGENTS.md 工作流程图、workflow.json |
|
||||
| 沟通规范变更 | AGENTS.md 沟通规范章节 |
|
||||
| 命名规范变更 | AGENTS.md 命名规范章节 |
|
||||
|
||||
### 2. 更新宪法文件
|
||||
|
||||
按以下顺序更新:
|
||||
|
||||
#### 2.1 AGENTS.md
|
||||
|
||||
- [ ] 更新团队架构图
|
||||
- [ ] 更新角色职责(新增/修改/删除)
|
||||
- [ ] 更新目录权限矩阵
|
||||
- [ ] 更新工作流程图(如适用)
|
||||
- [ ] 更新详细流程说明(如适用)
|
||||
- [ ] 更新 AI 配置文件说明表
|
||||
|
||||
#### 2.2 .ai/config/*.json
|
||||
|
||||
- [ ] 新增/更新对应角色的 JSON 配置文件
|
||||
- [ ] 确保 allowed_paths、read_only_paths、forbidden_paths 与权限矩阵一致
|
||||
- [ ] 确保 responsibilities 与角色职责一致
|
||||
- [ ] 确保 prompt_templates 指向正确的提示词目录
|
||||
|
||||
#### 2.3 .ai/config/workflow.json
|
||||
|
||||
- [ ] 更新 roles 数组
|
||||
- [ ] 更新 stages 数组(新增/修改/删除阶段)
|
||||
- [ ] 确保 actor 字段与角色 ID 一致
|
||||
|
||||
### 3. 更新 Skill 文件
|
||||
|
||||
- [ ] .trae/skills/ai-collab-setup/SKILL.md - 目录结构、权限矩阵、角色描述、配置文件示例
|
||||
- [ ] .trae/skills/resume-context/SKILL.md - 角色识别逻辑、配置文件读取
|
||||
|
||||
### 4. 验证一致性
|
||||
|
||||
- [ ] AGENTS.md 权限矩阵 与 .ai/config/*.json 路径配置一致
|
||||
- [ ] AGENTS.md 角色职责 与 .ai/config/*.json responsibilities 一致
|
||||
- [ ] AGENTS.md 工作流程图 与 workflow.json stages 一致
|
||||
- [ ] 所有 JSON 文件语法正确(使用 python -m json.tool 验证)
|
||||
|
||||
### 5. 提交 Git
|
||||
|
||||
```bash
|
||||
git add -A
|
||||
git commit -m "feat(constitution): 更新宪法 - [简要描述变更内容]
|
||||
|
||||
- AGENTS.md: [具体变更]
|
||||
- .ai/config/*.json: [具体变更]
|
||||
- workflow.json: [具体变更]
|
||||
- ai-collab-setup/SKILL.md: [具体变更]"
|
||||
git push
|
||||
```
|
||||
|
||||
## 注意事项
|
||||
|
||||
1. **权限矩阵是核心**:所有路径变更必须先更新权限矩阵,再同步到 JSON 配置
|
||||
2. **JSON 语法验证**:每次修改后必须验证 JSON 语法
|
||||
3. **Skill 文件同步**:宪法变更后必须同步更新 ai-collab-setup 和 resume-context Skill
|
||||
4. **版本号**:重大变更需升级 Skill 版本号
|
||||
|
||||
---
|
||||
|
||||
**Version**: 1.0
|
||||
**Created**: 2026-05-23
|
||||
**Based On**: SoC_SW AI Programming Project
|
||||
**Purpose**: 确保宪法变更时所有相关文件同步更新,避免遗漏
|
||||
@@ -0,0 +1,103 @@
|
||||
---
|
||||
name: "update-docs"
|
||||
description: "Updates project documentation (README.md, changelog, PROJECT_CONTEXT.md, etc.). Invoke after any code/structure change to keep docs in sync."
|
||||
---
|
||||
|
||||
# 更新文档 Skill
|
||||
|
||||
## 功能
|
||||
|
||||
在任何代码、结构、配置变更后,自动更新所有相关的项目文档,确保文档与实际状态一致。
|
||||
|
||||
## 触发条件
|
||||
|
||||
- 目录结构变更(新增/删除/重命名目录)
|
||||
- 角色/权限变更(宪法更新后)
|
||||
- 工作流变更
|
||||
- Skill 文件变更
|
||||
- 任何可能影响文档的变更
|
||||
|
||||
## 执行步骤
|
||||
|
||||
### 1. 识别变更影响范围
|
||||
|
||||
| 变更类型 | 需更新的文档 |
|
||||
|---------|-------------|
|
||||
| 目录结构变更 | README.md 目录树、PROJECT_CONTEXT.md 结构图 |
|
||||
| 角色/权限变更 | README.md 团队角色表、PROJECT_CONTEXT.md |
|
||||
| 工作流变更 | README.md 工作流程、PROJECT_CONTEXT.md |
|
||||
| Skill 文件变更 | README.md(如提及 Skill) |
|
||||
| 任何提交 | 变更日志 |
|
||||
|
||||
### 2. 更新文档
|
||||
|
||||
按以下顺序更新:
|
||||
|
||||
#### 2.1 README.md
|
||||
|
||||
- [ ] 更新项目描述(如适用)
|
||||
- [ ] 更新目录结构树
|
||||
- [ ] 更新团队角色表
|
||||
- [ ] 更新工作流程说明
|
||||
- [ ] 更新任务状态流转(如适用)
|
||||
|
||||
#### 2.2 docs/PROJECT_CONTEXT.md
|
||||
|
||||
- [ ] 更新当前阶段
|
||||
- [ ] 更新项目结构图
|
||||
- [ ] 更新关键决策(如适用)
|
||||
- [ ] 更新待解决问题(如适用)
|
||||
- [ ] 更新下一步计划
|
||||
|
||||
#### 2.3 docs/05_变更日志/YYYY-MM-DD.md
|
||||
|
||||
- [ ] 创建今日日志文件(如不存在)
|
||||
- [ ] 添加本次提交记录
|
||||
- [ ] 包含 commit hash、简要描述、具体变更
|
||||
|
||||
#### 2.4 docs/DECISIONS.md(如适用)
|
||||
|
||||
- [ ] 新增架构决策记录(ADR)
|
||||
- [ ] 格式:背景、决策、原因、后果
|
||||
|
||||
#### 2.5 docs/06_开发日志/YYYY-MM-DD_主题.md(如适用)
|
||||
|
||||
- [ ] 记录讨论内容
|
||||
- [ ] 记录关键决策
|
||||
- [ ] 记录完成的工作
|
||||
- [ ] 记录待办事项
|
||||
|
||||
### 3. 验证一致性
|
||||
|
||||
- [ ] README.md 目录树 与实际目录结构一致
|
||||
- [ ] README.md 团队角色表 与 AGENTS.md 一致
|
||||
- [ ] README.md 工作流程 与 workflow.json 一致
|
||||
- [ ] PROJECT_CONTEXT.md 结构图 与实际一致
|
||||
- [ ] 变更日志包含所有今日提交
|
||||
|
||||
### 4. 提交 Git
|
||||
|
||||
```bash
|
||||
git add -A
|
||||
git commit -m "docs(readme): 同步文档 - [简要描述]
|
||||
|
||||
- README.md: [具体变更]
|
||||
- PROJECT_CONTEXT.md: [具体变更]
|
||||
- docs/05_变更日志/YYYY-MM-DD.md: [具体变更]"
|
||||
git push
|
||||
```
|
||||
|
||||
## 注意事项
|
||||
|
||||
1. **变更日志是必须的**:每次提交都必须更新变更日志,不能忘
|
||||
2. **README.md 是门面**:项目的第一印象,必须保持最新
|
||||
3. **PROJECT_CONTEXT.md 是上下文**:换电脑后 AI 读取的核心文档
|
||||
4. **不要过度更新**:只更新受影响的文档,不要全量重写
|
||||
5. **保持简洁**:文档更新提交信息要简洁明了
|
||||
|
||||
---
|
||||
|
||||
**Version**: 1.0
|
||||
**Created**: 2026-05-23
|
||||
**Based On**: SoC_SW AI Programming Project
|
||||
**Purpose**: 确保文档与代码/结构同步更新,避免"繁文缛节"被遗忘
|
||||
@@ -0,0 +1,119 @@
|
||||
# AI 角色定义与权限约定
|
||||
|
||||
> **如果你是 AI,请直接跳转到你的角色入口:**
|
||||
> - Arch AI → `dashboard.md` 全文
|
||||
> - Dev AI → `.ai/roles/dev/card.md` → 对应 `.ai/tasks/active/P01-XXX.md`
|
||||
> - QA AI → `.ai/roles/qa/card.md` → 对应 `.ai/tasks/active/T01-XXX.md`
|
||||
>
|
||||
> **如果你是**人类,请看 `dashboard.md` 顶部「人类区」。
|
||||
>
|
||||
> 本文档是权限矩阵的**唯一权威参考**。角色工作台中的权限描述为摘要,如有冲突以本文档为准。
|
||||
>
|
||||
> **架构说明**: 旧入口(DASHBOARD.md / ROADMAP.md / roles/*/today.md / roles/*/queue.md)已归档至 `.ai/archive/`。详见 ADR-012。
|
||||
|
||||
---
|
||||
|
||||
## 团队架构
|
||||
|
||||
`1 人类 + 3 AI` 协作模式:
|
||||
- **Arch AI** — 需求分析、架构设计、技术选型、跨模块协调
|
||||
- **Dev AI** — 代码编写、文档生成、Bug 修复
|
||||
- **QA AI** — 测试设计、测试执行、质量反馈
|
||||
- **人类** — 需求输入、最终决策、成果验收
|
||||
|
||||
---
|
||||
|
||||
## 工作流(简化版)
|
||||
|
||||
```
|
||||
需求分析(Arch) → 架构设计(Arch) → 开发实现(Dev) → 测试验证(QA) → 人类验收
|
||||
↑ │
|
||||
└── Bug修复 ──┘ (最多3轮)
|
||||
```
|
||||
|
||||
缺陷修复循环:最多 3 轮。第 3 轮仍有 BLOCKER/HIGH → 升级给人类裁决。
|
||||
|
||||
详细工作流配置:`.ai/config/workflow.json`
|
||||
|
||||
---
|
||||
|
||||
## 角色职责
|
||||
|
||||
### Arch AI
|
||||
- 可写:需求分析、架构设计、技术选型、跨模块协调、架构文档、验收标准、影响评估、共享资源、开发工具、训练数据、业务代码
|
||||
- 只读:AI 配置、测试代码、测试报告、测试反馈
|
||||
- 指导 Dev AI 和 QA AI 工作,分配任务队列
|
||||
|
||||
### Dev AI
|
||||
- 可写:业务代码、技术文档、项目级文档、开发工具、训练数据、共享资源、验收标准、影响评估
|
||||
- 只读:任务描述、测试反馈
|
||||
- 禁止:测试代码、测试报告
|
||||
|
||||
### QA AI
|
||||
- 可写:测试用例、测试报告、验收标准补充、测试反馈
|
||||
- 只读:业务代码、技术文档、项目级文档、训练数据、共享资源、任务描述
|
||||
- 禁止:AI 配置、开发工具、影响评估
|
||||
|
||||
---
|
||||
|
||||
## 目录权限矩阵
|
||||
|
||||
> 图例:`-` = 禁止 `R` = 只读 `W` = 可写(含读) `RW` = 读写
|
||||
|
||||
| 目录路径 | Arch AI | Dev AI | QA AI | 人类 |
|
||||
|---------|---------|--------|-------|------|
|
||||
| `.ai/` | `R` | `-` | `-` | `RW` |
|
||||
| `docs/` | `RW` | `RW` | `R` | `RW` |
|
||||
| `tools/` | `RW` | `RW` | `-` | `RW` |
|
||||
| `data/` | `RW` | `RW` | `R` | `RW` |
|
||||
| `shared/` | `RW` | `RW` | `R` | `RW` |
|
||||
| `projects/*/src/` | `RW` | `RW` | `R` | `RW` |
|
||||
| `projects/*/tests/` | `R` | `-` | `RW` | `RW` |
|
||||
| `projects/*/docs/` | `RW` | `RW` | `R` | `RW` |
|
||||
| `review/*/task.md` | `RW` | `R` | `R` | `RW` |
|
||||
| `review/*/acceptance.md` | `RW` | `RW` | `RW` | `RW` |
|
||||
| `review/*/impact.md` | `RW` | `RW` | `-` | `RW` |
|
||||
| `review/*/feedback/` | `R` | `R` | `RW` | `RW` |
|
||||
| `reports/` | `R` | `-` | `RW` | `RW` |
|
||||
| `.github/` | `-` | `-` | `-` | `RW` |
|
||||
|
||||
优先级:`forbidden > read_only > allowed`。未出现在表中的路径默认禁止所有 AI。
|
||||
|
||||
---
|
||||
|
||||
## 命名规范
|
||||
|
||||
### 任务编号
|
||||
`P{项目编号}-{任务序号}`,如 `P01-001`
|
||||
|
||||
### 分支命名
|
||||
```
|
||||
feature/P01-001-short-desc # 功能开发
|
||||
bugfix/P01-001-short-desc # Bug修复
|
||||
test/P01-001-short-desc # 测试用例
|
||||
```
|
||||
|
||||
### 提交信息
|
||||
```
|
||||
feat(P01-001): 简短描述
|
||||
fix(P01-001): 简短描述
|
||||
docs(P01-001): 简短描述
|
||||
test(P01-001): 简短描述
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## AI 配置文件索引
|
||||
|
||||
| 文件 | 说明 |
|
||||
|------|------|
|
||||
| `.ai/config/architect.json` | Arch AI 配置(权限、职责) |
|
||||
| `.ai/config/coder.json` | Dev AI 配置(权限、职责) |
|
||||
| `.ai/config/tester.json` | QA AI 配置(权限、职责) |
|
||||
| `.ai/config/workflow.json` | 工作流配置(阶段、触发器) |
|
||||
| `.ai/prompts/architecture/` | 架构设计提示词模板 |
|
||||
| `.ai/prompts/coding/` | 编码提示词模板 |
|
||||
| `.ai/prompts/testing/` | 测试提示词模板 |
|
||||
| `.ai/roles/` | AI 角色工作台(日常入口) |
|
||||
| `.ai/phases/` | 阶段上下文 |
|
||||
| `.ai/knowledge/` | 知识沉淀 |
|
||||
@@ -0,0 +1,16 @@
|
||||
# 待决策事项
|
||||
|
||||
> 人类决策入口。Arch AI 写入,人类拍板,Arch AI 执行。
|
||||
> 规则:同时存在的待决策项不超过 3 条。超过则按紧急度排序,不紧急的排队等待。
|
||||
|
||||
---
|
||||
|
||||
---
|
||||
|
||||
## 已决策
|
||||
|
||||
(暂无)
|
||||
|
||||
---
|
||||
|
||||
*当前无待决策事项。Arch AI 维护。*
|
||||
@@ -0,0 +1,73 @@
|
||||
# SoC_SW 开发环境配置
|
||||
|
||||
## 前置依赖
|
||||
|
||||
| 工具 | 版本要求 | 说明 |
|
||||
|------|---------|------|
|
||||
| Node.js | >= 20.x | JavaScript 运行时 |
|
||||
| pnpm | >= 9.0.0 | 包管理器 |
|
||||
| Python | >= 3.10 | 脚本/数据处理 |
|
||||
| Git | >= 2.40 | 版本控制 |
|
||||
|
||||
## 快速开始
|
||||
|
||||
```bash
|
||||
# 1. 克隆项目
|
||||
git clone <repository-url>
|
||||
cd soc_sw
|
||||
|
||||
# 2. 安装前端依赖
|
||||
pnpm install
|
||||
|
||||
# 3. 恢复上下文(换电脑后)
|
||||
# 在 Claude Code 中使用 resume-context Skill
|
||||
|
||||
# 4. 启动开发服务器(根据子项目)
|
||||
cd projects/P01_soc_sw_app
|
||||
pnpm dev
|
||||
```
|
||||
|
||||
## 子项目环境
|
||||
|
||||
### P01_soc_sw_app(主应用)
|
||||
```bash
|
||||
cd projects/P01_soc_sw_app
|
||||
pnpm install
|
||||
pnpm dev
|
||||
```
|
||||
|
||||
### P02_soc_sw_training(数据处理)
|
||||
```bash
|
||||
cd projects/P02_soc_sw_training
|
||||
python -m venv venv
|
||||
source venv/bin/activate
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
|
||||
### P03_soc_sw_web(Web 管理后台)
|
||||
```bash
|
||||
cd projects/P03_soc_sw_web
|
||||
pnpm install
|
||||
pnpm dev
|
||||
```
|
||||
|
||||
## 开发工具
|
||||
|
||||
- **AI 协作**: 1 人 + 3 AI(Arch AI + Coder AI + Tester AI)
|
||||
- **上下文同步**: 使用 `resume-context` Skill
|
||||
|
||||
## 跨平台开发
|
||||
|
||||
本项目支持在 Windows、macOS、Linux 上开发。换电脑时:
|
||||
|
||||
1. `git pull` 拉取最新代码
|
||||
2. 使用 `resume-context` Skill 恢复上下文
|
||||
3. 继续开发
|
||||
|
||||
## 环境变量
|
||||
|
||||
各子项目的环境变量文件:
|
||||
- `projects/P01_soc_sw_app/.env`
|
||||
- `projects/P03_soc_sw_web/.env`
|
||||
|
||||
参考各子项目的 `ENVIRONMENT.md` 获取详细配置。
|
||||
@@ -0,0 +1,82 @@
|
||||
# 模板同步边界定义
|
||||
|
||||
> 定义哪些文件属于"框架层"(跨项目复用),哪些属于"项目层"(项目特有)。
|
||||
> 框架层导出/初始化通过 `project-init` Skill 按需执行(ADR-013)。
|
||||
|
||||
---
|
||||
|
||||
## 规则
|
||||
|
||||
```
|
||||
框架层 = 可以复用的结构和逻辑(导出)
|
||||
项目层 = 某个具体项目的内容和数据(不导出)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 文件分类
|
||||
|
||||
### 框架层(导出)
|
||||
|
||||
| 文件/目录 | 说明 |
|
||||
|-----------|------|
|
||||
| `AGENTS.md` | AI 角色定义 + 权限矩阵 + 工作流 + 命名规范 |
|
||||
| `dashboard.md` | 控制面板结构(人类+Arch AI 入口) |
|
||||
| `DECISIONS.md` | 决策入口结构 |
|
||||
| `.ai/principles.md` | 架构设计原则 + 上下文管理硬约束 |
|
||||
| `.ai/config/*.json` | AI 配置(权限路径、职责定义、工作流) |
|
||||
| `.ai/prompts/` | 提示词模板(架构、编码、测试) |
|
||||
| `.ai/roles/README.md` | 角色工作台说明 |
|
||||
| `.ai/roles/{arch,dev,qa}/card.md` | 角色身份卡(身份、权限、启动流程) |
|
||||
| `.ai/phases/INDEX.md` | 阶段索引 + 切换规则 |
|
||||
| `.ai/knowledge/patterns.md` | 可复用模式 |
|
||||
| `.ai/knowledge/lessons.md` | 框架级经验教训 |
|
||||
| `.ai/tasks/templates/` | Task 模板(Coder + Tester) |
|
||||
| `.trae/skills/` | Skill 定义 |
|
||||
| `docs/使用手册.md` | 使用手册(框架层) |
|
||||
| `ENVIRONMENT.md` | 开发环境结构(框架层) |
|
||||
| `TEMPLATE.yaml` | 模板变量配置 |
|
||||
| `SYNC.md` | 本文档 |
|
||||
|
||||
### 项目层(不导出)
|
||||
|
||||
| 文件/目录 | 说明 |
|
||||
|-----------|------|
|
||||
| `.ai/tasks/active/` | 活跃 task 文件(项目特定) |
|
||||
| `.ai/tasks/completed/` | 已完成 task(项目特定) |
|
||||
| `.ai/phases/phase-*/goal.md` | 阶段目标(项目特定) |
|
||||
| `.ai/phases/phase-*/scope.md` | 阶段范围(项目特定) |
|
||||
| `.ai/phases/phase-*/architecture.md` | 架构快照(项目特定) |
|
||||
| `.ai/phases/phase-*/decisions.md` | 阶段决策(项目特定) |
|
||||
| `.ai/phases/phase-*/completion.md` | 完成状态(项目特定) |
|
||||
| `.ai/knowledge/decisions.md` | ADR 全文(项目特定) |
|
||||
| `.ai/knowledge/journal/` | 每日日志(项目特定) |
|
||||
| `.ai/archive/` | 归档文件 |
|
||||
| `docs/01_*/ ~ docs/06_*/` | 项目文档(PRD、架构、数据模型等) |
|
||||
| `docs/share/` | 对外分享内容 |
|
||||
| `projects/` | 项目代码 |
|
||||
| `reports/` | 测试报告 |
|
||||
|
||||
---
|
||||
|
||||
## 使用方式
|
||||
|
||||
通过 `project-init` Skill 执行,而非脚本。
|
||||
|
||||
**Export(导出框架)**:
|
||||
```
|
||||
在 Claude Code 中说「导出框架」→ Skill 读取 SYNC.md + TEMPLATE.yaml → 复制框架层文件 → 替换项目值为 {{变量}} → 输出到 ../project-template/
|
||||
```
|
||||
|
||||
**Init(初始化新项目)**:
|
||||
```
|
||||
在 Claude Code 中说「套这个框架开新项目」→ Skill 询问新项目信息 → 替换 {{变量}} 为新值 → 创建新项目目录
|
||||
```
|
||||
|
||||
Skill 位置: `.trae/skills/project-init/SKILL.md`
|
||||
|
||||
## 原则
|
||||
|
||||
1. **Skill 优于脚本** — AI 是执行者时,语义描述优于硬编码文件列表(ADR-013)
|
||||
2. **项目层隔离** — 任务、日志、代码、决策不受影响
|
||||
3. **边界定义是长期资产** — SYNC.md 定义「什么属于框架」,独立于执行方式
|
||||
@@ -0,0 +1,37 @@
|
||||
# ============================================================
|
||||
# 项目模板变量定义
|
||||
# 用于 project-init Skill 的 export/init 双向替换
|
||||
# ============================================================
|
||||
|
||||
# --- 项目身份 ---
|
||||
PROJECT_NAME: "SoC_SW"
|
||||
PROJECT_NAME_LOWER: "soc_sw"
|
||||
PROJECT_CONCEPT: "SoC回片软件验证测试AI辅助自动化数字化改造实行落地运行"
|
||||
PROJECT_DESCRIPTION: "AI辅助的SoC回片软件验证测试自动化数字化平台"
|
||||
|
||||
# --- 子项目 P01(主应用)---
|
||||
P01_NAME: "P01_soc_sw_app"
|
||||
P01_DESC: "SoC_SW 主应用"
|
||||
P01_FRONTEND: "Taro 4 + React 18 + TypeScript"
|
||||
P01_BACKEND: "NestJS 10 + TypeScript"
|
||||
|
||||
# --- 子项目 P02(训练/AI)---
|
||||
P02_NAME: "P02_soc_sw_training"
|
||||
P02_DESC: "SoC_SW AI 训练模块"
|
||||
|
||||
# --- 子项目 P03(管理后台)---
|
||||
P03_NAME: "P03_soc_sw_web"
|
||||
P03_DESC: "SoC_SW Web 管理后台"
|
||||
|
||||
# --- 阶段定义 ---
|
||||
PHASE1_NAME: "基础搭建"
|
||||
PHASE1_GOAL: "搭建项目骨架:协作框架、脚手架、权限体系"
|
||||
PHASE2_NAME: "MVP"
|
||||
PHASE2_GOAL: "实现SoC回片软件验证测试AI辅助自动化数字化改造实行落地运行核心功能"
|
||||
PHASE3_NAME: "功能完善"
|
||||
PHASE3_GOAL: "功能迭代、多端适配、性能优化"
|
||||
PHASE4_NAME: "打磨发布"
|
||||
PHASE4_GOAL: "质量提升、安全审计、文档完善"
|
||||
|
||||
# --- 数据库 ---
|
||||
DATABASE_URL: "postgresql://user:password@localhost:5432/soc_sw"
|
||||
@@ -0,0 +1,102 @@
|
||||
# SoC_SW 项目控制面板
|
||||
|
||||
> 唯一真实来源。人类看顶部,Arch AI 看全文,Worker AI 看 task 文件。
|
||||
|
||||
---
|
||||
|
||||
## 人类区
|
||||
|
||||
**Phase 1/4 — 基础搭建** · 进度 0%
|
||||
|
||||
| 阶段 | 状态 | 进度 |
|
||||
|------|------|------|
|
||||
| 1. 基础搭建 | ← 当前 | 0% |
|
||||
| 2. MVP | 未开始 | 0% |
|
||||
| 3. 功能完善 | 未开始 | 0% |
|
||||
| 4. 打磨发布 | 未开始 | 0% |
|
||||
|
||||
### 需要你决策
|
||||
|
||||
当前无待决策事项。
|
||||
|
||||
### 上次决策追踪
|
||||
|
||||
(暂无)
|
||||
|
||||
---
|
||||
|
||||
## Arch AI 区
|
||||
|
||||
### ADR 摘要索引
|
||||
|
||||
| ADR | 一句话 | 状态 |
|
||||
|-----|--------|------|
|
||||
| 001 | 「1 人 + 3 AI」三角协作框架 | ✅ |
|
||||
| 002 | 四级权限体系(-/R/W/RW) | ✅ |
|
||||
| 003 | 根级 docs/ 目录 | ✅ |
|
||||
| 004 | 独立 tools/ + data/ 目录 | ✅ |
|
||||
| 005 | 测试→修复 3 轮升级机制 | ✅ |
|
||||
| 006 | resume-context 多机同步 | ✅ |
|
||||
| 007 | 分层信息架构 + Token 预算 | ✅ |
|
||||
| 012 | 跨平台「高模型指挥小模型」协作架构 | ✅ 当前基准 |
|
||||
| 013 | Skill 替代脚本 — 框架脱敏/初始化的正确方式 | ✅ |
|
||||
|
||||
### Task 状态面板
|
||||
|
||||
**Coder 任务 (Trae + GLM-4.6)**:
|
||||
|
||||
| Task | 描述 | 优先 | 状态 | 依赖 | 分配给 |
|
||||
|------|------|------|------|------|--------|
|
||||
| — | 暂无 | — | — | — | — |
|
||||
|
||||
**Tester 任务 (Coze CN)**:
|
||||
|
||||
| Task | 描述 | 优先 | 状态 | 对应 Coder task |
|
||||
|------|------|------|------|-----------------|
|
||||
| — | 暂无 | — | — | — |
|
||||
|
||||
**状态流转**: `todo → in_progress → done → tested → accepted`
|
||||
**交接信号**: Coder 完成 → commit message 包含 `[READY_FOR_TEST]` → Tester 自动发现
|
||||
|
||||
### 依赖关系
|
||||
|
||||
(暂无任务)
|
||||
|
||||
### 阻塞/风险
|
||||
|
||||
(暂无)
|
||||
|
||||
---
|
||||
|
||||
## 关键文档入口
|
||||
|
||||
| 想查什么 | 路径 |
|
||||
|----------|------|
|
||||
| 产品需求 | [docs/01_产品需求/PRD.md](docs/01_产品需求/PRD.md) |
|
||||
| 系统架构 | [docs/02_系统架构/](docs/02_系统架构/) |
|
||||
| ADR 全文 | [.ai/knowledge/decisions.md](.ai/knowledge/decisions.md) |
|
||||
| 经验教训 | [.ai/knowledge/lessons.md](.ai/knowledge/lessons.md) |
|
||||
| 可复用模式 | [.ai/knowledge/patterns.md](.ai/knowledge/patterns.md) |
|
||||
| 分享文章 | [docs/share/](docs/share/) |
|
||||
| 待人类决策 | [DECISIONS.md](DECISIONS.md) |
|
||||
|
||||
---
|
||||
|
||||
## 角色入口
|
||||
|
||||
| 角色 | 平台+模型 | 入口 |
|
||||
|------|----------|------|
|
||||
| 人类 | — | 本文件顶部「人类区」 |
|
||||
| Arch AI | Claude Code + DeepSeek V4 Pro | 本文件全文 |
|
||||
| Coder AI | Trae CN + GLM-4.6 | [.ai/roles/dev/card.md](.ai/roles/dev/card.md) → 对应 task 文件 |
|
||||
| Tester AI | Coze CN | [.ai/roles/qa/card.md](.ai/roles/qa/card.md) → 对应 task 文件 |
|
||||
|
||||
---
|
||||
|
||||
## 最近事件
|
||||
|
||||
| 日期 | 事件 |
|
||||
|------|------|
|
||||
| 2026-05-26 | 项目初始化:从 ErrLens 框架导出,SoC_SW 项目创建 |
|
||||
|
||||
*Arch AI 维护。阶段切换时更新。不随每日任务变化。*
|
||||
@@ -0,0 +1,236 @@
|
||||
# SoC_SW 使用手册
|
||||
|
||||
> 适用对象:人类负责人、Arch AI、Coder AI、Tester AI
|
||||
|
||||
---
|
||||
|
||||
## 目录
|
||||
|
||||
- [人类篇:我怎么管项目](#人类篇我怎么管项目)
|
||||
- [AI 篇:我怎么干活](#ai-篇我怎么干活)
|
||||
- [Arch AI](#arch-ai-架构师)
|
||||
- [Coder AI](#coder-ai-开发者)
|
||||
- [Tester AI](#tester-ai-测试者)
|
||||
- [场景篇](#场景篇)
|
||||
- [日常推进](#场景一日常推进)
|
||||
- [换电脑/换模型](#场景二换电脑换模型)
|
||||
- [阶段切换](#场景三阶段切换)
|
||||
- [Bug 修复循环](#场景四bug-修复循环)
|
||||
- [速查表](#速查表)
|
||||
|
||||
---
|
||||
|
||||
## 人类篇:我怎么管项目
|
||||
|
||||
### 第一次进来
|
||||
|
||||
```
|
||||
1. 打开 dashboard.md(30 秒读完)
|
||||
→ 了解:现在在哪个阶段、进度如何、有什么阻塞
|
||||
2. 打开 DECISIONS.md
|
||||
→ 看:有没有需要你拍板的事
|
||||
3. 打开 docs/使用手册.md(就是本文档)
|
||||
→ 了解:怎么跟 AI 协作
|
||||
```
|
||||
|
||||
### 日常工作
|
||||
|
||||
| 你想干嘛 | 去哪个文件 | 干什么 |
|
||||
|----------|-----------|--------|
|
||||
| 看看进度 | `dashboard.md` | 一眼看到阶段和阻塞 |
|
||||
| 看任务状态 | `dashboard.md` → Task 面板 | Coder/Tester 各自进度 |
|
||||
| 需要决策 | `DECISIONS.md` | 待决策项 |
|
||||
| 看测试结果 | `reports/` | Tester AI 生成的报告 |
|
||||
| 看为什么这样设计 | `.ai/knowledge/decisions.md` | 架构决策记录 |
|
||||
|
||||
### 你不需要懂的东西
|
||||
|
||||
- `projects/*/src/` — 代码,交给 Coder AI
|
||||
- `projects/*/tests/` — 测试代码,交给 Tester AI
|
||||
- `.ai/config/` — AI 配置文件,Arch AI 维护
|
||||
|
||||
---
|
||||
|
||||
## AI 篇:我怎么干活
|
||||
|
||||
### 核心原则
|
||||
|
||||
```
|
||||
每个角色只读 1-2 个文件即可开工:
|
||||
|
||||
Arch AI: dashboard.md 全文(1 个文件)
|
||||
Coder AI: card.md → task 文件(2 个文件)
|
||||
Tester AI: card.md → task 文件(2 个文件)
|
||||
|
||||
不要从头遍历项目。用链接按需加载。
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Arch AI(架构师)
|
||||
|
||||
#### 进来第一件事
|
||||
|
||||
```
|
||||
读 dashboard.md 全文 → 项目全貌 + ADR 索引 + task 状态面板
|
||||
```
|
||||
|
||||
#### 日常工作
|
||||
|
||||
| 做什么 | 怎么做 | 产出 |
|
||||
|--------|--------|------|
|
||||
| 写 PRD | 读背景 → 写 `docs/01_产品需求/PRD.md` | PRD.md |
|
||||
| 设计架构 | 用 `.ai/prompts/architecture/architecture-design.md` | `docs/02_系统架构/` |
|
||||
| 分配任务 | 按模板写 `.ai/tasks/active/P01-XXX.md`,更新 dashboard.md | task 文件 |
|
||||
| 记录决策 | 在 `.ai/knowledge/decisions.md` 新增 ADR | ADR |
|
||||
| 人类决策入口 | 写入 `DECISIONS.md` | 待决策项 |
|
||||
|
||||
#### 完成工作后
|
||||
|
||||
```
|
||||
1. 更新 dashboard.md(task 状态 + 最近事件)
|
||||
2. 写 .ai/knowledge/journal/{日期}.md(简要记录)
|
||||
```
|
||||
|
||||
#### 阶段切换(重要)
|
||||
|
||||
```
|
||||
1. 检查 completion.md 全部打勾
|
||||
2. 更新所有 .ai/roles/*/card.md 的当前阶段
|
||||
3. 更新 .ai/phases/INDEX.md
|
||||
4. 更新 dashboard.md(进度条 + task 状态面板 + 最近事件)
|
||||
5. 产出阶段复盘 → docs/share/phase-NN/
|
||||
6. 通知人类签字
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Coder AI(开发者)
|
||||
|
||||
#### 进来第一件事
|
||||
|
||||
```
|
||||
读 .ai/roles/dev/card.md → 身份、权限、当前阶段
|
||||
读 dashboard.md → 找到自己的 task(状态为 todo)
|
||||
读 .ai/tasks/active/P01-XXX.md → 这就是你的全部世界
|
||||
```
|
||||
|
||||
#### 核心规则
|
||||
|
||||
**不需要**读 ADR 全文、知识库、或其他 task 文件。你的 task 文件已经包含了完成任务所需的全部信息(输入/输出/约束/验收方法)。
|
||||
|
||||
#### 完成代码后
|
||||
|
||||
```
|
||||
1. 填写 task 文件的「完成报告」
|
||||
2. commit(message 含 [READY_FOR_TEST])
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Tester AI(测试者)
|
||||
|
||||
#### 进来第一件事
|
||||
|
||||
```
|
||||
读 .ai/roles/qa/card.md → 身份、权限
|
||||
git pull → 拉取最新代码
|
||||
git log --grep="READY_FOR_TEST" → 查找待测试的 task
|
||||
读 .ai/tasks/active/T01-XXX.md → 这就是你的全部世界
|
||||
```
|
||||
|
||||
#### 核心规则
|
||||
|
||||
你不需要知道项目全貌、不需要读架构文档、不需要读 ADR。你的 task 文件 + 被测代码 = 你需要的一切。
|
||||
|
||||
#### 完成后
|
||||
|
||||
```
|
||||
1. 生成测试报告 → reports/{编号}-{日期}.json
|
||||
2. 填写 task 文件的「完成报告」
|
||||
3. commit
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 场景篇
|
||||
|
||||
### 场景一:日常推进
|
||||
|
||||
**人类**:
|
||||
1. 打开 `dashboard.md` 看一眼
|
||||
2. 打开 `DECISIONS.md` 看有没有待决策
|
||||
|
||||
**Coder AI**:读 card.md → task 文件 → 写代码 → commit [READY_FOR_TEST]
|
||||
|
||||
**Tester AI**:git pull → git log --grep → task 文件 → 测试 → commit
|
||||
|
||||
### 场景二:换电脑/换模型
|
||||
|
||||
**换电脑**:用 `resume-context` Skill → 自动加载上下文
|
||||
|
||||
**换模型**:用 `switch-model` Skill → 指定角色 → 自动加载角色工作台
|
||||
|
||||
**手动恢复**:
|
||||
```
|
||||
1. 读 dashboard.md → 知道现在在哪
|
||||
2. 读 .ai/roles/{你的角色}/card.md → 知道你是谁
|
||||
```
|
||||
|
||||
### 场景三:阶段切换
|
||||
|
||||
```
|
||||
Phase N 完成 → Phase N+1 启动:
|
||||
|
||||
1. Arch AI 检查 completion.md 全部打勾
|
||||
2. Arch AI 写阶段复盘到 docs/share/phase-NN/
|
||||
3. 人类签字确认
|
||||
4. Arch AI 更新:
|
||||
├── dashboard.md(进度条 + task 面板 + 事件)
|
||||
├── .ai/phases/INDEX.md(状态改为 DONE/ACTIVE)
|
||||
└── .ai/roles/*/card.md(当前阶段字段)
|
||||
5. 新阶段启动
|
||||
```
|
||||
|
||||
### 场景四:Bug 修复循环
|
||||
|
||||
```
|
||||
Coder AI 提交代码 [READY_FOR_TEST]
|
||||
→ Tester AI 测试
|
||||
→ 有 Bug?
|
||||
├── 是 → 测试报告标注 FAIL
|
||||
│ → Arch AI 写入 task 的约束/补充说明
|
||||
│ → Coder AI 修复 → 重新 [READY_FOR_TEST]
|
||||
│ → Tester AI 复查
|
||||
│ ├── 仍 FAIL (第3轮) → 升级人类
|
||||
│ └── PASS → DONE
|
||||
└── 否 → PASS → DONE
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 速查表
|
||||
|
||||
### 我想知道...
|
||||
|
||||
| 问题 | 答案在哪 |
|
||||
|------|----------|
|
||||
| 项目总进度 | `dashboard.md` |
|
||||
| 有什么待决策 | `DECISIONS.md` |
|
||||
| 这个任务怎么做 | `.ai/tasks/active/{编号}.md` |
|
||||
| 这个设计为什么这样 | `.ai/knowledge/decisions.md` |
|
||||
| AI 有什么权限 | `AGENTS.md`(权威)或 `.ai/roles/{role}/card.md` |
|
||||
| 代码怎么写才规范 | `.ai/prompts/coding/code-style.md` |
|
||||
| 测试怎么报告 Bug | `.ai/prompts/testing/bug-report.md` |
|
||||
| 现在是什么阶段 | `dashboard.md` |
|
||||
| 踩过什么坑 | `.ai/knowledge/lessons.md` |
|
||||
| 可复用的模式 | `.ai/knowledge/patterns.md` |
|
||||
| 今天做了什么 | `.ai/knowledge/journal/{日期}.md` |
|
||||
| 怎么装开发环境 | `ENVIRONMENT.md` |
|
||||
| 新加入一个 AI 怎么上手 | 读本手册 + 读对应角色的 card.md |
|
||||
|
||||
---
|
||||
|
||||
## 维护者
|
||||
|
||||
Arch AI。本文档随架构演变同步更新。
|
||||
Reference in New Issue
Block a user