Pi Agent: Session Management
最終更新:2026-08-31
--- title: "セッション管理" description: "Pi Agentのセッション管理をマスターし、作成、永続化、復元、分岐、共有を理解します。" order: 8 lang: ja
セッションはAgentの「記憶カプセル」——保存して後で続きをできる;分岐して可能性を探れる。
1. セッションとは
セッションは完全なインタラクションを記録します:
- 会話履歴
- コンテキストの状態
- ツール呼び出し記録
- Agentの設定
PYTHON
from pi_agent import Agent, Session
session = Session(name="project_review")
agent = Agent(name="reviewer", session=session)
agent.chat("Review main.py")
agent.chat("What security issues are there?")
print(len(session.messages)) # 4 (2 user + 2 assistant)
2. セッションの永続化
(1) ファイルに保存
PYTHON
from pi_agent import Agent
agent = Agent(name="tutor")
agent.chat("Teach me Python decorators")
agent.session.save("decorator_session.json")
(2) ファイルから読み込み
PYTHON
from pi_agent import Agent
agent = Agent(name="tutor")
agent.session.load("decorator_session.json")
agent.chat("How does it differ from class method decorators?")
(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("Design a user authentication system architecture")
# AgentがJWTアプローチを提示
branch1 = agent.branch(name="jwt_branch")
agent.chat("Redesign using OAuth2")
# AgentがOAuth2アプローチを提示
branch1.chat("How to handle token refresh in JWT?")
# 2つの独立したセッション
print(agent.session.messages) # JWT -> OAuth2パス
print(branch1.session.messages) # JWT -> refreshパス
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("decorator closure")
(3) CLI検索
BASH
pi-agent sessions search "decorator"
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
new_agent = Agent(name="continuer")
new_agent.session.import_from(agent.session)
new_agent.chat("Continue the discussion, dive deeper into metaclasses")
❓ よくある質問
Q セッションファイルはどこに保存される?
A デフォルトは
~/.pi-agent/sessions/。save_dirパラメータでカスタマイズ可能。Q セッションファイルはどれくらい大きくなる?
A 会話の長さに依存します。100ターンで約50〜200KB。画像や長いコードはサイズを増加させます。
Q 2つのセッションをマージできる?
A はい。
session.merge(other_session)を使用。メッセージはタイムスタンプでソートされます。📖 まとめ
- セッションは完全なインタラクションを記録;保存、読み込み、自動保存をサポート
- 分岐でメインラインに影響せず異なるアプローチを探索
- タグと検索で過去のセッションを素早く発見
- Markdown/JSONでエクスポートして共有とアーカイブ
📝 練習問題
- 基礎(難易度:⭐): セッションを作成し、5往復の会話をして、保存してから再読み込みしてください。
- 中級(難易度:⭐⭐): 1つのセッションから2つの分岐を作成し、異なるアプローチを探索して結果を比較してください。
- 上級(難易度:⭐⭐⭐): 全セッションの統計(タグ、ターン数、トークン使用量)を表示する「セッションダッシュボード」スクリプトを構築してください。