13 - 环境信息与动态段
来源:
constants/prompts.ts->computeSimpleEnvInfo()及动态段系统
完整中文翻译
Section titled “完整中文翻译”# 环境你在以下环境中被调用: - 主工作目录:/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 切换。动态段注册表
Section titled “动态段注册表”| 段 ID | 内容 | 缓存策略 |
|---|---|---|
| session_guidance | 会话级工具和 agent 指导 | 缓存至 /clear |
| memory | 用户的记忆提示词(来自 memdir) | 缓存至 /clear |
| ant_model_override | 内部模型特定覆盖 | 缓存至 /clear |
| env_info_simple | 上述环境信息 | 缓存至 /clear |
| language | 语言偏好 | 缓存至 /clear |
| output_style | 输出风格配置 | 缓存至 /clear |
| mcp_instructions | MCP 服务器指令 | 不缓存(服务器随时变化) |
| scratchpad | 临时文件目录信息 | 缓存至 /clear |
| frc | 函数结果清理信息 | 缓存至 /clear |
| summarize_tool_results | 记录重要信息的指令 | 缓存至 /clear |
| numeric_length_anchors | 字数限制(仅内部) | 缓存至 /clear |
| token_budget | Token 预算指导 | 缓存 |
动态边界标记
Section titled “动态边界标记”SYSTEM_PROMPT_DYNAMIC_BOUNDARY分隔静态(跨组织可缓存)内容和动态内容的边界标记。此标记之前的所有系统提示词可以使用 scope: 'global' 进行缓存。此标记之后包含用户/会话特定内容,不应全局缓存。# 语言始终使用 {languagePreference} 回应。使用 {languagePreference} 进行所有解释、评论和与用户的交流。技术术语和代码标识符应保留原始形式。临时文件目录(Scratchpad)
Section titled “临时文件目录(Scratchpad)”# 临时文件目录
重要:始终使用此临时文件目录代替 /tmp 或其他系统临时目录:`{scratchpadDir}`
用于所有临时文件需求:- 存储中间结果- 写入临时脚本- 保存不属于用户项目的输出- 在分析过程中创建工作文件- 任何原本会放到 /tmp 的文件
临时文件目录是会话特定的,与用户项目隔离,可自由使用无需权限提示。函数结果清理
Section titled “函数结果清理”# 函数结果清理旧的工具结果将自动从上下文中清除以释放空间。最近的 N 个结果始终保留。汇总工具结果
Section titled “汇总工具结果”处理工具结果时,记下你稍后可能需要的重要信息,因为原始工具结果可能会在之后被清除。设计意图分析
Section titled “设计意图分析”为什么环境信息放在动态部分
Section titled “为什么环境信息放在动态部分”环境信息(工作目录、平台、shell 等)每个用户不同,因此必须在动态部分。 但它在会话内不变,所以可以缓存到 /clear。这是一个”动态但稳定”的信息类别。
模型自我认知
Section titled “模型自我认知”告知模型”你是 Claude Opus 4.6”有几个重要作用:
- 行为校准:模型知道自己的能力边界
- 版本一致性:在讨论模型时给出准确信息而非幻觉
- 推荐准确性:构建 AI 应用时推荐正确的模型 ID
- Fast 模式澄清:明确 Fast 模式不是降级模型,避免用户误解
知识截止日期的重要性
Section titled “知识截止日期的重要性”告知截止日期(2025 年 5 月)让模型在以下场景正确行为:
- 被问到最近事件时,承认”我的知识截止到…”而非编造
- 被问到依赖版本时,提示用户验证最新版本
- 减少因知识过时导致的幻觉
缓存 vs 非缓存 section 的策略
Section titled “缓存 vs 非缓存 section 的策略”绝大多数 section 使用 systemPromptSection()(缓存),仅 MCP 指令使用
DANGEROUS_uncachedSystemPromptSection()(不缓存)。
原因分析:
- 缓存的:环境信息、语言偏好、记忆等在会话内稳定,缓存可节省重计算成本
- 不缓存的:MCP 服务器可能在任意两轮对话之间连接或断开, 因此必须每轮重新计算
DANGEROUS_ 前缀是一个工程警示:使用非缓存 section 会破坏提示词缓存,
增加 API 成本。命名为”DANGEROUS”确保开发者不会轻易使用它。
Scratchpad 的设计理念
Section titled “Scratchpad 的设计理念”为 agent 提供一个”安全的临时空间”有三个好处:
- 不污染项目:临时文件不会出现在用户的代码库中
- 不需要权限:沙箱允许写入,无需用户确认
- 会话隔离:每个会话独立,不会跨会话泄露信息
Function Result Clearing 的预警机制
Section titled “Function Result Clearing 的预警机制”这是一个元认知(meta-cognitive)提示:告诉模型”你看到的信息将来可能消失”。 这引导模型主动将重要信息从工具结果”转移”到自己的回复文本中, 防止因上下文清理导致信息丢失。
Insight
Section titled “Insight”★ Insight ─────────────────────────────────────
- 模型自我认知:告诉模型”你是谁”对行为有显著影响。这不是哲学问题, 而是实用的行为校准手段。
- 缓存经济学:大部分 section 可缓存,只有 MCP 指令必须每轮重算。
DANGEROUS_前缀是一个工程治理手段——让破坏缓存的代价可见。 - Scratchpad 隔离:为 agent 提供一个”安全的临时空间”,不污染项目 也不需要权限。这是 agent 环境设计的最佳实践。
- 工具结果清理预警:提前告知结果会被清理,引导模型主动记录重要信息。
这是”元认知提示”——让 AI 意识到自身的上下文限制并主动应对。
─────────────────────────────────────────────────