Pattern for progressively refining context retrieval to solve the subagent context problem
View on GitHubFebruary 1, 2026
Select agents to install to:
npx add-skill https://github.com/xu-xiang/everything-claude-code-zh/blob/6f87d43c19217760ec28aecdf442ce57f9825f66/docs/zh-TW/skills/iterative-retrieval/SKILL.md -a claude-code --skill iterative-retrievalInstallation paths:
.claude/skills/iterative-retrieval/# 迭代檢索模式
解決多 agent 工作流程中的「上下文問題」,其中子 agents 在開始工作之前不知道需要什麼上下文。
## 問題
子 agents 以有限上下文產生。它們不知道:
- 哪些檔案包含相關程式碼
- 程式碼庫中存在什麼模式
- 專案使用什麼術語
標準方法失敗:
- **傳送所有內容**:超過上下文限制
- **不傳送內容**:Agent 缺乏關鍵資訊
- **猜測需要什麼**:經常錯誤
## 解決方案:迭代檢索
一個漸進精煉上下文的 4 階段循環:
```
┌─────────────────────────────────────────────┐
│ │
│ ┌──────────┐ ┌──────────┐ │
│ │ DISPATCH │─────▶│ EVALUATE │ │
│ └──────────┘ └──────────┘ │
│ ▲ │ │
│ │ ▼ │
│ ┌──────────┐ ┌──────────┐ │
│ │ LOOP │◀─────│ REFINE │ │
│ └──────────┘ └──────────┘ │
│ │
│ 最多 3 個循環,然後繼續 │
└─────────────────────────────────────────────┘
```
### 階段 1:DISPATCH
初始廣泛查詢以收集候選檔案:
```javascript
// 從高層意圖開始
const initialQuery = {
patterns: ['src/**/*.ts', 'lib/**/*.ts'],
keywords: ['authentication', 'user', 'session'],
excludes: ['*.test.ts', '*.spec.ts']
};
// 派遣到檢索 agent
const candidates = await retrieveFiles(initialQuery);
```
### 階段 2:EVALUATE
評估檢索內容的相關性:
```javascript
function evaluateRelevance(files, task) {
return files.map(file => ({
path: file.path,
relevance: scoreRelevance(file.content, task),
reason: explainRelevance(file.content, task),
missingContext: identifyGaps(file.content, task)
}));
}
```
評分標準:
- **高(0.8-1.0)**:直接實作目標功能
- **中(0.5-0.7)**:包含相關模式或類型
- **低(0.2-0.4)**:間接相關
- **無(0-0.2)**:不相關,排除
### 階段 3:REFINE
基於評估更新搜尋標準:
```javascript
function refineQuery(evaluation, previousQuery) {
return {
// 新增在高相關性檔案中發現的新模式
patterns: [...previousQuery.patterns, ...extractPatterns(evaluation)],
// 新增在程式碼庫中找到的術語
keywords: [...previousQuery.keywords, ...extractKeywords(evaluation)],
// 排除確認不相關的路徑
excludes: [...previousQuery.excludes, ...evaluation
.filter(e => e.relevance < 0.2)
.map(e