Skip to content

Hostingglobal-Tech/recall

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

8 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

recall

recall banner

ํ๋ฆฟํ•œ ํ•œ ๋งˆ๋””๋กœ ๊ณผ๊ฑฐ Claude Code / Codex ์„ธ์…˜์„ ๋˜์ฐพ๋Š”๋‹ค. Claude Code / Codex ์•ˆ์—์„œ AI ๊ฐ€ ์ž๋™ ํ˜ธ์ถœํ•˜๋Š” skill. 100% ๋กœ์ปฌ, API key ์—†์Œ, ์™ธ๋ถ€ ์ „์†ก 0.

English


30์ดˆ ํ•ต์‹ฌ

You: ๊ทธ๋•Œ deno ์ธ์ฆ ํ—ค๋” ์ž‘์—…ํ–ˆ๋˜ ๊ฑฐ ๋‹ค์‹œ ์‹œ์ž‘ํ•ด์ค˜.

AI:  โžœ recall search "deno ์ธ์ฆ ํ—ค๋”"
     2๊ฑด ๋งค์นญ. ๊ฐ€์žฅ ์ตœ๊ทผ ์„ธ์…˜:
       claude :: 3cca0676-1106-4c5a-8f1f-1080ad72e4cd
     ์•„๋ž˜ ํ•œ ์ค„์„ ๊ทธ๋Œ€๋กœ ์ž…๋ ฅํ•˜์‹œ๋ฉด ๊ทธ ์„ธ์…˜์œผ๋กœ ๋Œ์•„๊ฐ‘๋‹ˆ๋‹ค:

        /resume 3cca0676-1106-4c5a-8f1f-1080ad72e4cd

You: [๋ณต์‚ฌ โ†’ ๋ถ™์—ฌ๋„ฃ๊ธฐ โ†’ Enter]

[๊ทธ ์„ธ์…˜์ด ํ˜„์žฌ CLI ์•ˆ์—์„œ ๊ทธ๋Œ€๋กœ ์‚ด์•„๋‚จ]

โ€” recall ๋ช…๋ น์„ ์™ธ์šธ ํ•„์š” ์—†์Šต๋‹ˆ๋‹ค. AI ๊ฐ€ SKILL.md ๋ฅผ ์ฝ๊ณ  ์•Œ์•„์„œ ํ˜ธ์ถœ, session_id ๋ฅผ ์ฐพ์•„์ฃผ๊ณ  ์‚ฌ์šฉ์ž์—๊ฒŒ /resume <id> ํ•œ ์ค„๋งŒ ์•ˆ๋‚ดํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๋Š” ํ•œ ๋ฒˆ ๋ถ™์—ฌ๋„ฃ๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.


์™œ

๋ฌธ์ œ recall
์„ธ์…˜์ด ์ˆ˜๋ฐฑ ๊ฐœ ์Œ“์ด๋ฉด claude --resume / codex resume ์˜ picker ๊ฐ€ ๋ชป ์ฐพ๋Š”๋‹ค ํ๋ฆฟํ•œ ํ•œ ๋งˆ๋””๋กœ ๋ณธ๋ฌธ๊นŒ์ง€ ํ’€ํ…์ŠคํŠธ ๋งค์นญ (SQLite FTS5)
rename ยท fork ์—†์ด ์ž‘์—…ํ•˜๋ฉด ๊ทธ ์„ธ์…˜์„ ๋‹ค์‹œ ๋ชป ์ฐพ๋Š”๋‹ค session_id ๋ชจ๋ฅด๊ณ  ํ‚ค์›Œ๋“œ๋งŒ ์žˆ์–ด๋„ OK
ํด๋ผ์šฐ๋“œ ๋™๊ธฐํ™”๋Š” ๋ถ€๋‹ด์Šค๋Ÿฝ๋‹ค 100% ๋กœ์ปฌ. ๋„คํŠธ์›Œํฌ ํ˜ธ์ถœ 0, ํ…”๋ ˆ๋ฉ”ํŠธ๋ฆฌ 0, API key 0
Claude / Codex ๋”ฐ๋กœ ๊ฒ€์ƒ‰์€ ๊ท€์ฐฎ๋‹ค ํ•œ ์ธ๋ฑ์Šค์— ๋‘ ๋„๊ตฌ ํ†ตํ•ฉ
๋งค๋ฒˆ ์ˆ˜๋™ ์ธ๋ฑ์‹ฑ์€ ๋ถˆํŽธํ•˜๋‹ค recall daemon install ํ•œ ๋ฒˆ์ด๋ฉด 30๋ถ„๋งˆ๋‹ค ์ž๋™
์™ธ๋ถ€ ์ƒˆ ์…ธ ๋„์šฐ๋ฉด ์ž‘์—… ํ๋ฆ„์ด ๋Š๊ธด๋‹ค /resume <id> slash command ํ•œ ์ค„๋กœ ํ˜„์žฌ CLI ์•ˆ์—์„œ ๊ทธ ์„ธ์…˜์œผ๋กœ ์ ํ”„

์„ค์น˜ (๊ถŒ์žฅ: AI ์—๊ฒŒ ํ•œ ์ค„ ๋˜์ง€๊ธฐ)

์ด๋ฏธ Claude Code ๋˜๋Š” Codex ๊ฐ€ OAuth ์ธ์ฆ๋œ ์ƒํƒœ๋ผ๋ฉด, ๋‹ค์Œ์„ ๊ทธ ๋„๊ตฌ์— ๊ทธ๋Œ€๋กœ ๋ถ™์—ฌ๋„ฃ์œผ์„ธ์š”.

Claude Code

https://github.com/Hostingglobal-Tech/recall ๋ฅผ ์ด ๋จธ์‹ ์— ์„ค์น˜ํ•ด์ค˜.

1. Rust ์—†์œผ๋ฉด rustup ์œผ๋กœ ์„ค์น˜
2. ~/.local/share/recall ์— clone, cargo build --release
3. ๋นŒ๋“œ ์‚ฐ์ถœ๋ฌผ(target/release/recall)์„ PATH ๋””๋ ‰ํ† ๋ฆฌ(~/.local/bin ๋“ฑ)์— ๋ณต์‚ฌ
4. plugins/claude/SKILL.md ๋ฅผ ~/.claude/skills/recall/SKILL.md ๋กœ ๋ณต์‚ฌ (skill ๋“ฑ๋ก)
5. recall init && recall scan && recall daemon install
6. ๋‹จ๊ณ„๋งˆ๋‹ค ๊ฒฐ๊ณผ ํ™•์ธ

Codex

codex "Install https://github.com/Hostingglobal-Tech/recall. If Rust is missing, install rustup. Clone to ~/.local/share/recall, cargo build --release, put binary on PATH, copy plugins/codex/SKILL.md to ~/.codex/skills/recall/SKILL.md, then run 'recall init && recall scan && recall daemon install'."

Claude Code ์™€ Codex ๋ฅผ ๊ฐ™์€ ๋จธ์‹ ์—์„œ ๋ชจ๋‘ ์“ด๋‹ค๋ฉด ๋‘ skill ๋ชจ๋‘ ๋“ฑ๋กํ•˜์„ธ์š”: cp plugins/claude/SKILL.md ~/.claude/skills/recall/SKILL.md (Claude) cp plugins/codex/SKILL.md ~/.codex/skills/recall/SKILL.md (Codex)

์„ค์น˜ ํ›„ โ€” ๋ช…๋ น์„ ์™ธ์šฐ์ง€ ๋งˆ์„ธ์š”. ๊ทธ๋ƒฅ ์ž์—ฐ์–ด๋กœ ๋งํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค:

"๊ทธ๋•Œ oauth ์—ฐ๊ฒฐํ•˜๋˜ ์ž‘์—… ๋‹ค์‹œ" "์ง€๋‚œ์ฃผ supabase RLS ์งฐ๋˜ ์„ธ์…˜ ์–ด๋””์˜€์ง€?" "์–ด์ œ K8s ์ธ๊ทธ๋ ˆ์Šค ๋””๋ฒ„๊น… ๊ทธ๊ฑฐ ์ด์–ด์„œ"


์„ค์น˜ (์ˆ˜๋™, Rust 1.74+)

git clone https://github.com/Hostingglobal-Tech/recall.git ~/.local/share/recall
cd ~/.local/share/recall
cargo build --release
cp target/release/recall ~/.local/bin/

# Claude Code skill ๋“ฑ๋ก
mkdir -p ~/.claude/skills/recall
cp plugins/claude/SKILL.md ~/.claude/skills/recall/SKILL.md

# Codex skill ๋“ฑ๋ก (Codex ๋„ ์“ฐ๋Š” ๋จธ์‹ ์ด๋ฉด ๊ฐ™์ด)
mkdir -p ~/.codex/skills/recall
cp plugins/codex/SKILL.md ~/.codex/skills/recall/SKILL.md

# ์ฒซ ์ธ๋ฑ์‹ฑ + ์ž๋™ ์ธ๋ฑ์‹ฑ ๋“ฑ๋ก
recall init
recall scan
recall daemon install            # 30๋ถ„ ์ฃผ๊ธฐ ์ž๋™ scan

resume โ€” ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋‚˜

recall ์€ ์–ด๋–ค ํ”„๋กœ์„ธ์Šค๋„ spawn ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. session_id ๋ฅผ ์ฐพ์•„์ฃผ๊ณ  ์‚ฌ์šฉ์ž๊ฐ€ ํ˜„์žฌ CLI ์— ์ง์ ‘ ๋ถ™์—ฌ๋„ฃ์„ ํ•œ ์ค„๋งŒ ์•ˆ๋‚ดํ•ฉ๋‹ˆ๋‹ค.

$ recall resume "deno ์ธ์ฆ ํ—ค๋”"
matched   : claude :: 3cca0676-1106-4c5a-8f1f-1080ad72e4cd
cwd       : C:\Users\ceo

To resume this session, paste the following one-liner into your current CLI:

    /resume 3cca0676-1106-4c5a-8f1f-1080ad72e4cd

claude ์™€ codex ๋‘˜ ๋‹ค /resume <session_id> ๋ฅผ in-session slash command ๋กœ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ๊ทธ ํ•œ ์ค„์„ ๊ทธ๋Œ€๋กœ ์ž…๋ ฅํ•˜๋ฉด ํ˜„์žฌ CLI ๊ฐ€ ๊ทธ ์„ธ์…˜์œผ๋กœ ๊ต์ฒด๋ฉ๋‹ˆ๋‹ค.

์ƒˆ ํ”„๋กœ์„ธ์Šค๋กœ ์™ธ๋ถ€ ์‹คํ–‰์„ ์›ํ•˜๋ฉด claude --resume <id> ๋˜๋Š” codex resume <id> ๋ฅผ ์ƒˆ ์…ธ์—์„œ ์‹คํ–‰ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.


์ž๋™ ์ธ๋ฑ์‹ฑ

์ƒˆ ์„ธ์…˜์€ recall daemon ์ด ์•Œ์•„์„œ DB ์— ๋„ฃ์–ด์ค๋‹ˆ๋‹ค.

recall daemon install --interval-min 30   # ๋“ฑ๋ก (๊ธฐ๋ณธ 30๋ถ„)
recall daemon status                       # ์ƒํƒœ ํ™•์ธ
recall daemon uninstall                    # ์ œ๊ฑฐ

OS ๋ณ„ ๋ฐฑ์—”๋“œ:

  • Linux / macOS: crontab ํ•œ ์ค„ ์ถ”๊ฐ€
  • Windows: Scheduled Task recall-scan ๋“ฑ๋ก

AI ๊ฐ€ ๋ถ€๋ฅด๋Š” ๋ช…๋ น (์ฐธ๊ณ )

์‚ฌ๋žŒ์€ ๋ณดํ†ต ์™ธ์šธ ํ•„์š” ์—†์Œ. AI ๊ฐ€ SKILL.md ์•ˆ๋‚ด๋Œ€๋กœ ํ˜ธ์ถœ.

๋ช…๋ น ๋™์ž‘
recall init ~/.recall/recall.db ์ƒ์„ฑ
recall scan [--provider claude|codex|all] [--force] sha256 ์ฆ๋ถ„ ์ธ๋ฑ์‹ฑ
recall search "<ํ‚ค์›Œ๋“œ>" FTS5 ํ’€ํ…์ŠคํŠธ (title + first/last prompt + body)
recall show <session_id_prefix> ์„ธ์…˜ ์ƒ์„ธ + first/last prompt
recall resume <id|ํ‚ค์›Œ๋“œ> session_id ์ฐพ์•„์„œ /resume <uuid> ํ•œ ์ค„๋งŒ ์•ˆ๋‚ด (์‹คํ–‰ ์•ˆ ํ•จ)
recall related <session_id_prefix> ๊ฐ™์€ cwd ์˜ ๋‹ค๋ฅธ ์„ธ์…˜ (1-hop ๊ทธ๋ž˜ํ”„)
recall stats provider ๋ณ„ ์„ธ์…˜ยท๋ฉ”์‹œ์ง€ยท์‚ฌ์ด์ฆˆ ํ†ต๊ณ„
recall daemon install/status/uninstall ์ฃผ๊ธฐ ์ž๋™ scan ๊ด€๋ฆฌ

๋ฐ์ดํ„ฐ ์œ„์น˜

~/.recall/recall.db   # SQLite (sessions + FTS5 + edges)

์Šคํ‚ค๋งˆ:

sessions       (id, provider, session_id, cwd, title, first/last_prompt, ...)
sessions_fts   FTS5 ๊ฐ€์ƒ ํ…Œ์ด๋ธ” (title + prompts + body)
edges          (src_pk, dst_pk, kind, weight)   -- 1-hop ๊ทธ๋ž˜ํ”„ (same_cwd)

API key, config ํŒŒ์ผ, ์™ธ๋ถ€ ์˜์กด ๋ชจ๋‘ ์—†์Šต๋‹ˆ๋‹ค.


ํ”„๋ผ์ด๋ฒ„์‹œ

  • ๋„คํŠธ์›Œํฌ ํ˜ธ์ถœ 0. ์„ค์น˜ยท๋นŒ๋“œยท์‹คํ–‰ ์–ด๋””์—๋„ ์™ธ๋ถ€ ํ†ต์‹  ์—†์Œ.
  • ํ…”๋ ˆ๋ฉ”ํŠธ๋ฆฌ 0.
  • ์›๋ณธ ์„ธ์…˜ ํŒŒ์ผ์€ ์ฝ๊ธฐ๋งŒ. recall ์€ ~/.recall/ ์—๋งŒ ์”๋‹ˆ๋‹ค.
  • recall ์€ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋ฅผ spawn ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ /resume ์Šฌ๋ž˜์‹œ ๋ช…๋ น์„ ์ง์ ‘ ์ž…๋ ฅํ•ด ํ˜„์žฌ CLI ์„ธ์…˜์„ ๊ทธ ์„ธ์…˜์œผ๋กœ ๊ต์ฒดํ•ฉ๋‹ˆ๋‹ค.

FAQ

claude / codex ๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ์ง€ ์•Š์•„๋„ recall ์„ ์“ธ ์ˆ˜ ์žˆ๋‚˜?

์กฐํšŒ ๊ธฐ๋Šฅ์€ ์ „๋ถ€ ๋ฉ๋‹ˆ๋‹ค. recall search, recall show, recall stats, recall related ๋Š” recall ์ด ์ž๊ธฐ SQLite DB ๋งŒ ๋ณด๋ฉด ๋˜๋Š” read-only ์ž‘์—…์ด๋ผ claude / codex ๋ณธ์ฒด ์œ ๋ฌด์™€ ๋ฌด๊ด€ํ•˜๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๊ณผ๊ฑฐ์— ๋งŒ๋“ค์–ด์ง„ ~/.claude/projects/ ๋˜๋Š” ~/.codex/sessions/ ๋””๋ ‰ํ„ฐ๋ฆฌ๋งŒ ์žˆ์œผ๋ฉด ์ธ๋ฑ์‹ฑ๋„ ๋ฉ๋‹ˆ๋‹ค.

recall resume ์ด ์ถœ๋ ฅํ•˜๋Š” /resume <uuid> ํ•œ ์ค„์€ claude ๋˜๋Š” codex CLI ์•ˆ์—์„œ ์ž…๋ ฅํ•ด์•ผ ์˜๋ฏธ๊ฐ€ ์žˆ๋Š” slash command ์ž…๋‹ˆ๋‹ค. ๊ทธ CLI ๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ๊ณ  ์‹คํ–‰ ์ค‘์ด์–ด์•ผ ๊ทธ ํ•œ ์ค„์ด ํ˜„์žฌ ์„ธ์…˜์„ ๊ต์ฒดํ•ฉ๋‹ˆ๋‹ค. ๋‹จ์ˆœํžˆ ์–ด๋–ค ์ž‘์—…์ด ์žˆ์—ˆ๋Š”์ง€ ๊ฒ€์ƒ‰ยท์•„์นด์ด๋ธŒ ์šฉ๋„๋ผ๋ฉด claude / codex ๊ฐ€ ์—†์–ด๋„ unrestricted ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

์—ฌ๋Ÿฌ ๋จธ์‹ ์˜ ์„ธ์…˜์„ ํ•œ ๊ณณ์—์„œ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๋‚˜?

์˜๋„์ ์œผ๋กœ single-node ์ „์šฉ์œผ๋กœ ์„ค๊ณ„ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์œ  ์„ธ ๊ฐ€์ง€:

  1. ์•ฝ์†์„ ์ง€ํ‚ค๊ธฐ ์œ„ํ•ด โ€” recall ์˜ ํ•ต์‹ฌ ์•ฝ์†์€ "100% ๋กœ์ปฌ, API key ์—†์Œ, ์™ธ๋ถ€ ์ „์†ก 0" ์ž…๋‹ˆ๋‹ค. ๋ฉ€ํ‹ฐ-๋…ธ๋“œ ๋™๊ธฐํ™”๋Š” ์–ด๋–ค ํ˜•ํƒœ๋“  ํด๋ผ์šฐ๋“œ ๋˜๋Š” ๋™๊ธฐํ™” ์„œ๋ฒ„๊ฐ€ ํ•„์š”ํ•ด์„œ ๊ทธ ์•ฝ์†์ด ๊นจ์ง‘๋‹ˆ๋‹ค.
  2. ์„ธ์…˜ ๋ณธ๋ฌธ์— ์ž๊ฒฉ์ฆ๋ช…์ด ์ž์ฃผ ์„ž์ž„ โ€” ํ† ํฐ, ๋น„๋ฐ€๋ฒˆํ˜ธ fragment, ์‚ฌ๋‚ด API URL ๊ฐ™์€ ๊ฒŒ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋“ค์–ด๊ฐ‘๋‹ˆ๋‹ค. ๋™๊ธฐํ™” ์ฑ„๋„์€ ๊ทธ ์ž์ฒด๋กœ ์ƒˆ ๊ณต๊ฒฉ๋ฉด์ž…๋‹ˆ๋‹ค.
  3. /resume ์˜ ์ž‘๋™ ๋ชจ๋ธ ์ž์ฒด๊ฐ€ ๋‹จ์ผ ๋…ธ๋“œ โ€” ๋ฐ›์€ session_id ๋Š” ๊ทธ ๋จธ์‹ ์˜ claude / codex ๊ฐ€ ์ž๊ธฐ ๋””์Šคํฌ์—์„œ ํ•ด๋‹น jsonl ์„ ์ฐพ์„ ๋•Œ๋งŒ ์˜๋ฏธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋จธ์‹ ์˜ session_id ๋ฅผ ๋ฐ›์•„๋„ ๊ฑฐ๊ธฐ์„œ๋Š” ๋ชป ์—ฝ๋‹ˆ๋‹ค.

์—ฌ๋Ÿฌ ๋จธ์‹ ์„ ๊ตณ์ด ํ†ตํ•ฉํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ๋‘ ๊ฐ€์ง€ ์šฐํšŒ:

  • ๊ฐ ๋จธ์‹ ์— recall ์„ ๋”ฐ๋กœ ๊น”๊ณ  ๊ทธ ๋จธ์‹  ์•ˆ์—์„œ๋งŒ ๊ฒ€์ƒ‰
  • NAS ๋“ฑ ๊ณต์œ  ์Šคํ† ๋ฆฌ์ง€์— ~/.recall/recall.db ๋ฅผ ๋‘๊ณ  read-only mount โ€” ๋‹จ, ๋™์‹œ ์“ฐ๊ธฐ๋Š” SQLite WAL ๋ฝ์œผ๋กœ ์ถฉ๋Œ ๊ฐ€๋Šฅ

์˜ค๋ž˜๋œ ์„ธ์…˜ ํŒŒ์ผ๋„ ์žฌ scan ๋˜๋‚˜? ๋งค๋ฒˆ ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ์ง€ ์•Š๋‚˜?

incremental scan ์ž…๋‹ˆ๋‹ค. recall ์€ ๊ฐ jsonl ํŒŒ์ผ์˜ ์ „์ฒด ๋‚ด์šฉ์— ๋Œ€ํ•œ SHA256 ํ•ด์‹œ๋ฅผ DB ์— ์ €์žฅํ•ด๋‘๊ณ , ๋‹ค์Œ scan ๋•Œ ๋‹ค์‹œ ๊ณ„์‚ฐํ•ด ์ผ์น˜ํ•˜๋ฉด ๊ทธ ํŒŒ์ผ์€ ๊ฑด๋„ˆ๋œ๋‹ˆ๋‹ค (skipped).

  • ๋ณ€๊ฒฝ ์—†๋Š” ํŒŒ์ผ: skip (DB I/O 0)
  • ๋ฉ”์‹œ์ง€๊ฐ€ ๋” ์ถ”๊ฐ€๋œ ํŒŒ์ผ: ๊ทธ ์„ธ์…˜๋งŒ ๋‹ค์‹œ upsert (๋‹ค๋ฅธ ์„ธ์…˜ ์˜ํ–ฅ X)
  • ์™„์ „ํžˆ ์ƒˆ๋กœ์šด ํŒŒ์ผ: ์‹ ๊ทœ INSERT

๋ณธ ๋จธ์‹  ๊ธฐ์ค€ ์•ฝ 19 ์„ธ์…˜ / 7,900 ๋ฉ”์‹œ์ง€ / 48MB ์˜ raw ๋ฐ์ดํ„ฐ๋ฅผ fresh scan ํ–ˆ์„ ๋•Œ ์•ฝ 1์ดˆ, incremental scan ์€ ๊ทธ๋ณด๋‹ค ๋” ๋น ๋ฆ…๋‹ˆ๋‹ค. 30๋ถ„ ์ฃผ๊ธฐ daemon ์ด ๋Œ์•„๋„ ํ‰์†Œ์—” ๊ฑฐ์˜ ๋ชจ๋“  ํŒŒ์ผ์ด skipped ๋ผ ๋ถ€๋‹ด ์—†์Šต๋‹ˆ๋‹ค.

๊ฐ•์ œ ์ „์ฒด ์žฌ ์ธ๋ฑ์‹ฑ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ (์˜ˆ: ํŒŒ์„œ ๋กœ์ง์ด ๋ฐ”๋€ ์งํ›„) recall scan --force ๋ฅผ ํ•œ ๋ฒˆ ์‹คํ–‰ํ•˜๋ฉด sha ๋น„๊ต๋ฅผ ๊ฑด๋„ˆ๋œ๋‹ˆ๋‹ค. DB ์ž์ฒด๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๋ ค๋ฉด ~/.recall/recall.db ์‚ญ์ œ ํ›„ recall init && recall scan.

Cursor / Continue / Gemini CLI / Aider ๊ฐ™์€ ๋‹ค๋ฅธ AI ์ฝ”๋”ฉ ๋„๊ตฌ๋„ ์ง€์›ํ•˜๋‚˜?

ํ˜„์žฌ ๊ณต์‹ ์ง€์›์€ ๋‘ ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค:

  • Claude Code: ~/.claude/projects/<encoded-cwd>/<session-id>.jsonl
  • Codex: ๋ชจ๋˜ ~/.codex/sessions/YYYY/MM/DD/rollout-*.jsonl + ๋ ˆ๊ฑฐ์‹œ ~/.codex/history.jsonl

๋‹ค๋ฅธ ๋„๊ตฌ๋“ค๋„ ๋น„์Šทํ•œ jsonl ๋˜๋Š” SQLite ๊ธฐ๋ฐ˜ ์„ธ์…˜ ์ €์žฅ์†Œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์„œ ์–ด๋Œ‘ํ„ฐ 1๊ฐœ๋งŒ ์ถ”๊ฐ€ํ•˜๋ฉด ๋™์ผ ์ธ๋ฑ์Šค์— ํ†ตํ•ฉ๋ฉ๋‹ˆ๋‹ค. ํŒจํ„ด:

  1. src/main.rs ์— <provider>_root() -> PathBuf helper ์ถ”๊ฐ€
  2. parse_<provider>(path) -> Result<SessionRow> ์ž‘์„ฑ โ€” session_id, cwd, first/last_ts, ๋ฉ”์‹œ์ง€ ๋ณธ๋ฌธ๋งŒ ์ถ”์ถœํ•˜๋ฉด ๋จ
  3. cmd_scan() ์•ˆ์— ์ƒˆ provider branch ์ถ”๊ฐ€ (claude ์ธก ์ฝ”๋“œ๋ฅผ ๊ทธ๋Œ€๋กœ ๋ชจ๋ธ๋กœ)

PR ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค. ์ด์Šˆ์— provider: cursor ๊ฐ™์€ ์‹์œผ๋กœ ์ ์–ด์ฃผ์‹œ๊ณ , ๋ณธ์ธ ๋จธ์‹ ์˜ ์‹ค์ œ ๊ฒฝ๋กœ + ํŒŒ์ผ 1๊ฐœ ์ƒ˜ํ”Œ์„ ์ฒจ๋ถ€ํ•˜์‹œ๋ฉด ์ถ”๊ฐ€๊ฐ€ ํ›จ์”ฌ ๋น ๋ฆ…๋‹ˆ๋‹ค.

๊ฒ€์ƒ‰์ด ์ž˜ ์•ˆ ์žกํžŒ๋‹ค / ํ•œ๊ธ€์ด ํ† ํฐํ™” ์ด์ƒํ•˜๋‹ค?

recall ์˜ FTS5 ๋Š” tokenize = 'unicode61 remove_diacritics 2' ๋กœ ์„ค์ •๋˜์–ด ์žˆ์–ด์„œ ํ•œ๊ธ€ยท์˜๋ฌธ ๋ชจ๋‘ ์œ ๋‹ˆ์ฝ”๋“œ ์ฝ”๋“œํฌ์ธํŠธ ๋‹จ์œ„๋กœ ํ† ํฐํ™”๋ฉ๋‹ˆ๋‹ค. ๋‹ค๋งŒ:

  • prefix ๊ฒ€์ƒ‰ ์•ˆ ๋จ โ€” recall search "์ž " ์œผ๋กœ "์ž ๊ธˆ" ๋งค์นญ์€ ์•ˆ ๋ฉ๋‹ˆ๋‹ค. ๋‹จ์–ด ์ „์ฒด๋ฅผ ์ž…๋ ฅํ•˜๊ฑฐ๋‚˜ ์ž * ์ฒ˜๋Ÿผ FTS5 prefix wildcard ๋ฅผ ์ง์ ‘ ์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค (๋‹จ, ํ‚ค์›Œ๋“œ ์ธ์ž์— escape ๋จ์— ์ฃผ์˜).
  • ์—ฐ์–ด/๊ตฌ๋ฌธ ๊ฒ€์ƒ‰ โ€” ๋„์–ด์“ฐ๊ธฐ๋กœ ๊ตฌ๋ถ„๋œ ๋‘ ๋‹จ์–ด๋ฅผ ๋ชจ๋‘ ํฌํ•จํ•˜๋Š” ์„ธ์…˜์„ ์ฐพ๊ณ  ์‹ถ์œผ๋ฉด "์ž ๊ธˆ ์ •์ฑ…" ์ฒ˜๋Ÿผ ๋”ฐ์˜ดํ‘œ ์•ˆ์— ๊ฐ™์ด ๋„ฃ์œผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.
  • ๋„ˆ๋ฌด ํ”ํ•œ ๋‹จ์–ด๋Š” ๋…ธ์ด์ฆˆ โ€” "the", "is", "๊ทธ๋ฆฌ๊ณ " ๊ฐ™์€ stop word ๋Š” ๋ณ„๋„ ์ œ๊ฑฐ ์•ˆ ๋˜์–ด ์žˆ์–ด์„œ ๊ฑฐ์˜ ๋ชจ๋“  ์„ธ์…˜์— ๋งค์นญ๋ฉ๋‹ˆ๋‹ค. ์ข€ ๋” ๊ณ ์œ ํ•œ ํ‚ค์›Œ๋“œ (wakelock, ํ•œ์ง„์ฒด, ํ”„๋‚˜ํŽ‘ ๊ฐ™์€) ๊ฐ€ ์ž˜ ์ขํž™๋‹ˆ๋‹ค.

์กฐํšŒ ๊ฒฐ๊ณผ๊ฐ€ 0๊ฑด์ด๋ฉด ํ‚ค์›Œ๋“œ๋ฅผ ๋ณ€ํ˜•ํ•ด๋ณด์„ธ์š”: ์˜๋ฌธ โ†” ํ•œ๊ธ€ (lockout โ†” ์ž ๊ธˆ), ๋‹จ์–ด ๋ถ„ํ•ด (ํ”„๋‚˜ํŽ‘ โ†’ FNF ๋˜๋Š” psych engine), ๋˜๋Š” ๋” ํŠน์ดํ•œ ๋ช…์‚ฌ (ํŒŒ์ผ ์ด๋ฆ„ยท์—๋Ÿฌ ๋ฉ”์‹œ์ง€ยท๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ด๋ฆ„).

--db ์˜ต์…˜์œผ๋กœ DB ์œ„์น˜๋ฅผ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋‚˜?

๋„ค. --db <PATH> ์ „์—ญ ์˜ต์…˜์ด ๋ชจ๋“  ์„œ๋ธŒ์ปค๋งจ๋“œ์— ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ ~/.recall/recall.db ์ธ๋ฐ, ํ…Œ์ŠคํŠธ์šฉ ๊ฒฉ๋ฆฌ DB ๋ฅผ ๋”ฐ๋กœ ๋‘˜ ์ˆ˜ ์žˆ๊ณ  (--db /tmp/test.db), Time Machine / ๋ฐฑ์—…์—์„œ ์ œ์™ธํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ๋‹ค๋ฅธ ๊ฒฝ๋กœ๋กœ ์˜ฎ๊ธธ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. daemon ๋„ ๋™์ผ DB ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋„๋ก install ์‹œ --db ๋ฅผ ์ง€์ •ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

daemon ์ด ์ •๋ง ๋„๋Š”์ง€ ์–ด๋–ป๊ฒŒ ํ™•์ธํ•˜๋‚˜?

recall daemon status

๊ฐ€ OS ์Šค์ผ€์ค„๋Ÿฌ์— ๋“ฑ๋ก๋œ ์ •๋ณด (๋‹ค์Œ ์‹คํ–‰ ์‹œ๊ฐ„, ๋“ฑ๋ก ์ƒํƒœ, ๋ช…๋ น) ๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ์ถ”๊ฐ€๋กœ:

  • Linux / macOS: crontab -l | grep recall ๋กœ cron ๋ผ์ธ ์ง์ ‘ ํ™•์ธ / tail -f /tmp/recall-scan.log ๋กœ ์ถœ๋ ฅ ์ถ”์ 
  • Windows: schtasks /query /tn recall-scan / Task Scheduler GUI ์—์„œ "์ตœ๊ทผ ์‹คํ–‰" ํ™•์ธ

์„ธ์…˜์„ ๋ง‰ ๋๋‚ธ ์งํ›„ ๊ฒ€์ƒ‰์ด ์•ˆ ์žกํžŒ๋‹ค๋ฉด daemon ์˜ ๋‹ค์Œ fire ๊นŒ์ง€ (์ตœ๋Œ€ 30๋ถ„) ๊ธฐ๋‹ค๋ฆฌ๊ฑฐ๋‚˜ recall scan ์„ ์ง์ ‘ ํ•œ ๋ฒˆ ํ˜ธ์ถœํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

Cursor / IDE ์™€ ํ†ตํ•ฉ โ€” ์ž๋™์œผ๋กœ ๋„์šธ ์ˆ˜ ์žˆ๋‚˜?

recall ์€ ์ผ๋ถ€๋Ÿฌ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋ฅผ spawn ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. /resume <uuid> ํ•œ ์ค„์€ ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ์ž๊ธฐ CLI ์— ์ž…๋ ฅํ•ด์•ผ ์˜๋ฏธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค (slash command ๊ฐ€ in-session ์ž…๋ ฅ๋งŒ ์ธ์‹). ์ด ๋ถ„๋ฆฌ ๋•๋ถ„์—:

  • recall ์ด ์˜๋„ํ•˜์ง€ ์•Š์€ ์ƒˆ ์…ธ/ํ”„๋กœ์„ธ์Šค๋ฅผ ๋„์šธ ์œ„ํ—˜ 0
  • ์ž๊ฒฉ์ฆ๋ช…ยทํ™˜๊ฒฝ๋ณ€์ˆ˜ยทsandbox ์„ค์ •์ด ์˜๋„์™€ ๋‹ค๋ฅธ ์ปจํ…์ŠคํŠธ๋กœ ์ƒˆ์ง€ ์•Š์Œ
  • ์‚ฌ์šฉ์ž๊ฐ€ /resume ์ค„์„ ๋ณด๊ณ  ํ•œ ๋ฒˆ ๋” ํ™•์ธํ•  ๊ธฐํšŒ๊ฐ€ ์žˆ์Œ

์ž๋™ํ™”๊ฐ€ ๊ผญ ํ•„์š”ํ•œ ๊ฒฝ์šฐ (์˜ˆ: ์ผ์ผ cron ์œผ๋กœ ์–ด์ œ ์„ธ์…˜ ์žฌ open) ๋Š” claude --resume <id> ๋˜๋Š” codex resume <id> ๋ฅผ ์ƒˆ ์…ธ์—์„œ ์ง์ ‘ ํ˜ธ์ถœํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค โ€” ๊ทธ๊ฑด recall ์˜ ๋ฒ”์œ„ ๋ฐ–์ด์ง€๋งŒ ์ถœ๋ ฅ๋œ <id> ๋ฅผ ๊ทธ๋Œ€๋กœ ์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

session_id prefix ๋Š” ๋ช‡ ๊ธ€์ž๊นŒ์ง€ ์ค„์—ฌ ์จ๋„ ๋˜๋‚˜?

recall show / recall resume / recall related ๋ชจ๋‘ SELECT ... WHERE session_id LIKE 'prefix%' ๋กœ ๋งค์นญํ•ฉ๋‹ˆ๋‹ค. UUID v4 ๊ธฐ์ค€ ์•ž 8 ์ž๋ฆฌ๋ฉด ๋ณดํ†ต ์ถฉ๋Œ ์—†์ด ์œ ์ผํ•˜๊ฒŒ ์žกํž™๋‹ˆ๋‹ค (3cca0676, 019e2314 ๊ฐ™์€ ํ˜•ํƒœ). ๋™์ผ prefix ๊ฐ€ ์—ฌ๋Ÿฌ ์„ธ์…˜์— ๊ฑธ์น˜๋ฉด last_ts DESC ์ˆœ์œผ๋กœ ๊ฐ€์žฅ ์ตœ๊ทผ ๊ฒƒ์ด ์„ ํƒ๋ฉ๋‹ˆ๋‹ค.

๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ (recall search) ๊ฐ€ ๋ณด์—ฌ์ฃผ๋Š” SID_8 ์ปฌ๋Ÿผ์ด ๋ฐ”๋กœ ๊ทธ 8์ž prefix ๋ผ์„œ ๊ทธ๋Œ€๋กœ ๋ณต์‚ฌํ•ด recall show 3cca0676 ์‹์œผ๋กœ ์“ฐ๋ฉด ๋ฉ๋‹ˆ๋‹ค.


๋ผ์ด์„ ์Šค

MIT

About

Find any past Claude Code / Codex session by fuzzy memory. Local-first SQLite (FTS5) + vector search + one-click resume.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages