本文档描述了 Open Interpreter 如何管理对话历史,包括对话的存储、导航和恢复。对话管理系统允许用户保存、浏览和恢复他们与解释器的交互。
有关消息渲染和显示格式的信息,请参阅Markdown 渲染和显示。
Open Interpreter 的对话管理系统由三个主要组件组成
来源:interpreter/terminal_interface/conversation_navigator.py16-91
Open Interpreter 中的对话以 JSON 文件的形式存储在特定于平台的本地存储目录中。每个文件包含完整的消息历史记录,包括用户输入、助手响应、代码块和执行输出。
存储路径由 get_storage_path("conversations") 函数确定,该函数返回一个特定于平台的位置
对话文件名根据对话内容和日期派生
Hello_world_program__September_23rd.json在导航器中显示时,这些文件名会被重新格式化以便更易读
Hello world program... (September 23rd)来源:interpreter/terminal_interface/conversation_navigator.py19-50
对话导航器是一个终端界面组件,允许用户浏览和恢复过去的对话。它在 conversation_navigator() 函数中实现。
来源:interpreter/terminal_interface/conversation_navigator.py16-91
inquirer 提供交互式选择菜单来源:interpreter/terminal_interface/conversation_navigator.py29-91
加载对话后,它会使用 render_past_conversation() 函数在终端中渲染,该函数将
MessageBlock 组件渲染助手消息CodeBlock 组件渲染代码及其输出来源:interpreter/terminal_interface/render_past_conversation.py11-69 interpreter/terminal_interface/components/message_block.py10-29
渲染器处理消息历史中的每个数据块
MessageBlock 中使用 Markdown 格式渲染CodeBlock 中使用语法高亮渲染CodeBlock对于特殊的格式考量,系统会转换 Markdown 中的代码块,以确保它们在视觉上与可执行代码块有所区别。
来源:interpreter/terminal_interface/render_past_conversation.py11-69 interpreter/terminal_interface/components/message_block.py31-49
对话管理系统通过以下方式与核心解释器集成
messages 列表conversation_filename 属性以跟踪当前对话文件chat() 方法以继续对话来源:interpreter/terminal_interface/conversation_navigator.py79-91
在终端界面访问对话导航器
加载对话后,终端将显示整个历史记录,然后允许您继续交互。
来源:interpreter/terminal_interface/conversation_navigator.py16-91