π§ TokenSaver Korean v2.0
AI μμ΄μ νΈλ₯Ό μν νκ΅μ΄ μ΅μ ν Context Database
ν ν° μλͺ¨λ₯Ό μ΅λ 91% μ κ°νλ μ€λ§νΈ λ©λͺ¨λ¦¬ μμ€ν
.
μ μ₯Β·κ²μΒ·μμΆΒ·κ³μΈ΅νΒ·μμΉ΄μ΄λΈκΉμ§ μμ μλν.
β¨ ν΅μ¬ κΈ°λ₯
| κΈ°λ₯ | ν μ€ μ€λͺ
|
|---|
| π μλ² λ© μλ―Έ κ²μ | ν€μλκ° μλλΌ μλ―Έλ‘ μ°Ύμ΅λλ€ |
| π μ€λ³΅ μλ λ³ν© | λΉμ·ν λ©λͺ¨λ¦¬ μμμ ν©μ³μ€λλ€ |
| π λ©λͺ¨λ¦¬ κ³μΈ΅ν | Hot β Warm β Cold μλ κ΄λ¦¬ |
| ποΈ μλ μμΉ΄μ΄λΈ | 30μΌ λ¬΅μ λ©λͺ¨λ¦¬ μλ μ 리 |
| π WAL νλ‘ν μ½ | μ μ₯ λ¨Όμ , μλ΅ λμ€ β μ μ€ μ λ‘ |
| π·οΈ μν°ν° μΆμΆ | μ¬λΒ·λΈλλΒ·μ ν μλ νκΉ
|
| π λ€κ΅μ΄ μ§μ | νκ΅μ΄(konlpy) + μμ΄(nltk) |
π λΉ λ₯Έ μμ
1. νκ²½λ³μ μ€μ
# Fireworks API ν€ (μλ² λ© κ²μμ©)
export FIREWORKS_API_KEY="your-key"
# Windows PowerShell
$env:FIREWORKS_API_KEY="your-key"
2. Pythonμμ μ¬μ©
from token_saver.client import TokenSaverKorean
# μ΄κΈ°ν (μλμΌλ‘ workspace νμ§)
client = TokenSaverKorean()
# μ μ₯ β μλ² λ© μλ μμ± + μ€λ³΅ μ μλ λ³ν©
client.save_memory(
uri="biz/daily_sales",
content="μ€λ λ§€μΆ 500λ§μ, ROAS 5.83",
category="biz"
)
# κ²μ β ν€μλ + μλ² λ© νμ΄λΈλ¦¬λ
results = client.find("λ§€μΆ νν©", use_embedding=True)
# ν°μ΄ ν΅κ³
stats = client.get_tier_stats()
# β {'hot': 14, 'warm': 0, 'cold': 0, 'archive': 0}
# λ§λ£ λ©λͺ¨λ¦¬ μ 리
client.cleanup_expired(days=30)
3. OpenClawμμ μ¬μ©
λ§μ€ν°: "λ₯ν°λ μ΄λ ROAS κΈ°μ΅ν΄"
β 보λΌ: memory_store(uri="memories/drlady/roas", content="ROAS 5.83...")
λ§μ€ν°: "μ λ²μ λ§μΌν
μ λ΅ λμμ§?"
β 보λΌ: memory_recall(query="λ§μΌν
μ λ΅")
π ν ν° μ κ° ν¨κ³Ό
| μλλ¦¬μ€ | κΈ°μ‘΄ ν ν° | TokenSaver | μ κ°μ¨ |
|---|
| μ 체 Context λ‘λ | 50,000 | 4,500 | 91% |
| νκ΅μ΄ κ²μ | 20,000 | 2,000 | 90% |
| λ©λͺ¨λ¦¬ μμΆ | 30,000 | 3,500 | 88% |
ποΈ λ©λͺ¨λ¦¬ κ³μΈ΅ν
μλμΌλ‘ μ€μλμ λ°λΌ ν°μ΄λ₯Ό κ΄λ¦¬ν©λλ€:
| ν°μ΄ | κΈ°κ° | μ μ₯ λ°©μ |
|---|
| π₯ Hot | 7μΌ λ΄ | μ 체 λ΄μ© + μλ² λ© |
| π‘οΈ Warm | 30μΌ λ΄ | μμ½ + μλ² λ© |
| βοΈ Cold | 30μΌ+ | ν€μλλ§ (μμΆ) |
| ποΈ Archive | 30μΌ λ―Έμ μ | κ²μμμ μ μΈ |
# μλ μΉκ²©/κ°λ± β μ κ·Όν μλ‘ HotμΌλ‘ μ¬λΌκ°
client.save_memory("test", "λ΄μ©") # β Hot
# 30μΌ ν μλ β Cold
# λ€μ κ²μνλ©΄ β Warm β Hot
π νμ΄λΈλ¦¬λ κ²μ
ν€μλ λ§€μΉ + μλ² λ© μ μ¬λλ₯Ό κ²°ν©ν νμ΄λΈλ¦¬λ κ²μ:
results = client.find(
query="κ΄κ³ ν¨μ¨ κ°μ ",
limit=5,
use_embedding=True # μλ² λ© κ²μ ON
)
# κ²°κ³Ό: ν€μλ μ μ + μλ² λ© μ μ = μ΅μ’
μμ
# "ROAS μ΅μ ν λ°©λ²" (12.45μ )
# "κ΄κ³ μμ¬ μ±κ³Ό λΆμ" (9.91μ )
API μ€ν¨ μ μλμΌλ‘ ν€μλ κ²μμΌλ‘ ν΄λ°± β μ λ μ λκΉ.
π μ€λ³΅ μλ λ³ν©
λΉμ·ν λ΄μ©μ΄λ©΄ μλ‘ λ§λ€μ§ μκ³ κΈ°μ‘΄ κ²μ μ
λ°μ΄νΈ:
# 첫 μ μ₯
client.save_memory("biz/roas", "ROAS 5.83", category="biz")
# λΉμ·ν λ΄μ© μ¬μ μ₯ β μλ λ³ν© (μ½μ¬μΈ > 0.85)
client.save_memory("biz/roas", "ROAS 6.12λ‘ μμΉ", category="biz")
# β κ°μ URIμ λ²μ μ
κ·Έλ μ΄λ (v1 β v2)
π·οΈ μλ μν°ν° μΆμΆ
μ μ₯ μ μ¬λΒ·λΈλλΒ·μ νμ μλμΌλ‘ μΈμ:
entities = client.extract_entities("κΉλͺ
μ§ λνκ° λ₯ν°λ μ΄λ 리μ₯¬-ν‘μ€ μΆμ")
# β {'persons': ['κΉλͺ
μ§'], 'brands': ['λ₯ν°λ μ΄λ'], 'products': ['리μ₯¬-ν‘μ€']}
βοΈ μ€μ νμΌ (ovk.conf)
{
"embedding": {
"dense": {
"provider": "fireworks",
"model": "qwen3-embedding-8b",
"dimension": 768
}
},
"language": "auto",
"token_optimization": {
"enabled": true,
"target_reduction": 0.91
}
}
π‘οΈ μμ μ±
| κΈ°λ₯ | μ€λͺ
|
|---|
| WAL νλ‘ν μ½ | μλ΅ μ μ λ¨Όμ μ μ₯ β ν¬λμν΄λ μ μ€ μμ |
| μλ λ°±μ
| μμ μ μλ³Έ λ°±μ
λ³΄κ΄ |
| μλ² λ© ν΄λ°± | API μ₯μ μ ν€μλ κ²μμΌλ‘ μλ μ ν |
| νμνΈν | v1 λ°μ΄ν° κ·Έλλ‘ μ¬μ© κ°λ₯ |
π¦ μμ‘΄μ±
| ν¨ν€μ§ | μ©λ | νμ? |
|---|
| konlpy | νκ΅μ΄ ννμ λΆμ | κΆμ₯ |
| nltk | μμ΄ NLP | κΆμ₯ |
| FIREWORKS_API_KEY | μλ² λ© κ²μ | μλ² λ© μ¬μ© μ |
konlpy/nltk μμ΄λ μλν©λλ€ (κΈ°λ³Έ ν ν¬λμ΄μ μ¬μ©).
π λΌμ΄μ μ€
MIT License β μμ λ‘κ² μ¬μ©, μμ , λ°°ν¬ κ°λ₯.
TokenSaver Korean v2.0
μλ² λ© κ²μ Β· μ€λ³΅ λ³ν© Β· λ©λͺ¨λ¦¬ κ³μΈ΅ν Β· μλ μμΉ΄μ΄λΈ
νκ΅μ΄ μ°μ , μμ΄ μ§μ, OpenClaw μ΅μ ν