附录 A:快速参考卡片
本附录将全书 15 章的核心判断框架浓缩为速查表,供你在实际工作中快速查阅。
一、上下文组织三原则(第 9 章)
| 位置 | 放什么 | 原因 |
|---|---|---|
| 开头(System Prompt) | 行为约束、角色定义、核心规则 | 注意力最强 + Prompt Caching 友好 |
| 中间(对话历史) | 背景信息、参考资料、历史对话 | 注意力最弱,放辅助信息 |
| 结尾(用户消息) | 当前任务的具体指令和关键信息 | 注意力第二强,离输出最近 |
记忆法:约束在前,背景在中,指令在后。
二、分层压缩策略(第 9 章)
| 上下文层 | 压缩策略 | 压缩强度 | 原因 |
|---|---|---|---|
| System Prompt | 不压缩 | 无 | 每个字都影响行为 |
| 工具描述 | 选择性注入 | 低 | 只注入当前任务相关的工具 |
| 对话历史 | 摘要压缩 | 中 | 保留决策和结论,丢弃讨论细节 |
| 工具结果 | 激进压缩 | 高 | 只保留与当前任务相关的部分 |
| 记忆注入 | 控制数量 | 中 | Top-K 相关记忆,控制注入条数 |
核心思路:不同层的信息密度不同,可压缩空间也不同。System Prompt 一字千金,工具结果通常最冗余。
三、规范设计三原则(第 11 章)
- 跨任务性:规范应该对多个任务都有效,而不是只针对一个具体任务
- 可组合性:多个规范可以叠加使用,不产生冲突
- 可验证性:规范的遵守情况可以被自动检测(lint、测试、LLM-as-Judge)
三类规范的叠加使用:
| 维度 | 行为偏好持久化 | 变更级规范 | 能力级规范 |
|---|---|---|---|
| 颗粒度 | 横切:影响所有任务 | 纵切:一次变更 | 纵切:一个能力 |
| 生命周期 | 长期稳定,偶尔更新 | 一次性,归档冻结 | 和代码同寿,持续演进 |
| 修改入口 | 偶尔手动评审更新 | 写完冻结,新变更写新档案 | 规范先行,再改代码 |
| 典型形态 | .cursorrules、AGENTS.md | OpenSpec changes/ 下的提案 | OpenSpec specs/ 下的规范 |
判断标准:横切的行为底色写进行为偏好,一次性的决策档案写进变更级,长期能力的活文档写进能力级。三者叠加,谁也替代不了谁。
四、安全四层模型(第 12 章)
| 层 | 名称 | 技术手段 | 拦截对象 |
|---|---|---|---|
| L1 | 输入过滤 | 正则匹配 · 关键词黑名单 · 语义分类器 | 已知攻击模式 |
| L2 | 结构隔离 | XML/JSON 标签分隔 · 角色标注 · 数据引用 | 指令注入 |
| L3 | 输出校验 | 敏感信息正则 · 危险操作白名单 · LLM-as-Judge | 信息泄露 / 危险操作 |
| L4 | 权限最小化 | 只读/写入/危险三级分类 · 沙箱 · 路径白名单 | 限制最坏情况影响范围 |
核心公式: P(攻击成功) = 各层穿透率之积 ≈ 0.5⁴ = 6.25%
设计原则: 每一层都假设其他层已经失败。
五、多 Agent 使用判断(第 6 章)
** 适合多 Agent:** - 任务天然可分解为独立子任务(如:多模块分别写测试) - 任务需要不同角色(如:写代码 + 审代码) - 单 Agent 上下文不够用
** 不适合多 Agent:** - 任务本身不复杂(写一个函数、修一个 bug) - 子任务之间高度耦合 - 对一致性要求极高(原子性重构) - 调试和可观测性不成熟
判断标准:如果你不确定该不该用多 Agent,那就不要用。
六、评估策略选择(第 13 章)
| 任务确定性 | 示例 | 验证方法 | 成本 |
|---|---|---|---|
| 高 | 格式转换、正则生成 | 精确断言 | $0 |
| 中高 | 算法实现、Bug 修复 | 单元测试套件 | $0 |
| 中低 | 重构、架构设计 | 属性验证 + 人工审查 | $ |
| 低 | 创意编码、文档撰写 | LLM-as-Judge + 人工 | $$ |
核心原则:用最便宜的 Gate 先过滤,把昂贵的验证留给少数通过前置检查的输出。
七、Token 成本速算(第 9 章)
| 场景 | 估算公式 | 示例 |
|---|---|---|
| 单次调用 | (System + 工具 + 历史 + 新消息) × 单价 | 14K tokens × $2.5/M = $0.035 |
| N 轮对话(无缓存) | N(N+1)/2 × 增量 + N × 固定开销 | 50轮 ≈ 182万 tokens ≈ $4.56 |
| N 轮对话(有缓存) | 约为无缓存的 30%-40% | 50轮 ≈ $1.5-1.8 |
Prompt Caching 生效条件: 1. 前缀完全一致(逐 Token 匹配) 2. 前缀长度 ≥ 1024-2048 Token 3. 两次调用间隔 < TTL(通常 5-10 分钟)
八、上下文窗口分配参考(第 9 章)
| 区域 | 相对占比 | 内容 |
|---|---|---|
| System Prompt + 规范 | 小 | 角色定义、核心规则、OpenSpec |
| Skill 指令 | 中 | 当前场景加载的能力包 |
| 工具描述 | 小到中 | 当前可用工具的 Schema |
| 记忆注入 | 小 | 相关的长期记忆片段 |
| RAG 知识 | 中 | 检索到的代码/文档片段 |
| 对话历史 | 中到大 | 压缩后的历史对话 |
| 剩余(任务空间) | 至少留够 | 留给当前任务的输入和输出 |
判断标准:非任务空间(规范 + Skill + 工具 + 记忆 + RAG + 历史)加起来应该给任务空间留出足够余地。具体分配没有普适基准,取决于任务类型;但任务空间被挤到明显偏小时,输出质量会开始下降,也就是说这时应该重新平衡分配,而不是继续往里塞更多背景信息。