Pi Agent: 会话管理

最后更新:2026-08-31

会话是 Agent 的"记忆胶囊"——保存下来,下次继续;分支出去,探索可能。


1. 什么是会话

会话(Session)是一次完整交互的记录,包含:

PYTHON
from pi_agent import Agent, Session

# 创建会话
session = Session(name="project_review")

# 绑定 Agent
agent = Agent(name="reviewer", session=session)

# 对话自动记录到会话中
agent.chat("审查 main.py")
agent.chat("有什么安全问题?")

# 会话包含所有对话记录
print(len(session.messages))  # 4 (2 user + 2 assistant)

2. 会话持久化

(1) 保存到文件

PYTHON
from pi_agent import Agent

agent = Agent(name="tutor")
agent.chat("教我 Python 装饰器")

# 保存会话
agent.session.save("decorator_session.json")

(2) 从文件恢复

PYTHON
from pi_agent import Agent

# 恢复会话
agent = Agent(name="tutor")
agent.session.load("decorator_session.json")

# 继续对话——Agent 记得之前的内容
agent.chat("和类方法装饰器有什么区别?")

(3) 自动保存

PYTHON
agent = Agent(
    name="tutor",
    auto_save=True,
    save_dir="./sessions/"
)

3. 会话分支

分支让你从某个节点创建平行的对话路径:

▶ 示例 1:探索不同方案(难度⭐⭐)

PYTHON
from pi_agent import Agent

agent = Agent(name="architect")
agent.chat("设计一个用户认证系统的架构")
# Agent 给出了 JWT 方案

# 从当前节点创建分支
branch1 = agent.branch(name="jwt_branch")

# 主会话继续
agent.chat("用 OAuth2 重新设计")
# Agent 给出了 OAuth2 方案

# 分支会话继续 JWT 方案
branch1.chat("JWT 方案怎么处理 token 刷新?")

# 两个会话独立发展
print(agent.session.messages)       # JWT → OAuth2 路径
print(branch1.session.messages)     # JWT → 刷新路径

4. 会话管理 CLI

BASH
# 列出所有会话
pi-agent sessions list

# 查看会话详情
pi-agent sessions show decorator_session

# 恢复会话
pi-agent chat --session decorator_session

# 删除会话
pi-agent sessions delete old_session

# 导出会话
pi-agent sessions export decorator_session --format markdown --output chat.md

5. 会话搜索与标签

(1) 添加标签

PYTHON
agent.session.add_tag("python")
agent.session.add_tag("decorator")
agent.session.add_tag("advanced")

(2) 搜索会话

PYTHON
from pi_agent import SessionManager

manager = SessionManager()

# 按标签搜索
sessions = manager.find_by_tag("python")

# 按日期搜索
sessions = manager.find_by_date("2026-08-28")

# 按内容搜索
sessions = manager.search("装饰器闭包")

(3) CLI 搜索

BASH
pi-agent sessions search "装饰器"
pi-agent sessions list --tag python --date 2026-08-28

6. 会话共享

(1) 导出为 Markdown

PYTHON
agent.session.export("chat.md", format="markdown")

(2) 导出为 JSON

PYTHON
agent.session.export("chat.json", format="json")

(3) 分享给其他 Agent

PYTHON
# 将会话上下文传递给另一个 Agent
new_agent = Agent(name="continuer")
new_agent.session.import_from(agent.session)
new_agent.chat("继续上面的讨论,深入讲讲元类")

Alice 的工作流:"我每天结束时保存会话,第二天恢复继续。就像和同一个老师持续学习。"

Bob 的用法:"项目评审时,我会把会话导出为 Markdown 发给团队,比截图清晰多了。"


❓ 常见问题

Q 会话文件存在哪里?
A 默认在 ~/.pi-agent/sessions/ 目录。可通过 save_dir 参数自定义。
Q 会话文件会很大吗?
A 取决于对话轮数和内容。一般 100 轮对话约 50-200KB。图片和长代码会增加大小。
Q 可以合并两个会话吗?
A 可以。用 session.merge(other_session) 合并,消息按时间排序。

📖 小节


📝 作业

  1. 基础题(难度⭐):创建一个会话,进行 5 轮对话,保存后重新加载继续。
  2. 进阶题(难度⭐⭐):从一个会话创建两个分支,分别探索不同方案,最后对比结果。
  3. 挑战题(难度⭐⭐⭐):实现一个"会话仪表盘"脚本,统计所有会话的标签、轮数、token 消耗。
Web-Tutorial.com

Web-Tutorial 技术团队

由多位开发者共同维护的编程教程平台。每篇教程由对应领域的开发者编写和审核,确保内容准确可靠。如发现任何问题,欢迎向我们反馈。

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏