2026/2/21 1:23:55
网站建设
项目流程
大同建设银行煤炭支行网站,网络搭建及应用技能大赛 试题与答案,关键词优化按天计费,做网站想要个计算器功能Claude Code 用 “分层注入 可选上下文#xff08;system-reminder#xff09; 按需能力加载#xff08;skills#xff09; 隔离执行#xff08;sub-agent#xff09;” 把上下文工程系统化#xff1a;既解决“上下文太长/指令过载”的工程问题#xff0c;也试图把 pr…Claude Code 用“分层注入 可选上下文system-reminder 按需能力加载skills 隔离执行sub-agent”把上下文工程系统化既解决“上下文太长/指令过载”的工程问题也试图把 prompt injection 风险隔离在可控边界内。原文分析见https://www.xiaohongshu.com/explore/697db619000000002103f9d8?app_platformandroidignoreEngagetrueapp_version9.18.0share_from_user_hiddentruexsec_sourceapp_sharetypenormalxsec_tokenCBxMKJy5YYZh_lCVmElZOwOhH2HHwOT1LfB0EE3QVwuxQauthor_share1xhsshareshareRedIdODw6MTY4Ozs2NzUyOTgwNjY2OTo1S0k8apptime1769910444share_idb4a5e8045791490f8fd574c1804150dashare_channelwechat0. 背景与动机文中引用了两条推文观点与其叫“提示词工程”更准确的是上下文工程——核心是把“恰好足够”的信息放入上下文窗口让模型能走到下一步。作者认为Claude Code是目前最复杂、实现最精密但也最不透明的工业级 LLM 应用案例之一。逆向方式文中提到两种用mitmproxy拦截 Claude Code 与服务端之间的 API 调用让 Claude Code 自己输出它收到的系统提示词片段结论之一在用户输入到达模型前Claude Code 会注入至少 5 层额外信息。1. 总览Claude Code 的“多层注入系统”5 层作者把 Claude Code 的上下文组织抽象为五层每层解决一类问题尽量互不干扰Layer 1System Prompt系统提示词安全规则、工具使用规则、输出格式等特点全会话有效、用户不可修改Layer 2CLAUDE.md项目约定 System-Reminder包装机制项目规范 / 代码风格 / 团队约定等特点每条消息前注入更像“长期背景/规范”Layer 3Slash Commands斜杠命令用户显式触发的“单次注入工作流”特点单次轮次有效、把一整段工作流指令注入当前消息Layer 4Skills技能模型按需加载的“专业指令集”特点模型自主决定是否加载加载后把 SKILL.md 的内容注入对话继续执行Layer 5Sub-Agents子 Agent完全隔离的新对话/新上下文特点隔离执行只返回最终结果中间过程不可见2. 为什么要分层注入2.1 类比LLM 像操作系统文中类比LLM 像新型操作系统LLM CPU上下文窗口 RAMRAM 有限系统必须决定什么信息放进上下文什么时候加载什么时候丢弃2.2 “指令过载”问题文中提到系统提示词大约有几十条独立指令已接近模型可靠遵循的上限。如果把CLAUDE.md Skills 全量内容 工具定义都塞进系统提示词指令数量可能暴涨导致遗忘冲突无视2.3 分层策略的直觉永远存在的规则放系统层Layer 1可能相关但不一定相关的项目约定放 Layer 2并用 system-reminder 允许“可忽略”一次性任务用 Layer 3 注入可复用能力按需用 Layer 4 加载需要隔离执行的任务用 Layer 5 开新对话/沙箱3. Layer 2 重点CLAUDE.md 与 System-Reminder3.1 注入方式用system-reminder包裹文中展示Claude Code 会把 CLAUDE.md 包进system-reminder标签里注入。关键语义文中意思“下面这些内容可能相关也可能不相关”“除非高度相关否则不要回应/不要遵循这些上下文”3.2 为什么这样设计CLAUDE.md 是用户可控的可能很长、很细、甚至自相矛盾如果强制模型对其中所有内容都当成硬指令会干扰当前任务造成冲突和决策困难增加响应变慢/成本变高system-reminder 的价值给模型一个“合法忽略”机制把它更像“上下文背景”而不是“必须执行的命令”。3.3 CLAUDE.md 的层级文中提到 3 层全局级~/.claude/CLAUDE.md所有项目共享项目级./CLAUDE.md当前项目专用目录级./subdir/CLAUDE.md特定目录专用三层合并并用类似下面的标记区分来源文中示例形式claude_mdsourceglobal.../claude_mdclaude_mdsourceproject.../claude_md4. Layer 3Slash Commands斜杠命令4.1 工作机制以/commit为例用户输入/commit系统不会把它当成“真的命令执行”而是替换变量如{commit_message}占位符把完整工作流指令注入到当前消息注入内容类似一个 checklist/workflow文中示例git status / diff / log分析 staged changes起草 commit message4.2 与 Skills 的区别文中一句话总结Slash Commands用户发起的注入Skills模型发起的注入5. Layer 4Skills按需加载的“指令包”5.1 Skill 的形态每个 Skill 是一个SKILL.md文件文中截图示例code-review启动时系统只加载“可用 skills 的描述”不是完整内容到系统提示词中Available skills: code-review / refactor / test-generator …5.2 调用方式文中展示了类似工具调用{name:Skill,arguments:{skill:code-review}}5.3 关键细节Skills 不是子 AgentSkills 是“把新指令注入当前对话然后继续”没有新进程隔离环境独立上下文好处扩展能力同时避免上下文膨胀不用把所有技能全文长期塞进 system prompt6. Layer 5Sub-Agents隔离执行6.1 触发形式文中展示 Task 调用{name:Task,arguments:{subagent_type:Explore,prompt:Find all files that handle authentication}}6.2 隔离机制文中关键词Sub-Agents 在V8 IsolateV8 隔离沙箱里运行与主 Agent 的 JS 执行环境隔离还有Seccomp syscall 白名单等限制不能 ptrace不能直接访问网络不能读取主 Agent 之外的文件不能再生成子 Agent设计意图即使子 Agent 被 prompt injection 影响能干的坏事也有限子 Agent 只把最终结果返回给主 Agent中间过程不可见7. 五层之间的关系图的含义整理从“用户请求”到“Claude 拿到完整上下文”的路径大致是Layer 1系统规则始终存在Layer 2项目约定/提醒每条消息都可能附带Layer 3Slash若用户显式触发则注入一次性工作流Layer 4Skills若模型判断需要则加载并注入专业指令Layer 5Sub-agent若需要隔离执行则开新对话跑完再回传结果8. System-Reminder 不止用于 CLAUDE.md文中列了system-reminder可能出现的5 种场景要点CLAUDE.md 注入每条消息都可能有TodoWrite 后自动注入任务列表更新部分工具调用结果用 system-reminder 包裹可用 Skills 的描述也可能用该标签包对话开始时注入git status快照文中提到核心作用明确告诉模型“什么是上下文、什么是指令”并允许对上下文做选择性使用。9. ConnectOnion把 system-reminder 做成可配置插件文中介绍文中提到Claude Code 的触发逻辑是内置的、用户不可见不可改ConnectOnion 把这套机制做成开源插件用户可看可改可加。9.1 事件钩子文中9 个事件覆盖 Agent 执行阶段覆盖大致包括用户输入后LLM 调用前/后工具执行前/后错误处理任务完成并强调覆盖每个阶段9.2 system-reminder 插件监听after_each_tool工具执行完成 → 触发 after_each_tool插件检查触发条件工具名是否匹配如 write_file路径模式是否匹配如*.py匹配则追加 system-reminder让 LLM 在看到“工具结果”同时也看到“提醒”9.3 system-reminder 配置文件示例YAML reminder---name:test-remindertriggers:-tool:write_filepath_pattern:*.py---system-reminderConsider running tests to verify your changes. This is a gentle reminder-ignore if not applicable. /system-reminder10. 安全视角上下文注入 vs Prompt Injection10.1 观点它们是同一技术的两面开发者用 CLAUDE.md / Skills 做“正当注入”来扩展能力攻击者用同样机制注入恶意指令prompt injection10.2 文中提到的安全作者与结论按文意记录Simon Willison强调 prompt injection 的核心挑战在于模型会信任“听起来可信的 token”从而引发 confused deputy 之类风险。Johann Rehberger“AI Bug 之月”文中说他在 2025 年 8 月每天发布一份 AI 漏洞报告持续一个月测试多种主流 AI 编程助手均存在 prompt injection 问题其中有一份报告专门针对 Claude Code提到DNS 数据外泄Claude Code 执行命令前会询问确认但有一组命令被预批准ping / nslookup / host / dig攻击者可构造域名把敏感信息编码进 DNS 查询中文中提到 base64 形式还提到跨 Agent 攻击与相关演讲主题按文中描述记录11. Claude Code 的防御文中6 层安全门控 若干机制11.1 每次工具调用都要过的 6 层验证文中列举UI 层 XSS 过滤最外层Router ACL 验证消息合法性工具白名单文中写只允许 14 个工具参数 Schema 校验文中写ZodOS SyscallSeccomp 过滤系统调用输出TEE可信执行环境 Token 脱敏11.2 WebFetch 限制文中例子引用 web sources 时每段最多 125 字符避免整段复制恶意提示词11.3 Sub-agent 隔离就算 prompt injection 成功子 Agent 仍被沙箱限制难以访问敏感资源11.4 读后写强制Write 工具Write 工具要求先 Read防止被诱导覆盖重要文件文中意思