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

9.0 KiB
Raw Permalink Blame History

name description
0007-context-anchoring 上下文锚定,执行只读操作(搜索与读取),不产生代码

技能:上下文锚定 (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 - 停止并查找

## Stop & Look

### 暂停生成
在生成代码前,先停止生成,进行上下文分析。

### 查找策略
基于提示词中定义的搜索策略,查找以下文件:

1. 搜索关键词:[关键词1],文件类型:[文件类型]
2. 搜索关键词:[关键词2],文件类型:[文件类型]
3. 搜索关键词:[关键词3],文件类型:[文件类型]

### 搜索工具
- 使用 `SearchCodebase` 工具进行代码搜索
- 使用 `Grep` 工具进行文本搜索
- 使用 `Glob` 工具进行文件名搜索

步骤 2: Mount - 挂载上下文

## Mount - 挂载上下文

### 读取文件
根据搜索结果,读取以下文件:

1. [文件1](../../path/to/file1.java) - [说明]
2. [文件2](../../path/to/file2.java) - [说明]
3. [文件3](../../path/to/file3.java) - [说明]

### 读取工具
- 使用 `Read` 工具读取文件内容
- 使用 `LS` 工具查看目录结构
- 使用 `GetDiagnostics` 工具获取代码诊断信息

### 上下文分析
分析以下内容:
- [ ] 代码结构
- [ ] 命名规范
- [ ] 注释风格
- [ ] 错误处理
- [ ] 日志记录
- [ ] 测试覆盖

步骤 3: Align - 对齐代码风格

## 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: 创建上下文锚定记录

---
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 示例

## 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 示例

## 上下文分析

搜索了 UserService 相关文件,发现了一些代码。
现在开始编写代码...

问题: 没有详细的搜索策略,没有读取文件内容,没有分析代码风格,直接开始编写代码。