datai/docs/archive/skill/0007-context-anchoring.md

317 lines
9.0 KiB
Markdown
Raw Normal View History

---
name: 0007-context-anchoring
description: 上下文锚定,执行只读操作(搜索与读取),不产生代码
---
# 技能:上下文锚定 (Context Anchoring)
## 元数据 (Metadata)
- **name**: context-anchoring
- **description**: 上下文锚定,执行只读操作(搜索与读取),不产生代码
- **version**: 1.0.0
- **author**: SSOT Architect
- **lastUpdated**: 2026-01-15
## 触发与定位 (Triggers & Scope)
### 触发条件 (Triggers)
当以下情况发生时AI 应当"觉醒"本技能:
1. **提示词资产化完成**: 完成提示词编写后,需要锚定上下文
2. **代码生成前**: 在生成代码前需要了解现有代码结构
3. **新功能开发**: 需要参考现有类似功能的实现
4. **代码重构**: 需要理解现有代码的架构和依赖
5. **工作流阶段 4**: 用户进入工作流的"上下文锚定"阶段
### 定位范围 (Scope)
- **适用模块**: 所有 Datai 项目模块
- **影响操作**: 只读操作(搜索、读取)
- **相关技能**: skill-prompt-engineering, skill-execution-logging
## 核心指令集 (Instructions)
### 架构约束 (Architecture Constraints)
1. **只读操作原则**:
- **严禁**在上下文锚定阶段产生代码
- 只允许使用搜索和读取工具
- 只允许分析现有代码,不允许修改
2. **上下文锚定三步法**:
- **Stop & Look**: 暂停生成,根据提示词策略查找文件
- **Mount**: 读取相关文件内容进入上下文
- **Align**: 分析现有代码风格,声明参考模式
3. **必须分析的内容**:
- 现有类似功能的实现
- 接口定义和规范
- 全局配置和常量
- 代码风格和命名规范
- 错误处理模式
- 日志记录模式
### 业务逻辑 SOP (Business Logic SOP)
#### 步骤 1: Stop & Look - 停止并查找
```markdown
## Stop & Look
### 暂停生成
在生成代码前,先停止生成,进行上下文分析。
### 查找策略
基于提示词中定义的搜索策略,查找以下文件:
1. 搜索关键词:[关键词1],文件类型:[文件类型]
2. 搜索关键词:[关键词2],文件类型:[文件类型]
3. 搜索关键词:[关键词3],文件类型:[文件类型]
### 搜索工具
- 使用 `SearchCodebase` 工具进行代码搜索
- 使用 `Grep` 工具进行文本搜索
- 使用 `Glob` 工具进行文件名搜索
```
#### 步骤 2: Mount - 挂载上下文
```markdown
## Mount - 挂载上下文
### 读取文件
根据搜索结果,读取以下文件:
1. [文件1](../../path/to/file1.java) - [说明]
2. [文件2](../../path/to/file2.java) - [说明]
3. [文件3](../../path/to/file3.java) - [说明]
### 读取工具
- 使用 `Read` 工具读取文件内容
- 使用 `LS` 工具查看目录结构
- 使用 `GetDiagnostics` 工具获取代码诊断信息
### 上下文分析
分析以下内容:
- [ ] 代码结构
- [ ] 命名规范
- [ ] 注释风格
- [ ] 错误处理
- [ ] 日志记录
- [ ] 测试覆盖
```
#### 步骤 3: Align - 对齐代码风格
```markdown
## Align - 对齐代码风格
### 代码风格分析
基于读取的文件,分析现有代码风格:
#### 命名规范
- 类名:[命名规范]
- 方法名:[命名规范]
- 变量名:[命名规范]
- 常量名:[命名规范]
#### 注释风格
- 类注释:[注释风格]
- 方法注释:[注释风格]
- 行内注释:[注释风格]
#### 错误处理
- 异常处理:[处理模式]
- 错误日志:[日志格式]
- 错误返回:[返回格式]
#### 日志记录
- 日志级别:[使用规范]
- 日志格式:[日志格式]
- 日志内容:[记录内容]
### 参考模式声明
我将参考以下模式进行开发:
1. **类结构**: 参考 [类名](../../path/to/Class.java)
2. **方法实现**: 参考 [方法名](../../path/to/Class.java#LXX-YY)
3. **错误处理**: 参考 [错误处理](../../path/to/Class.java#LXX-YY)
4. **日志记录**: 参考 [日志记录](../../path/to/Class.java#LXX-YY)
### 依赖分析
分析以下依赖:
- [ ] 第三方库依赖
- [ ] 内部模块依赖
- [ ] 工具类依赖
- [ ] 配置依赖
```
#### 步骤 4: 创建上下文锚定记录
```markdown
---
name: CONTEXT-YYYYMMDD-TaskName
description: 上下文锚定记录
---
# 上下文锚定: [任务名称]
## 元数据 (Metadata)
- **Date**: YYYY-MM-DD
- **Task**: [任务名称]
- **Related Prompt**: [PROMPT-XXX](../prompts/PROMPT-XXX.md)
- **Context Files**: [上下文文件数量]
## Stop & Look - 停止并查找
### 搜索策略
1. 搜索关键词:[关键词1],文件类型:[文件类型]
2. 搜索关键词:[关键词2],文件类型:[文件类型]
### 搜索结果
- [结果1](../../path/to/file1.java) - [说明]
- [结果2](../../path/to/file2.java) - [说明]
## Mount - 挂载上下文
### 读取的文件
| 文件 | 说明 | 关键发现 |
|------|------|----------|
| [文件1](../../path/to/file1.java) | [说明] | [关键发现] |
| [文件2](../../path/to/file2.java) | [说明] | [关键发现] |
### 代码风格分析
#### 命名规范
- 类名:[命名规范]
- 方法名:[命名规范]
- 变量名:[命名规范]
#### 注释风格
- 类注释:[注释风格]
- 方法注释:[注释风格]
#### 错误处理
- 异常处理:[处理模式]
- 错误日志:[日志格式]
#### 日志记录
- 日志级别:[使用规范]
- 日志格式:[日志格式]
## Align - 对齐代码风格
### 参考模式
1. **类结构**: 参考 [类名](../../path/to/Class.java)
2. **方法实现**: 参考 [方法名](../../path/to/Class.java#LXX-YY)
3. **错误处理**: 参考 [错误处理](../../path/to/Class.java#LXX-YY)
4. **日志记录**: 参考 [日志记录](../../path/to/Class.java#LXX-YY)
### 依赖分析
- [ ] 第三方库依赖:[依赖列表]
- [ ] 内部模块依赖:[依赖列表]
- [ ] 工具类依赖:[依赖列表]
- [ ] 配置依赖:[依赖列表]
## 相关文档 (Related Documents)
- [提示词文档](../prompts/PROMPT-XXX.md)
- [需求文档](../../requirements/REQ-XXX.md)
- [设计文档](../../design/DES-XXX.md)
```
### 工具调用 (Tool Usage)
1. **搜索工具**:
- 使用 `SearchCodebase` 工具进行代码搜索
- 使用 `Grep` 工具进行文本搜索
- 使用 `Glob` 工具进行文件名搜索
2. **读取工具**:
- 使用 `Read` 工具读取文件内容
- 使用 `LS` 工具查看目录结构
3. **诊断工具**:
- 使用 `GetDiagnostics` 工具获取代码诊断信息
## 错误陷阱与验证 (Anti-Patterns & Checklist)
### 常见错误 (Anti-Patterns)
1. **错误**: 在上下文锚定阶段生成代码
- **后果**: 违反工作流规范,可能导致代码质量低
- **修正**: 严格遵守只读操作原则,不生成任何代码
2. **错误**: 只搜索不读取文件
- **后果**: 无法深入理解代码细节
- **修正**: 必须读取相关文件的完整内容
3. **错误**: 不分析代码风格
- **后果**: 生成的代码与现有代码风格不一致
- **修正**: 必须详细分析命名、注释、错误处理、日志记录等风格
4. **错误**: 不声明参考模式
- **后果**: 无法追踪代码来源和参考依据
- **修正**: 必须明确声明参考的文件和代码位置
5. **错误**: 忽略依赖分析
- **后果**: 可能引入不必要的依赖或遗漏必要依赖
- **修正**: 必须分析第三方库、内部模块、工具类和配置依赖
### 验收清单 (Acceptance Checklist)
- [ ] 已停止生成代码
- [ ] 已执行搜索操作
- [ ] 已读取相关文件
- [ ] 已分析代码风格
- [ ] 已声明参考模式
- [ ] 已分析依赖关系
- [ ] 已创建上下文锚定记录
- [ ] 未生成任何代码
- [ ] 未修改任何文件
### Correct vs Incorrect 对比
#### Correct 示例
```markdown
## Stop & Look - 停止并查找
### 搜索策略
1. 搜索关键词UserService文件类型java
2. 搜索关键词saveUser文件类型java
### 搜索结果
- UserServiceImpl.java - 用户服务实现
- UserController.java - 用户控制器
## Mount - 挂载上下文
### 读取的文件
| 文件 | 说明 | 关键发现 |
|------|------|----------|
| UserServiceImpl.java | 用户服务实现 | 使用@Transactional注解 |
| UserController.java | 用户控制器 | 使用@RestController注解 |
## Align - 对齐代码风格
### 参考模式
1. **类结构**: 参考 UserServiceImpl
2. **方法实现**: 参考 saveUser 方法
3. **错误处理**: 参考 try-catch 模式
4. **日志记录**: 参考 log.info() 模式
```
#### Incorrect 示例
```markdown
## 上下文分析
搜索了 UserService 相关文件,发现了一些代码。
现在开始编写代码...
```
**问题**: 没有详细的搜索策略,没有读取文件内容,没有分析代码风格,直接开始编写代码。
## 相关文档 (Related Documents)
- [工作流提示词](../prompts/03-创建工作流提示词.md#阶段-4-上下文锚定-context-anchoring-critical)
- [提示词资产化技能](./0006-prompt-engineering.md)
- [执行与记录技能](./0008-execution-logging.md)
- [上下文锚定原则](../prompts/03-创建工作流提示词.md#阶段-4-上下文锚定-context-anchoring-critical)