본문으로 건너뛰기

Git 커밋으로 저장하는 Unix LLM 클라이언트

Sib는 LLM 대화의 각 턴을 Git 커밋으로 저장해 반복·분기·공유를 Unix 명령 조합으로 처리하는 CLI 클라이언트입니다.

이 요약은 AI가 원문을 분석해 생성했습니다. 정확한 내용은 원문 기준으로 확인하세요.

TL;DR

Sib는 LLM 대화의 사용자 발화와 assistant 응답을 각각 Git 커밋으로 저장하는 Unix CLI 클라이언트입니다. HEAD와 부모 커밋을 조작해 반복, 편집, Fork, 대화 전환을 만들고, Git ref를 통해 대화를 원격 저장소로 백업하거나 공유합니다. `sib show -c`로 요약된 content를 추출해 새 체인에 넘길 수도 있어 긴 컨텍스트를 수동으로 압축할 수 있습니다. 다만 bash, Git, jq, curl 등에 의존하며 프로젝트가 초기 단계라 코드와 문서의 안정성에는 한계가 있습니다.

섹션별 상세

01
Sib는 SQLite 대신 Git 저장소를 대화 저장소로 사용하는 표준 Unix LLM 클라이언트입니다. 사용자 발화와 assistant 응답을 각각 하나의 커밋으로 만들고 부모 커밋을 따라 HEAD에서 도달 가능한 모든 턴을 모델에 함께 보냅니다. 대화가 일반 Git 저장소에 남기 때문에 기존 Git 호스트를 이용한 백업과 공유가 별도 기능 없이 가능해집니다.
bash
echo 'Why did Evangelion 3.0 suddenly go off the rails?' | sib ask
sib log
echo 'Which of those two reasons matters more?' | sib ask
sib log

표준 입력으로 질문을 전달하고 Git에 저장된 전체 대화와 새 응답을 확인하는 기본 흐름입니다.

bash
sib ask -rp HEAD~1

stdin을 읽지 않고 HEAD~1이 가리키는 대화 체인을 그대로 모델 endpoint에 다시 보내 이전 질문을 반복합니다.

bash
echo 'So you mean the 14-year skip was a good decision?' | sib ask -p HEAD~2

HEAD~2에서 새 사용자 발화를 추가해 기존 대화의 특정 시점에서 편집한 것처럼 새 분기를 만듭니다.

bash
sib save eva-3.0-go-off
sib save -l # List saved names

현재 대화 체인에 기억하기 쉬운 이름을 붙이고 저장된 이름 목록을 확인합니다.

bash
sib git fetch https://github.com/sib-project/hub \
dilluti0n/why-evangelion-end-like-that:refs/conv/why-evangelion-end-like-that
sib log why-evangelion-end-like-that
echo 'learning to accept himself? Honestly speaking, did he really succeed?' \
'Why is he being congratulated?' | sib ask -p why-evangelion-end-like-that

원격 Git 저장소에서 공유된 대화 ref를 가져온 뒤 로그를 읽고 해당 체인에서 새 질문을 이어갑니다.

02
Git 커밋 체인은 웹 UI의 반복과 편집을 단순한 참조 조작으로 표현합니다. `sib ask -rp HEAD~1`은 stdin을 읽지 않고 이전 사용자 발화가 있는 부모 체인을 다시 endpoint에 보내 반복 요청을 만들며, `sib ask -p HEAD~2`는 특정 시점에서 새 질문과 응답을 덧붙여 분기를 만듭니다. 이 방식은 반복, 편집, Fork, 대화 전환을 각각 독립된 저장 기능으로 구현하지 않고 동일한 Git 구조에서 파생시킵니다.
03
대화 체인의 긴 커밋 해시는 `sib save`로 사람이 읽을 수 있는 이름을 붙일 수 있습니다. 저장 이름은 기본적으로 후속 `sib ask`를 따라 움직이지 않으므로 원본 체인을 보존한 채 다른 질문을 시도하고, 결과가 마음에 들면 같은 이름으로 다시 저장할 수 있습니다. `sib ask -crp`는 API 호출과 assistant 커밋 없이 HEAD만 지정된 대화 체인으로 이동시켜 기존 대화를 다시 선택하는 데 사용됩니다.
04
Sib의 공유 기능은 Git ref와 원격 저장소를 그대로 활용합니다. `refs/conv/` 아래에 대화 체인을 push하거나 다른 저장소에서 fetch하면 다른 사용자가 `sib log`로 내용을 읽고 `sib ask -p`로 해당 지점에서 계속 대화할 수 있습니다. 공개 공유를 위해 `sib-project/hub`에 대화를 올리는 경로도 제공되지만, 저장소에 포함된 대화 내용이 공개될 수 있으므로 공유 대상과 원격 저장소의 공개 범위를 구분해야 합니다.
05
설치에는 bash 3.2 이상, git, jq, curl, awk, coreutils가 필요하며 저장소를 clone한 뒤 `make install`로 전역 또는 사용자 설치를 진행합니다. `sib init`이 저장소를 초기화하고 `sib config edit`과 `sib config set`이 endpoint와 모델 기본값을 바꾸며, API 키는 `PLM_API_KEY` 또는 `OPENAI_API_KEY` 환경 변수로 전달됩니다. 기본 설정은 OpenAI Responses API endpoint를 가리키고, `sib ask -rp HEAD~1 -m skynet-500`처럼 특정 요청에서 모델을 바꿀 수도 있습니다.
06
긴 대화는 모델에 전달되는 컨텍스트가 커지는 문제를 낳을 수 있습니다. `sib show -c`로 현재 HEAD의 content만 꺼내 요약을 만든 뒤 `sib ask -nc`로 기존 HEAD를 무시하고 새 체인을 생성하면 요약을 다음 대화의 입력으로 옮길 수 있습니다. `-n`은 새 체인을 만들고 전환하며 `-c`는 모델을 호출하지 않고 사용자 턴만 연결하므로, 컨텍스트를 압축하면서 불필요한 assistant 응답 생성을 줄입니다.
07
Sib는 각 명령을 별도 실행 파일로 분리한 Unix식 확장 구조를 사용합니다. `sib <cmd>`는 PATH에서 `sib-<cmd>`를 찾아 실행하고, 대화 데이터는 role과 content 같은 값을 blob으로 저장하는 평평한 키-값 트리와 커밋 체인으로 구성됩니다. `rev-jsonl`, `chain-jsonl`, `rev-parse`, `show-ref`, `update-ref`, `ls-refs`, `symbolic-ref` 같은 저수준 명령을 조합하면 수동 명령이나 외부 통합을 추가할 수 있습니다.
08
호환성을 위해 `_SIBTRACE*` 키는 예약되고 나머지 키는 `[A-Za-z_][A-Za-z0-9._-]*` 규칙을 따라야 하며, `content`만 필수 데이터로 취급됩니다. 커밋 날짜를 `999999999 +0000`으로 고정하고 author와 committer를 `Sibyl <sib@local>`로 지정해 같은 대화 체인에서 같은 해시를 얻도록 설계했습니다. 프로젝트는 GPL version 3으로 배포되지만 초기 단계라 대규모 기능 개발을 맡기에는 코드와 문서가 아직 안정적이지 않습니다.

용어 해설

Git 저장소(Git Repository)
파일과 변경 이력을 Git으로 관리하는 저장 공간입니다. Sib는 대화 전체를 일반 Git 저장소에 기록하므로 별도 데이터베이스 없이 clone, fetch, push 같은 기존 Git 작업으로 백업과 공유를 처리합니다. 대화도 코드와 같은 버전 관리 단위로 다룰 수 있다는 점이 핵심입니다.
커밋(Commit)
Git에서 특정 시점의 변경 내용을 고정하는 기록 단위입니다. Sib는 사용자 발화와 assistant 응답을 각각 하나의 커밋으로 저장하고 부모 커밋과 연결해 대화 순서를 표현합니다. 이 구조 덕분에 이전 시점에서 대화를 복제하거나 다시 이어갈 수 있습니다.
HEAD
현재 Git 작업 위치를 가리키는 참조입니다. Sib에서는 HEAD가 현재 대화의 마지막 assistant 응답이나 선택한 대화 분기를 가리키며, 새 요청은 HEAD에서 이어집니다. 특정 부모를 지정하면 반복, 편집, 분기, 대화 전환을 같은 참조 조작으로 처리할 수 있습니다.
Git 참조(Git Reference)
커밋 해시를 사람이 읽을 수 있는 이름이나 경로로 가리키는 Git의 포인터입니다. Sib의 저장된 대화 이름은 Git ref로 유지되며, `refs/conv/` 경로를 사용하면 원격 저장소에서 대화 체인을 fetch하거나 push할 수 있습니다. 긴 해시를 외우지 않아도 이름으로 대화를 재사용할 수 있습니다.
JSONL
각 줄에 하나의 JSON 객체를 기록하는 텍스트 형식입니다. Sib는 대화 체인을 JSONL로 내보내고 다시 저장할 수 있어 role, content, model 같은 키-값 데이터를 다른 도구와 연결하기 쉽습니다. `rev-jsonl`과 `chain-jsonl` 명령이 Git 기반 저장 형식과 외부 처리 사이의 변환을 맡습니다.

기술

  • Sib
  • Git
  • SQLite
  • bash
  • jq
  • curl
  • awk
  • coreutils
  • OpenAI Responses API
  • Neovim
  • Emacs
  • Lua
  • Markdown

활용 사례

  • 터미널에서 stdin으로 LLM 대화 실행
  • 이전 질문 반복과 특정 시점 편집
  • 대화 체인 저장과 분기 관리
  • Git 원격 저장소를 통한 대화 백업과 공유
  • 긴 컨텍스트를 요약해 새 대화로 전환
  • Neovim과 Emacs에서 대화 로그 확인
AI 분석 전체 내용 보기

AI 요약 · 북마크 · 개인 피드 설정 — 무료

출처 · 인용 안내

원문 발행 2026. 08. 17.수집 2026. 08. 17.출처 타입 RSS

인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.