跳转到主要内容
LLM 什么都不记得。这是特性——直到你想要它记得。
hb.LLM 有意保持无状态。对话历史只是你传给 chatstream 的消息列表。需要多轮 chat 又不想每次重建该列表时,LLMSession 替你持有历史与可选工具。

1. 无会话的手动历史 (Manual History Without a Session)

只需一两轮时,你可以自行管理历史:
对已在别处携带状态的流水线,这一模式已足够。

2. 会话工具 (Session Tools)

LLMSession 可持有会话工具并在每轮使用。工具遵循与 LLM.chat 相同的 tools=[...] 契约:接受 Python 可调用对象、Tool、工具集 (Toolkit) 与 schema 字典。
外部 MCP 服务器作为会话工具集 (Toolkit) 导入:
会话将 assistant tool call、role="tool" 结果与最终 assistant 响应存入 messages。完整可执行工具契约见 Tool Use

3. 会话生命周期 (Session Lifecycle)

LLMSession 为交互式工作流提供小型辅助方法:
仅持久化消息——执行中的 MCP 工具集 (Toolkit) 不宜序列化:
to_dict()from_dict() 返回 JSON 安全载荷,遵循相同的消息专用契约。

4. CLI 交互式会话 (CLI Interactive Sessions)

chat preset 启动多轮 CLI 会话:
>>> 提示符下输入消息。斜杠命令: 启动时用重复的 --mcp 值附加 MCP 工具:
运行中的会话内用 /mcp 添加更多工具:
规范工具集 (Toolkit) 引用形式为 namespace.toolkit:version。负版本从最新往回数:-1 为最新,-2 为次新。 当 provider 单独输出思考内容时,CLI 会话在可见 assistant 文本前将其打印在 <think></think> 内。工具迭代逐步打印 STEPS: 001 / 020,随后是 tool call 与 tool 结果。

5. 检查解析状态 (Inspect Resolved State)

需要查看 client 如何解析时使用 spec
spec.to_dict() 省略密钥。spec.to_dict(secrets=True) 包含物化后的解析字典,仅应在可信调试场景使用。 解析后的 spec 还会产生用于去重与缓存查找的稳定哈希键:
client_key() 仅包含入口 (Gateway) client 构造字段,因此重复的 LLM 实例可复用同一内存中的 OpenAI 兼容 SDK client。

Further Exploration

Related resources:
  • Tool Use — 仅 schema 与可执行工具、MCP 工具集 (Toolkit) 与结构化输出。
  • LLM Chat — 消息输入、流式输出与 include 投影。
  • First LLM — CLI 会话导览与快速入门中的 MCP 附加。