recall your second brain
이 번역은 AI가 원문 README를 옮긴 것입니다. 원문이 항상 우선합니다.
<!-- Thanks to: @batmania52, @yeonsh, @missflash, @CoLuthien, @dev-minsoo -->
<div align="center">
AI 에이전트와 나눈 대화를 로컬 위키로 정리하고 검색하세요.
Your AI agent conversations, as a searchable local wiki.
<br/>
한국어 · English · 日本語 · 中文
</div>
<div align="center"> <img src="screenshot.png" alt="seCall Obsidian 볼트" width="720" /> <br/><br/> </div>
seCall은 AI 에이전트 대화를 위한 로컬 퍼스트 도구입니다. Claude Code, Codex CLI, Gemini CLI, claude.ai, ChatGPT 의 세션 로그를 수집하고, LLM 으로 Obsidian 호환 위키를 정리해 두고, BM25 + 벡터 하이브리드 검색을 CLI / MCP 서버 / REST API / 내장 웹 UI 로 제공합니다.
여러 AI 코딩 에이전트의 세션을 통합 형식으로 파싱하고 정규화합니다:
| 에이전트 | 형식 | 상태 | ||
|---|---|---|---|---|
| Claude Code | JSONL | ✅ 안정 | ||
| Codex CLI | JSONL | ✅ 안정 | ||
| Gemini CLI | JSON | ✅ 안정 | ||
| claude.ai | JSON (ZIP) | ✅ v0.2 신규 | ||
| ChatGPT | JSON (ZIP) | ✅ v0.2.3 신규 |
Obsidian 호환 마크다운 볼트 (2계층 구조):
vault/
├── raw/.sessions/ # 불변 세션 원본 (dot-prefix → obsidian 자동 hidden, v0.5.0+)
│ └── YYYY-MM-DD/ # 날짜별 정리
├── wiki/ # AI 생성 지식 페이지
│ ├── projects/ # 프로젝트별 요약
│ ├── topics/ # 기술 주제 페이지
│ └── decisions/ # 아키텍처 의사결정 기록
└── graph/ # Knowledge Graph 출력
└── graph.json # 노드/엣지 데이터
secall wiki update --backend claude|codex|haiku — 생성은 도구 호출 가능 백엔드만; ollama/lmstudio 는 review 전용)[[]])로 세션 ↔ 위키 페이지 연결summary 필드로 세션 내용 즉시 파악)세션 간 관계를 추출하여 지식 그래프를 구축합니다:
belongsto, byagent, usestool, sameproject, same_day (LLM 불필요)fixesbug, modifiesfile, introducestech, discussestopic — LLM이 세션 내용을 분석하여 추출graph_query — AI 에이전트가 세션 간 관계를 탐색 (BFS, 최대 3홉)secall serve는 REST API와 웹 UI를 동일 포트(8080)에서 제공하며, Obsidian 플러그인과도 동일 API를 공유합니다.
# REST API + Web UI 서버 시작
secall serve --port 8080
# 브라우저: http://127.0.0.1:8080
/api/recall, /api/get, /api/status, /api/daily, /api/graph, /api/wiki (검색)GET /api/wiki/{project}/api/sessions, /api/projects, /api/agents, PATCH /api/sessions/{id}/{tags,favorite}PATCH /api/sessions/{id}/notesGET /api/tags?with_counts={true|false}true (기본): { "tags": [{ "name": "rust", "count": 12 },...] }false: { "tags": ["rust", "search",...] }POST /api/commands/{sync,ingest,wiki-update}POST /api/commands/graph-rebuild{ since?, session?, all?, retry_failed? }{ job_id, status: "started" }409 ConflictGET /api/jobs, GET /api/jobs/{id}, GET /api/jobs/{id}/stream (SSE)POST /api/jobs/{id}/cancel{ "cancelled": true, "job_id": "..." } — 활성 job 취소 성공 (이미 완료/취소된 job 도 동일 응답으로 idempotent){ "error": "job not found or already evicted" } — 미등록 / evict 됨엔드포인트:
Web UI (web/, P32 Phase 0 + P33 Phase 1):
Obsidian 플러그인 (obsidian-secall/):
MCP 호환 AI 에이전트에 세션 인덱스를 노출합니다:
# stdio 모드 (Claude Code, Cursor 등)
secall mcp
# HTTP 모드 (웹 클라이언트)
secall mcp --http 127.0.0.1:8080
제공 도구: recall, get, status, wikisearch, graphquery
Git을 통해 여러 기기에서 지식 볼트를 동기화합니다:
# 전체 동기화: git pull → reindex → ingest → wiki → graph → git push
secall sync
# 로컬 전용 모드 (git 생략, Claude Code hook에 적합)
secall sync --local-only
secall reindex --from-vault로 완전 복구 가능host 필드)내장 린트 규칙으로 인덱스 ↔ 볼트 정합성을 검증합니다:
secall lint
# L001: 누락된 볼트 파일
# L002: 고아 볼트 파일
# L003: FTS 인덱스 갭
원라인 설치 (권장) — release 바이너리를 자동으로 받아 PATH에 배치:
# macOS
curl -fsSL https://raw.githubusercontent.com/hang-in/seCall/main/install.sh | sh
# Windows (PowerShell)
irm https://raw.githubusercontent.com/hang-in/seCall/main/install.ps1 | iex
Linux는 아직 prebuilt 바이너리가 없습니다 — 아래 Cargo 빌드를 사용하세요.
secall-aarch64-apple-darwin.tar.gz / secall-x86_64-apple-darwin.tar.gzsecall-x86_64-pc-windows-msvc.zip (secall.exe + onnxruntime.dll)수동 다운로드 — Releases 페이지에서 OS에 맞는 파일 다운로드:
Cargo (개발자용):
# CLI/MCP/REST API만 (웹 UI 미포함)
cargo install --path crates/secall --no-default-features
# 웹 UI 포함 — Node 22 + pnpm 9 + just 사전 설치 필요
git clone https://github.com/hang-in/seCall.git && cd seCall
just build # web/dist 빌드 → cargo build --release
cp target/release/secall ~/.local/bin/
cargo install secall은 npm 빌드를 자동으로 수행하지 않습니다. 웹 UI를 사용하려면 Releases 바이너리 또는 위의 직접 빌드를 사용하세요.
Homebrew (예정 — tap 등록 작업 진행 중):
brew install hang-in/tap/secall
Windows 사용자: 핵심 기능(파싱, BM25 검색, vault, MCP)은 동일하게 동작합니다. 아래 기능은 MSVC 미지원으로 비활성화:
- HNSW ANN 인덱스 (
usearch) — BLOB 코사인 스캔 fallback- Kiwi-rs 형태소 분석 — Lindera ko-dic fallback
# 대화형 온보딩 (권장)
secall init
# 또는 인자 직접 지정
secall init --vault ~/Documents/Obsidian\ Vault/seCall
secall init --git [email protected]:you/obsidian-vault.git
bge-m3 모델 자동 pullsecall init을 인자 없이 실행하면 대화형 위저드가 시작됩니다:
# Claude Code 세션 자동 감지
secall ingest --auto
# Codex CLI / Gemini CLI
secall ingest ~/.codex/sessions
secall ingest ~/.gemini/sessions
# claude.ai / ChatGPT export (ZIP)
secall ingest ~/Downloads/data-export.zip
# 또는 한 명령으로 전체 동기화
secall sync
# BM25 전문 검색
secall recall "BM25 인덱싱 구현"
# 프로젝트, 에이전트, 날짜 필터
secall recall "에러 처리" --project seCall --agent claude-code --since 2026-04-01
# 벡터 시맨틱 검색 (Ollama 필요)
secall recall "검색 파이프라인 동작 방식" --vec
# LLM 쿼리 확장
secall recall "검색 정확도 개선" --expand
secall serve는 REST API와 함께 웹 UI를 동일 포트에서 제공합니다 (단일 진입점).
secall serve --port 8080
# 브라우저에서 http://127.0.0.1:8080 접속
Phase 0 기능 (P32, 읽기 전용):
Phase 1 기능 (P33, 명령 트리거):
? 도움말, j/k 리스트 이동, / 검색 포커스, g d/w/s/c 라우트, [/] 세션 prev/next, f 즐겨찾기, e 노트PATCH /api/sessions/{id}/notes)Phase 2 기능 (P34, 뷰어 강화):
/api/tags 엔드포인트 — 모든 태그 + 사용 빈도 정확 노출 (sessions 100건 휴리스틱 제거)Phase 3 기능 (P35, 성능 + 정확도):
tokioutil::sync::CancellationToken 기반 — JobRegistry / JobExecutor / BroadcastSink 통합, ProgressSink::iscancelled() 노출ingested=50 그대로 기록Failed { error: "cancelled by user", partial_result: None }, job 상태는 Interrupted 로 강제POST /api/jobs/{id}/cancel — 활성 200, idempotent 200, 미등록/evict 404JobBanner 와 활성 JobItem 에 취소 버튼 + window.confirm 다이얼로그 (useCancelJob mutation hook)Job Cancellation (P36, 실행 중 작업 취소):
sessions.semanticextractedat 컬럼으로 시맨틱 추출 상태 추적 (NULL = 미처리)secall graph rebuild [--since DATE] [--session ID] [--all] [--retry-failed]POST /api/commands/graph-rebuild — P33 Job 시스템 + P36 cancel 통합--session > --all > --retry-failed > --since (동시 지정 시 위 순서로 적용) — CLI / REST / Web UI 모두 동일Graph Sync 자동화 (P37, 시맨틱 그래프 재구축):
| 키 | 동작 | ||
|---|---|---|---|
? |
단축키 도움말 | ||
/ |
검색 포커스 | ||
j / k |
리스트 다음/이전 항목 | ||
[ / ] |
세션 prev/next | ||
g d |
Daily 화면 | ||
g w |
Wiki 화면 | ||
g s |
Sessions 화면 | ||
g c |
Commands 화면 | ||
g g |
그래프 오버레이 토글 | ||
f |
현재 세션 즐겨찾기 토글 | ||
e |
현재 세션 노트 편집 | ||
Esc |
다이얼로그/오버레이 닫기 |
웹 UI에서 좌측 사이드바 Commands 메뉴 → 원하는 명령 + 옵션 → 시작.
CLI에서도 동일하게 사용 가능 (Job 시스템은 웹 UI 전용):
secall sync --local-only --dry-run
secall sync --no-graph # graph 자동 증분 비활성 (sync 기본은 활성)
secall ingest --auto --auto-graph # ingest 시 graph 자동 증분 활성 (기본 비활성)
secall wiki update --backend claude
# P37 — 시맨틱 그래프 재구축 (semantic_extracted_at 상태 추적)
secall graph rebuild --retry-failed # 미처리(NULL) 세션 일괄 backfill
secall graph rebuild --since 2026-04-01 # 특정 날짜 이후 세션
secall graph rebuild --session abc12345 # 단일 세션
secall graph rebuild --all # 전체 재구축 (기존 결과 덮어쓰기)