docs: add canvas-dev workflow and update AGENTS.md v12

This commit is contained in:
tukuaiai 2026-01-01 07:14:41 +08:00
parent 89a752c695
commit 544b3c5766
2 changed files with 254 additions and 249 deletions

View File

@ -390,310 +390,284 @@ AGENTS.md 内容要求:
<canvas_driven_development>
<core_principle>
Canvas白板 = 人机协作的单一真相源
- 代码是白板的序列化形式
- 架构变更必先体现在白板
- AI通过读取Canvas JSON理解项目全貌
<title>核心原则:画布驱动开发 (Canvas-Driven Development, CDD)</title>
<statement>Canvas白板 = 人机协作的单一、权威的真相源 (Single Source of Truth)</statement>
<principles_list>
- 代码是画布的序列化实现形式,画布是意图,代码是结果
- 任何架构级的变更,必须首先在画布上进行设计和体现
- AI通过实时读取和解析Canvas JSON来精确理解项目的完整架构和人类的设计意图
</principles_list>
</core_principle>
<canvas_structure>
Canvas文件结构
- nodes: 系统组件的可视化节点(模块、服务、数据库)
- edges: 组件间的依赖关系与数据流向
- 节点属性: id, type, text, x, y, width, height, color
- 边属性: id, fromNode, toNode, fromSide, toSide, label
Canvas文件生成规则
1. 默认路径:`{项目根目录}/architecture.canvas`
2. 备用路径(如根目录不可写):`{用户主目录}/architecture_{项目名}.canvas`
3. 文件编码UTF-8无 BOM
4. 格式化JSON 缩进 2 空格,最后一行留空行
AI解析规则
- 节点text字段 = 组件的职责说明 + 关键类/函数
- 边的方向 = 调用关系或数据流向
- 节点颜色 = 组件角色分类(入口/业务/存储/外部服务)
- 节点坐标 = 架构层级Y轴表示调用层次
<title>画布的结构、规则与AI解读</title>
<subsection title="Canvas文件结构">
- nodes: 系统中所有具象化组件的可视化节点例如模块、服务、API网关、数据库表、外部依赖
- edges: 组件之间明确的依赖关系、控制流与数据流向
- 节点属性: id, type, text, x, y, width, height, color (每个属性都承载着架构信息)
- 边属性: id, fromNode, toNode, fromSide, toSide, label (用于标注交互的性质)
</subsection>
<subsection title="Canvas文件生成规则">
1. 默认路径:`{项目根目录}/architecture.canvas` (作为项目核心资产存在)
2. 备用路径:`{用户主目录}/architecture_{项目名}.canvas` (仅在根目录不可写时启用)
3. 文件编码UTF-8 (无 BOM)
4. 格式化JSON 缩进 2 空格,文件末尾保留一个空行,以符合通用规范
</subsection>
<subsection title="AI的语义解析规则">
- 节点text字段: AI理解组件核心职责、目的和关键内部实现类/函数)的主要信息来源
- 边的方向: 明确定义了控制流或数据流的方向(调用方 → 被调用方),不存在歧义
- 节点颜色: AI用于判断组件角色和所属架构层级的关键分类器例如入口层、业务逻辑层、数据持久化层
- 节点Y轴坐标: AI解读架构分层和调用链的强信号Y坐标值小 ≈ 上层。X轴坐标则暗示同层内的逻辑分组
</subsection>
</canvas_structure>
<collaboration_workflow>
人类操作白板 → AI理解意图 → 生成/修改代码
<title>核心协作流程人类设计师与AI工程师的共舞</title>
<scenario title="场景1实现新功能">
1. 人类架构师 (在画布上设计):通过拖拽创建新节点(例如 `[短信通知服务]`),并用边将其与现有模块连接起来(例如 `[订单服务] → [短信通知服务] → [阿里云短信API]`),完成可视化设计
2. 人类架构师 (下达指令)将更新后的画布交给AI并发出明确指令"按照这个新设计,实现短信通知功能"
3. AI伙伴 (分析意图)AI解析新增的`nodes`和`edges`,构建出精确的执行计划:“需要创建一个名为`SmsNotificationService`的新模块/类。它需要暴露一个接口供`OrderService`调用,并且其内部实现将依赖并调用`AliyunSmsAPI`。”
4. AI伙伴 (生成代码)AI自动生成所有必要的代码包括新文件、类和函数的骨架、正确的`import`语句,以及符合依赖关系的调用链代码
</scenario>
场景1新增功能
1. 人类在白板拖入新节点(如 [NotificationService]
2. 人类连线到相关模块([UserService] → [NotificationService] → [EmailAPI]
3. 人类提供白板给AI"按这个架构实现通知功能"
4. AI读取nodes和edges理解
- 需要创建NotificationService类
- 需要从UserService调用
- 需要集成EmailAPI
5. AI生成完整代码包括import、接口定义、调用链
<scenario title="场景2进行架构重构">
1. 人类架构师 (在画布上重构):通过拖动节点进行模块重组,删除过时的节点,并重新绘制边的连接,以表达新的架构意图
2. 人类架构师 (下达指令)将新的画布交给AI“将代码库重构以匹配这个新的架构设计”
3. AI伙伴 (差异分析)AI执行“画布比对”(Canvas Diff)算法,精确识别新旧画布之间的所有变化:哪些节点被删除,哪些边被重定向,哪些节点被移动(可能意味着模块归属变更)
4. AI伙伴 (执行重构)AI生成一份详细的重构计划供人类审批例如“将删除 `old_api.py` 文件。将把 `calculate_price` 函数从`Product`模块移动到`Pricing`模块。这将影响3个调用点。”。获得批准后自动执行全部重构操作
</scenario>
场景2重构架构
1. 人类在白板拖动/删除/重组节点
2. 人类调整连线关系
3. 人类提供新白板给AI"按新架构重构"
4. AI对比新旧Canvas结构
- 识别被删除的节点 → 移除相关代码
- 识别新增的边 → 添加调用关系
- 识别移动的节点 → 调整模块边界
5. AI输出重构计划 + 自动执行
场景3理解遗留项目
1. AI自动扫描项目生成Canvas白板
2. 人类通过白板快速理解架构全貌
3. 人类点击节点查看详细说明
4. 人类在白板上标注待优化部分
5. AI根据标注提供重构建议
<scenario title="场景3理解和维护遗留项目">
1. AI伙伴 (逆向工程)AI接收指令“为这个遗留项目生成一份架构画布”然后对现有代码库进行深度扫描和分析
2. 人类开发者 (快速上手)通过AI生成的画布新成员可以迅速、直观地理解整个项目的宏观架构、核心模块和关键依赖极大降低了认知负命
3. 人类开发者 (交互式探索)点击画布上的任意节点可以查看AI生成的该模块的职责摘要和关键代码片段
4. 人类开发者 (规划优化):直接在画布上通过颜色或标注来标记需要重构或优化的区域
5. AI伙伴 (提供建议)根据人类的标注AI可以被要求“为标记的区域提供具体的重构方案和代码建议”
</scenario>
</collaboration_workflow>
<canvas_generation_protocol>
自动生成Canvas的触发条件
- 用户明确要求"生成架构图"
- 项目结构发生重大变更(新增/删除超过3个模块
- 代码审查前(确保架构可视化)
<title>画布生成协议 (从 代码 到 画布)</title>
<subsection title="自动生成画布的触发条件">
- 用户通过IDE插件或命令行明确发出指令“生成/更新架构图”
- AI的后台守护进程检测到项目结构发生重大变更例如一次提交中新增/删除了超过3个主要模块
- 作为代码审查Code Review流程的强制前置步骤确保所有审查都基于最新的、可视化的架构图
</subsection>
生成流程:
1. 扫描项目文件树,识别所有源代码文件
2. 解析import语句构建依赖图
3. 检测数据库操作、API调用、文件IO
4. 根据目录结构和命名规则分类组件
5. 智能布局节点(按架构层级自动计算坐标)
6. 生成Canvas JSON并写入 `architecture.canvas`
<subsection title="生成流程 (AI的逆向工程)">
1. 深度扫描:扫描项目文件树,识别所有源代码、配置文件、构建脚本等有意义的文件
2. 语义解析:利用抽象语法树(AST)对代码进行解析,构建精确的、语义化的内部依赖图,而非简单的文本匹配
3. 行为分析检测代码中的关键行为如数据库操作、外部API调用、文件I/O、消息队列的生产/消费等
4. 智能分类:基于目录结构、命名约定和代码内容,使用内置的启发式模型对所有组件进行角色分类
5. 自动布局:采用混合布局算法(拓扑排序定层级,力导向定位置),动态计算出既美观又信息量丰富的节点坐标
6. 序列化输出将最终的架构模型序列化为JSON格式并写入到标准的 `architecture.canvas` 文件中
</subsection>
输出规范:
- 文件名:项目根目录下 `architecture.canvas`
- 节点命名:`{组件类型}_{文件名}` 如 `service_payment`
- 边命名:`edge_{源}_{目标}` 如 `edge_user_payment`
- 颜色编码:
* "1"红 = 入口文件、主程序
* "2"橙 = 工具类、公共库
* "3"黄 = 业务逻辑层
* "4"绿 = 外部服务
* "5"青 = 数据存储
* "6"紫 = 前端/UI层
<subsection title="输出规范">
- 文件名:严格遵循 `architecture.canvas`,位于项目根目录
- 节点命名:`{组件类型}_{文件名}`,例如 `service_payment`,确保唯一性和可读性
- 边命名:`edge_{源节点ID}_{目标节点ID}`,例如 `edge_user_payment`
- 颜色编码 (必须遵守)
* "1" 红 = 入口文件、API网关、主程序
* "2" 橙 = 工具类、辅助模块、公共库
* "3" 黄 = 核心业务逻辑、服务层、处理器
* "4" 绿 = 外部服务集成、第三方API客户端
* "5" 青 = 数据库、缓存、持久化层
* "6" 紫 = 前端组件、UI层、路由
</subsection>
</canvas_generation_protocol>
<canvas_update_protocol>
同步策略:双向实时更新
<title>双向同步协议:维持画布与代码的实时一致性</title>
<subsection title="同步策略:双向、实时、主动">
画布和代码是同一架构实体的两种不同表现形式,必须时刻保持同步
</subsection>
<subsection title="代码变更 → 画布更新 (AI自动维护)">
- 新增文件AI自动在画布上添加一个对应的新节点并根据其依赖关系智能放置在合适的位置
- 新增import/requireAI自动在画布上添加一条对应的边
- 删除文件AI将画布上对应的节点标记为“已弃用”状态例如变为灰色以保留历史记录而非直接删除
- 修改依赖关系AI自动更新画布上边的连接关系
</subsection>
代码变更 → Canvas更新
- 新增文件 → 自动添加节点
- 新增import → 自动添加连线
- 删除文件 → 标记节点为灰色(保留历史)
- 修改依赖 → 更新边的连接关系
<subsection title="画布变更 → 代码更新 (AI正向工程)">
- 新增节点AI根据节点的`text`描述,自动生成对应的文件和类/函数模板
- 新增边AI在源节点的代码中自动添加`import`语句和对目标节点的函数调用骨架
- 删除节点AI会向人类开发者发出确认请求“你确定要删除这些相关文件吗防止误操作
- 移动节点AI会建议进行对应的目录结构调整和命名空间变更可选操作
</subsection>
Canvas变更 → 代码更新:
- 新增节点 → 生成对应文件模板
- 新增边 → 添加import和调用代码
- 删除节点 → 提示删除文件(需确认)
- 移动节点 → 调整目录结构(可选)
触发时机:
- 每次git commit前自动检查Canvas与代码一致性
- AI检测到不一致时主动询问"Canvas与代码不同步是否更新"
<subsection title="触发时机">
- 通过IDE的文件系统监听器实时感知变更
- 在每次`git commit`之前,通过钩子(hook)强制执行一次一致性检查
- 当AI检测到任何不一致时会主动通过IDE弹窗或命令行提示询问“检测到画布与代码不同步是否立即执行同步
</subsection>
</canvas_update_protocol>
<ai_canvas_reading_protocol>
AI接收Canvas文件的处理流程
<title>AI画布解读协议AI如何“看懂”你的设计</title>
<subsection title="AI接收Canvas文件的处理流程">
第一步结构化解析JSON
```python
canvas_data = json.loads(canvas_content)
nodes = canvas_data["nodes"] # 获取所有组件实体
edges = canvas_data["edges"] # 获取所有依赖关系
```
Step 1解析JSON结构
```python
canvas_data = json.loads(canvas_content)
nodes = canvas_data["nodes"] # 所有组件
edges = canvas_data["edges"] # 所有依赖关系
```
第二步:构建心智模型 (Mental Model)
- 从`nodes`中提取每个组件的名称、核心职责描述、关键API或函数
- 从`edges`中提取:精确的调用链路和数据流向
- 根据`Y`坐标推断:系统的整体架构分层(上层调用下层)
- 根据`color`推断:每个组件在架构中扮演的角色(入口/业务/存储)
Step 2构建心智模型
- 从nodes提取组件名称、职责描述、关键API
- 从edges提取调用链路、数据流向
- 根据Y坐标推断架构层级上层调用下层
- 根据颜色推断:组件角色(入口/业务/存储)
第三步:验证理解 (关键步骤)
AI在执行任何实质性操作前必须用自然语言向人类复述它的理解并请求确认
“根据我的理解,您设计的架构是:
- 入口层:{列出所有红色节点的名字}
- 核心业务层:{列出所有黄色节点的名字}
- 数据存储层:{列出所有青色节点的名字}
- 其中一条关键的调用链是:{A → B → C}
我的理解是否正确?如果正确,我将开始执行任务。”
Step 3验证理解
AI应主动确认
"我理解的架构是:
- 入口层:{列出所有红色节点}
- 业务层:{列出所有黄色节点}
- 存储层:{列出所有青色节点}
- 关键调用链:{A → B → C}
这样理解对吗?"
Step 4基于Canvas执行任务
- 新增功能:找到相关节点,生成符合架构的代码
- 重构代码遵循Canvas定义的模块边界
- 修复Bug沿着edges追踪可能的影响范围
- 代码审查检查实际调用是否符合Canvas设计
第四步:基于已验证的画布模型执行任务
- 新增功能:严格按照画布定义的模块边界和依赖关系,在正确的位置生成代码
- 重构代码:将画布定义的新结构作为重构的最终目标和唯一准则
- 修复Bug沿着画布上的`edges`进行影响范围分析和问题根源追踪
- 代码审查:将实际代码的调用关系与画布的设计进行比对,自动发现不合规的调用
</subsection>
</ai_canvas_reading_protocol>
<canvas_editing_protocol>
人类编辑Canvas的最佳实践
<title>画布编辑协议:人类高效表达设计意图的最佳实践</title>
<subsection title="节点编辑">
- 双击节点:进入文本编辑模式
- text格式 (标准)`{模块名}\n{相对路径}\n\n{一句话核心职责描述}\n\n包含\n- {关键类名}\n- {关键函数名}`
- 颜色选择:严格按照`<canvas_generation_protocol>`中定义的颜色编码规范进行选择
- 位置调整Y轴严格表示调用层级X轴用于对同层内的相关模块进行逻辑分组
</subsection>
节点编辑:
- 双击节点进入编辑模式
- text格式`**{模块名}**\n{路径}\n\n{职责描述}\n\n包含\n- {关键类}\n- {关键函数}`
- 颜色选择:根据组件角色选择对应颜色
- 位置调整Y轴表示调用层级X轴表示同层内的逻辑分组
<subsection title="边的编辑">
- 连线方向:必须从调用方指向被调用方
- 添加label为关键或复杂的依赖添加文本标签说明调用的目的或类型例如“同步获取数据”、“异步发送事件”
- 删除边:代表着解除两个模块之间的依赖关系
- fromSide/toSide手动调整连接点以获得视觉上最清晰、交叉最少的布局
</subsection>
边的编辑:
- 连线方向:从调用方指向被调用方
- 添加label标注调用类型同步/异步/数据流)
- 删除边:移除不必要的依赖关系
- fromSide/toSide选择视觉上最清晰的连接点
架构调整原则:
- 保持层级清晰:上层不应连到更上层
- 避免循环依赖:检查是否有环形调用
- 模块内聚:同一职责的节点靠近放置
- 接口简洁一个节点连接数不超过5条
<subsection title="架构调整原则">
- 保持层级清晰:上层节点不应该连接到更上层的节点
- 避免循环依赖:在连接时,主动检查是否形成了环形调用,这是架构的“坏味道”
- 模块高内聚:职责相近、交互频繁的节点应在物理位置上靠近放置
- 接口低耦合:一个节点的入度和出度总根据内容自适应
</subsection>
</canvas_editing_protocol>
<documentation_sync_protocol>
Canvas与文档的强制同步
<title>文档同步协议:确保架构知识的完整与传承</title>
<subsection title="强制同步三件套">
每次架构发生有意义的调整后,必须在同一次提交中更新以下三份文档:
1. `architecture.canvas` - 可视化的架构图,是技术实现的主文档
2. `ARCHITECTURE.md` - 架构决策记录 (ADR),用文字解释为什么这样设计,考虑了哪些替代方案,以及当前设计的权衡和取舍
3. `CHANGELOG.md` - 架构演进日志,记录本次调整了哪些节点/边可能的影响范围以及是否需要数据迁移或API变更
</subsection>
每次架构调整后必须更新:
1. `architecture.canvas` - 可视化架构图(主文档)
2. `ARCHITECTURE.md` - 架构决策记录ADR格式
- 为什么这样设计
- 考虑过哪些替代方案
- 当前设计的权衡
3. `CHANGELOG.md` - 架构演进日志
- 本次调整了哪些节点/边
- 影响范围
- 迁移指南(如有)
<subsection title="同步检查点">
- git commit时通过钩子自动检查`architecture.canvas`与代码的AST是否一致
- PR review时审查流程中必须包含对`architecture.canvas`文件变更的审查
- Sprint评审时将当前版本的画布导出为图片作为本次迭代成果的一部分进行展示和存档
</subsection>
同步检查点:
- git commit时检查Canvas与代码一致性
- PR review时要求附上Canvas变更对比
- Sprint结束时导出Canvas历史版本存档
格式要求:
- 每个节点的text必须包含"职责一句话"
- 每条边必须能回答"为什么需要这个依赖"
- 颜色使用必须符合编码规范
- 坐标调整必须保持逻辑层次清晰
<subsection title="内容格式要求">
- 每个节点的`text`描述中必须包含一句清晰的“核心职责”描述
- 每一条关键的边,都应该能清晰地回答“为什么需要这个依赖”这个问题
- 颜色的使用必须严格遵守编码规范
- 坐标的调整必须反映真实的逻辑层次关系
</subsection>
</documentation_sync_protocol>
<interaction_protocol>
AI与人类的Canvas协作规范
<title>交互协议AI与人类基于画布的协作规范</title>
<subsection title="语言策略">
- 画布节点text使用中文描述职责使用英文标注技术实体名类名/函数名)
- 边的label使用中文说明调用的业务目的例如“获取用户信息”、“创建订单”
- AI的输出使用中文解释其对架构的理解和执行计划使用英文生成代码
</subsection>
语言策略:
- Canvas节点text中文描述职责英文标注类名/函数名
- 边的label中文说明调用目的如"获取用户信息"
- AI输出中文解释架构理解英文生成代码
<subsection title="沟通流程">
1. 人类提供更新后的画布 + 一句高层次的任务描述
2. AI首先用中文进行理解确认“我看到您的新设计是{简述画布变更},我的任务是{复述任务},这个理解正确吗?”
3. 人类进行确认或提供修正
4. AI执行任务并在执行过程中如有必要会自动更新画布例如生成了新的内部辅助类
5. AI任务完成后用中文总结“任务{任务名}’已完成。相关代码已生成,并且`architecture.canvas`也已同步更新。”
</subsection>
沟通流程:
1. 人类提供Canvas + 任务描述
2. AI先用中文确认理解
"我看到架构是这样的:{简述},我将{任务},是否正确?"
3. 人类确认或纠正
4. AI执行任务并更新Canvas如需要
5. AI用中文总结变更"已完成{任务}Canvas已同步更新"
冲突处理:
- 若Canvas与代码不一致AI优先信任Canvas
- 若发现Canvas设计有问题AI提出但不擅自修改
- 若任务超出Canvas定义范围AI先建议扩展Canvas
错误处理:
- Canvas JSON格式错误提示具体错误位置
- 节点引用不存在:列出可用节点供选择
- 循环依赖检测:可视化显示依赖环
- 层级混乱:提供自动布局建议
<subsection title="冲突处理">
- 若画布与代码不一致AI优先采纳画布作为权威的设计意图
- 若AI分析发现画布本身的设计存在问题例如循环依赖它会提出警告和修改建议但绝不擅自修改人类的设计
- 若任务需求超出了当前画布的定义范围AI会首先建议“为了完成这个任务我们需要先在画布上扩展架构请设计一下{新模块}的位置和依赖。”
</subsection>
</interaction_protocol>
<quality_control_protocol>
Canvas质量标准
<title>画布质量标准:衡量一份“好”的架构图</title>
<subsection title="结构完整性">
- 代码覆盖率:所有核心代码文件都应在画布上有对应的节点(允许少量孤立的脚本文件存在,比例 &lt; 5%
- 依赖完整性:所有关键的`import`都应有对应的边遗漏的依赖应为0
- 分层合理性整个架构的层级深度以3-7层为宜过少则抽象不足过多则过于复杂
- 边密度适中每个节点的平均连接数在2-4条比较健康过多可能意味着职责不清
</subsection>
结构完整性:
- 所有代码文件都有对应节点(孤立文件 < 5%
- 所有import都有对应边遗漏依赖 = 0
- 节点分层合理3-7层为宜
- 边密度适中每节点平均2-4条边
可读性:
- 节点大小适中width=250-300, height自适应
- 文字清晰简洁(每个节点 < 150字
- 颜色使用一致(同类组件同颜色)
- 布局整齐同层Y坐标相近X轴等间距
准确性:
- 节点描述与实际代码一致
- 边的方向正确反映调用关系
- 颜色编码符合组件角色
- 坐标位置反映真实架构层次
维护性:
- 重大变更有注释在节点text中标注版本
- 历史版本可追溯git管理.canvas文件
- 定期清理过时节点(标记为灰色或删除)
- 复杂区域有子图拆分如微服务拆分多个Canvas
<subsection title="可读性">
- 节点尺寸适中:宽度内容自适应,高度根据内容自适应
- 文字清晰简洁:每个节点的`text`描述根据内容自适应
- 颜色使用一致同类角色例如所有Service的组件必须使用同一种颜色
- 布局整齐美观同层级的节点Y坐标应大致对齐X轴方向上间距均匀
</subsection>
</quality_control_protocol>
<advanced_patterns>
高级协作模式:
<title>高级协作模式:发掘画布驱动开发的全部潜力</title>
<subsection title="模式1渐进式重构">
- 在画布上用不同颜色标注重构状态:绿=已完成,黄=正在进行,红=待办
- AI可以根据颜色优先级自动生成分阶段的重构计划和代码
- 每次`commit`都对应着画布上部分节点颜色的变化,使进度可视化
</subsection>
模式1渐进式重构
- 在Canvas上用不同颜色标注绿=已重构,黄=进行中,红=待重构
- AI按颜色优先级生成重构计划
- 每次commit更新节点颜色
<subsection title="模式2团队多人协作">
- 将`architecture.canvas`文件纳入git管理作为团队共享的、唯一的架构设计板
- 每个开发者或小组负责的模块可以用专属的颜色或图标进行标记
- 在开始一个新功能前,先在画布上创建节点“占位”,并标注负责人,以避免架构层面的冲突
</subsection>
模式2多人协作
- Canvas作为团队共享架构图
- 每人负责的模块用专属颜色标记
- 新增功能前在Canvas上"占位"避免冲突
<subsection title="模式3版本演进与追溯">
- 为每个重要的产品版本例如v1.0, v2.0创建一个git tag并保存当时的`architecture.canvas`快照
- 可以通过`git diff v1.0 v2.0 -- architecture.canvas`来清晰地对比两个版本之间的架构演进
</subsection>
模式3版本演进
- 为每个大版本保存Canvas快照
- 对比不同版本Canvasgit diff architecture.canvas
- 生成架构演进动画(可选工具)
模式4AI自主优化
- 定期让AI分析Canvas"这个架构有什么问题?"
- AI建议循环依赖、单点故障、性能瓶颈
- 人类决策是否采纳AI执行重构
模式5跨项目复用
- 建立Canvas模板库Web后端/微服务/数据管道)
- 新项目直接导入模板Canvas
- AI根据模板生成项目脚手架
<subsection title="模式4AI自主优化建议">
- 定期向AI提问“请审查当前的架构画布并找出潜在的设计问题。”
- AI会基于其内置的架构知识库自动识别出循环依赖、“上帝对象”God Object、性能瓶颈等问题并直接在画布上提出修改建议
- 人类决策是否采纳建议然后由AI执行具体的重构操作
</subsection>
</advanced_patterns>
<emergency_protocol>
Canvas丢失或损坏的应急方案
<title>应急预案:处理画布丢失或损坏的情况</title>
<subsection title="预防措施">
- 强制版本控制:`architecture.canvas`文件必须纳入git版本控制并作为受保护的分支的一部分
- 定期自动备份配置CI/CD流程每周自动将画布文件备份到云存储
</subsection>
预防措施:
- Canvas文件纳入git版本控制
- 每周自动备份到云端
- 重要节点手动导出JSON备份
恢复流程:
1. 尝试从git历史恢复
2. 若git无记录触发AI重新生成
"紧急重建Canvas扫描当前代码生成架构图"
3. AI在30秒内生成基础Canvas
4. 人类补充关键设计决策和注释
5. 标记为"重建版本"并记录原因
降级方案:
- 若Canvas完全不可用AI切换到传统模式基于代码理解
- 提示人类:"Canvas不可用建议尽快重建以恢复最佳协作效率"
- 生成临时的文本版架构树Markdown格式作为过渡
<subsection title="恢复流程">
1. 首选方案尝试从git历史记录中恢复最近的健康版本
2. 次选方案若git记录丢失立即触发AI的紧急重建流程“紧急重建画布立即扫描当前代码库生成最新架构图”
3. AI将在短时间内例如30秒内生成一份基础的、功能性的画布
4. 人类团队在此基础上,快速补充关键的设计决策、注释和分组信息
5. 将恢复后的画布标记为“重建版本”,并记录事故原因
</subsection>
</emergency_protocol>
<principles>
Canvas驱动开发的核心原则
1. Canvas First架构变更先改Canvas代码跟随
2. 单一真相源Canvas = 唯一权威架构文档
3. 实时同步代码与Canvas必须保持一致
4. 人机共享Canvas既是给人看的图也是给AI读的数据
5. 渐进演进Canvas随项目成长持续更新永不过时
6. 可视优先:用图形表达的永远比文字清晰
7. 零翻译成本人类编辑Canvas = 直接指挥AI
8. 架构透明任何人打开Canvas立刻理解系统全貌
</principles>
</canvas_driven_development>
<ultimate_truth>

View File

@ -0,0 +1,31 @@
🚀 Canvas驱动开发法 - 完整工作流
1. 理解核心理念Canvas白板作为唯一真相源代码是其序列化形式图形语言优于文字描述人类负责架构设计AI负责代码实现
/
2. 准备工具环境安装Obsidian免费开源白板工具配置AI助手Claude/GPT-4需支持读取Canvas JSON格式准备目标项目代码库
/
3. 生成初始架构白板向AI提供项目代码路径使用架构分析提示词让AI扫描项目结构AI自动生成.canvas文件包含模块节点和依赖连线
/
4. 用Obsidian打开.canvas文件导入生成的架构白板检查自动识别的模块、文件、API调用关系验证关键依赖连线是否准确
/
5. 人工优化白板架构拖动调整模块位置使布局清晰补充AI遗漏的隐式依赖连线添加注释节点标注关键设计决策删除冗余或错误的连接
/
6. 建立代码-白板同步机制【假设有自动化工具】配置代码变更监听脚本设置白板自动更新规则新文件→新节点新import→新连线或手动维护每次代码改动后更新对应白板区域
/
7. 用白板驱动AI编程新功能开发场景在白板上画出新模块框和预期调用关系导出白板JSON发送给AI指令"按照这个架构图实现具体代码"AI根据节点名称、连线方向生成文件和函数调用
/
8. 用白板驱动代码重构(架构调整场景):在白板上删除/重连模块间的依赖线标注需要拆分的大模块如payment_service拆分为payment_processor和payment_validator发送修改后的白板给AI"按新架构重构代码,列出需要修改的文件清单"
/
9. 用白板辅助Code ReviewReview前先看白板全局架构识别异常连线如前端直接连数据库、循环依赖在白板上标注问题点讨论时指着白板说明"这条调用链不应该存在"
/
10. 用白板加速团队协作新人入职时先看白板1分钟理解全局需求评审时在白板上画出变更范围技术方案会议投屏白板而非代码会后将白板标注转化为开发任务
/
11. 维护白板与代码一致性每次PR/MR合并前检查白板是否需要更新定期运行自动校验脚本对比白板JSON与实际代码依赖发现不一致时优先修正白板因为白板是事实来源
/
12. 扩展应用场景接手遗留项目时先自动生成白板快速理解性能优化时用白板标注热点路径安全审计时检查白板上的敏感数据流向API设计时画出服务间调用拓扑
/
13. 【缺口澄清】明确你的项目类型以优化流程A) 单体应用(单进程多模块) B) 微服务架构多服务RPC通信 C) 前后端分离(前端框架+后端API默认假设A继续
/
14. 【缺口澄清】选择白板粒度级别A) 文件级(每个代码文件一个节点) B) 类/函数级(每个类一个节点) C) 服务级仅显示大模块推荐新手选A复杂项目选C
/
15. 持续迭代工作流每周回顾白板是否反映真实架构收集团队反馈优化节点命名和布局规则探索白板与CI/CD集成如PR触发白板diff检查分享最佳实践案例到团队知识库