在大屏或电脑上体验更佳——动画和操作区域更宽敞。
输入

系统提示词组装

智能体的 harness 从身份、工具指导、运行环境和技能目录等来源组装系统指令,同时准备独立的工具定义与会话上下文。文件存在于磁盘,不代表其中任何文字进入了请求。

若智能体漏掉 MEMORY.md 已记录的信息,应先检查请求是否真的包含它。本例的文件保存一个私有预览地址,但默认关闭记忆加载,因此地址不会发送。

这像准备简报:目录列出文件标题,不等于附上全文。接收方只能读取交到手中的材料。技能目录和未读取的记忆文件也有这个区别。

系统提示词如何组装

harness 是包围模型的应用层。它在请求前选择资料,放进模型 API 的对应字段。本课的确定性组装器使用三个字段:

字段本例内容
system按顺序拼接、带标题的指令字符串
toolsRead、Edit 的名称、描述与 JSON 输入 schema
messages一条用户消息,先放选中的上下文块,再放任务

system 固定包含 Identity、Tool guidance、Runtime、User preferences 四节,每节有标题与正文,按此顺序用空行连接。启用技能后再增加 Available skills。

身份说明助手职责,工具指导要求提出编辑前先读文件,环境提供 Workspace: /demo/docs,用户设置提供 Use concise English.。它们组成一个系统文档,同时保留来源边界。

工具指导是普通文字,工具定义则是独立结构:Read 接收 path,Edit 接收 path、old_text、new_text。附加定义不会操作文件,执行属于工具调用循环。

具体字段由运行时决定。Agent SDK 定制指南 区分系统提示词增补与经会话提供的项目上下文。本例把技能正文和记忆放进带标签的消息块,这是本 harness 的约定,不是所有产品的通则。

系统提示词组装逐步演示

默认任务是“这个项目的私有预览地址在哪里?”,技能为 Loaded,记忆加载为 Off。两个源文件都存在。

  1. 建立四个基本片段。 每步复制身份、工具指导、工作目录、用户偏好中的一项到 system。它们都没有预览地址。
  2. 加入技能目录。 第五节包含 docs-check: Review documentation changes.,仅描述用途,没有技能指令。
  3. 检查激活状态并加载正文。 Loaded 表示此前已有明确选择,要求 harness 提供技能。它从 skills/docs-check/SKILL.md 复制 Check every relative link in the changed page. 到上下文块。原文件仍在。
  4. 检查记忆加载,跳过正文。 MEMORY.md 包含 Private preview: https://preview-cedar.example。由于 Off,该文字留在请求之外;文件没有被删除。
  5. 完成请求。 封装五节 system,附加两个工具定义,并创建用户消息。消息有两个文本块:技能指令、用户任务。
  6. 检查载荷。 能在技能块搜到 relative link,整个请求却没有 https://preview-cedar.example。动画在此停止,没有生成模型回答。

请求结构完整,却缺少任务所问的私有事实。打开 Load memory 后,地址加入消息内容。对应运行的系统提示词与工具定义保持逐字节相同。

目录提供描述,加载提供指令

技能有三种状态:Disabled 不加入目录和正文;Listed 在 system 加入描述;Loaded 保留该描述,并把正文复制到消息上下文。Listed → Loaded 改变实际工作指令,但 system 节数仍为五。

这是渐进披露:先用元数据发现技能,选中后再加载细节。Agent Skills 集成指南 描述这种分离,也支持用户明确激活。本例从明确选择开始,不模拟模型如何选择技能。

记忆加载独立控制。Listed + On 有预览地址,没有技能正文;Loaded + Off 有指令,没有地址。“智能体有这些文件”不足以说明请求包含什么。

技能状态加载记忆System 节数已加载上下文块请求含预览地址
DisabledOff40否
DisabledOn41是
ListedOff50否
ListedOn51是
LoadedOff51否
LoadedOn52是

每一行还固定有两个工具定义、一个任务块。这些是结构计数,不是 token 数。

排查时既看源文件,也看组装后的请求,搜索缺失指令或事实并定位字段。两份正文都加载时,地址位于 messages[0].content[1],即第一条消息的第二个文本块;只加载记忆时在 messages[0].content[0];关闭记忆时则没有匹配。源文件内容正确,但未纳入本次请求,就不能为这次请求提供证据。上下文与记忆 继续解释已提供内容如何压缩或带入另一会话。

边界情况

  • 不加载可选正文。 基本指令、工具定义和任务仍在,上下文缺口保持可见,不编造补充内容。
  • 技能禁用。 整个 Available skills 节省略,不用空正文宣传不可用技能。
  • 有目录无指令。 Listed 是正常状态。搜到技能名不证明正文已加载。
  • 文件存在但加载关闭。 记忆文件保留,地址不在请求中。本例不预测模型会猜测、追问还是请求读文件。
  • 两份正文均加载。 用户消息有技能、记忆、任务三个文本块。信息可用不保证模型正确使用。

常见错误

  • 把所有输入统称系统提示词。 system、tools、messages 是应用可见的独立字段,即使供应商内部会统一序列化。参见工具使用文档。
  • 把目录项当成完整指令。 简介没有正文中“检查相对链接”的要求,两者用途不同。
  • 把拼接顺序当成指令优先级。 编号只显示追加位置,不定义冲突规则,后写的文字不自动胜出。
  • 把源文件存在当成模型已知。 磁盘存在、目录可见、请求包含是三件事,排查缺失上下文应检查最后一项。
  • 认为加载后就可信或必然遵循。 加载只保证可用,信任、优先级与模型行为另行处理。

模型的简化

本课使用预设内存来源与小型组装器,没有模型响应,不替代智能体系统训练。节顺序、明确激活状态、上下文位置均为示例设计。真实运行时还处理权限、指令优先级、不可信内容、分词、缓存、上下文上限及供应商格式。本课不复现私有系统提示词,也不测量模型行为或 token 成本。