Architech #1

Merged
shiyong.qin merged 8 commits from Architech into main 2026-04-16 11:16:48 +08:00
6 changed files with 582 additions and 4 deletions
Showing only changes of commit 509487f155 - Show all commits

View File

@@ -25,8 +25,12 @@ Agent回复时使用简体中文。
| 位置 | 用途 | 示例 |
|------|------|------|
| `~/.cursor/skills/` | 跨项目通用 Skill,全局可用 | epee-orchestrator、deferred-decisions |
| `.cursor/skills/` | 当前项目专属 Skill | 项目特定的代码生成、配置管理等 |
| `.cursor/skills/` | **所有 Skill 的主存储位置**(含通用和项目专属) | epee-orchestrator、deferred-decisions、项目特定 Skill |
| `~/.cursor/skills/` | 跨项目通用 Skill 的全局副本(可选,方便其他项目复用) | epee-orchestrator、deferred-decisions |
> **重要**:无论 Skill 是通用还是项目专属,都**必须**在项目的 `.cursor/skills/` 下保留一份,
> 以确保能被 Git 管理和版本控制。全局目录 `~/.cursor/skills/` 仅作为跨项目共享的便利副本,
> 不作为唯一存储位置。
### Agent 创建 Rule 或 Skill 时必须遵守
@@ -35,5 +39,5 @@ Agent回复时使用简体中文。
3. 确认后放入对应目录:
- 通用 Rule → `.cursor/rules/common/`
- 项目专属 Rule → `.cursor/rules/project/`
- 通用 Skill → `~/.cursor/skills/`
- 项目专属 Skill → `.cursor/skills/`
- **所有 Skill(含通用)→ `.cursor/skills/`**(必须,确保 Git 可管理)
- 通用 Skill 额外同步 → `~/.cursor/skills/`(可选,方便其他项目使用)

View File

@@ -0,0 +1,25 @@
---
description: 每次会话开始时读取用户画像和项目画像,将精简 Profile 注入上下文以指导 Agent 行为
alwaysApply: true
---
## 画像上下文注入
每次会话处理用户第一个任务前,执行以下操作:
1. 读取 `~/.cursor/profile/user-profile.md`(不存在则跳过)
2. 读取 `.cursor/profile/project-profile.md`(不存在则跳过)
3. 如文件存在且有实质内容(非空模板),将其内容作为背景知识纳入考量
4. 在后续回复中Agent 应自然地参考画像信息,无需显式引用
### 注意
- 画像信息是背景参考,不是硬性约束——当用户当前指令与画像冲突时,以当前指令为准
- 不要在回复中提及"根据你的画像"之类的措辞,自然融入即可
- 画像的记录和管理由 `profile-memory` Skill 负责,本 Rule 只负责读取和注入
## 被动检测提醒
Agent 在整个对话过程中应保持对画像信号的被动感知。
当对话结束、用户的主线任务完成后,如果检测到了新的画像信息,
应读取 `profile-memory` Skill 并执行其"操作 A"的确认流程。

View File

@@ -0,0 +1,151 @@
---
name: deferred-decisions
description: >-
记录开发中被延期的技术方案/决策,并在关联任务出现时主动提醒用户。
当对话中出现"以后再做"、"先不做"、"defer"、"延期方案"、"备选方案"、
"递进方案"等语义时触发。也用于浏览、管理已有的 deferred items。
---
# Deferred Decisions Skill
追踪开发中被延期的技术方案,在合适时机主动提醒用户。
## 存储
**数据文件**: `.cursor/deferred/registry.md`
该文件是 Agent 的结构化记忆,不是面向人类的文档。每个 deferred item 是一个 H3 级标题块。
## 操作 A记录延期方案
### 触发识别
当对话中出现以下模式时Agent 应主动提议记录:
- 讨论了多种方案,选择了一种,明确说其余"以后再做"
- 实现了基础版本,提到了可递进升级的高级版本
- 发现了可以改进的点,但当前优先级不够
### 流程
```
1. 从对话中提炼:
- 选择了什么方案chosen_alternative
- 延期了什么(标题 + context
- 为什么延期deferred_reason
- 什么时候可以做prerequisite
- 涉及哪些领域tags和文件related_files
2. 生成 slug 形式的唯一 ID如 ecosystem-lod-switching
3. 读取 .cursor/deferred/registry.md不存在则用模板创建
4. 在 "## Active Items" 区域末尾、"---" 分隔线之前追加新条目
5. 向用户确认已记录,展示条目摘要
```
### 条目模板
```markdown
### [item-slug] 简短标题
- **status**: deferred
- **tags**: tag1, tag2, tag3
- **recorded**: YYYY-MM-DD
- **source_chat**: [简短描述](chat-uuid)
- **prerequisite**: 实施前提条件(可选,无则写 "无"
- **related_files**:
- path/to/file1
- path/to/file2
- **context**: |
延期方案的具体内容2-5 行描述。
包含方案的要点和实施思路。
- **chosen_alternative**: 当时选择的方案简述
- **deferred_reason**: 延期的原因
```
### 字段说明
| 字段 | 必填 | 说明 |
|---|---|---|
| ID方括号内 | 是 | slug 形式,全局唯一 |
| status | 是 | `deferred` / `reminded` / `in_progress` / `done` / `cancelled` |
| tags | 是 | 逗号分隔的领域标签,用于关联匹配 |
| recorded | 是 | 记录日期 |
| source_chat | 否 | 来源对话标识 |
| prerequisite | 否 | 实施前提条件 |
| related_files | 否 | 关联代码文件路径 |
| context | 是 | 延期方案的具体内容 |
| chosen_alternative | 是 | 当时选择了什么 |
| deferred_reason | 是 | 延期原因 |
## 操作 B关联提醒
### 触发条件
`.cursor/rules/common/deferred-recall.mdc` 触发,或当用户任务涉及已有 deferred item 的领域时自动触发。
### 流程
```
1. 读取 .cursor/deferred/registry.md
2. 提取当前任务的关键词和涉及文件
3. 匹配 status=deferred 的 items
- tags 与当前任务关键词有交集
- related_files 与当前任务涉及文件有重叠
- prerequisite 描述的条件可能已满足
4. 如匹配到,在回复开头简要提醒:
"提醒:你之前有一个延期方案 [item-title] 与当前任务相关。要一并处理吗?"
5. 如用户同意,将该 item 的 status 改为 in_progress
```
### 提醒原则
- 每个 item 在同一会话中最多提醒一次
- 只提醒 status=deferred 的 itemsreminded/in_progress 不重复提醒)
- 提醒应简洁,不打断用户的主线任务
## 操作 C状态管理
| 用户动作 | 状态变更 | 额外操作 |
|---|---|---|
| "开始做 X" | deferred → in_progress | 无 |
| "X 完成了" | in_progress → done | 移到 "Completed / Cancelled Items" 区域 |
| "X 不需要了" | any → cancelled | 移到 "Completed / Cancelled Items" 区域 |
| Agent 提醒后用户确认 | deferred → in_progress | 无 |
### 移动条目
将条目从 "Active Items" 剪切到 "Completed / Cancelled Items" 区域时,保留完整内容,仅修改 status。
## 操作 D浏览/回顾
当用户问"有哪些延期方案"、"deferred list"、"待办方案"等时:
```
1. 读取 registry.md
2. 列出所有 status=deferred 的 items 摘要表:
| ID | 标题 | Tags | 记录日期 | 前提条件 |
3. 如用户要求按 tag 过滤,只展示匹配项
```
## Registry 文件模板
`.cursor/deferred/registry.md` 不存在时,用此模板创建:
```markdown
# Deferred Decisions Registry
## Active Items
(暂无延期方案)
---
## Completed / Cancelled Items
(暂无已完成或已废弃的方案)
```
## 自迭代日志
本节记录使用本 Skill 过程中发现的必要检查项。
### 已知必要检查
(暂无)

View File

@@ -0,0 +1,125 @@
---
name: epee-orchestrator
description: >-
EPEE Skill Orchestrator元层调度系统。检测任务是否可由已有 Skill 处理并分流,
或发现 Skill 缺口并引导创建新 Skill。当 Agent 遇到手动配置密集、重复模式明确、
手工指引过长的任务时触发。也用于 Skill Registry 的维护和同步。
---
# EPEE Skill Orchestrator
元层调度系统,负责 Skill 分流、缺口发现和 Registry 维护。
## 操作 ASkill 分流(匹配已有 Skill
### 流程
```
1. 读取 registry.md 获取所有已注册 Skill 的摘要
2. 将当前任务特征与每个 Skill 的"触发场景"关键词匹配
3. 如果匹配到:
a. 告知用户"此任务可以通过 [Skill名] 高效完成"
b. 简述该 Skill 的能力及与当前任务的契合点
c. 用户确认后,读取并激活对应 Skill 的 SKILL.md
```
### 匹配规则
- 优先匹配触发场景关键词与当前任务描述的交集
- 如有多个 Skill 匹配,按相关度排序推荐,由用户选择
- `deferred-decisions` 等标记为"基础设施"类型的 Skill 不参与任务分流匹配,
仅作为 Orchestrator 的下游工具使用
## 操作 BSkill 缺口发现 + 创建引导
### 触发条件
操作 A 未找到匹配的 Skill且当前任务满足"Skill 创建价值判断标准"中至少 2 条。
### 流程
```
1. 向用户提出建议:
"这类任务可以通过创建一个 [建议 Skill 名] 来自动化"
2. 给出 1-3 句方案概要:
- 这个 Skill 会做什么
- 核心工作机制(如 DSL 生成、YAML 直写、MCP 调用等)
- 预估能节省的重复劳动
3. 询问用户选择:
a) "继续讨论并创建" → 进入创建流程
b) "以后再说" → 进入延期记录流程
c) "不需要" → 结束,正常执行当前任务
```
### a) 创建流程
```
1. 委托给 create-skill Skill路径: ~/.cursor/skills-cursor/create-skill/SKILL.md
2. 将以下上下文传递给 create-skill 流程:
- 触发创建的原始任务描述
- Orchestrator 的方案概要
- 建议的 Skill 名称
3. 按 create-skill 的标准流程完成 Discovery → Design → Implementation → Verification
4. 创建完成后,要求用户对新 Skill 进行实际测试
5. 测试通过后,执行操作 C 同步 Registry
```
### b) 延期记录流程
```
1. 读取 deferred-decisions Skill
2. 按其"操作 A记录延期方案"流程,将 Skill 创建建议记录为 deferred item
3. tags 中包含 "skill-creation" 和相关领域标签
4. context 中记录方案概要,便于未来回忆
```
## 操作 CRegistry 同步
### 触发条件
- 新 Skill 被创建后
- 已有 Skill 的 SKILL.md 被实质性修改后(如能力范围变化、触发场景变化)
### 流程
```
1. 读取目标 Skill 的 SKILL.md
2. 从 frontmatter 提取 name 和 description
3. 从正文提取核心能力和触发场景关键词
4. 读取 registry.md
5. 新增或更新对应条目,遵循 registry.md 中定义的条目格式
6. 写回 registry.md
```
### 条目格式
参见 [registry.md](registry.md) 中的条目结构。
## Skill 创建价值判断标准
当操作 A 无匹配时Agent 使用以下标准评估是否建议创建新 Skill。
满足 **2 条及以上** 即认为值得建议:
1. **频次**:该类任务预计会出现 3 次以上
2. **模式明确**:任务有明确的输入/输出模式(输入 X → 产出 Y
3. **步骤繁多**:手动操作步骤 >= 5 步,或涉及 >= 3 个文件的协调修改
4. **易错**:存在容易出错的重复性操作(如 GUID 填写、格式对齐等)
5. **可自动化**:可以通过生成代码、配置文件、脚本或 MCP 调用来替代手动操作
不满足标准时Agent 正常执行任务,不提出创建建议。
## 与其他系统的协作
| 系统 | 关系 | 说明 |
|------|------|------|
| `create-skill` Skill | 下游委托 | 操作 B 创建流程的执行者 |
| `deferred-decisions` Skill | 下游工具 | 操作 B 延期记录的执行者 |
| `deferred-recall` Rule | 协同 | Orchestrator 延期的建议通过 deferred-recall 在未来自动提醒 |
## 自迭代日志
本节记录使用本 Skill 过程中发现的必要检查项。
### 已知必要检查
(暂无)

View File

@@ -0,0 +1,34 @@
# EPEE Skill Registry
> 本文件由 EPEE Skill Orchestrator 维护,记录所有已实现 Skill 的摘要信息。
> 每次创建/修改 Skill 后必须同步更新(参见 `epee-orchestrator.mdc` Rule
## 条目格式说明
每个条目包含以下字段:
- **类型**:项目级 / 个人级 / 基础设施
- **能力**1 句话核心能力描述
- **触发场景**:逗号分隔的关键词/短语,用于与任务特征匹配
- **输出**:该 Skill 的产出物
- **路径**SKILL.md 的路径(统一使用 `.cursor/skills/...`
- **备注**(可选):特殊说明
---
## 已注册 Skill
### deferred-decisions
- **类型**: 基础设施
- **能力**: 记录和追踪延期的技术方案/决策,在关联任务出现时主动提醒
- **触发场景**: "以后再做"、"先不做"、"defer"、延期方案管理、延期回顾
- **输出**: .cursor/deferred/registry.md 条目
- **路径**: .cursor/skills/deferred-decisions/SKILL.md
- **备注**: 不参与任务分流匹配,仅作为 Orchestrator 的下游工具
### profile-memory
- **类型**: 个人级
- **能力**: 在对话中被动检测用户个人特质和项目信息,经确认后持久化为精简画像和详细日志
- **触发场景**: "画像"、"profile"、"我的偏好"、"查看画像"、"项目信息"、"查看项目画像"、用户主动管理画像
- **输出**: ~/.cursor/profile/user-profile.md、.cursor/profile/project-profile.md 及对应 log 文件
- **路径**: .cursor/skills/profile-memory/SKILL.md
- **备注**: 被动检测由 profile-recall Rule 触发;精简 Profile 每次会话自动注入上下文

View File

@@ -0,0 +1,239 @@
---
name: profile-memory
description: >-
渐进式用户/项目画像系统。在对话中被动检测用户个人特质(审美、技术偏好、做事风格等)
和项目信息(定位、技术栈、产品方向等),对话结束前统一总结并经用户确认后记录。
当用户提到"画像"、"profile"、"我的偏好"、"查看画像"、"项目信息"等时触发。
---
# Profile Memory
渐进式画像系统,被动收集并持久化用户个人特质与项目信息。
## 存储结构
| 文件 | 位置 | 用途 | 注入上下文 |
|------|------|------|-----------|
| user-profile.md | `~/.cursor/profile/` | 个人画像精简版 | 是(每次会话) |
| user-profile-log.md | `~/.cursor/profile/` | 个人画像详细日志 | 否 |
| project-profile.md | `.cursor/profile/` | 项目画像精简版 | 是(每次会话) |
| project-profile-log.md | `.cursor/profile/` | 项目画像详细日志 | 否 |
精简版 Profile 是 Agent 每次会话的上下文输入,必须极度精简。
详细 Log 保留完整上下文,供用户主动查阅和溯源。
## 硬上限
- user-profile.md不超过 **50 行**
- project-profile.md不超过 **30 行**
- 每条信息一行,`- ` 开头,措辞客观中立
## 操作 A被动检测 + 对话结束前确认
### 检测范围
在正常对话中被动检测以下信号(**不主动询问**
**个人特质**
- 审美/设计偏好("太花哨了"、"我喜欢 minimal"
- 技术偏好("以后都用 X"、"我不喜欢 class 写法"
- 做事风格("先讨论再动手"、"不要自作主张"
- 沟通偏好("给我简短的回答"、"多解释一下原理"
- 产品理解/思维方式
**项目信息**
- 项目定位和目标("这个项目是做 X 的"
- 技术栈与架构决策
- 设计约定和规范
- 产品方向和目标用户
### 检测原则
- **保守而非激进**:宁可漏记也不误记
- 只记录**持久性**的偏好/特质,忽略一次性的临时需求
- 区分"个人"和"项目"两个维度
### 变更分类
检测到的新信息与已有条目的关系分为三类,处理方式不同:
| 类型 | 定义 | 示例 | 提示强度 |
|------|------|------|---------|
| **新增** | 全新维度,无已有条目 | 首次提到审美偏好 | 常规 |
| **演进** | 已有条目的深化、细化或自然发展 | "偏好 React" → "偏好 React + Next.js 全栈" | 常规,展示前后对比 |
| **转向** | 与已有条目方向性矛盾或根本性变化 | "偏好 React" → "想转 Vue";项目方向从 B2C 转 B2B | **加强提醒**,展示前后对比 |
### 确认流程
```
1. 在对话过程中将检测到的信息在内部缓存,分类为"个人"或"项目"
2. 对每条缓存信息,与已有 Profile 比对,标记变更类型(新增/演进/转向)
3. 当用户的主线任务完成后,统一提出,格式如下:
"本次对话中我注意到以下可记录的画像信息:"
**个人画像:**
- [新增][分类] 条目内容
- [演进][分类] 旧xxx → 新yyy
- [转向][分类] 旧xxx → 新yyy ⚠️
**项目画像:**
- (同上格式)
转向类条目额外标注 ⚠️ 并附一句说明:
"⚠️ 以下条目与已有记录存在方向性变化,请特别关注:"
"是否记录?你可以全部确认、逐条修改或跳过。"
4. 用户确认后执行写入流程
5. 如本次对话未检测到任何画像信息,则不触发此流程
```
### 写入流程
```
1. 读取对应的精简 Profile 和详细 Log不存在则用模板创建
2. 按变更类型执行:
- 新增:在对应分类下追加条目
- 演进:替换对应旧条目为新措辞
- 转向:替换对应旧条目为新措辞(用户已在确认流程中审核)
3. 写入精简 Profile
4. 追加详细 Log其中
- 新增条目:操作记为"新增"
- 演进条目:操作记为"更新(旧值 → 新值)"
- 转向条目:操作记为"转向(旧值 → 新值)",便于溯源重大变化
5. 检查精简 Profile 是否超过硬上限,超过则提醒用户精简
```
## 操作 B用户主动管理
当用户说"查看我的画像"、"profile"、"查看项目画像"、"我的偏好"等:
```
1. 读取对应的精简 Profile展示给用户
2. 如用户要看详细版或溯源,读取对应 Log 展示
3. 用户可要求:
- 删除某条记录同步删除精简版条目Log 中标记为已删除)
- 修改某条记录的措辞
- 合并/重组分类
- 新增分类
```
## 操作 C变更比对与冲突处理
### 比对逻辑
```
对每条新检测到的信息,在同分类下的已有条目中查找语义相近项:
1. 无相近条目 → 标记为"新增"
2. 有相近条目且方向一致(深化/细化/补充) → 标记为"演进"
3. 有相近条目且方向矛盾(替代/转向/否定) → 标记为"转向"
```
### 前后对比格式
演进和转向类条目在确认流程中必须展示前后对比:
```
- [演进][技术偏好] 旧:偏好 React → 新:偏好 React + Next.js 全栈开发
- [转向][产品方向] 旧:面向 C 端个人用户 → 新:转向 B 端企业客户 ⚠️
```
### 用户选择
对每条演进/转向条目,用户可以:
- **确认更新**:用新条目替换旧条目
- **保留两者**:旧条目不动,新条目作为补充追加(适用于不同细分维度)
- **放弃**:不记录本条
## 数据文件模板
首次使用时,如对应文件不存在,按以下模板创建。
### user-profile.md
```markdown
# User Profile
## 审美与设计
## 技术偏好
## 做事风格
## 沟通偏好
## 产品理解
```
### user-profile-log.md
```markdown
# User Profile Log
详细记录每次画像更新的完整上下文,按时间正序追加。
## 记录
```
### project-profile.md
```markdown
# Project Profile
## 项目定位
## 技术栈与架构
## 设计约定
## 产品方向
```
### project-profile-log.md
```markdown
# Project Profile Log
详细记录每次项目画像更新的完整上下文,按时间正序追加。
## 记录
```
### Log 条目格式
每次写入 Log 时,追加以下格式的条目:
```markdown
### YYYY-MM-DD — 简短标题
- **分类**: 对应的精简 Profile 分类名
- **精简版**: 写入精简 Profile 的那一行内容
- **原始上下文**: 用户原话或对话中的关键语句
- **来源对话**: [对话简述](chat-uuid)
- **操作**: 新增 / 演进(旧值 → 新值)/ 转向(旧值 → 新值)/ 删除
```
## 分类扩展
预设的分类列表可以扩展。当检测到的信息不属于任何现有分类时:
```
1. 在确认流程中标注"建议新增分类: [分类名]"
2. 用户确认后在精简 Profile 中新增该分类的 H2 标题
3. 注意硬上限,新增分类会占用行数
```
## 与其他系统的协作
| 系统 | 关系 | 说明 |
|------|------|------|
| `profile-recall` Rule | 下游消费者 | 每次会话读取精简 Profile 并注入上下文 |
| `epee-orchestrator` | 注册 | 在 registry.md 中注册本 Skill |
## 自迭代日志
本节记录使用本 Skill 过程中发现的必要检查项。
### 已知必要检查
(暂无)