Pi 구성, 확장, 플랫폼 설정 및 API 참조.

세션

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"

명명된 세션은 /resumepi -r에서 더 쉽게 찾을 수 있습니다.

/tree로 분기

세션은 트리로 저장됩니다. 모든 항목에는 idparentId가 있으며 현재 위치는 활성 리프입니다. /tree를 사용하면 새 파일을 만들지 않고도 이전 지점으로 이동하여 계속할 수 있습니다.

Tree View

예시 모양:

├─ 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로 기본값을 구성합니다.

선택 동작

사용자 또는 사용자 정의 메시지 선택:

  1. 리프를 선택한 메시지의 상위 항목으로 이동합니다.
  2. 선택한 메시지 텍스트를 편집기에 배치합니다.
  3. 편집하고 다시 제출하여 새 분기를 만들 수 있습니다.

보조자, 도구, 압축 또는 기타 비사용자 항목 선택:

  1. 리프를 해당 항목으로 이동합니다.
  2. 편집기를 비워 둡니다.
  3. 그 시점부터 계속하겠습니다.

루트 사용자 메시지를 선택하면 리프가 빈 대화로 재설정되고 원래 프롬프트가 편집기에 배치됩니다.

/tree, /fork, /clone

특징 /tree /fork /clone
산출 동일한 세션 파일 새 세션 파일 새 세션 파일
보다 풀 트리 사용자 메시지 선택기 현재 활성 분기
일반적인 사용 현재 대안 탐색 이전 프롬프트에서 새 세션 시작 계속하기 전에 현재 작업을 복제하세요.
요약 선택적 분기 요약 없음 없음

대안을 함께 유지하려면 /tree를 사용하세요. 별도의 세션 파일을 원할 경우 /fork 또는 /clone를 사용하세요.

지점 요약

/tree가 한 분기에서 다른 분기로 전환되면 pi는 버려진 분기를 요약하고 해당 요약을 새 위치에 첨부할 수 있습니다. 이렇게 하면 전체 분기를 재생하지 않고 떠난 경로의 중요한 컨텍스트가 보존됩니다.

메시지가 표시되면 다음 중 하나를 선택합니다.

  1. 요약 없음
  2. 기본 프롬프트로 요약
  3. 사용자 정의 초점 지침으로 요약

branch summarization 내부 및 확장 후크에 대해서는 Compaction를 참조하세요.

세션 형식

세션 파일은 JSONL이며 메시지 항목, 모델 변경, 사고 수준 변경, 레이블, 압축, 분기 요약 및 확장 항목을 포함합니다.

파서, 확장, SDK 사용법 및 전체 SessionManager API에 대해서는 Session Format를 참조하세요.