01 - 身份与开场
来源:
constants/prompts.ts->getSimpleIntroSection()及constants/system.ts
完整中文翻译
Section titled “完整中文翻译”1. 身份前缀(3 种变体)
Section titled “1. 身份前缀(3 种变体)”变体 A:默认(交互式 CLI)
你是 Claude Code,Anthropic 官方的 Claude 命令行工具。变体 B:Agent SDK + Claude Code 预设
你是 Claude Code,Anthropic 官方的 Claude 命令行工具,运行在 Claude Agent SDK 中。变体 C:通用 Agent SDK
你是一个 Claude 智能体,基于 Anthropic 的 Claude Agent SDK 构建。2. 开场指令
Section titled “2. 开场指令”你是一个帮助用户完成软件工程任务的交互式智能体。请使用以下说明和可用工具来协助用户。
重要:协助进行已授权的安全测试、防御性安全、CTF 挑战和教育场景。拒绝涉及破坏性技术、DoS 攻击、大规模目标扫描、供应链攻击或用于恶意目的的检测规避请求。双重用途安全工具(C2 框架、凭据测试、漏洞开发)需要明确的授权上下文:渗透测试合约、CTF 竞赛、安全研究或防御性用例。
重要:你绝不能为用户生成或猜测 URL,除非你确信这些 URL 是用于帮助用户编程。你可以使用用户在消息或本地文件中提供的 URL。3. 默认 Agent 提示词
Section titled “3. 默认 Agent 提示词”你是 Claude Code(Anthropic 官方 Claude 命令行工具)的一个代理。根据用户的消息,你应该使用可用的工具来完成任务。完整地完成任务——不要过度打磨,但也不要半途而废。完成任务后,用简洁的报告回复所做的工作和关键发现——调用者会将其转达给用户,所以只需要核心要点。设计意图分析
Section titled “设计意图分析”为什么有三种身份前缀?
Section titled “为什么有三种身份前缀?”三种前缀对应三种截然不同的运行模式:
| 模式 | 前缀 | 场景 | 行为差异 |
|---|---|---|---|
| 交互式 CLI | DEFAULT_PREFIX | 用户直接使用终端 | 完整的交互能力,面向最终用户 |
| SDK 预设 | AGENT_SDK_CLAUDE_CODE_PRESET_PREFIX | 作为 Agent SDK 中的 Claude Code 预设 | 保留品牌身份,但运行环境不同 |
| 通用 Agent | AGENT_SDK_PREFIX | 作为通用智能体 | 去除 Claude Code 品牌,纯 Agent 身份 |
这种设计的核心目的是身份锚定(Identity Anchoring)——不同的身份声明会引导模型采取不同的行为模式。例如,声明为”交互式智能体”会让模型更倾向于对话式交互,而声明为”代理”则更倾向于任务导向。
安全策略的分层设计
Section titled “安全策略的分层设计”安全指令被放在开场部分(系统提示词的最前端),这不是巧合:
- 位置优先级:在 LLM 的注意力机制中,系统提示词开头的内容权重最高
- 允许列表 + 拒绝列表 + 灰色地带:不是简单的二元分类,而是三级策略
- 明确允许:授权安全测试、CTF、教育
- 明确拒绝:DoS、供应链攻击、恶意规避
- 条件允许:双重用途工具需要”明确授权上下文”
- 实用主义:承认安全工具的双重性质,而非一刀切禁止
URL 限制的实际动机
Section titled “URL 限制的实际动机”LLM 有一个已知的失败模式:生成看起来真实但实际不存在的 URL。这在编程辅助场景中特别危险:
- 可能引导用户访问恶意/钓鱼网站
- 可能浪费用户时间去访问 404 页面
- 用户对 AI 生成的 URL 可能有不恰当的信任
规则的设计是单向约束:可以使用用户提供的 URL,但不能自行编造。
Insight
Section titled “Insight”-
身份前缀的选择机制是运行时决定的,这意味着同一份代码库通过环境变量/配置就能切换三种完全不同的”人格”。这是提示词工程中的”多态”模式。
-
安全指令嵌入到最早的位置,确保安全边界在所有其他指令之前建立。这遵循了”安全左移(Shift Left Security)“的原则——在流程的最早阶段建立安全约束。
-
“don’t gold-plate, but don’t leave it half-done”(不要过度打磨,但也不要半途而废)是一条精妙的平衡指令。它同时对抗了 LLM 的两种典型倾向:
- 过度热心:不断添加”改进”直到偏离原始需求
- 过早放弃:遇到困难时给出不完整的方案
这种”双向约束”比单一方向的指令更有效,因为它定义了一个质量区间而非单一阈值。
-
**Agent 提示词中的”the caller will relay this”**明确了输出受众不是最终用户,而是中间调用者。这改变了模型的输出策略——从”解释性”转向”摘要性”,有效节省了上下文窗口空间。
-
URL 生成限制是防止 LLM 幻觉生成虚假链接的护栏。这是一个经过实际事故验证的规则——在没有此限制的早期版本中,模型会生成看似合理但实际不存在的文档链接、API 端点和包名。