Skip to main content
智能体通过运行时状态注入感知不断变化的环境:在每次推理之前,随对话变化的信息(当前时间、计划任务、上下文用量、重复的工具报错)会以 HintBlock 的形式注入上下文,由 Agent(...)injection_config 参数控制。 注入覆盖四个维度,各自有独立的触发时机: 其中上下文用量的缓冲区 context_buffer_ratio 定义在上下文配置中,其余三个维度由 InjectionConfig 控制。

注入机制

每个注入字段包装为 <key>value</key>,拼接后填入 template(默认是一个 <system-reminder> 包裹模板)。一条典型的注入提示如下:
注入提示示例
有三个设计要点值得了解:
  • 注入不是临时的:它会追加到持久化上下文中,让智能体感知时间的流逝和每一步做了什么,建立时间感。
  • 提示以 HintBlock 形式附加,而不是修改系统提示,因此提示词缓存依然有效,同时智能体持续感知变化的状态。
  • 只有会话中会变化的信息才会被注入。固定信息(智能体身份、长期指令)应写入系统提示。
当注入发生且 emit_hint_event 开启时,reply_stream 会额外产出一个 HintBlockEvent,方便前端渲染注入的提示。

配置注入

向智能体构造函数传入 InjectionConfig 即可调整注入行为:
InjectionConfig 的字段如下:
InjectionConfig 上的 context_buffer_ratio 已废弃,请改用上下文配置中的同名字段。此处仍然可以传入,会覆盖上下文配置中的取值,同时发出 DeprecationWarning

注入自定义字段

除内置维度外,extra_fields 可以注入开发者自定义的信息,例如传感器读数、部署元数据:
自定义字段会附加到每一次注入中,但自身不会触发注入:只有当时间、任务、上下文用量或工具报错维度触发时才会一并注入。

自定义模板

template 字段控制注入内容呈现给大模型的方式。它必须包含 {runtime_state} 占位符,占位符会被替换为拼接后的 <key>value</key> 字段: