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

317 lines
9.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
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)