Communitygithub.com

Sibyl-Labs/sibyl-save

다중 하네스 세션 메모리 동기화 및 Sibyl 메모리 플러그인용 스킬 추출. Claude Code / Codex / Cursor / Hermes 스킬. MIT 라이선스.

sibyl-save란 무엇인가요?

Sibyl-save는 Sibyl 메모리 플러그인의 핵심 동반 스킬로, 현재 세션에서 발생한 모든 맥락을 플러그인의 로컬 메모리 데이터베이스(`~/.sibyl-memory/memory.db`)에 주입하고 재사용 가능한 패턴을 새로운 스킬로 추출합니다. MCP(Claude Code, Codex, Cursor 등)와 Hermes(Python SDK)를 포함한 여러 에이전트 하네스를 지원하며, 플러그인 인터페이스를 통해 모든 메모리 쓰기를 수행하므로 계층화, 전문 색인 및 무료 티어 제한을 자동으로 준수합니다. 주요 기능으로는 세션 요약 저장, 우선순위 관리, 엔티티 추적, 저널 이벤트 기록 및 스킬 추출(Phase 2)이 있으며, 설정 모드와 미리보기 모드를 제공하여 안전하게 운영할 수 있습니다. 이 스킬은 MIT 라이선스로 제공되며 Sibyl Labs에서 개발했습니다.

지원 대상✓Claude Code✓Codex CLI✓Cursor
npx skills add Sibyl-Labs/sibyl-save

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

/sibyl-save - 세션 메모리 동기화 + 스킬 추출 (Sibyl 메모리 플러그인)

Sibyl Labs 오픈 스킬 컬렉션의 일부입니다. MIT 라이선스. Sibyl Labs, LLC 제작.

Sibyl 메모리 플러그인의 동반 스킬입니다. 이번 세션에서 발생한 모든 내용을 캡처하여 플러그인 자체 인터페이스를 통해 플러그인의 로컬 메모리 데이터베이스(~/.sibyl-memory/memory.db)에 주입한 다음 재사용 가능한 패턴을 새로운 스킬로 추출합니다.

원시 메모리 파일을 직접 쓰지 않습니다. 모든 메모리는 플러그인을 통해 전달되므로 계층화, 전문 색인 및 무료 티어 제한이 준수됩니다. 플러그인이 지원하는 모든 하네스(Claude Code, Codex 및 모든 MCP 호스트, Hermes는 Python SDK 사용)에 동일한 MCP 도구를 노출하기 때문에 이 하나의 스킬은 설계상 다중 하네스입니다.

요구 사항

Sibyl 메모리 플러그인이 설치 및 연결되어 있어야 합니다:

pip install sibyl-memory-cli
sibyl init                 # 브라우저/지갑 활성화, ~/.sibyl-memory/ 작성
sibyl setup claude-code    # 또는: codex | hermes  (메모리 인터페이스를 하네스에 연결)

이 스킬은 다음 두 가지 표면 중 하나를 통해 플러그인과 통신합니다:

  • MCP (Claude Code, Codex, Cursor, 모든 MCP 호스트): 아래 8개의 memory_* 도구.
  • Python SDK (Hermes 또는 모든 Python 에이전트): sibyl_memory_client.MemoryClient / sibyl_memory_hermes.SibylMemoryProvider.

플러그인 인터페이스

목적MCP 도구Python SDK
사실/엔티티 저장memory_remember(category, name, body)client.set_entity(category, name, body)
엔티티 조회memory_recall(category, name)client.get_entity(category, name)
엔티티 목록memory_list(category, limit)client.list_entities(category)
전문 검색memory_search(query, limit, tiers)client.search(query)
상태 문서 설정memory_set_state(key, body)client.set_state(key, body)
상태 문서 가져오기memory_get_state(key)client.get_state(key)
저널 이벤트 기록memory_record_event(kind, body, category, name)client.write_event(...)
보관/잊기memory_forget(category, name, reason)client.archive_entity(category, name, reason)

아래 예제는 MCP 이름을 사용합니다. Hermes 또는 Python 에이전트에서는 SDK 열을 사용하십시오.

계층 매핑

세션 콘텐츠계층호출
세션 포인터 / 요약 / 전달 항목HOT (상태)memory_set_state("session", ...)
순위가 매겨진 우선순위HOT (상태)memory_set_state("priorities", ...)
세션 로그 항목COLD (저널)memory_record_event("session_save", ...)
프로젝트 / 사람 / 제품WARM (엔티티)memory_remember(category, name, body)
종료/완료된 항목ARCHIVEmemory_forget(category, name, reason)
이 스킬의 설정 + 델타 마커HOT (상태)memory_set_state("sibyl_save:config" / "sibyl_save:last_save", ...)

모드

  • run (기본값): /sibyl-save, save session, sync memory. 세션 컨텍스트를 플러그인에 주입한 다음 스킬 추출을 제안합니다.
  • setup: /sibyl-save setup, /sibyl-save config. 대화형. 설정을 작성하거나 편집합니다(상태 키 sibyl_save:config에 플러그인에 저장됨). 처음 사용하기 전에 한 번 실행하십시오.
  • preview (드라이 런): /sibyl-save preview, /sibyl-save --dry-run. 전체 분석을 실행하고 계획된 모든 쓰기를 보고합니다. DB를 변경하는 것은 호출하지 마십시오. 델타 마커를 진행하지 마십시오.

모드: setup (동적 설정)

목표: 플러그인의 상태 키 sibyl_save:config에 설정을 작성합니다. 대화형이고 최소화합니다. 추론할 수 있는 것은 추론하고, 추론할 수 없는 것만 물어보십시오.

  1. 하네스. 이것이 어떤 하네스인지 감지하거나 묻습니다 (claude-code, codex, cursor, hermes, 기타). 이는 Phase 2가 스킬 파일을 쓰는 위치를 결정합니다.
  2. 스킬 출력. 새 스킬이 이 하네스에 대해 작성되는 위치입니다. Claude Code 기본값: .claude/skills/<name>/SKILL.md. 다른 하네스의 경우 스킬 위치와 형식을 확인하십시오. skill_output: {dir, format}으로 저장합니다.
  3. 우선순위. 순위 목록의 상태 키(기본값 priorities)와 상한. 기본 상한 15. 하드 상한 30: 30 이상의 값은 절대 허용하지 않습니다. 30보다 긴 목록은 우선순위 집합이 아니라 백로그입니다.
  4. 엔티티 카테고리. 추적할 WARM 카테고리(기본값 project, person, product). 사용자가 추가하거나 제거합니다.
  5. 추가 캡처. 선택적으로 저장이 실행될 때마다 채워야 할 추가 상태 키 또는 엔티티 카테고리 이름을 지정합니다 (메트릭 상태 문서, 연락처 카테고리). 확장 지점입니다.
  6. 드라이 런 기본값. dry_run_default 토글 (기본값 false).
  7. 설정 쓰기 memory_set_state("sibyl_save:config", {...})를 통해. 델타 마커는 건드리지 마십시오.

설정 형태: examples/sibyl-save-config.example.json 참조. 재실행 시 설정이 제자리에서 편집됩니다.


모드: run

Phase 1: 메모리 동기화 (플러그인 DB로)

단계 0 - 설정 + 델타 로드

memory_get_state("sibyl_save:config"). 없으면 설정 모드로 전환합니다. memory_get_state("sibyl_save:last_save")는 델타 앵커(마지막 저장 이후 변경된 사항)를 위한 것입니다. dry_run_default가 true이고 모드가 지정되지 않은 경우 미리보기로 실행합니다.

단계 1 - 현재 상태 읽기

  • memory_get_state("session") 및 memory_get_state(<priorities key>)
  • 추적 중인 카테고리에 대해 memory_list(category, limit), 그리고 이번 세션에서 접촉한 엔티티에 대해 memory_recall / memory_search
  • 설정에 명명된 추가 상태 키 또는 카테고리

단계 1.5 - 우선순위 확인 및 조정

우선순위 상태 문서를 읽고 제자리에서 조정합니다(memory_set_state로 다시 쓰기). 조건과 각각에 필요한 조치는 다음과 같습니다:

  • 완료된 항목이 여전히 목록에 있음: 삭제; memory_record_event("priority_closed", {...})를 통해 종료를 기록합니다.
  • RANK_DRIFT / DUP_RANK (순위가 1..N으로 연속되지 않거나 순위가 중복됨): 1..N으로 다시 번호를 매깁니다.
  • OVER_CAP (항목이 상한보다 많음): 가장 낮은 우선순위 항목을 상한에 도달하거나 미만이 될 때까지 백로그 상태 문서로 이동합니다.
  • STALE_ITEM (14일 이상 손대지 않음): 사용자에게 알립니다.
  • TERMINAL 엔티티 (참조된 엔티티가 보관/종료됨): 우선순위를 종료합니다.
  • BROKEN 엔티티 참조 (실제 엔티티를 가리키지 않음): 실제 category/name으로 수정합니다.

모든 쓰기 시 상한을 적용합니다(30 초과 금지).

단계 2 - 세션 분석

델타 앵커 이후(또는 첫 저장 시 세션 시작 이후)의 대화를 검토합니다. 다음을 추출합니다:

  • 접촉한 엔티티 - 생성, 읽기 또는 수정된 프로젝트, 사람, 제품
  • 수행된 작업 - 식별자가 있는 구체적인 사항
  • 내려진 결정 - 전략적 선택과 그 근거
  • 전달 항목 - 다음 세션 작업, 동사 우선("배포...", "후속 조치...", "확인...")
  • 경고 - 활성 위험, 차단기, 마감일, 아슬아슬한 상황
  • 배운 교훈 - 운영 개선 사항 (Phase 2에 제공됨)
  • 추가 캡처 - 설정의 추가 상태 키/카테고리에 대한 데이터

단계 3 - 플러그인 DB에 주입

미리보기 모드에서는 변경하는 것을 호출하지 마십시오. 계획된 쓰기를 보고(단계 4) 중단합니다.

  1. 세션 상태 - memory_set_state("session", { last_session, summary, forward, entities_touched, warnings }). 전달 항목은 작업 참조일 뿐이며 잔액 스냅샷이나 오래될 수 있는 것은 절대 포함하지 않습니다.
  2. 저널 이벤트 - memory_record_event("session_save", { evaluated, acted, forward, extra }). 저장당 하나의 이벤트(설계상 추가 전용).
  3. 우선순위 - memory_set_state(<priorities key>, { updated, cap, items }), 상한 적용. 오버플로는 백로그 상태 문서로 이동합니다.
  4. 엔티티 - 변경된 각 엔티티에 대해 memory_remember(category, name, body). 새 엔티티는 단순히 새로운 memory_remember 호출입니다. 플러그인이 색인을 생성하므로 유지 관리할 별도 레지스트리가 없습니다.
  5. 종료 / 완료 - memory_forget(category, name, reason).
  6. 추가 캡처 - 설정된 각 추가 상태 키/카테고리를 적용합니다.
  7. 델타 마커 - memory_set_state("sibyl_save:last_save", { ts: <now> }). 미리보기에서는 건너뜁니다.

단계 4 - 보고

간결한 요약: 작성된 엔티티, 업데이트된 상태 문서, 저널 이벤트 ID, 추가/종료된 우선순위, 추가 캡처 및 다음 세션을 위한 전달 항목. 미리보기 모드에서는 모든 줄에 "would"라고 표시하고 아무것도 기록되지 않았음을 확인합니다.


Phase 2: 스킬 추출 (하네스 네이티브)

스킬은 하네스에 관계없이 동일한 방식으로 제공됩니다: 식별, 제안, 현재 하네스의 네이티브 스킬 파일로 생성합니다.

단계 5 - 재사용 가능한 패턴 식별

다음 중 ANY에 해당하는 작업에 대해 세션을 스캔합니다: 반복됨 (이 세션에서 두 번 이상), 재발함 (다시 발생할 가능성이 높음), 다단계 (3개 이상의 연속 단계), 비명백함 (유지할 가치가 있는 해결 방법), 오류 발생 쉬움 (체크리스트 필요). 각 후보에 대해 이름(짧은 명령 동사구), 트리거, 매개변수, 복잡성(위험한 단계 있음), 빈도를 평가합니다.

단계 6 - 후보 제안

각각을 이름, 설명 및 예상 빈도와 함께 한 줄로 제시합니다. 그런 다음 "만들까요? 아니면 건너뛸까요?"라고 묻습니다.

단계 7 - 승인된 스킬 생성 (하네스 네이티브)

설정에서 skill_output을 읽어 이 하네스가 스킬을 기대하는 위치와 형식을 확인합니다. 기본값:

하네스스킬 위치형식
claude-code.claude/skills/<name>/SKILL.mdYAML 프론트매터 (name, description) + Markdown 본문
codex~/.codex/prompts/<name>.md (설정에서 확인)Markdown 프롬프트
cursor.cursor/ 명령/규칙 (설정에서 확인)Cursor 규칙에 따름
기타skill_output.dir에서skill_output.format에서

승인된 각 스킬에 대해 구성된 위치에 트리거 문구, 단계별 지침, 매개변수 설명, 위험한 단계에 대한 안전 점검 및 예제 호출을 포함하여 파일을 작성합니다. 경로를 보고합니다.

다음과 같은 스킬을 생성하지 마십시오: 기존 스킬을 복제하는 경우(먼저 스킬 위치 확인), 재발하기에는 너무 세션 특화된 경우, 단일 사소한 명령을 래핑하는 경우, 또는 운영 규칙이 보호하는 파일을 편집해야 하는 경우(이를 표면화하고 자체 편집하지 마십시오).


규칙 (양보 불가)

  • 라이브 데이터(잔액, 가격, 개수)를 내구성 있는 사실로 저장하지 마십시오. 참조를 캡처하고 스냅샷은 캡처하지 마십시오.
  • 세션 전달 항목은 작업 중심이며 동사 우선입니다.
  • 저장당 하나의 저널 이벤트(추가 전용, 기록을 다시 쓰지 않음).
  • 우선순위는 상한이 있습니다(기본값 15, 절대 30 초과 금지). 오버플로는 백로그 상태 문서로 이동합니다.
  • 엔티티는 category + name으로 주소 지정됩니다. 플러그인이 색인이 되도록 하십시오. 병렬 레지스트리는 없습니다.
  • 모든 메모리 쓰기는 플러그인 인터페이스를 통해 이루어집니다. ~/.sibyl-memory/ 파일을 쓰거나 memory.db를 직접 열지 마십시오: 클라이언트가 잠금 및 무료 티어 상한을 처리합니다.
  • 기존 스킬을 읽기 전용으로 취급하십시오. 명시적으로 요청하지 않는 한 제자리에서 편집하는 대신 새 스킬을 만드십시오.

라이선스 및 출처

MIT (LICENSE 참조). 각 Markdown 파일 상단의 워터마크 주석은 귀속 및 출처이며 사용 제한이 아닙니다. node scripts/watermark.mjs verify로 사본을 확인하십시오. 자세한 내용은 WATERMARK.md를 참조하십시오.

관련 스킬