AI 에이전트와 나눈 모든 대화를 검색하세요.
Search everything you've ever discussed with AI agents.
seCall은 AI 에이전트 세션을 위한 로컬 퍼스트 검색 엔진입니다. Claude Code, Codex CLI, Gemini CLI, claude.ai, ChatGPT의 대화 로그를 수집하고, BM25 + 벡터 하이브리드 검색으로 인덱싱하며, CLI/MCP 서버/Obsidian 호환 지식 볼트로 제공합니다.
AI와의 대화는 곧 지식 자산입니다. seCall은 그것을 검색 가능하고, 탐색 가능하며, 서로 연결된 형태로 만듭니다.
- 수백 개의 에이전트 세션에 걸쳐 아키텍처, 디버깅, 설계 결정을 논의했지만 — 불투명한 JSONL 파일에 흩어져 있습니다.
- seCall은 이 세션들을 구조화되고 검색 가능한 지식 그래프로 변환합니다. MCP 호환 AI 에이전트에서 쿼리하거나 Obsidian에서 탐색할 수 있습니다.
여러 AI 코딩 에이전트의 세션을 통합 형식으로 파싱하고 정규화합니다:
| 에이전트 | 형식 | 상태 |
|---|---|---|
| Claude Code | JSONL | ✅ 안정 |
| Codex CLI | JSONL | ✅ 안정 |
| Gemini CLI | JSON | ✅ 안정 |
| claude.ai | JSON (ZIP) | ✅ v0.2 신규 |
| ChatGPT | JSON (ZIP) | ✅ v0.2.3 신규 |
- BM25 전문 검색: SQLite FTS5 + 한국어 형태소 분석 (Lindera ko-dic / Kiwi-rs 선택 가능)
- 벡터 시맨틱 검색: Ollama BGE-M3 임베딩 (1024차원) + HNSW ANN 인덱스 (usearch)로 O(log n) 탐색
- Reciprocal Rank Fusion (RRF): BM25/벡터 독립 실행 후 결합 (k=60) + 세션 다양성 강제 (세션당 최대 2개 턴)
- LLM 쿼리 확장: Claude Code를 통한 자연어 쿼리 확장
Obsidian 호환 마크다운 볼트 (2계층 구조):
vault/
├── raw/sessions/ # 불변 세션 원본
│ └── YYYY-MM-DD/ # 날짜별 정리
├── wiki/ # AI 생성 지식 페이지
│ ├── projects/ # 프로젝트별 요약
│ ├── topics/ # 기술 주제 페이지
│ └── decisions/ # 아키텍처 의사결정 기록
└── graph/ # Knowledge Graph 출력
└── graph.json # 노드/엣지 데이터
- 위키 생성: Claude Code 메타에이전트 기반 (
secall wiki update) - Obsidian 백링크 (
[[]])로 세션 ↔ 위키 페이지 연결 - Dataview 쿼리를 위한 frontmatter 메타데이터 (
summary필드로 세션 내용 즉시 파악)
세션 간 관계를 결정적으로 추출하여 지식 그래프를 구축합니다 (LLM 호출 불필요):
- 노드 타입: session, project, agent, tool — frontmatter에서 자동 추출
- 엣지 타입:
belongs_to,by_agent,uses_tool,same_project,same_day - 증분 빌드: 신규 세션만 노드 추가, 관계 엣지는 전체 재계산으로 정확성 보장
- MCP 도구:
graph_query— AI 에이전트가 세션 간 관계를 탐색 (BFS, 최대 3홉)
MCP 호환 AI 에이전트에 세션 인덱스를 노출합니다:
# stdio 모드 (Claude Code, Cursor 등)
secall mcp
# HTTP 모드 (웹 클라이언트)
secall mcp --http 127.0.0.1:8080제공 도구: recall, get, status, wiki_search, graph_query
Git을 통해 여러 기기에서 지식 볼트를 동기화합니다:
# 전체 동기화: git pull → reindex → ingest → wiki → graph → git push
secall sync
# 로컬 전용 모드 (git 생략, Claude Code hook에 적합)
secall sync --local-only- MD가 원본 — DB는 파생 캐시이며,
secall reindex --from-vault로 완전 복구 가능 - 호스트 추적 — 각 세션이 어떤 기기에서 수집되었는지 기록 (frontmatter
host필드) - 충돌 없음 — 세션은 기기별 유니크하므로 git 머지 충돌 없음
내장 린트 규칙으로 인덱스 ↔ 볼트 정합성을 검증합니다:
secall lint
# L001: 누락된 볼트 파일
# L002: 고아 볼트 파일
# L003: FTS 인덱스 갭- Rust 1.75+ (소스 빌드 시)
- Claude Code, Codex CLI, Gemini CLI 중 하나 이상
- Ollama — 벡터 검색용 (선택사항, 없으면 BM25만 사용)
- Windows: MSVC 툴체인 (Visual Studio Build Tools)
소스 빌드:
git clone https://github.com/hang-in/seCall.git
cd seCall
cargo install --path crates/secall사전 빌드 바이너리 (Releases):
- macOS:
secall-aarch64-apple-darwin.tar.gz/secall-x86_64-apple-darwin.tar.gz - Windows:
secall-x86_64-pc-windows-msvc.zip(secall.exe + onnxruntime.dll)
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 git@github.com:you/obsidian-vault.gitsecall init을 인자 없이 실행하면 대화형 위저드가 시작됩니다:
- Vault 경로 설정
- Git remote (선택)
- 토크나이저 선택 (lindera/kiwi)
- 임베딩 백엔드 선택 (ollama/none)
- Ollama 설치 확인 +
bge-m3모델 자동 pull
# 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 get <session-id>
# 전체 마크다운
secall get <session-id> --full
# 특정 턴
secall get <session-id>:5시맨틱 검색(--vec)을 사용하려면 벡터 인덱스가 필요합니다. Ollama가 설치되어 있으면 secall embed 또는 secall sync 실행 시 자동으로 임베딩됩니다.
# 신규/변경된 세션만 임베딩
secall embed
# 전체 재임베딩
secall embed --all
# 성능 옵션 (M1 Max 기준 권장값)
secall embed --concurrency 4 --batch-size 32ONNX Runtime을 사용하려면
secall config set embedding.backend ort후secall model download로 모델을 다운로드하세요.
config에서 정의한 regex 규칙으로 수집 시 세션을 자동 태깅합니다:
[ingest.classification]
default = "interactive"
skip_embed_types = ["automated"] # 이 타입은 벡터 임베딩 생략
[[ingest.classification.rules]]
pattern = "^\\[당월 rawdata\\]"
session_type = "automated"
[[ingest.classification.rules]]
pattern = "^# Wiki Incremental Update Prompt"
session_type = "automated"- 수집 시 자동 분류 — 첫 번째 user turn 내용을 rules 순서대로 매칭 (첫 번째 매칭 적용)
- 임베딩 선택적 스킵 —
skip_embed_types에 지정된 타입은 벡터 임베딩 생략으로 비용 절감 - 검색 필터 —
recall및 MCPrecall도구가 기본적으로automated세션 제외 (--include-automated플래그로 포함 가능) - 소급 분류 —
secall classify --dry-run/secall classify로 기존 세션 일괄 재분류
# Claude Code로 위키 업데이트 (기본값)
secall wiki update
# 로컬 LLM 백엔드 사용
secall wiki update --backend ollama
secall wiki update --backend lmstudio
# 특정 세션만 증분 업데이트
secall wiki update --backend lmstudio --session <id>
# 위키 상태 확인
secall wiki status백엔드는 config로도 설정할 수 있습니다:
[wiki]
default_backend = "lmstudio" # "claude" | "ollama" | "lmstudio"
[wiki.backends.lmstudio]
api_url = "http://localhost:1234"
model = "lmstudio-community/gemma-4-e4b-it"
max_tokens = 3000
[wiki.backends.ollama]
api_url = "http://localhost:11434"
model = "gemma3:27b"
[wiki.backends.claude]
model = "sonnet" # "opus" 도 가능# 전체 그래프 빌드
secall graph build
# 통계 확인
secall graph stats
# graph.json 내보내기
secall graph exportsecall config 명령으로 설정을 관리합니다. config.toml을 직접 편집할 필요가 없습니다.
# 현재 설정 확인
secall config show
# 설정 변경
secall config set output.timezone Asia/Seoul
secall config set search.tokenizer kiwi
secall config set embedding.backend ollama
# 설정 파일 경로 확인
secall config path| 키 | 설명 | 기본값 |
|---|---|---|
vault.path |
Obsidian vault 경로 | ~/obsidian-vault/seCall |
vault.git_remote |
Git remote URL | (없음) |
vault.branch |
Git 브랜치 이름 | main |
search.tokenizer |
토크나이저 (lindera / kiwi) |
lindera |
search.default_limit |
검색 결과 수 | 10 |
embedding.backend |
임베딩 백엔드 (ollama / ort / none) |
ollama |
embedding.ollama_model |
Ollama 모델 이름 | bge-m3 |
output.timezone |
타임존 (IANA) | UTC |
ingest.classification.default |
분류 규칙 미매칭 시 기본 session_type | interactive |
ingest.classification.skip_embed_types |
임베딩을 스킵할 session_type 목록 | [] |
wiki.default_backend |
위키 생성 백엔드 (claude / ollama / lmstudio) |
claude |
wiki.backends.<name>.api_url |
백엔드 API 엔드포인트 | (기본값 사용) |
wiki.backends.<name>.model |
백엔드 모델 이름 | (기본값 사용) |
wiki.backends.<name>.max_tokens |
최대 생성 토큰 수 | 4096 |
설정 파일 경로:
- macOS:
~/Library/Application Support/secall/config.toml - Linux:
~/.config/secall/config.toml - Windows:
%APPDATA%\secall\config.toml
| 명령 | 설명 |
|---|---|
secall init |
대화형 온보딩 (vault, 토크나이저, 임베딩 설정) |
secall ingest [path] --auto |
에이전트 세션 파싱 및 인덱싱 |
secall sync [--local-only] [--no-wiki] |
전체 동기화: git pull → reindex → ingest → wiki → graph → git push |
secall recall <query> |
하이브리드 검색 (기본: automated 세션 제외) |
secall recall <query> --include-automated |
automated 세션 포함하여 검색 |
secall get <id> [--full] |
세션 상세 조회 |
secall status |
인덱스 통계 + 설정 요약 |
secall embed [--all] |
벡터 임베딩 생성 |
secall classify [--dry-run] |
config 규칙으로 기존 세션 일괄 재분류 |
secall lint |
인덱스/볼트 정합성 검증 |
secall mcp [--http <addr>] |
MCP 서버 시작 |
secall config show|set|path |
설정 확인/변경 |
secall graph build|stats|export |
Knowledge Graph 관리 |
secall wiki update [--backend claude|ollama|lmstudio] |
위키 생성 (백엔드 선택 가능) |
secall wiki status |
위키 상태 확인 |
secall model download|info|check |
ONNX 모델 관리 |
secall reindex --from-vault |
볼트에서 DB 재구축 |
secall migrate summary |
summary frontmatter 일괄 추가 |
Claude Code 설정 (~/.claude/settings.json)에 추가:
{
"mcpServers": {
"secall": {
"command": "secall",
"args": ["mcp"]
}
}
}세션 시작/종료 시 자동 동기화:
{
"hooks": {
"PreToolUse": [{
"matcher": "Initialize",
"hooks": [{"type": "command", "command": "secall sync --local-only"}]
}],
"PostToolUse": [{
"matcher": "Exit",
"hooks": [{"type": "command", "command": "secall sync"}]
}]
}
}자세한 설정 안내는 GitHub 볼트 동기화 가이드를 참고하세요.
┌─────────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐
│ Claude Code │ │ Codex CLI │ │Gemini CLI│ │claude.ai │ │ ChatGPT │
│ (JSONL) │ │ (JSONL) │ │ (JSON) │ │JSON (ZIP)│ │JSON (ZIP)│
└──────┬───────┘ └────┬─────┘ └────┬─────┘ └────┬─────┘ └────┬─────┘
│ │ │ │ │
└───────┬───────┴─────────────┴──────────────┴──────────────┘
│
┌─────▼──────┐
│ 파서들 │ claude.rs / codex.rs / gemini.rs / claude_ai.rs / chatgpt.rs
└─────┬──────┘
│
┌─────────▼─────────┐
│ 통합 세션 모델 │ Session → Turn → Action
└─────────┬─────────┘
│
┌────────────┼────────────┐
│ │ │
┌────▼────┐ ┌────▼────┐ ┌────▼────┐
│ SQLite │ │ 볼트 │ │ 벡터 │
│ FTS5 │ │ (MD) │ │ 스토어 │
│ BM25 │ │Obsidian │ │ BGE-M3 │
└────┬────┘ └─────────┘ └────┬────┘
│ │
└───────────┬───────────┘
│
┌──────▼──────┐
│ 하이브리드 RRF │ k=60
└──────┬──────┘
│
┌────────┼────────┐
│ │ │
┌────▼──┐ ┌──▼───┐ ┌──▼──┐
│ CLI │ │ MCP │ │위키 │
│recall │ │서버 │ │에이전트│
└───────┘ └──────┘ └─────┘
| 분류 | 기술 |
|---|---|
| 언어 | Rust 1.75+ (2021 에디션) |
| 데이터베이스 | SQLite + FTS5 (rusqlite, bundled) |
| 한국어 NLP | Lindera ko-dic + Kiwi-rs 형태소 분석 (macOS/Linux) |
| 플랫폼 | macOS, Windows (x86_64), Linux (CI) |
| 임베딩 | Ollama BGE-M3 (1024차원) / ONNX Runtime (선택) |
| ANN 인덱스 | usearch HNSW (macOS/Linux) |
| MCP 서버 | rmcp (stdio + Streamable HTTP / axum) |
| 볼트 | Obsidian 호환 Markdown |
| 위키 엔진 | Claude Code / Ollama / LM Studio (플러그인 방식 백엔드) |
이 프로젝트는 다음 아이디어와 프로젝트를 기반으로 합니다:
- LLM Wiki (Andrej Karpathy) — LLM을 사용하여 원본 소스로부터 점진적으로 지식 베이스를 구축하는 패턴. seCall의 2계층 볼트 아키텍처(원본 세션 + AI 생성 위키)는 이 컨셉을 직접 구현한 것입니다. Tobi Lütke의 구현도 참고.
- qmd (Tobi Lütke) — 마크다운 파일을 위한 로컬 검색 엔진. seCall의 검색 파이프라인(FTS5 BM25, 벡터 임베딩, RRF k=60)은 qmd의 접근 방식을 참고하여 설계되었습니다.
- graphify (Safi Shamsi) — 파일 폴더를 knowledge graph로 변환하는 도구. seCall P16의 결정적 그래프 추출과 confidence 라벨링은 이 프로젝트에서 영감을 받았습니다.
이 프로젝트는 AI 코딩 에이전트(Claude Code, Codex)를 tunaFlow 멀티에이전트 워크플로우 플랫폼으로 오케스트레이션하여 개발되었습니다.
| 날짜 | 버전 | 변경사항 |
|---|---|---|
| 2026-04-12 | v0.3.1 | secall lint --fix stale DB 정리 (#15), wiki_search created/updated 필드 (#13), P20 테스트 커버리지 강화 (+16 tests) |
| 2026-04-12 | v0.3.0 | 세션 분류 (regex 규칙, secall classify), 위키 플러그인 백엔드 (Ollama, LM Studio), --include-automated 플래그 |
| 2026-04-10 | P17 | 대화형 온보딩 (secall init 위저드), secall config CLI, git 브랜치 설정 |
| 2026-04-10 | P16 | Knowledge Graph — frontmatter 기반 결정적 그래프 추출, secall graph build/stats/export, MCP graph_query, sync Phase 3.7 |
| 2026-04-09 | P15 | Windows 런타임 수정 — Ollama NaN 허용, 크로스플랫폼 command_exists, sync 충돌 사전 검사 |
| 2026-04-09 | P14 | 검색 품질 — 독립 벡터 실행, 세션 레벨 결과 다양성 |
| 2026-04-09 | P13 | Windows 빌드 지원 — x86_64-pc-windows-msvc CI/Release, ORT DLL 번들 |
| 2026-04-09 | v0.2.3 | ChatGPT 내보내기 파서 — conversations.json (ZIP), 매핑 트리 선형화 |
| 2026-04-08 | v0.2.2 | 타임존 설정 — IANA 타임존 변환으로 볼트 타임스탬프 현지화 |
| 2026-04-08 | v0.2.1 | --force 재수집 + Dataview :: 이스케이프 + AGPL-3.0 LICENSE |
| 2026-04-07 | P11 | 임베딩 성능 — ORT 세션 풀, 배치 추론, 병렬화 (49h → ~3-4h) |
| 2026-04-07 | P10 | 세션 summary frontmatter — 첫 번째 user turn에서 자동 생성 |
| 2026-04-06 | P8 | 안정화 + GitHub Actions 릴리즈 워크플로우 |
| 2026-04-06 | P7 | --min-turns, embed --all, wiki_search MCP 도구, --no-wiki |
| 2026-04-05 | v0.2 | claude.ai 내보내기 파서, ZIP 자동 압축 해제 |
| 2026-04-05 | P6 | ANN 인덱스 (usearch HNSW) |
| 2026-04-04 | P5 | 멀티 기기 볼트 Git 동기화, secall sync, reindex --from-vault |
| 2026-03-31 | MVP | 최초 릴리즈 — Claude Code/Codex/Gemini 파서, BM25+벡터 검색, MCP 서버, Obsidian 볼트 |
Contact: d9ng@outlook.com
