Skip to content

Agent 集成细节

适用版本:4.0.8+

SessionExtension 已默认集成在 Agent 中。本页说明它如何工作,以及如何精准控制记录行为。

1. 生命周期钩子

请求前(request_prefixes)

  • activated_session.context_window 注入 chat_history
  • memo 非空,注入 CHAT SESSION MEMO

请求后(finally)

  • 提取输入与输出
  • 按配置写回 full_context/context_window

2. 会话池管理

Agent 内部维护:

  • agent.sessions: dict[str, Session]
  • agent.activated_session: Session | None

推荐模式:

python
agent.activate_session(session_id=user_id)
# ...
agent.deactivate_session()

3. 输入输出记录控制

3.1 session.input_keys

可配置只记录输入中的关键字段:

python
agent.set_settings("session.input_keys", [
    ".request",          # 整个 request prompt
    "info.task",         # 点路径
    "input/lang",        # 斜杠路径
    ".agent.system",     # agent prompt 中字段
])

3.2 session.reply_keys

只记录结构化输出里的关键字段:

python
agent.set_settings("session.reply_keys", ["summary", "scores.total"])

如果 input_keys/reply_keysNone,则记录完整请求文本与完整结果。

4. chat_history 相关方法在激活会话时的行为

激活会话后,这些方法会操作当前 Session:

  • set_chat_history(...)
  • add_chat_history(...)
  • reset_chat_history()
  • clean_context_window()

5. 与临时请求组合(推荐)

在自定义执行器中,建议用 create_temp_request() 做 memo 摘要:

  • 不继承当前 agent prompt/session handlers
  • 避免递归污染会话上下文
python
memo_request = agent.create_temp_request()

6. 团队约定

建议团队统一只写新版 Session 接口:

  • activate_session / deactivate_session
  • session.max_length
  • register_analysis_handler / register_execution_handlers