세션
Pi 대화를 세션으로 저장하여 작업을 계속하고, 이전 단계에서 분기하고, 이전 경로를 다시 방문할 수 있습니다.
세션 저장
세션은 작업 디렉터리별로 구성되어 ~/.pi/agent/sessions/에 자동 저장됩니다. 각 세션은 트리 구조의 JSONL 파일입니다.
pi -c # Continue most recent session
pi -r # Browse and select from past sessions
pi --no-session # Ephemeral mode; do not save
pi --name "my task" # Set session display name at startup
pi --session <path|id> # Use a specific session file or partial session ID
pi --fork <path|id> # Fork a session file or partial session ID into a new session현재 세션 파일, 세션 ID, 메시지 수, 토큰 및 비용을 보려면 대화형 모드에서 /session를 사용하세요.
JSONL 파일 형식과 SessionManager API에 대해서는 Session Format를 참조하세요.
세션 명령
| 명령 | 설명 |
|---|---|
/resume |
이전 세션 찾아보기 및 선택 |
/new |
새 세션 시작 |
/name <name> |
현재 세션 표시 이름 설정 |
/session |
세션 정보 표시 |
/tree |
현재 탐색 session tree |
/fork |
이전 사용자 메시지에서 새 세션 만들기 |
/clone |
현재 활성 분기를 새 세션에 복제합니다. |
/compact [prompt] |
이전 맥락을 요약합니다. Compaction 참조 |
/export [file] |
세션을 HTML로 내보내기 |
/share |
공유 가능한 HTML 링크가 포함된 비공개 GitHub 요점으로 업로드 |
세션 재개 및 삭제
/resume 현재 프로젝트에 대한 대화형 세션 선택기를 엽니다. pi -r 시작 시 동일한 선택기를 엽니다.
선택기에서 다음을 수행할 수 있습니다.
- 입력하여 검색
- Ctrl+P를 사용하여 경로 표시 전환
- Ctrl+S를 사용하여 정렬 모드 전환
- Ctrl+N을 사용하여 명명된 세션으로 필터링
- Ctrl+R로 이름 바꾸기
- Ctrl+D로 삭제한 후 확인
가능한 경우 pi는 파일을 영구적으로 제거하는 대신 삭제를 위해 trash CLI를 사용합니다.
세션 이름 지정
사람이 읽을 수 있는 세션 이름을 설정하려면 /name <name>를 사용하세요.
/name Refactor auth module--name 또는 -n를 사용하여 시작 시 이름을 설정합니다.
pi --name "Refactor auth module"
pi --name "CI audit" -p "Review this build failure"명명된 세션은 /resume 및 pi -r에서 더 쉽게 찾을 수 있습니다.
/tree로 분기
세션은 트리로 저장됩니다. 모든 항목에는 id 및 parentId가 있으며 현재 위치는 활성 리프입니다. /tree를 사용하면 새 파일을 만들지 않고도 이전 지점으로 이동하여 계속할 수 있습니다.

예시 모양:
├─ user: "Hello, can you help..."
│ └─ assistant: "Of course! I can..."
│ ├─ user: "Let's try approach A..."
│ │ └─ assistant: "For approach A..."
│ │ └─ user: "That worked..." ← active
│ └─ user: "Actually, approach B..."
│ └─ assistant: "For approach B..."트리 컨트롤
| 열쇠 | 행동 |
|---|---|
| ↑/↓ | 보이는 항목 탐색 |
| ←/→ | 페이지 위로/아래로 |
| Ctrl+←/Ctrl+→ 또는 Alt+←/Alt+→ | 접기/펼치기 또는 분기 세그먼트 간 점프 |
| Shift+L | 선택한 항목에 대한 레이블 설정 또는 지우기 |
| Shift+T | 라벨 타임스탬프 전환 |
| 입력하다 | 항목 선택 |
| 이스케이프/Ctrl+C | 취소 |
| Ctrl+O | 사이클 필터 모드 |
필터 모드에는 기본값, 도구 없음, 사용자 전용, 레이블만 지정 및 모두가 있습니다. Settings에서 treeFilterMode로 기본값을 구성합니다.
선택 동작
사용자 또는 사용자 정의 메시지 선택:
- 리프를 선택한 메시지의 상위 항목으로 이동합니다.
- 선택한 메시지 텍스트를 편집기에 배치합니다.
- 편집하고 다시 제출하여 새 분기를 만들 수 있습니다.
보조자, 도구, 압축 또는 기타 비사용자 항목 선택:
- 리프를 해당 항목으로 이동합니다.
- 편집기를 비워 둡니다.
- 그 시점부터 계속하겠습니다.
루트 사용자 메시지를 선택하면 리프가 빈 대화로 재설정되고 원래 프롬프트가 편집기에 배치됩니다.
/tree, /fork, /clone
| 특징 | /tree |
/fork |
/clone |
|---|---|---|---|
| 산출 | 동일한 세션 파일 | 새 세션 파일 | 새 세션 파일 |
| 보다 | 풀 트리 | 사용자 메시지 선택기 | 현재 활성 분기 |
| 일반적인 사용 | 현재 대안 탐색 | 이전 프롬프트에서 새 세션 시작 | 계속하기 전에 현재 작업을 복제하세요. |
| 요약 | 선택적 분기 요약 | 없음 | 없음 |
대안을 함께 유지하려면 /tree를 사용하세요. 별도의 세션 파일을 원할 경우 /fork 또는 /clone를 사용하세요.
지점 요약
/tree가 한 분기에서 다른 분기로 전환되면 pi는 버려진 분기를 요약하고 해당 요약을 새 위치에 첨부할 수 있습니다. 이렇게 하면 전체 분기를 재생하지 않고 떠난 경로의 중요한 컨텍스트가 보존됩니다.
메시지가 표시되면 다음 중 하나를 선택합니다.
- 요약 없음
- 기본 프롬프트로 요약
- 사용자 정의 초점 지침으로 요약
branch summarization 내부 및 확장 후크에 대해서는 Compaction를 참조하세요.
세션 형식
세션 파일은 JSONL이며 메시지 항목, 모델 변경, 사고 수준 변경, 레이블, 압축, 분기 요약 및 확장 항목을 포함합니다.
파서, 확장, SDK 사용법 및 전체 SessionManager API에 대해서는 Session Format를 참조하세요.