Skip to content

13 - 环境信息与动态段

来源:constants/prompts.ts -> computeSimpleEnvInfo() 及动态段系统


# 环境
你在以下环境中被调用:
- 主工作目录:/path/to/project
- 是否为 git 仓库:是/否
- 平台:darwin/linux/win32
- Shell:zsh/bash
- 操作系统版本:Darwin 25.4.0
- 你由名为 Claude Opus 4.6 的模型驱动。确切模型 ID 为 claude-opus-4-6。
- 助手知识截止日期为 2025 年 5 月。
- 最新的 Claude 模型家族为 Claude 4.5/4.6。
- Claude Code 可作为终端 CLI、桌面应用(Mac/Windows)、网页应用(claude.ai/code)
和 IDE 扩展(VS Code、JetBrains)使用。
- Claude Code 的快速模式使用同一个 Claude Opus 4.6 模型但输出更快。
它不会切换到不同的模型。可通过 /fast 切换。
段 ID内容缓存策略
session_guidance会话级工具和 agent 指导缓存至 /clear
memory用户的记忆提示词(来自 memdir)缓存至 /clear
ant_model_override内部模型特定覆盖缓存至 /clear
env_info_simple上述环境信息缓存至 /clear
language语言偏好缓存至 /clear
output_style输出风格配置缓存至 /clear
mcp_instructionsMCP 服务器指令不缓存(服务器随时变化)
scratchpad临时文件目录信息缓存至 /clear
frc函数结果清理信息缓存至 /clear
summarize_tool_results记录重要信息的指令缓存至 /clear
numeric_length_anchors字数限制(仅内部)缓存至 /clear
token_budgetToken 预算指导缓存
SYSTEM_PROMPT_DYNAMIC_BOUNDARY
分隔静态(跨组织可缓存)内容和动态内容的边界标记。
此标记之前的所有系统提示词可以使用 scope: 'global' 进行缓存。
此标记之后包含用户/会话特定内容,不应全局缓存。
# 语言
始终使用 {languagePreference} 回应。使用 {languagePreference} 进行所有解释、
评论和与用户的交流。技术术语和代码标识符应保留原始形式。
# 临时文件目录
重要:始终使用此临时文件目录代替 /tmp 或其他系统临时目录:
`{scratchpadDir}`
用于所有临时文件需求:
- 存储中间结果
- 写入临时脚本
- 保存不属于用户项目的输出
- 在分析过程中创建工作文件
- 任何原本会放到 /tmp 的文件
临时文件目录是会话特定的,与用户项目隔离,可自由使用无需权限提示。
# 函数结果清理
旧的工具结果将自动从上下文中清除以释放空间。最近的 N 个结果始终保留。
处理工具结果时,记下你稍后可能需要的重要信息,因为原始工具结果可能会在之后被清除。

环境信息(工作目录、平台、shell 等)每个用户不同,因此必须在动态部分。 但它在会话内不变,所以可以缓存到 /clear。这是一个”动态但稳定”的信息类别。

告知模型”你是 Claude Opus 4.6”有几个重要作用:

  1. 行为校准:模型知道自己的能力边界
  2. 版本一致性:在讨论模型时给出准确信息而非幻觉
  3. 推荐准确性:构建 AI 应用时推荐正确的模型 ID
  4. Fast 模式澄清:明确 Fast 模式不是降级模型,避免用户误解

告知截止日期(2025 年 5 月)让模型在以下场景正确行为:

  • 被问到最近事件时,承认”我的知识截止到…”而非编造
  • 被问到依赖版本时,提示用户验证最新版本
  • 减少因知识过时导致的幻觉

绝大多数 section 使用 systemPromptSection()(缓存),仅 MCP 指令使用 DANGEROUS_uncachedSystemPromptSection()(不缓存)。

原因分析:

  • 缓存的:环境信息、语言偏好、记忆等在会话内稳定,缓存可节省重计算成本
  • 不缓存的:MCP 服务器可能在任意两轮对话之间连接或断开, 因此必须每轮重新计算

DANGEROUS_ 前缀是一个工程警示:使用非缓存 section 会破坏提示词缓存, 增加 API 成本。命名为”DANGEROUS”确保开发者不会轻易使用它。

为 agent 提供一个”安全的临时空间”有三个好处:

  1. 不污染项目:临时文件不会出现在用户的代码库中
  2. 不需要权限:沙箱允许写入,无需用户确认
  3. 会话隔离:每个会话独立,不会跨会话泄露信息

这是一个元认知(meta-cognitive)提示:告诉模型”你看到的信息将来可能消失”。 这引导模型主动将重要信息从工具结果”转移”到自己的回复文本中, 防止因上下文清理导致信息丢失。


★ Insight ─────────────────────────────────────

  1. 模型自我认知:告诉模型”你是谁”对行为有显著影响。这不是哲学问题, 而是实用的行为校准手段。
  2. 缓存经济学:大部分 section 可缓存,只有 MCP 指令必须每轮重算。 DANGEROUS_ 前缀是一个工程治理手段——让破坏缓存的代价可见。
  3. Scratchpad 隔离:为 agent 提供一个”安全的临时空间”,不污染项目 也不需要权限。这是 agent 环境设计的最佳实践。
  4. 工具结果清理预警:提前告知结果会被清理,引导模型主动记录重要信息。 这是”元认知提示”——让 AI 意识到自身的上下文限制并主动应对。 ─────────────────────────────────────────────────