빠른 시작

5분 안에 첫 recall.

키 하나, 설치 한 줄, 호출 세 번이면 에이전트에 기억이 생깁니다. 이 페이지의 모든 코드는 실제로 실행해 검증했고, 응답도 실물 그대로입니다.

1

API 키 발급

콘솔에서 키를 만듭니다. wos-live-로 시작하는 155자 키가 한 번만 표시됩니다. 환경변수로 보관하고, 코드에 직접 적지 마세요.

2

설치

pip install wontopos        # Python
npm install wontopos        # TypeScript / JavaScript
cargo add wontopos          # Rust
# curl - nothing to install, just set WOS_API_KEY
# latest: SDK v2.2.37 · MCP v1.0.19
3

저장소 만들고, 저장 & 회수

저장소는 저장·회수의 단위인 user_id입니다. 저장소는 명시적이라 먼저 만들고(아래 호출), 그 안에 저장·회수합니다. 저장 - 적재 시 색인, LLM 호출 없음. 회수 - 단기 + 장기 + 문맥을 한 번의 왕복으로.

from wontopos import Client

mem = Client(api_key="wos-live-...", user_id="alice")  # set the store once
mem.create_store()              # create it (stores are explicit)
mem.add("she prefers tea over coffee")  # no user_id needed

# one call → short-term + long-term + context
ctx = mem.recall("what does alice drink?")
import { Client } from "wontopos";

const mem = new Client({ apiKey: "wos-live-...", userId: "alice" });  // set the store once
await mem.createStore();            // create it (stores are explicit)
await mem.add("she prefers tea over coffee");  // no userId needed

// one call → short-term + long-term + context
const ctx = await mem.recall("what does alice drink?");
use wontopos::Client;

let mem = Client::new("wos-live-...").with_user("alice");  // set the store once
mem.create_store(None).await?;            // create it (stores are explicit)
mem.add("she prefers tea over coffee", None, json!({})).await?;

// one call → short-term + long-term + context
let ctx = mem.recall("what does alice drink?", None).await?;
# create the store once - stores are explicit
curl -X POST https://api.wontopos.com/api/v1/memory/collection \
  -H "X-API-Key: $WOS_API_KEY" -H "Content-Type: application/json" \
  -d '{"user_id":"alice"}'

# store - indexed on the way in, no LLM call
curl -X POST https://api.wontopos.com/api/v1/memory/store \
  -H "X-API-Key: $WOS_API_KEY" -H "Content-Type: application/json" \
  -d '{"user_id":"alice","content":"she prefers tea over coffee"}'

# one call → short-term + long-term + context
curl -X POST https://api.wontopos.com/api/v1/memory/recall \
  -H "X-API-Key: $WOS_API_KEY" -H "Content-Type: application/json" \
  -d '{"user_id":"alice","query":"what does alice drink?"}'
실제 응답 - create_store()
{"user_id": "alice", "status": "created"}
실제 응답 - add()
{"id": "576700aa-f0e0-4c26-99a0-10e2d5b0d624", "status": "stored (1 chunks)"}
저장소는 한 번만 지정. 클라이언트에 user_id를 주면 모든 호출이 그걸 써서 매번 안 적어도 됩니다; 호출마다 user_id를 넘기면 그 호출만 덮어씁니다. 저장소는 명시적: 없는 저장소에 저장·회수하면 404 - 먼저 만들어야 합니다. 모든 계정엔 default 저장소가 있어 user_id를 아예 안 줘도 바로 됩니다. 목록·관리는 Stores 참고.

recall()은 네 블록을 돌려줍니다 - short_term(최근 대화), long_term(관련 기억), context(가장 관련된 기억의 주변), 그리고 LLM에게 쓰는 법을 알려주는 instruction. 이 덩어리를 그대로 프롬프트에 넣으면 됩니다.

어떤 언어로든 동작합니다. 영어로 저장하고 한국어·일본어·중국어로 물어도 같은 기억이 나옵니다. 70개 언어쌍에서 recall@5 95.2%입니다.

언어별 메서드 전부 보기 →

클라이언트 하나로 설정만 다르게

mem = Client.from_env()                 # reads WONTOPOS_API_KEY
scroll = mem.with_model("scroll-1.2")  # this copy only: another engine
alice  = mem.with_user("alice")       # this copy only: another default store
const alice = mem.withUser("alice");
const scroll = mem.withModel("scroll-1.2");
let alice = mem.with_user("alice");
let scroll = mem.with_model("scroll-1.2");
# curl has no copies — send model and user_id with each request
curl ... -d '{"user_id":"alice","model":"scroll-1.2","query":"…"}'