build-cognitive-context

star 15

上下文工程——最大化 agent 输出质量。当开始新任务、上下文混乱或 agent 输出质量下降,或提到"上下文""context window""注意力"

ZeroZ-lab By ZeroZ-lab schedule Updated 5/20/2026

name: build-cognitive-context description: 上下文工程——最大化 agent 输出质量。当开始新任务、上下文混乱或 agent 输出质量下降,或提到"上下文""context window""注意力"

Context — 上下文工程

入口/出口

  • 入口: 开始新任务前、上下文窗口混杂、agent 输出质量下降、项目切换
  • 出口: 干净正确的上下文 + 任务相关的全部必要信息
  • 指向: 继续当前 build 流程
  • 输出路径: 当前正在执行的 build 技能(如 build-workflow-execute
  • 前置加载: CANON.md

何时不使用

  • 任务是一个明确、自包含的一行改动(白屏/空指针修复)
  • 对话刚开始且问题描述极其精确

Iron Law

上下文质量是 agent 输出质量的最大杠杆。
更多上下文 ≠ 更好上下文。
上下文窗口大小 ≠ 注意力预算。

五级上下文层次

按优先级加载——上层优先,下层按需:

Level 1: 规则文件
  AGENTS.md / CANON.md / .cursorrules
  → 始终加载。定义全局行为和宪法纪律。
  
Level 2: 规格说明
  docs/features/YYYYMMDD-<name>/01-spec.md / 02-design.md / 03-plan.md
  → 当前任务需要时加载。定义"做什么"。
  
Level 3: 源代码
  相关文件 / 接口定义 / 类型声明
  → 仅在需要理解现有代码时加载。定义"怎么做"。
  
Level 4: 错误输出
  测试失败日志 / 构建错误 / lint 警告
  → 仅在调试或验证时加载。定义"什么错了"。
  
Level 5: 对话历史
  先前讨论 / 中间决策 / 已排除方案
  → 引用结论,不复述全过程。定义"什么已决定"。

上下文打包策略

策略 方式 适用
Brain Dump 一次性加载全部相关文件 小项目(< 50 文件)、探索阶段
Selective Include 仅加载任务直接相关的文件 常规任务(默认)
Hierarchical Summary 分层摘要(架构→模块→文件) 大项目、跨模块重构

默认使用 Selective Include。 Brain Dump 浪费 tokens 和注意力。Hierarchical Summary 成本高。

混淆管理

当上下文互相冲突

STOP。不要在混淆中前进。

1. 识别冲突: "spec 说 X,但现有代码做的是 Y"
   ✅ 验证点: 冲突是否已明确写出到 human partner?
2. 明确选项: "选项 A: 按 spec 重构(需要 X 小时)。选项 B: 更新 spec(已和用户确认这是旧 spec)"
   ✅ 验证点: 两个选项是否包含时间/影响估算?
3. 呈现权衡: "选 A 意味着 XX。选 B 意味着 YY"
   ✅ 验证点: human partner 是否已做出明确选择?
4. 等待用户决定。不猜。

当需求不完整

不要默默假设填补空白。把缺口亮出来:

"需求说'让仪表盘更快',但没指定:
1. 目标 LCP 是多少?(2.5s 是 Core Web Vitals 标准)
2. 什么网络条件?(4G?WiFi?)
3. 包括 SSR 时间吗?

我假设:目标 LCP < 2.5s(4G 网络),不包括 SSR。
→ 纠正我,否则我按这些继续。"

当有隐式知识

如果项目做了非标准约定但没记录 → 记录下来:

"我刚发现这个项目用 Prisma 而不是 TypeORM(虽然同类项目都用的 TypeORM)。
这不在 AGENTS.md 里。让我记下来避免下次混淆。"

然后将发现写入 AGENTS.md。

反模式

反模式 症状 修复
上下文饥饿 Agent 猜 API 行为、自己发明接口 加载相关源码或文档
上下文泛滥 加载了 20+ 个文件但只改了 1 个 精简到实际需要的文件
过期上下文 使用了已删除的函数/已废弃的 API 重新读取文件,不要依赖记忆
缺失示例 Agent 写的模式和项目已有一致代码不同 找到项目中的工作示例作为参考
隐式知识 项目约定没写在任何文档里 写到 AGENTS.md
静默混淆 Agent 发现不一致但没说 强制执行宪法第 8 条

常见说辞

说辞 现实 后果
"我已经看过这个文件了" 文件可能已变更。重新读关键部分。 基于 stale 上下文编码 → 引入 bug 或与已删除 API 冲突,平均浪费 30-60 分钟调试
"多加载总比漏加载好" 上下文泛滥稀释注意力。选择性加载目标信息更有效。 20+ 文件中只改 1 个 → 90%+ token 用于无关内容,关键细节被淹没,决策质量下降
"我知道这个库怎么用" 版本不同 API 不同。不信记忆信文档。 使用已废弃 API → 运行时崩溃或静默行为差异,单次返工 1-4 小时

验证失败处理

失败场景 处理方式
spec 未加载 停止任务,先加载当前 feature 的 01-spec.md 再继续
关键源码从记忆推断而非读取 强制重新读取相关文件,禁止使用"我记得"作为依据
spec 与代码冲突且未澄清 列出冲突点和两个选项,等待 human partner 决定后再继续
模糊需求未提请澄清 把缺口逐条列出并附默认假设,等 human partner 纠正或确认
非标准项目约定未记录 立即写入 AGENTS.md 并标注发现时间,避免下次混淆

好坏示例

✅ Good: 选择性加载 + 冲突显式化

任务: 修改 TaskList 组件的筛选逻辑

加载策略: Selective Include
- Level 1: AGENTS.md(始终)
- Level 2: 01-spec.md(筛选逻辑规格)
- Level 3: TaskList.tsx / TaskList.test.tsx / filterUtils.ts(只这 3 个)
- Level 5: 上次讨论结论 "筛选应支持多条件组合"

发现冲突: spec 说"筛选条件互斥",但现有代码支持组合筛选。
→ 向 human partner 呈现两个选项,等待决定。

❌ Bad: 全量加载 + 隐式假设

任务: 修改 TaskList 组件的筛选逻辑

加载策略: Brain Dump(读了 25 个文件)
→ 关键信息被淹没,注意力浪费在无关组件上

发现冲突: spec 和代码不一致,但默默选择"按代码改"。
→ 没有向 human partner 澄清,后续实现偏离 spec。

红旗 — STOP

  • 在不检查现有代码的情况下开始实现
  • 发现 spec 和代码冲突但默默继续
  • 看到奇怪约定("怎么这么写?")但不问也不记录
  • 一遍又一遍重读同一文件而不推进
  • 用"这就是常规做法"而不是"项目实际用的是 X"

输出模板

上下文整理完成后,应产出以下结构(写入 checkpoint 或 task 起始注释):

## Context Summary — [任务名称]

### 加载策略
- 策略类型: [Brain Dump / Selective Include / Hierarchical Summary]
- 已加载文件: [文件列表]
- 跳过文件及原因: [跳过列表]

### 已识别冲突
| # | 冲突描述 | 选项 A | 选项 B | 决定 |
|---|---------|--------|--------|------|
| 1 | ... | ... | ... | [待定 / 已决定] |

### 需澄清缺口
| # | 缺口描述 | 默认假设 | 确认状态 |
|---|---------|---------|---------|
| 1 | ... | ... | [待确认 / 已确认] |

### 新发现的项目约定
| # | 约定描述 | 写入位置 |
|---|---------|---------|
| 1 | ... | AGENTS.md |

验证清单

  • 当前任务相关的 AGENTS.md/spec 已加载(运行时详细规则在 docs/contracts/ 按需读取)
  • 关键源码文件已读取(非从记忆推断)
  • 识别并解决了任何冲突(spec vs 代码)
  • 模糊需求的不明确处已提请用户澄清
  • 新发现的项目约定已写入 AGENTS.md
Install via CLI
npx skills add https://github.com/ZeroZ-lab/unified-skills --skill build-cognitive-context
Repository Details
star Stars 15
call_split Forks 1
navigation Branch main
article Path SKILL.md
More from Creator