317 lines
9.0 KiB
Markdown
317 lines
9.0 KiB
Markdown
---
|
||
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)
|