AI ์์ด์ ํธ๋ฅผ ์ํ ๋ก์ปฌ ์ฐ์ (local-first) ๊ฒ์ ์์ง์ด์ MCP ์๋ฒ. Rust ๋ฐ์ด๋๋ฆฌ ํ๋๊ฐ ์ฝ๋, ๋ฌธ์, ๋ก๊ทธ, JSONL/CSV, PDF๋ฅผ ์์ธํด BM25 ์ ๋ฌธ(full-text) ๊ฒ์, ๋ฒกํฐ ๊ฒ์, ํ์ด๋ธ๋ฆฌ๋ ๊ฒ์, ์ฝ๋ ๊ฒ์, ์์ด์ ํธ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ๊ณตํ๋ฉฐ, Elasticsearch ํธํ API ๋ค์์ ๋์ํฉ๋๋ค. Claude Code, Cursor ๋ฐ ๋ชจ๋ MCP ํด๋ผ์ด์ธํธ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
English | ็ฎไฝไธญๆ | ๆฅๆฌ่ช | ุงูุนุฑุจูุฉ | Espaรฑol | ํ๊ตญ์ด
XERJ๋ ์ปค๋ฎค๋ํฐ์ ์ ๋ขฐ๋ฅผ ๋ฐ๋ ๋ก์ปฌ AI ๊ฒ์ ์์ง์ผ๋ก, ์ด๋ค ํด๋๋ ์๋์ผ๋ก ์์ธํฉ๋๋ค. ๋๋ถ์ ์ฝ๋ฉ ์์ด์ ํธ๋ ํ์ผ์ ํ๋์ฉ ์ฝ์ผ๋ฉฐ ํ ํฐ์ ๋ญ๋นํ๋ ๋์ , ์ ํํ ํ์ํ ์ฝ๋๋ฅผ ๋ฐ๋ก ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค. ๋ ํผ๋ฐ์ค ์ฝ๋ฉ(reference coding)์ด ๋ํ์ ์ธ ์ฌ์ฉ ์ฌ๋ก์ด์ ๊ฐ์ฅ ํ์คํ ์น๋ฆฌ์ ๋๋ค: ์์ด์ ํธ์๊ฒ ์์ ์ ์ง์ํ๋ฉด ๊ทธ์ ๊ฐ์ฅ ๊ฐ๊น์ด ์คํ์์ค ์ ์ฅ์๋ค์ ๋ด๋ ค๋ฐ์ ์์ธํ๊ณ , ์๊ธฐ ์ฝ๋๋ฅผ ์์ฑํ๊ธฐ ์ ์ ๊ทธ ๋ฌธ์ ๋ฅผ ๋ค๋ฅธ ์ฌ๋๋ค์ด ์ด๋ป๊ฒ ํด๊ฒฐํ๋์ง ์ฌํ์ฉํฉ๋๋ค. ์ ์ด๋ ์คํ์์ ์ฝ๋ฉ ์์ด์ ํธ์ ์ถ๋ ฅ ํ ํฐ์ ๋์ผํ 16/16 ํด๊ฒฐ๋ฅ ๋ก 2.7๋ฐฐ ์ค์๊ณ (์ฌ๋ก ์ฐ๊ตฌ), ์ฌ์ฉ์๋ค์ ์ค๋ฌด์์ ๋๋ต 5๋ฐฐ ์ ๊ฐ์ ๋ณด๊ณ ํฉ๋๋ค (์ค์ฌ์ฉ ๋ณด๊ณ ์). ๋๋ถ์ ๋ ์๊ณ ์ ๋ ดํ ๋ชจ๋ธ์ด ๊ธฐ์ต์ ์์กดํ๋ ๋น์ผ ๋ชจ๋ธ๋ณด๋ค ๋ ์ ์ฝ๋ฉํ ์ ์๊ณ , ์ฌ๋ฌ๋ถ์ ์์ ๋ฃจํ์ ์ฐ๋ ์๊ฐ๋ ์ค์ด๋ญ๋๋ค. ํ๋กฌํํธ ํ๋๋ก ๋ฐ๋ก ์ค์นํด ๋ณด์ธ์:
Install XERJ (docs: https://xerj.org/llms.txt), index this project's sources, and set up
reference coding: clone and index the open-source repos closest to what we're building,
and search how they solved a problem before writing code.
์ง์ ์คํํ ์๋ ์์ต๋๋ค:
curl -fsSL https://xerj.org/get | sh
xerj --insecure --data-dir ~/xerj-data &
xerj init # Claude Code/Cursor์ XERJ ์ฐ๋ (MCP + skill), ๋ช
๋ น ํ ๋ฒ
xerj autoindex ~/my-project
xerj search "how do we rotate the WAL segment" # ์์๊ฐ ๋งค๊ฒจ์ง ๊ตฌ์ , file:line
xerj def "euler_to_rotationmatrix" # ์ ์๋ก ์ด๋: file:line + ์๊ทธ๋์ฒ
xerj gain # ๋ฌด์์ ํด์คฌ๋์ง โ ์ถ์ ์ด ์๋ ์ค์ธก๋ฐ์ดํฐ ๋๋ ํฐ๋ฆฌ๋ autoindexํ ํด๋ ๋ฐ์ ๋์ธ์. data/๋ ๊ธฐ๋ณธ ๋ฌด์ ๋ชฉ๋ก์ ์์ผ๋ฏ๋ก, ์์ธํ
ํธ๋ฆฌ ์์ --data-dir ./data๋ฅผ ๋๋ฉด ๋
ธ๋๊ฐ ์๊ธฐ ์ ์ฅ์๋ฅผ ์์ธํ๊ฒ ๋ฉ๋๋ค.
Windows ๋ฐ ์๋ ๊ฒ์ฆ๋ ์ค์น๋ ์๋ ์ค์น๋ฅผ ์ฐธ๊ณ ํ์ธ์.
์ด --insecure ํ๋๊ทธ๋ ํ์์ ์ธ ์ ์ฐจ๊ฐ ์๋๋ผ ์ ๋ขฐ ๊ฒฝ๊ณ์
๋๋ค. TLS์ API ํค ์ธ์ฆ์ ๋๋ฏ๋ก,
ํด๋น ํฌํธ์ ๋๋ฌํ ์ ์๋ ๋ชจ๋ ํธ์ถ์๋ ๋ชจ๋ /_memory ๋ค์์คํ์ด์ค๋ฅผ ํฌํจํด ๋ชจ๋ ์ธ๋ฑ์ค๋ฅผ
์ฝ๊ณ ์ญ์ ํ ์ ์๋ ์ํผ์ ์ ๊ฐ ๋ฉ๋๋ค. ๊ฐ๋ฐ ๋จธ์ ์ ๋จ์ผ ์ฌ์ฉ์๋ฅผ ์ํ ๊ฒ์
๋๋ค: ์ ๋
ธ๋๋
127.0.0.1์๋ง ๋ฐ์ธ๋ฉํ๋ฉฐ, ๋ค๋ฅธ ์ธํฐํ์ด์ค์ ํ๋ฌธ ๋ฐ์ธ๋ฉ์ ๋ช
์์ ์ผ๋ก ํ์ฉํ์ง ์๋ ํ
์์์ ๊ฑฐ๋ถํฉ๋๋ค. ์ ์ฒด ๋ชจ๋ธ์
docs/SECURITY_MODEL.md์ ์์ต๋๋ค.
XERJ์ ์ฐธ์ฌํ๋ ๋ฐฉ๋ฒ์ ์คํํด ๋ณด๊ณ ์งง์ ์ฌ์ฉ ํ๊ธฐ๋ฅผ ํ๋ ๋ณด๋ด๋ ๊ฒ โ ์ปค๋ฐ์ด๋ PR ํ๋ โ ์ ๋๋ค. ๊ทธ ๋ณด๊ณ ์๊ฐ ํ์์ฆ์ด๋ฉฐ, ๋ฌด๋ฃ Apache-2.0 ๋ฐ์ด๋๋ฆฌ์ ๋ํ ํ๋ก์ ํธ์ ์ ์ผํ ๋๊ฐ์ ๋๋ค. ๋๋ถ์ ๋ค์ ์ฌ์ฉ์๋ฅผ ์ํด ์์ง์ด ๊ณ์ ๊ฐ์ ๋ฉ๋๋ค.
์ฌ๋๊ณผ AI ์์ด์ ํธ ๋ชจ๋ ํ์ํฉ๋๋ค; ์๋์ ์ผ๋ก ์์ด์ ํธ ์ ์ฉ ํ๋ก์ ํธ๊ฐ ์๋๋๋ค. ์ ์ฌ์๊ฐ์ ์ ์ฅ์ ํ๋๋ฅผ ์์ธํ๋ , ์์ด์ ํธ๊ฐ ๋จ์ ์ฝ๋๋ฒ ์ด์ค ์ธ์ ์ค๊ฐ์ XERJ๋ฅผ ์ค์นํ๋ , ์๊ตฌ๋ ๊ฐ์ต๋๋ค: ๋ฌด์์ ๋์์ผ๋ก ์ผ์๋์ง, ๋ฌด์์ ์ฌ์ฉํ๋์ง, ์์งํ ํ๊ฐ๋ฅผ ๋ด์ ์งง์ ๋ณด๊ณ ์ ํ๋. ๋ถ์ ์ ํ๊ฐ๋ ์ข์ ๋ณด๊ณ ์์ ๋๋ค. ๋ญ๊ฐ ๊นจ์ก๋ค๋ฉด ๊ทธ๊ฑด ๋ณ๋์ ์ด์๋ ์์ ์ฌํญ์ ๋๋ค.
์ฌ์ฉ ํ๊ธฐ PR์ CLA ๋ฉด์ ๋ผ ์๋ช
์์ด ๋ณํฉ๋ฉ๋๋ค. ์ด๋ค ๋น๋์์๋ ๋์ํ๋ ๋ฐฉ๋ฒ์
user-feedback/16-agent-field-reports/์ ๋งํฌ๋ค์ด
ํ์ผ ํ๋๋ง ์ถ๊ฐํ๋ ์ผ๋ฐ gh pr create์
๋๋ค(๋ํ์ ๋ค๋ฅธ ๊ฒ์ ์์ด์ผ ํฉ๋๋ค). ํด๋น ๋ช
๋ น์ด
์๋ ๋น๋์์๋ xerj feedback์ด ๋ณด๊ณ ์ ์ด์์ ์์ฑํด ๋ฒ์ , OS, ์์ธ ๋์์ ์ฑ์์ฃผ๊ณ ,
xerj feedback --open-pr๊ฐ PR์ ์ด์ด์ค๋๋ค. ๋ด ๋ฐ์ด๋๋ฆฌ์ ์ด ๋ช
๋ น์ด ์๋์ง๋ xerj --help๋ก
ํ์ธํ์ธ์.
grepํ๋ ์์ด์ ํธ๋ ํ์ผ ์ ์ฒด๋ฅผ ์ปจํ
์คํธ์ ๋์ด๋ค์
๋๋ค. ์ฐ๋ฆฌ ์ธก์ ์์ ํ ์ฝํผ์ค์์๋ ์
๋ ฅ
ํ ํฐ์ด ์ต๋ 1.06M์ ๋ฌํ๊ณ , ๊ฒฐ๊ตญ ๊ทธ๊ฒ์ ๋ค ์ฝ์ด์ผ ํฉ๋๋ค. XERJ์ ์ง์ํ๋ ์์ด์ ํธ๋ ํ์ํ
๊ตฌ์ (passage)์ ๋ฐ์ต๋๋ค. ๋ชจ๋ธ์ด ์๊ธฐํ์ง ๋ชปํ ์ฝ๋๋ก ์๋ํฌ์๋ ์ธก์ ํ ๊ฒฐ๊ณผ
(์ฌ๋ก ์ฐ๊ตฌ: ์์
8๊ฐ, ์ธ์ด 4๊ฐ,
๊ทธ๋ฃน๋น 16ํ ์คํ, ์ค์ claude -p ํ ํฐ ์นด์ดํธ):
| ์ถ๋ ฅ ํ ํฐ | ๋น์ฉ | ํด๊ฒฐ | |
|---|---|---|---|
| ๊ธฐ์ต๋ง์ผ๋ก | 260,916 | $11.18 | 11/16 |
| grep ๊ธฐ๋ฐ ์์ด์ ํธ | 26,477 | $3.27 | 16/16 |
| XERJ | 9,982 | $1.58 | 16/16 |
๋์ผํ ํด๊ฒฐ๋ฅ ์์ grep ๋๋น ์ถ๋ ฅ ํ ํฐ 2.7๋ฐฐ, ๊ธฐ์ต๋ง ์ฌ์ฉ ๋๋น 26๋ฐฐ ์ ๊ฐ์ด๋ฉฐ, ๋จ์ผ Java ์์ ์์๋ ์ต๋ 278๋ฐฐ ์ ๊ฐ์ด์์ต๋๋ค. ์ค์ ๊ฐ๋ฐ์์ ์ฌ์ฉ์๋ค์ ์๋ํฌ์๋๋ก ๋๋ต 5๋ฐฐ์ ํ ํฐ ์ ๊ฐ์ ๋ณด๊ณ ํฉ๋๋ค (์ค์ฌ์ฉ ๋ณด๊ณ ์). ์ด ๊ฐ์น๋ ์๊ธฐ ์ฌ๋ถ์ ์ข์ฐ๋ฉ๋๋ค: ๋น๊ณต๊ฐยท๋ด๋ถยท๋์นยทํ์ต ์ปท์คํ ์ดํ ์ฝ๋์์ ์น๋ฆฌํ๊ณ , ๋ชจ๋ธ์ด ์ด๋ฏธ ์๋ ์ ๋ช ๊ณต๊ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์๋ ์ค๋ฆฝ์ ์ด๊ฑฐ๋ ๋ถ๋ฆฌํ ์ ์์ต๋๋ค. ์ ์งํ ํ๊ณ๋ ์ฌ๋ก ์ฐ๊ตฌ์ ์์ต๋๋ค.
๋ ํผ๋ฐ์ค ์ฝ๋ฉ๋ ๊ฐ์ ์์ ๊ธฐ๋ฅ์ ํ ์ฌ์ฉ๋ก์
๋๋ค: xerj autoindex <folder>๋ ์์ด์ ํธ๊ฐ
์ฝํผ์ค๋ฅผ grepํ๋ ๋์ ์๊ฒ ๋ง๋ญ๋๋ค. ๋ช
๋ น ํ๋๋ก ์ฝ๋, ๋ฌธ์, ๋ก๊ทธ, PDF, SQLite, ๊น๋ค๋ก์ด CSV๊น์ง
ํ์
์ด ์ง์ ๋๊ณ ์ง์ ๊ฐ๋ฅํ ์ธ๋ฑ์ค๋ก ๋ง๋ค์ด ๊ฒ์, RAG, ๋ณด์ ๊ฐ์ฌ, ์์ด์ ํธ ๋ฉ๋ชจ๋ฆฌ์ ์๋๋ค.
์คํค๋ง๋ ํ์ดํ๋ผ์ธ๋ ์์ฑํ ํ์๊ฐ ์์ต๋๋ค.
xerj --insecure --data-dir ~/xerj-data & # ์์
xerj autoindex ~/my-project # ์๋ฌด๊ฑฐ๋ ๊ฐ๋ฆฌํค๊ธฐ--insecure๋ ๋ค์ ๋งํ์ง๋ง TLS ์์, ์ธ์ฆ ์์ โ ๋ชจ๋ ํธ์ถ์๊ฐ ์ํผ์ ์ โ ๋ฅผ ๋ปํ๋ฏ๋ก, ์์
๊ฐ์ ๊ฐ๋ฐ ๋จธ์ ๋จ์ผ ์ฌ์ฉ์ ๊ฒฝ๊ณ์
๋๋ค(๋ณด์ ๋ชจ๋ธ).
XERJ๋ ๋ชจ๋ ํ์ผ์ ์ค๋ํํด ๋ฌด์์ธ์ง ํ์ ํ๊ณ , ๋ฐ๊ฒฌํ ๋ฐ์ดํฐ์ ๋ง๋ค ์ธ๋ฑ์ค๋ฅผ ํ๋์ฉ ๋ง๋ญ๋๋ค. ์ฝ๋๋ tree-sitter๋ฅผ ๊ฑฐ์ณ ์ฌ๋ณผ๊ณผ ์ค ๋ฒํธ๊ฐ ๋ถ์ ์ฑ๋ก ๋ค์ด์ต๋๋ค. ํ๋ฌธ ํ ์คํธ๊ฐ ์๋๋๋ค:
phase A: 593 datasets inferred, 1955 junk/skipped files
phase B: indexing 25329 files with 8 workers
done in 158.1s, 593 datasets, 83103 records live, 790 junk records
- ๋ ํผ๋ฐ์ค ์ฝ๋ฉ: ๋ฌธ์ ์ ๊ฐ์ฅ ๊ฐ๊น์ด OSS ํ๋ก์ ํธ๋ค์ ์์ธํด, ์ฝ๋๋ฅผ ์์ฑํ๊ธฐ ์ ์ ๊ทธ ํด๋ฒ์ ๊ฒ์ (์์ ์ธก์ ๋ ์ฌ์ฉ ์ฌ๋ก).
- ์ฝ๋๋ฒ ์ด์ค Q&A์ RAG: ์ ์ฅ์๋ฅผ ์์ธํ๊ณ ๋ฉ์ปค๋์ฆ์ ๋ฌผ์ผ๋ฉด, ๋๋ ํฐ๋ฆฌ ๋ชฉ๋ก ๋์
file:line์ด ๋ถ์ ๊ตฌ์ ์ ๋ฐ์ต๋๋ค. - ๋ณด์ ๊ฐ์ฌ: ๋์ ํธ๋ฆฌ๋ฅผ ์์ธํ๊ณ ๋ชจ๋ ํ์ผ ํ์ ์์ ํ ๋ฒ์ ์ฑํฌ ํจํด, ์ํฌ๋ฆฟ, ์ํํ ํธ์ถ์ ์ง์ํฉ๋๋ค.
- ๋ก๊ทธยท์ฅ์ ๋ถ์: ๋ค์์ธ ํฌ๋งท์ด Elasticsearch์์ ๊ธฐ๋ํ๋ ์ง๊ณ๊ฐ ๊ฐ๋ฅํ ํ์ ์ธ๋ฑ์ค๊ฐ ๋ฉ๋๋ค.
- ์์ด์ ํธ ์ฅ๊ธฐ ๊ธฐ์ต:
/_memory/{namespace}๊ฐ ์์ด์ ํธ๊ฐ ๋ฐฐ์ด ๊ฒ์ ์ ์ฅํ๊ณ ๋ค์ ์ธ์ ์ ์๋ฏธ๋ก ์ฌ์ํํฉ๋๋ค.
llms.txt๊ฐ ์์ด์ ํธ์๊ฒ ์์๋๋ก ๋ ๋จ๊ณ๋ฅผ ์ค๋๋ค: ์ค์น, ์๋ฒ
์์, xerj autoindex ., ์์์ Elasticsearch ํด๋ผ์ด์ธํธ๋ก ์ง์, ๊ทธ๋ฆฌ๊ณ ๋ ํผ๋ฐ์ค ์ฝ๋ฉ ๋ฃจํ
(๋น์ทํ OSS ํด๋ก , ์์ธ, ์์ฑ ์ ์ ๋ฉ์ปค๋์ฆ ๊ฒ์, ์ฌ์ฉํ ๊ฒ ์ธ์ฉ, ๋ผ์ด์ ์ค ์กด์ค).
๋์์ด ๋๋ ์ด์ : ๊ธฐ์ต์ผ๋ก ์์ ํ๋ ์์ด์ ํธ๋ ์๊ธฐํ์ง ๋ชปํ API์์ ์ฌ์๋ ๋ฃจํ์ ๋น ์ง๊ณ , grep์ ์ด๋๋ฅผ ๋ด์ผ ํ๋์ง๋ง ์๋ ค์ค๋๋ค. ๊ฒฐ๊ตญ ํ๋ณต ๋ฐฉ๋ฒ์ ์์ค๋ฅผ ์ปจํ ์คํธ๋ก ์ฝ๋ ๊ฒ์ด๊ณ , ์ฐ๋ฆฌ ์ธก์ ์์ ํ ์ฝํผ์ค์์ ์ ๋ ฅ ํ ํฐ์ด ์ต๋ 1.06M์ด์์ต๋๋ค. XERJ์ ์ง์ํ๋ ์์ด์ ํธ๋ ์ ํํ ๊ตฌ์ ์ ๋์ ์ฝ์ต๋๋ค. ๋์ผํ 16/16 ํด๊ฒฐ๋ฅ ์์ grep ๋๋น 2.7๋ฐฐ(๊ธฐ์ต๋ง ๋๋น 26๋ฐฐ, 2.1๋ฐฐ ์ ๋ ด) ์ ๊ฐ์ ์ ์ธก์ ๋ ์ด์ ์ ์์ผ๋ฉฐ, ๋ชจ๋ธ์ด ๋ณธ ์ ์๋ Rust ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ๊ฒ์ ์ฌ์ฉ ์ 9/9, ๊ธฐ์ต๋ง ์ฌ์ฉ ์ 0/9๋ฅผ ๊ธฐ๋กํ ๋๋ฐ ์คํ๋ ์์ต๋๋ค.
์ ์ค์น์์ ๋ฐ๋ก ๋์ํ๋ ํ๋กฌํํธ ๋ ๋ณด๊ธฐ:
- "https://xerj.org/llms.txt ๋ฅผ ์ฝ๊ณ , XERJ๋ฅผ ๊ฒ์ ๋ฐฑ์๋๋ก ์ค์ ํ๊ณ ,
./docs๋ฅผ ์์ธํ ๋ค, ๋ง๋ค์ด์ง ์ธ๋ฑ์ค๋ง๋ค ์์ ์ง์๋ฅผ ํ๋์ฉ ๋ณด์ฌ์ค." - "
xerj autoindex map์ ์คํํ๊ณ ์ด ๋ฐ์ดํฐ์ ๋ฌด์์ด ์๋์ง ์๋ ค์ค (ํ์ , ๊ฐ์, ๊ธฐ๋ก๋ ์ฃผ์์ ). ๊ทธ๋ค์๋ถํฐ๋ ํ์ผ์ ์ฝ๋ ๋์ ๊ฒ์์ผ๋ก ๋ด ์ง๋ฌธ์ ๋ตํด์ค." - "XERJ์
/_memory/notesAPI๋ฅผ ์ด ํ๋ก์ ํธ์ ์ฅ๊ธฐ ๊ธฐ์ต์ผ๋ก ์จ์ค: ์์ ํ๋ฉฐ ๋ฐฐ์ด ๊ฒ์ ์ ์ฅํ๊ณ , ๋ค์ ์ธ์ ์์ ์๋ฏธ๋ก ์ฌ์ํํด์ค."
๊ฐ ๊ธฐ๋ฅ๋ณ๋ก ๊ฒ์ฆ๋ ์ค์ ์์ : xerj.org/docs/recipes.
๋ถํ , ๋ฒํฌ ์์ง, ๊ฒ์, ๋ฒกํฐ kNN, ๋ผ์ด๋ธ ๋์๋ณด๋, ํธ์ง ์์. xerj.org์์ ๋ณด๊ธฐ ๋๋ ๋ผ์ด๋ธ ํ๋ ์ด๊ทธ๋ผ์ด๋ ์ฒดํ.
curl -fsSL https://xerj.org/get | shWindows PowerShell:
irm https://xerj.org/get.ps1 | iex์ ์ ๋ฐ์ด๋๋ฆฌ ํ๋, JVM ์์, ์์กด์ฑ ์์. Linux, macOS, Windows์ x86-64์ arm64์ฉ์ผ๋ก ๋ฏธ๋ฆฌ ๋น๋๋์ด ์์ต๋๋ค. ์์ค์์ ๋น๋ํ ์๋ ์์ต๋๋ค. Elasticsearch API๋ฅผ ๋งํ๋ฏ๋ก ๊ธฐ์กด ํด๋ผ์ด์ธํธ, ๋์๋ณด๋, ๋๊ตฌ๊ฐ ๊ทธ๋๋ก ๋์ํฉ๋๋ค.
์ค์น ํ ์ฒซ ๋ช
๋ น๋ค (์ค์น ์คํฌ๋ฆฝํธ๊ฐ xerj์ ์์น๋ฅผ ์ถ๋ ฅํฉ๋๋ค; ํ์ํ๋ฉด PATH์ ์ถ๊ฐํ์ธ์):
xerj --insecure --data-dir ~/xerj-data &, http://localhost:9200์ด ์๋ตํ ๋๊น์ง ๊ธฐ๋ค๋ฆฐ ๋ค
xerj autoindex ~/my-project. ํด๋ ์์ธ์ ์ฐธ๊ณ ํ์ธ์.
๋ฐํ์ ์ธํฐ๋ท ์ ๊ทผ์ด ์๋ ํธ์คํธ๋ ์์ด๊ฐญ ๋ฐฐํฌ ๋ ์ํผ๋ฅผ ๋ฐ๋ฅด์ธ์. ๊ธฐ๋ณธ ์ดํ(lexical) ์๋ฒ ๋๋ ์คํ๋ผ์ธ์ ๋๋ค; ๋ด๋ฐ(neural) ๋ชจ๋๋ ์ฒซ ์๋งจํฑ ์ฐ์ฐ ์ ์ ๋ชจ๋ธ ํ์ผ ์ธ ๊ฐ๋ฅผ ๋ก์ปฌ์ ์ค๋นํด์ผ ํฉ๋๋ค.
์๋ฒ๋ฅผ ์์ํ ๋ค autoindex๋ฅผ ์๋ฌด๊ฑฐ๋ ๊ฐ๋ฆฌํค์ธ์:
xerj --insecure --data-dir ~/xerj-data & # ๋ก์ปฌ ๊ฐ๋ฐ: TLS ์์, ์ธ์ฆ ์์
xerj autoindex ~/my-project์ด๊ฒ์ด ์ด README ์๋จ์ ๊ฐ๋ฐ ๋จธ์ ์ ๋ขฐ ๊ฒฝ๊ณ์
๋๋ค โ TLS ์์, ์ธ์ฆ ์์, ๋ชจ๋ ํธ์ถ์๊ฐ
์ํผ์ ์ . ์ ๋
ธ๋๋ 127.0.0.1์๋ง ๋ฐ์ธ๋ฉํ๋ฏ๋ก ๋
ธํธ๋ถ์์๋ ๊ด์ฐฎ์ต๋๋ค; ๊ณต์ ํธ์คํธ๋ ๋ฐ๋ก
์๋์ ์ธ์ฆ ์ผ์ง ์์์ ์ฐ์ธ์.
์๋ฒ๊ฐ ์ธ์ฆ ์ผ์ง(--insecure ์๋ ๋ชจ๋ ์์, ์ค์ ํ์ผ๋ก ์์ํ๋ ๊ฒฝ์ฐ๋ ํฌํจ)์ด๋ฉด
autoindex์ ๊ฐ์ ํค๋ฅผ ๋๊ฒจ์ผ ํฉ๋๋ค. ํค๋ฅผ xerj.toml์์ ์ฝ์ง๋ ์์ผ๋ฏ๋ก --api-key๋ฅผ
๋๊ธฐ๊ฑฐ๋ XERJ_API_KEY๋ฅผ ์ค์ ํ์ธ์. ๊ทธ๋ ์ง ์์ผ๋ฉด ๋ชจ๋ ์์ฒญ์ด 401 Unauthorized๋ก ๋์์ต๋๋ค:
xerj --data-dir ~/xerj-data & # ์ธ์ฆ ์ผ์ง: ์ฒซ ๋ถํ
์ ํค ๋ฐ๊ธ
export XERJ_API_KEY="$(cat ~/xerj-data/admin.key)" # <data_dir>/admin.key
xerj autoindex ~/my-project์ค์ ์ ์ด๊ฒ ์ ๋ถ์ ๋๋ค. ์คํค๋ง๋ ํ์ดํ๋ผ์ธ๋ ์์ต๋๋ค. XERJ๊ฐ ๊ฐ ํ์ผ์ ์ค๋ํํด ๋ฌด์์ธ์ง ํ์ ํ๊ณ , ๋ฐ๊ฒฌํ ๋ฐ์ดํฐ์ ๋ง๋ค ์ธ๋ฑ์ค๋ฅผ ๋ง๋ญ๋๋ค:
phase A: 593 datasets inferred, 1955 junk/skipped files
phase B: indexing 25329 files with 8 workers
done in 158.1s, 593 datasets, 83103 records live, 790 junk records
์์ค ํ์ผ์ tree-sitter๋ฅผ ๊ฑฐ์น๋ฏ๋ก ์ฝ๋๊ฐ ํ๋ฌธ ํ
์คํธ๊ฐ ์๋๋ผ ์ฌ๋ณผ๊ณผ ์ค ๋ฒํธ์ ํจ๊ป ๋ค์ด์ต๋๋ค.
CSV, JSON, JSONL, XML, YAML, SQLite, PDF, DOCX, PowerPoint(.pptx, ์ฌ๋ผ์ด๋๋น ๋ ์ฝ๋ ํ๋),
Excel(.xlsx, ์ํธ๋น ๋ฐ์ดํฐ์
ํ๋), EPUB ์ฑ
(์ฑํฐ๋น ๋ ์ฝ๋ ํ๋), Jupyter ๋
ธํธ๋ถ
(ํค๋ฉ ์น์
๋น ๋ ์ฝ๋ ํ๋, ์ปค๋ ๋ฌด๊ด), ๋งจ ํ์ด์ง(roff, ์น์
๋น ๋ ์ฝ๋ ํ๋), HTML, ๋ฉ์ผ(.eml ๋ฐ
mbox ๋ฉ์ผํจ, Google Takeout ๋ด๋ณด๋ด๊ธฐ ํฌํจ), ์ผ๋ฐ์ ์ธ ๋ก๊ทธ ํฌ๋งท์ด ๋ชจ๋ ์ฒ๋ฆฌ๋ฉ๋๋ค. Unity
ํ๋ก์ ํธ๋ ์ผ๊ธ ์๋ฏผ ๋์ฐ๋ฅผ ๋ฐ์ต๋๋ค: ํ
์คํธ ์ง๋ ฌํ๋ ์ฌ, ํ๋ฆฌํน, ์์
์ด GameObject/Component๋น
๋ ์ฝ๋ ํ๋๊ฐ ๋๊ณ , .meta ํ์ผ์ด GUID-๊ฒฝ๋ก ํ
์ด๋ธ์ด ๋๋ฉฐ, MonoBehaviour ๋ ์ฝ๋์
script_class/script_path๊ฐ ๋ถ์ด "์ด ์คํฌ๋ฆฝํธ๋ฅผ ์ฐ๋ ์ฌ์?"์ด ์ง์ ํ๋๊ฐ ๋ฉ๋๋ค
(๋ฐ์ด๋๋ฆฌ ์ง๋ ฌํ ์์
์ Force Text์ฌ์ผ ์ฝ์ ์ ์์ต๋๋ค; Library/ ๊ฐ์ ์์ฑ ๋๋ ํฐ๋ฆฌ๋ ์๋
๊ฑด๋๋ฐ๊ณ ๊ธฐ๋ก๋ฉ๋๋ค).
Elasticsearch API์ด๋ฏ๋ก ์ด ๋ถ๋ถ์ ์ด๋ฏธ ์๊ณ ์์ต๋๋ค:
# ๋ญ ์ฐพ์๋์ง?
curl localhost:9200/_cat/indices
# ์ ๋ฌธ ๊ฒ์
curl "localhost:9200/ax-*/_search?q=checkout+error"
# ๊ตฌ์กฐํ๋ ์ง์
curl localhost:9200/ax-orders/_search -H 'content-type: application/json' -d '{
"query": { "range": { "total": { "gte": 100 } } },
"aggs": { "by_status": { "terms": { "field": "status" } } }
}'๋ฒกํฐยทํ์ด๋ธ๋ฆฌ๋ ๊ฒ์๋ Elasticsearch์ ๋ณด๋ด๋ ๊ฒ๊ณผ ๊ฐ์ knn๊ณผ semantic ๋ฌธ๋ฒ์ ์๋๋ค.
์ด๋ค Elasticsearch ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ localhost:9200์ ๊ฐ๋ฆฌํค๋ฉด ๋์ํฉ๋๋ค.
๊ฒ์ ์ ์๋ ์ด๋ค ๊ฒฐ๊ณผ๊ฐ ์ด๋ค ๊ฒฐ๊ณผ๋ณด๋ค ์์ธ์ง๋ ์๋ ค์ฃผ์ง๋ง, ๊ทธ ๊ฒฐ๊ณผ๊ฐ ์ ๋ง ์ง๋ฌธ์ ๋ตํ๋์ง๋ ์๋ ค์ฃผ์ง ์์ต๋๋ค. TypeSafe AI์ ์๋น์ค Jev๊ฐ ๊ทธ๊ฒ์ ํฉ๋๋ค: ์ง๋ฌธ๊ณผ ๋ฌธ์๋ฅผ ์ฃผ๋ฉด ๋ฌธ์๊ฐ ์ผ๋ง๋ ์ ๋ตํ๋์ง 0์์ 1 ์ฌ์ด์ ์ซ์๋ฅผ ๋๋ ค์ค๋๋ค. XERJ๋ ๋ ๊ฐ์ง ๋ฐฉ์์ผ๋ก ํจ๊ป ๋์ํฉ๋๋ค.
1. Jev๋ก ๊ฒฐ๊ณผ ์ฌ์ ๋ ฌ(์ ํ). _search์ "rerank": {}๋ฅผ ์ถ๊ฐํ๋ฉด XERJ๊ฐ ์์ ๊ฒฐ๊ณผ๋ฅผ Jev๋ก
๋ณด๋ด๊ณ , ๋์์จ ์ซ์๋ก ์ ๋ ฌํฉ๋๋ค. ๊ณต๊ฐ FiQA ํ
์คํธ์์ ๊ฒฐ๊ณผ ํ์ง์ด 0.24์์ 0.36(nDCG@10)์ผ๋ก
์ฌ๋ผ๊ฐ๊ณ , ๊ฒ์ 648ํ์ ์ด ์ฝ $0.64๊ฐ ๋ค์์ต๋๋ค. ์ด ์ซ์๋ ์ ๋ ฌ ์๋จ์ผ๋ก ์ฐ๋ ์ ํํ ๋ฐฑ๋ถ์จ๋ก
๋ณด์ง ๋ง์ธ์: ์ ๋ณด์ ๋์ด ์์ง ์์ต๋๋ค. ์ด ๊ธฐ๋ฅ์ ํด๋น ๊ฒฐ๊ณผ๋ค์ ํ
์คํธ๋ฅผ TypeSafe ์๋ฒ๋ก
๋ณด๋
๋๋ค. ํค๋ฅผ ์ค์ ํ๊ธฐ ์ ๊น์ง๋ ๊บผ์ ธ ์์ผ๋ฉฐ, [rerank] enabled = false๋ก ์์ ํ ๊ธ์งํ ์
์์ต๋๋ค. ์ผ๊ธฐ ์ ์ docs/RERANK.md๋ฅผ ์ฝ์ผ์ธ์.
2. ๊ฐ์ ์ข
๋ฅ์ ๋ต์ ๋ก์ปฌ์์ ์ป๊ธฐ. POST /v1/systemone๊ณผ POST /_decide๋ ๊ฐ์ ์ง๋ฌธ์
๊ฐ์ ํ์์ผ๋ก ๋ฐ์ง๋ง, XERJ๊ฐ ์ด๋ฏธ ๋ ์ด๋ธ์ ๋ถ์ธ ๋ฌธ์๋ค(์: ์คํธ/๋น์คํธ์ผ๋ก ํ์๋ ๋ฉ์ผ) ์ค
๊ฐ์ฅ ๋น์ทํ ๊ฒ์ ์ฐพ์ ์ค์ค๋ก ๋ตํฉ๋๋ค. ์๋ฌด๊ฒ๋ ๋จธ์ ์ ๋ ๋์ง ์๊ณ ํค๋ ํ์ ์์ต๋๋ค.
๋ ์ด๋ธ๋ ์์ ๊ฐ ์์ ๋๋ง ๋์ํฉ๋๋ค; AG News(๋ ์ด๋ธ๋ ์์ 12๋ง ๊ฐ)์์ 92%์ ์ ํ๋๋ก ์ฌ๋ฐ๋ฅธ
๋ ์ด๋ธ์ ๊ณจ๋์ต๋๋ค. ๊ณต์ jev-reranker Python ํด๋ผ์ด์ธํธ๊ฐ ์์ ์์ด XERJ ๋
ธ๋์
๋์ํฉ๋๋ค(ํ
์คํธ). XERJ๋ ์๊ธฐ ์ด๋ฆ xerj-history-vote-1๋ก
๋ตํฉ๋๋ค; Jev๊ฐ ์๋๋๋ค.
์ธก์ ๊ฐ๊ณผ ์ฌํ ๋ฐฉ๋ฒ:
benchmarks/beir-hybrid์
benchmarks/decisions-as-retrieval.
๋ชจ๋ ์์ด์ ํธ๊ฐ ์ ธ ๋ช ๋ น์ ์คํํ ์ ์๋ ๊ฑด ์๋๋๋ค. ๋ฐ์คํฌํฑ ์ด์์คํดํธ์ ํจ์ ํธ์ถ ํธ์คํธ๋ Model Context Protocol๋ก ๋๊ตฌ์ ์ ๊ทผํ๋ฉฐ, ๋ฐฉ๊ธ ์ค์นํ ๊ทธ ๋ฐ์ด๋๋ฆฌ๊ฐ MCP ์๋ฒ์ ๋๋ค. ๋ด๋ ค๋ฐ์ ๊ฒ๋ ์ปดํ์ผํ ๊ฒ๋ ์์ต๋๋ค:
xerj --insecure --data-dir ~/xerj-data & # 1. ๋๊ตฌ๋ค์ด ์ง์ํ ๋
ธ๋
xerj mcp # 2. MCP stdio ์๋ฒ (ํด๋ผ์ด์ธํธ๊ฐ ์คํ)xerj mcp๋ stdio๋ก MCP๋ฅผ ๋งํ๊ณ XERJ_URL(๊ธฐ๋ณธ http://localhost:9200)์ด ๊ฐ๋ฆฌํค๋ ๋
ธ๋๋ก
ํ๋ก์ํฉ๋๋ค. ๋
ธ๋๋ฅผ ์์ํ์ง๋ ์์ต๋๋ค; 1๋จ๊ณ๊ฐ ์ ํ ์กฐ๊ฑด์
๋๋ค. MCP ์๋ฒ๋ ์์ฒด ์ ๋ขฐ๋ฅผ
์ถ๊ฐํ์ง ์์ต๋๋ค โ ํด๋ผ์ด์ธํธ์๋ stdio, ๋
ธ๋์๋ ํ๋ฌธ HTTP๋ก ๋งํ๋ ๊ฐ์ ๋ฐ์ด๋๋ฆฌ์ด๋ฏ๋ก
๋
ธ๋์ ๊ฒฝ๊ณ๊ฐ ์ค์ํ๊ณ , ์์ 1๋จ๊ณ๋ ๊ฐ์ --insecure ๊ฐ๋ฐ ๋
ธ๋๋ฅผ ๋์๋๋ค. MCP ํด๋ผ์ด์ธํธ
์ค์ ์ ๋ฃ์ผ์ธ์:
{
"mcpServers": {
"xerj": {
"command": "/home/you/.local/bin/xerj",
"args": ["mcp"],
"env": { "XERJ_URL": "http://localhost:9200" }
}
}
}์ ๋ ๊ฒฝ๋ก๋ฅผ ์ฐ์ธ์. ์ค์น ์คํฌ๋ฆฝํธ๋ ๊ธฐ๋ณธ์ ์ผ๋ก xerj๋ฅผ ~/.local/bin์ ๋์ต๋๋ค
(command -v xerj๋ก ํ์ธ), ๋ฐ์คํฌํฑ ์์ด์ฝ์ผ๋ก ์คํ๋ MCP ํธ์คํธ๋ ์
ธ์ PATH๋ฅผ ์์ํ์ง
์์ต๋๋ค. ๋
ธ๋๊ฐ ์ธ์ฆ ์ผ์ง(--insecure ์ธ์ ๋ชจ๋ ์์)์ด๋ฉด XERJ_URL ์์
"XERJ_AUTH": "ApiKey <key>"๋ฅผ ์ถ๊ฐํ์ธ์; ํค๋ <data-dir>/admin.key์ ์์ต๋๋ค.
26๊ฐ ํด๋ผ์ด์ธํธ๊ฐ xerj mcp๋ฅผ ๋ก์ปฌ stdio ์๋ฒ๋ก ๋ฑ๋กํ ์ ์์ต๋๋ค. ํญ๋ชฉ์ ํญ์ ๊ฐ์ ๋ ํ๋ โ
๋ฐ์ด๋๋ฆฌ์ ์ ๋ ๊ฒฝ๋ก์ ์ ์ผํ ์ธ์ mcp โ ์ง๋ง, ๊ทธ ํญ๋ชฉ์ด ์ด๋์ ์ฌ๋์ง, ์ด๋ค ํค๋ก ๊ฐ์ธ์ง๋์ง๋
ํด๋ผ์ด์ธํธ๋ง๋ค ๋ค๋ฆ
๋๋ค. tested๋ ํด๋น ํด๋ผ์ด์ธํธ์์ ์๋ฒ๋ฅผ ๋ฑ๋กํ๊ณ xerj_search๊ฐ ๋๊ตฌ
๋ชฉ๋ก์ ๋ํ๋ ๊ฒ; untested๋ ๊ฒฝ๋ก์ ํํ๋ฅผ ํด๋น ํด๋ผ์ด์ธํธ์ ๊ณต์ ๋ฌธ์์์ ์ฎ๊ฒจ ์ ์๊ณ ์์ง
์๋ฌด๋ ์คํํ์ง ์์๋ค๋ ๋ป์
๋๋ค. ์คํํด ๋ณธ ํ์ ๋์
๋๋ค. OpenCode v2.1.2(Windows)๋ฅผ
xerj v1.0.0-rc.97์ ๋ํด ์คํํ๊ณ , initialize์ tools/list์ ์ ์ฒด ๋๊ตฌ ๋ชฉ๋ก์ผ๋ก
์๋ตํ์ต๋๋ค. Cline CLI 3.0.73(Linux)์ xerj v1.0.0-rc.98์ ๋ํด ์คํํ์ต๋๋ค. ์ด ์ ์
mcpServers ๋ธ๋ก์ ~/.cline/data/settings/cline_mcp_settings.json์ ๋ฃ์ xerj_search
(Cline์ด ๋ชจ๋ธ์ ๋๊ธธ ๋ ์ด๋ฆ์ xerj__xerj_search)๊ฐ ๊ทธ ๋ฐ์ด๋๋ฆฌ์ ๋๊ตฌ 20๊ฐ ๋ชฉ๋ก์ ๋ํ๋ฌ๊ณ ,
Cline์ด xerj_search ํธ์ถ ํ ๋ฒ์ ์คํํ์ต๋๋ค. ๊ณต๊ธ์ ํค๊ฐ ์์ด ๋ชจ๋ธ ํด์ ๋ก์ปฌ
OpenAI ํธํ ์คํ
์ด์๊ณ , MCP ์๋ฒ๋ ์ค์ xerj mcp ํ๋ก์ธ์ค์์ต๋๋ค. IDE์ MCP Servers >
Configure ๋ฒํผ์ ๊ทธ ์คํ์ ํฌํจ๋์ง ์์์ต๋๋ค. untested ํ์ ๊ณ ์น๋ ๊ฒ์ ํ์๋ฐ๋ ์ฒซ PR์
๋๋ค.
| ํด๋ผ์ด์ธํธ | ์ค์ ํ์ผ | ํค | ๋น๊ณ | ํ ์คํธ |
|---|---|---|---|---|
| OpenCode | ํ๋ก์ ํธ์ opencode.json ๋๋ ~/.config/opencode/opencode.json |
mcp.servers |
์ปค๋งจ๋ ๋ฐฐ์ด ํ๋, env๊ฐ ์๋ environment, ํ๋ก์ ํธ ๋ฃจํธ ํ์ |
tested |
| Claude Code | .mcp.json(ํ๋ก์ ํธ) ๋๋ ~/.claude.json(์ฌ์ฉ์); claude mcp add๊ฐ ๋ ๋ค ์์ฑ |
mcpServers |
์ปค๋งจ๋ ์์ -- ํ์ |
untested |
| Cursor | ํ๋ก์ ํธ์ .cursor/mcp.json ๋๋ ~/.cursor/mcp.json |
mcpServers |
stdio์๋ type ๋ถํ์ |
untested |
| Codex | ~/.codex/config.toml ๋๋ ์ ๋ขฐ๋ ํ๋ก์ ํธ์ .codex/config.toml |
[mcp_servers.xerj] |
JSON์ด ์๋ TOML | untested |
| Gemini CLI | .gemini/settings.json ๋๋ ~/.gemini/settings.json |
mcpServers |
ํด๋๋ฅผ gemini trustํด์ผ ํจ, ์ ๊ทธ๋ฌ๋ฉด Disconnected ํ์ |
untested |
| GitHub Copilot in VS Code | .vscode/mcp.json |
servers |
"type": "stdio" ํ์; ํฌํฐ๋ธ .mcp.json์ mcpServers ์ฌ์ฉ |
untested |
| Windsurf | %APPDATA%\devin\mcp_config.json, ~/.config/devin/mcp_config.json |
mcpServers |
๊ฒฝ๋ก๋ ์ด์ ~/.codeium/windsurf๊ฐ ์๋ Devin ๊ฒ |
untested |
| Claude Desktop | %APPDATA%\Claude\claude_desktop_config.json, ~/Library/Application Support/Claude/claude_desktop_config.json, ~/.config/Claude/claude_desktop_config.json |
mcpServers |
์ฐฝ๋ง ๋ซ์ง ๋ง๊ณ ์ฑ์ ์์ ํ ์ข ๋ฃ | untested |
| Cline | ~/.cline/data/settings/cline_mcp_settings.json (CLI); IDE๋ MCP Servers > Configure์์ ์ด๊ธฐ |
mcpServers |
disabled์ autoApprove๋ Cline ์ ์ฉ; ์ด๋ฒ CLI ์คํ์๋ ํ์ ์์์ |
tested |
| Roo Code | ํ๋ก์ ํธ์ .roo/mcp.json ๋๋ <VS Code User>/globalStorage/rooveterinaryinc.roo-cline/settings/mcp_settings.json |
mcpServers |
์ด๋ฆ ์ถฉ๋ ์ ํ๋ก์ ํธ ํญ๋ชฉ์ด ์ฐ์ | untested |
| Kilo Code | ํ๋ก์ ํธ์ kilo.jsonc ๋๋ .kilo/kilo.jsonc, ์ ์ญ์ ~/.config/kilo/kilo.jsonc |
mcp |
OpenCode์ฒ๋ผ ์ปค๋งจ๋ ๋ฐฐ์ด ํ๋ | untested |
| Continue | ~/.continue/config.yaml ๋๋ .continue/mcpServers/์ ์๋ฌด ํ์ผ |
mcpServers |
๋งต์ด ์๋ YAML ๋ฆฌ์คํธ; Agent ๋ชจ๋๋ง | untested |
| Zed | ~/.config/zed/settings.json (Windows์์๋ zed: open settings file ์คํ) |
context_servers |
ํค๊ฐ mcpServers๊ฐ ์๋ |
untested |
| JetBrains AI Assistant | ์ค์ UI๋ง: Settings > Tools > AI Assistant > Model Context Protocol | mcpServers |
Junie์ ๋ณ๊ฐ ์ ์ฅ์ | untested |
| Junie | ํ๋ก์ ํธ์ .junie/mcp/mcp.json, ์ฌ์ฉ์๋ ~/.junie/mcp/mcp.json |
mcpServers |
์ค๋๋ ๊ธ์ mcp/ ํด๋๊ฐ ๋น ์ ธ ์์ |
untested |
| Amp | ~/.config/amp/settings.json, ์ํฌ์คํ์ด์ค์ .amp/settings.json ๋๋ amp mcp add |
amp.mcpServers |
ํค๊ฐ amp. ์ ๋์ฌ๋ฅผ ์ ์ง |
untested |
| Goose | ~/.config/goose/config.yaml, %APPDATA%\Block\goose\config\config.yaml |
extensions |
command๊ฐ ์๋ cmd, YAML |
untested |
| Kiro | ์ํฌ์คํ์ด์ค์ .kiro/settings/mcp.json, ์ฌ์ฉ์๋ ~/.kiro/settings/mcp.json |
mcpServers |
${VAR} ํ์ฅ์ ์น์ธ ํ์ |
untested |
| Antigravity | ~/.gemini/config/mcp_config.json ๋๋ ์ํฌ์คํ์ด์ค์ .agents/mcp_config.json |
mcpServers |
์๊ฒฉ ์๋ฒ๋ serverUrl ์ฌ์ฉ |
untested |
| OpenClaw | ~/.openclaw/openclaw.json (JSON5) |
mcp.servers |
transport: "stdio" |
untested |
| DeepSeek Harness (dsh) | $DSH_HOME/cordis.patch.yml ๋๋ ํ๋กํ ํจ์น |
@deepseek-ai/dsh-mcp-client๊ฐ ์๋ - insert: |
์๋ฒ๋น ํ๋ฌ๊ทธ์ธ ์ธ์คํด์ค ํ๋ | untested |
| Warp | Settings > Agents > MCP servers ๋๋ ~/.warp/.mcp.json๊ณผ ํ๋ก์ ํธ์ .warp/.mcp.json |
mcpServers |
cwd๊ฐ ์๋ working_directory |
untested |
| Augment Code | Auggie CLI๋ ~/.augment/settings.json; IDE๋ ์์ฒด ํจ๋ ์ฌ์ฉ |
mcpServers |
๊ทธ ํ์ผ์ IDE๋ฅผ ๊ตฌ๋ํ์ง ์์ | untested |
| Qwen Code | ~/.qwen/settings.json ๋๋ ํ๋ก์ ํธ์ .qwen/settings.json |
mcpServers |
mcp.allowed๊ฐ ์กฐ์ฉํ ์จ๊ธธ ์ ์์ |
untested |
| Kimi CLI | ~/.kimi-code/mcp.json ๋๋ ํ๋ก์ ํธ์ .kimi-code/mcp.json |
mcpServers |
๋ณด๊ด๋ ~/.kimi/mcp.json์ด ์๋ ํ์ฌ Kimi Code CLI |
untested |
| Grok CLI | ~/.grok/config.toml ๋๋ ํ๋ก์ ํธ์ .grok/config.toml |
[mcp_servers.xerj] |
Grok Bot์๋ ๋ก์ปฌ stdio ๋ฑ๋ก ์์ | untested |
Codex์ Grok CLI๋ TOML์ ์ฝ์ผ๋ฏ๋ก ํญ๋ชฉ์ด ํ ์ด๋ธ์ ๋๋ค:
[mcp_servers.xerj]
command = "/abs/path/to/xerj"
args = ["mcp"]OpenCode์ Kilo Code๋ command ๋ฐฐ์ด ํ๋๋ฅผ ๋ฐ์ผ๋ฉฐ, Kilo๋ ํ ๋จ๊ณ ์์ ๊ฐ์ ํํ๋ฅผ ์๋๋ค:
{"mcp": {"servers": {"xerj": {"type": "local", "command": ["/abs/path/to/xerj", "mcp"], "environment": {"XERJ_URL": "http://localhost:9200"}}}}}{"mcp": {"xerj": {"type": "local", "command": ["/abs/path/to/xerj", "mcp"]}}}Continue์ Goose๋ YAML์ ์ฝ์ต๋๋ค:
# ~/.continue/config.yaml
mcpServers:
- name: xerj
command: /abs/path/to/xerj
args:
- mcp# ~/.config/goose/config.yaml
extensions:
xerj:
type: stdio
cmd: /abs/path/to/xerj
args:
- mcp
enabled: trueAmp๋ ํค์ ๋ค์์คํ์ด์ค๋ฅผ ์ ์งํ๊ณ , VS Code์ Copilot์ servers์ ํธ๋์คํฌํธ๊ฐ ํ์ํ๋ฉฐ,
Zed๋ ์ด๋ค์ ์ปจํ
์คํธ ์๋ฒ๋ผ ๋ถ๋ฅด๊ณ , OpenClaw๋ mcp ์๋์ ์ค์ฒฉํฉ๋๋ค:
{"amp.mcpServers": {"xerj": {"command": "/abs/path/to/xerj", "args": ["mcp"]}}}{"servers": {"xerj": {"type": "stdio", "command": "/abs/path/to/xerj", "args": ["mcp"]}}}{"context_servers": {"xerj": {"command": "/abs/path/to/xerj", "args": ["mcp"], "env": {}}}}{mcp: {servers: {xerj: {command: "/abs/path/to/xerj", args: ["mcp"], transport: "stdio"}}}}DeepSeek Harness๋ $DSH_HOME/cordis.patch.yml ๋๋ ํ๋กํ ํจ์น $DSH_HOME/profiles/<profile>/cordis.patch.yml์์ MCP ์๋ฒ ํ๋๋ฅผ ํ๋ฌ๊ทธ์ธ ํ๋๋ก ๋ถ๋ฌ์ต๋๋ค. ๊ทธ ํ์ผ์ด []๋ฟ์ด๋ฉด ๋ฐฐ์ด ์๋์ ๋ถ์ด์ง ๋ง๊ณ ์๋ ๋ธ๋ก์ผ๋ก ๋ฐ๊ฟ๋๋ค. [] ์๋์ ๋ถ์ด๋ฉด ์ฌ๋ฐ๋ฅธ YAML์ด ์๋๋๋ค. env์ cwd๋ stdio์ ์ ํ ํ๋์
๋๋ค(args ๊ธฐ๋ณธ๊ฐ [], env ๊ธฐ๋ณธ๊ฐ {}, cwd ๊ธฐ๋ณธ๊ฐ ""). ๋
ธ๋๊ฐ --insecure๋ก ๋์ง ์์ผ๋ฉด env ์๋์ XERJ_AUTH: "ApiKey <key>"๋ฅผ ๋ฃ์ต๋๋ค:
# $DSH_HOME/cordis.patch.yml
- insert:
- id: mcp-xerj
name: '@deepseek-ai/dsh-mcp-client'
config:
serverName: xerj
transport: stdio
command: xerj
args:
- mcp
env:
XERJ_URL: "http://localhost:9200"
cwd: ""์๋ ๋ชฉ๋ก์ ํ๋ณด ์ธ ๊ฐ๋ ์๋์ ์ผ๋ก ๋น ์ ธ ์์ต๋๋ค. Aider๋ MCP ํด๋ผ์ด์ธํธ ์ง์์ด ์์
์์ต๋๋ค(Aider-AI/aider#3314์ด ์ฌ์ ํ ์ด๋ ค
์์). T3 Code๋ ๋ฐ๋ ๋ฐฉํฅ์
๋๋ค: ๋ค๋ฅธ ์์ด์ ํธ๊ฐ ์ ์ํ๋ MCP ์๋ํฌ์ธํธ๋ฅผ ํธ์คํ
ํ๋ฉฐ, ์ธ์
์
๊ทธ ์๋ ํ๋ค์ค์์ ์๋ฒ๋ฅผ ์์๋ฐ์ต๋๋ค. Grok Bot์๋ ๋ฌธ์ํ๋ ๋ก์ปฌ stdio ๋ฑ๋ก์ด ์์ต๋๋ค;
Grok CLI์๋ ์์ผ๋ฉฐ, ๊ทธ๊ฒ์ด ์์ grok ํ์
๋๋ค.
์ค๋ฌผ ๊ฐ์ ๋๊ตฌ๊ฐ ๋ ธ์ถ๋ฉ๋๋ค. ์ดํ ๊ฐ๋ XERJ๊ฐ ์ด๋ฏธ ์๋นํ๋ ์๋ํฌ์ธํธ์ ์์ ํ๋ก์์ ๋๋ค:
| ๋๊ตฌ | ํ๋ ์ผ |
|---|---|
xerj_search |
์ธ๋ฑ์ค์ ๋ํ ES query-DSL ๊ฒ์ |
xerj_semantic_search |
semantic_text ํ๋์ ๋ํ ์๋ฏธ ๊ฒ์, ์ง์๋ ์๋ฒ ์ชฝ์์ ์๋ฒ ๋ฉ (๋
ธ๋๊ฐ --embed-mode neural๋ก ์คํํ์ง ์๋ ํ ๊ธฐ๋ณธ ์๋ฒ ๋๋ ๋ด๋ฐ์ด ์๋ ์ดํ feature-hashing) |
xerj_vector_search |
dense_vector ํ๋์ ๋ํ kNN |
xerj_hybrid_search |
ํ์ ์ง์๋ค์ RRF ๋๋ ์ ํ ์ตํฉ |
xerj_memory_store / xerj_memory_recall |
๋ค์์คํ์ด์ค์ ์์์ ์์ด์ ํธ ๋ฉ๋ชจ๋ฆฌ, ํ ์คํธยท์๋ฏธยท๋ฒกํฐ๋ก ์ฌ์ํ |
xerj_brain_overview / xerj_brain_ego / xerj_brain_link / xerj_brain_unlink |
์ธ์ปจ๋ ๋ธ๋ ์ธ ๋งํฌ ์ธ๋ฑ์ค: ๋ฐฉํฅ ์ก๊ธฐ, ํ ๋ ธ๋์ ๊ทผ๊ฑฐ ๊ธฐ๋ฐ ์ด์ ํ์ฅ, ๋งํฌ ์ถ๊ฐยท์ ๊ฑฐ |
xerj_plan |
์ผ์ ์ธ์ด ํํฐ๋ฅผ ๋ฐ์ ๊ฒ์ฆ๋ query DSL ์ถ๋ ฅ (POST /_ask; ๊ฒฐ์ ์ ์ด๊ณ ๊ท์น ๊ธฐ๋ฐ, LLM ์๋) |
xerj_search์์ {"prefix":"project","query":"retry policy"}๋ฅผ ๋๊ธฐ๋ฉด project-*๋ฅผ
๊ฒ์ํ๋ฉฐ, xerj search --prefix project์ ์ผ์นํฉ๋๋ค. ๋ช
์์ ์ธ๋ฑ์ค ์ด๋ฆ์ด๋ ํจํด์ index๋ก
๋๊ธฐ์ธ์; ๋น์ด ์์ง ์์ index์ prefix๋ ํจ๊ป ์ธ ์ ์์ต๋๋ค. prefix๋ ๋ค๋ฌ์ด์ง๊ณ (trim)
๋น์ด ์์ผ๋ฉด ์ ๋ฉ๋๋ค. ๋ ๋ค ์์ผ๋ฉด ๋๊ตฌ๋ ax-*๋ฅผ ๊ฒ์ํฉ๋๋ค.
๋ ๊ฐ๋ ๋จ์ ํ๋ก์๊ฐ ์๋๋๋ค: xerj_map์ autoindex ์นดํ๋ก๊ทธ์์ ์ธ๋ฑ์ค๋ณ ํ๋ ๋งต์
๋๋ ค์ฃผ๊ณ (๋ฐ์ดํธ ์ํ์ผ๋ก ์๋ฆฐ ๊ฒ ์ธ์๋ ๊ทธ๋๋ก), xerj_code_search๋ xerj code
๋ ํผ๋ฐ์ค ์ฝ๋ฉ ํ์ดํ๋ผ์ธ(tools/xerj-code/)์ ์คํํด ๋ ๋๋ง๋ ํ
์คํธ๋ฅผ
๋๋ ค์ค๋๋ค. xerj_index_budget์ xerj autoindex๊ฐ ํด์ฑํ๊ธฐ ์ ์ ํด๋๋ฅผ ์ธ๊ณ ๋
ธ๋์ ๋์คํฌ
์์ฐ ๋๋น ์์ธ ํฌ๊ธฐ๋ฅผ ์ถ์ ํฉ๋๋ค(์์ธ์ ํ์ง ์์ต๋๋ค). xerj_autoindex_remove๋ ๋ชฉ๋ก ํ์ธ ํ
autoindex๋ ํด๋ ํ๋๋ฅผ ์ ๊ฑฐํ๋ฉฐ, confirm์ด true๊ฐ ์๋๋ฉด ์๋ฌด๊ฒ๋ ์ญ์ ํ์ง ์์ต๋๋ค.
xerj_corpus_feedback์ ํ๋ธ ์ฝํผ์ค๋ฅผ ํ๊ฐํฉ๋๋ค. xerj_field_report๋ ์ฌ์ฉ ํ๊ธฐ๋ฅผ ์ ์ถํ๊ณ ,
xerj_hub_find, xerj_hub_def, xerj_hub_ask๋ ๋จธ์ ์ ์ด๋ฏธ ์๋ Corpus Hub ํฉ์์
๋ตํฉ๋๋ค(xerj ask ํ๋ฆ).
xerj mcp --help๋ ๊ฐ์ ์ค์ ๋ธ๋ก๊ณผ ์ ์ฒด ์ต์
๋ชฉ๋ก์ ์ถ๋ ฅํฉ๋๋ค. ๊ธฐ๊ณ ํ๋
๊ฐ๋ฅํ ๋๊ตฌ
์คํค๋ง๋ xerj.org/docs/agents/schemas/mcp-tools.json์
๊ณต๊ฐ๋์ด ์์ผ๋ฉฐ, ์ด์ ์๋ tools/list์์ ์์ฑ๋๊ณ (์์์
์์ฑ ์๋) CI
(scripts/mcp-schema-check.sh)์ ๋จ์ ํ
์คํธ๋ก ๋ณดํธ๋๋ฏ๋ก ๊ณต๊ฐ ๋ชฉ๋ก์ด ์๋น๋๋ ๋ชฉ๋ก์์
์ด๊ธ๋ ์ ์์ต๋๋ค.
์์ด์ ํธ๋ ํ์ผ์ ์ฝ์ผ๋ฉฐ ์ปจํ ์คํธ ์ฐฝ์ ํ์๋๋ค. WordPress ์ฝ์ด์ PHP๋ ์ฝ 520๋ง ํ ํฐ, ์ฆ ์ปจํ ์คํธ ์ฐฝ 26๊ฐ ๋ถ๋์ด๋ผ ์์ด์ ํธ๊ฐ ํต์งธ๋ก ์ฝ์ ์ ์์ต๋๋ค. grep๋ ํด๊ฒฐ์ฑ ์ด ์๋๋๋ค. grep ํํธ๋ ํ ์ค์ด๊ณ , ๊ทธ ์ค์ ํ๋จํ๋ ค๋ฉด ํ์ผ ์ ์ฒด๋ฅผ ์ด์ด์ผ ํ๋๊น์.
์ธ๋ฑ์ค์ ์ง์ํ๋ฉด ์ง๋ฌธ๋น ํฌ๋ก๋ฐ์ดํธ ์์ค์ผ๋ก ๋ญ๋๋ค. WordPress ์ฝ์ด AI ๋ณด์ ๊ฐ์ฌ์์ ์์ด์ ํธ๊ฐ PHP ํ์ผ 1,492๊ฐ์ ๊ฑธ์ณ ์์ ํ๋ฉฐ ์ฝ 26,000 ํ ํฐ์ ์ผ์ต๋๋ค. ํธ๋ฆฌ์ ์ฝ 0.5%๋ฅผ ๋ถ๋ฌ์ค๋ ๋ฐ ๋๋ ์์ ๋๋ค.
- ๋ ํผ๋ฐ์ค ์ฝ๋ฉ: ์ 6D74 ฝ๋ฉ ์์ด์ ํธ๊ฐ ๋ค์ ์ ๋ํ๋ ๋์ ๋๋ฅ ํ๋ก์ ํธ์ ๊ธฐ์กด ํด๋ฒ์ ๊ฒ์. grep ๊ธฐ๋ฐ ์ฝ๋ฉ ๋๋น ์ถ๋ ฅ ํ ํฐ 2.7๋ฐฐ ์ ๊ฐ ์ธก์ (๊ธฐ์ต๋ง ๋๋น 26๋ฐฐ); ์ค๋ฌด์์ ์ฌ์ฉ์ ๋ณด๊ณ ์ฝ 5๋ฐฐ.
- ์ฝ๋ ๊ฒ์๊ณผ ๋ณด์ ๊ฐ์ฌ: AST ์ธ์ ์์ธ์ผ๋ก ์์ด์ ํธ๊ฐ ์ค์ด ์๋ ํจ์๋ฅผ ์ฐพ์ต๋๋ค.
- AI ๊ฒ์๊ณผ RAG: ์ ๋ฌธ, ๋ฒกํฐ, ํ์ด๋ธ๋ฆฌ๋ ๊ฒ์์ ํ ์ง์๋ก, ๋ณ๋ ๋ฒกํฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ด.
- ์์ด์ ํธ ๋ฉ๋ชจ๋ฆฌ: ์๊ธฐ ๋ฌธ์ ์ ์ง์ ๊ทธ๋ํ๋ก ์์์ ์ฌ์ํ.
- ๋ก๊ทธ ๋ถ์๊ณผ ๊ด์ธก์ฑ: ๋ก๊ทธ, ๋ฉํธ๋ฆญ, ํธ๋ ์ด์ค๋ฅผ ํ ์์ง์์.
- Elasticsearch ๋์ฒด: ๊ฐ์ ํต์ ํ๋กํ ์ฝ, ๋ฐ์ด๋๋ฆฌ ํ๋.
์คํ ๊ฐ๋ฅํ ์์ ๋ recipes/์ docs/examples/์ ์์ต๋๋ค.
XERJ๋ Elasticsearch REST API๋ฅผ ๊ตฌํํฉ๋๋ค: ์ธ๋ฑ์ค, ๋ฌธ์, bulk, ๊ฒ์, ์ง๊ณ, ๋งคํ, kNN,
scroll, reindex, _cat ์๋ํฌ์ธํธ. Kibana์ ๊ณต์ ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ง์ ์ฐ๊ฒฐ๋ฉ๋๋ค.
๋ด๋ณด๋ด๊ธฐ ๋๊ตฌ๋ฅผ ์ฐ๊ฒฐํ๊ธฐ ์ ์ ์์๋ ๊ฒฝ๊ณ ํ๋: scroll์ ์ธ๊ทธ๋จผํธ๋ฅผ ์ํํ๋ ์ปค์๊ฐ ์๋๋ผ
๋ฏธ๋ฆฌ ์ ํด์ง ํฌ๊ธฐ์ ์ค๋
์ท์ด๋ผ, ์ ํํ ์ด๋์ด ์ค๋
์ท ์ฐฝ์ ๋๋ ์ง์๋ ์กฐ์ฉํ ์๋ฆฌ๋ ๋์
400์ผ๋ก ๊ฑฐ๋ถ๋ฉ๋๋ค. ์ด๋ค ํฌ๊ธฐ์ ๊ฒฐ๊ณผ๋ search_after๋ฅผ ์ฐ์ธ์
(์ํ).
์ ํฉ์ฑ ์ค์ํธ๊ฐ ๋งค ์ปค๋ฐ๋ง๋ค ์คํ๋๋ฉฐ ํ์ฌ 1454๊ฑด ์ค 1444๊ฑด์ ํต๊ณผํฉ๋๋ค. ์ค์ํธ๋
engine/tests/es-compat-yaml์ ์๊ณ , ๋จ์ ๊ฐ๊ทน์ ์จ๊ธฐ์ง
์๊ณ ๊ฑฐ๊ธฐ์ ๋์ด๋์ด ์์ต๋๋ค. XERJ๋ API์ ํธํ๋ฉ๋๋ค. Elasticsearch ๋ด๋ถ์ ์ฌ๊ตฌํ์ด ์๋๋ฉฐ
ํฌํฌ๋ ์๋๋๋ค.
XERJ๋ Elasticsearch 8.13.4์ ์์ง, ์ ๋ฌธ ๊ฒ์, ์ง๊ณ, ๋ฒกํฐ ๊ฒ์, ๋์ ์ฐ๊ธฐ ํ์ ์ ์ฝ๊ธฐ๋ฅผ ๋ง๋๊ณ ๋ฒค์น๋งํฌ๋ฉ๋๋ค. ์ต๊ทผ ํ์ ๋ฃจํ ์คํ์ 55์น 26๋ฌด 4ํจ์ด๋ฉฐ, ์์ง ์ฒ๋ฆฌ๋ 1.72๋ฐฐ, ์จ๋์คํฌ ํฌ๊ธฐ 1.61๋ฐฐ ์ถ์๋ฅผ ํฌํจํฉ๋๋ค.
4ํจ๋ ๋ชจ๋ ๊ฐ์ ๊ฐ๊ทน์
๋๋ค: ๊ณ ์ ์ฐ๊ธฐ๊ฐ ๋ ๋์ ์ฝ๊ธฐ p99. ๋น ๋จ๋ฆฌ์ง ์๊ณ
์ ์ฒด ๊ธฐ๋ก์ผ๋ก ๋จ๊ฒจ๋์ต๋๋ค.
๊ฒฐ๊ณผ, ๋ฐฉ๋ฒ๋ก , ํ๋์ค๋ xerj.org/benchmarks์
demo/playbooks์ ์์ผ๋ฏ๋ก ์ง์ ๋ค์ ์คํํ ์ ์์ต๋๋ค. ์ฌํํ ์ ์๋
์ซ์๋ โ ์ฐ๋ฆฌ ๊ฒ ํฌํจ โ ํ์์ ์ผ๋ก ๋ณด์ธ์.
์์ค ํ์ผ์ tree-sitter๋ก ํ์ฑ๋์ด AST ์ธ์์ผ๋ก ์์ธ๋ฉ๋๋ค โ ์ฌ๋ณผ + ์ ๋ฌธ โ ๊ทธ๋์ ์์ด์ ํธ๊ฐ ์ค์ด ์๋ ํจ์๋ฅผ ๊ฒ์ํฉ๋๋ค. Apache Lucene ์ฒดํฌ์์(์์ค ํ์ผ 6,113๊ฐ, 51 MB)์์ ๋จ์ผ ์ค๋ ๋ ์ธํ๋ก์ธ์ค ์ถ์ถ์ด **์ด๋น ์ฝ 1,500ํ์ผ(13 MB/s)**๋ก ์คํ๋ฉ๋๋ค; tree-sitter ํ์ฑ์ด ๊ทธ์ค ์ฝ 72%๋ก ํ์ผ๋น ํํ์ ๋๋ค. ์ฌํ:
XERJ_EXTRACT_BENCH=/path/to/repo cargo test -p xerj-autoindex --release \
extract_bench -- --nocapture --ignored์ฌ์์ธ์ ์ฆ๋ถ์ ๋๋ค: ๋ง์ง๋ง ์์ธ ์ธ๋์ ๋ฐ์ดํธ๊ฐ ๋์ผํ ํ์ผ์ ํ์ฑ์ ์์ ํ ๊ฑด๋๋ฐ๊ณ ์ปค๋ฐ๋ ๊ฒฐ๊ณผ๋ฅผ ๊ทธ๋๋ก ๊ฐ์ ธ๊ฐ๋ฏ๋ก, ๋ช ๊ฐ ํ์ผ์ ๊ณ ์น ๋ค ์ฌ์คํํ๋ฉด ์ ์ฅ์ ์ ์ฒด๊ฐ ์๋๋ผ ๋ฐ๋ ๋ถ๋ถ์ ๋น๋กํ ์์ ์ ํฉ๋๋ค โ ํํ ์์ -์ฌ์คํ / CI ์ผ์ด์ค๋ก ๋ณดํต 95% ์ด์์ด ๋ณํ ์์. ๋ณ๊ฒฝ ๊ฒ์ง๋ฅผ ์ํด ์ ์ฒด ์ฝํ ์ธ ํด์๋ ์ฌ์ ํ ๋์๊ฐ๋ฏ๋ก, ์ด ์ฌ์์ธ ์๊ฐ์ ํํ์ ํ์ฑ์ด ์๋๋ผ ํด์ฑ์ ๋๋ค.
์์ ๋ฒ์ Rust ํด์ฒด์ธ์ด ํ์ํฉ๋๋ค.
git clone https://github.com/xerj-org/xerj
cd xerj/engine
cargo build --release -p xerj-server
./target/release/xerj --insecure --data-dir ~/xerj-data์คํ ์ค์ธ ์๋ฒ์ ์ ํฉ์ฑ ์ค์ํธ๋ฅผ ๋๋ฆฌ๋ ค๋ฉด:
cargo run --release -p es-yaml-runner -- --dir tests/es-compat-yaml/yaml- ๊ฐ์ด๋์ API ๋ ํผ๋ฐ์ค
- ์ผ๋ฐ ์์ ์ฉ ๋ ์ํผ
- ๋ก๋๋งต: ์ค๋ ์ ๊ณต๋๋ ๊ฒ๊ณผ ๋ค๊ฐ์ฌ ๊ฒ, ๋ฆด๋ฆฌ์ค ๋ฐ์ด๋๋ฆฌ ๋๋น ๊ฒ์ฆ๋จ. ๋ฆด๋ฆฌ์ค๋ณ ๋ณด๊ธฐ: ๋ง์ผ์คํค; ์ค์๊ฐ ์ํ: ํ๋ก์ ํธ ๋ณด๋; ์์ ์๋ด: ๊ณ ์ ๋ก๋๋งต ์ด์
- ๋ณ๊ฒฝ ๋ก๊ทธ
๊ฐ๋ณ ํ์ ์์คํ ์ ๋ ํผ๋ฐ์ค ํ์ด์ง. ์์ค๋ฅผ ๊ธฐ์ค์ผ๋ก ์์ฑ๋์๊ณ ๊ฐ๊ฐ์ด ํ์ง ์๋ ํ๊ณ๋ฅผ ํฌํจํฉ๋๋ค:
- ์ธ์ปจ๋ ๋ธ๋ ์ธ: ์์ธ๋ ๋ฌธ์ ์์ ๊ด๊ณ ๋ ์ด์ด โ
/_graph๋ผ์ฐํธ, ๋งํฌ์ ๊ทผ๊ฑฐ, ์ฌ๋ ๊ฐ ๋ํ ํฐ, ํฌํ(two-hop) ์ํ. - ์ฝ์ ๋ฆฌ๋: ์ฝ์์ ์ฝํผ์ค ํ, ๋ชจ๋ ๋ ์ฝ๋(์ฒจ๋ถ ํ์ผ์ด ์๋ ๋ฉ์ผ, PDF ํ์ด์ง)๋ฅผ ์ํ ๋ฆฌ๋, ์ฝ๊ธฐ ์ ์ฉ ๊ฒ์คํธ ๋ชจ๋, ์ ๋์ ๋ฌธ์๋ฅผ ๋ฌด๋ ฅํ๊ฒ ์ ์งํ๋ ๋ ๋๋ง ๊ท์น๊ณผ ๋ ๋๋งํ์ง ์๋ ๊ฒ๋ค.
- ์คํฌ๋ฆฝํ : Painless ํ์ ์งํฉ, ์คํฌ๋ฆฝํธ๊ฐ ์คํ๋๋ ๊ณณ, ์ด๋ฅผ ์ ํํ๋ ๋ฆฌ์์ค ํ๊ณ.
- ์ค๋ ์ท๊ณผ ๋ณต์: ์ง์๋๋ ์ค๋ ์ท API ํ์ ์งํฉ๊ณผ ๋ณต์์ด ๋์ฒดํ๋ ๊ฒ.
- ๊ณต์ :
xerj shareโ ๋งํฌ์ ํจ์ค์ฝ๋๋ก ์์ธ๋ ํด๋ ํ๋์ ๋ํ ์ฝ๊ธฐ ์ ์ฉ ๊ฒ์คํธ ์ ๊ทผ, ๊ฒ์คํธ๊ฐ ๋ฟ์ ์ ์๋ ๊ฒ๊ณผ ์๋ ๊ฒ, ์ํ ๋ชจ๋ธ. - ๋ณด์ ๋ชจ๋ธ: ์ธ์ฆ, ์์ฝ๋
.xerj-memory-*๋ค์์คํ์ด์ค, API ํค, ๊ฐ์ ๋์ง ์๋ ๊ฒ๋ค. - ๋ฆฌ๋ญํน: ์ ํ์
rerank๊ฒ์ ๋จ๊ณ โ ์ธ๋ถ ์ฌํ์ด ๋ณด์ ๋ ํ๋ฅ ๋ก ์์ ํํธ๋ฅผ ์ฌ์ ๋ ฌํฉ๋๋ค. ๋ฌธ์ ํ ์คํธ๋ฅผ ๋ ธ๋ ๋ฐ์ผ๋ก ๋ณด๋ด๋ ์ ์ผํ ๊ฒ์ ์์ ๊ธฐ๋ฅ์ ๋๋ค(ํ๋ก์ ์๋ฒ ๋ฉ๊ณผ WAL ํญ๋ ์ด์์๊ฐ ์ค์ ํ๋ฉด ํ ์คํธ๋ฅผ ๋ณด๋; ํด๋น ํ์ด์ง๋ ๋ ธ๋๊ฐ ์ด ์ ์๋ ๋ชจ๋ ์์๋ฐ์ด๋ ์ฐ๊ฒฐ์ ๋์ด), ์ด์์๊ฐ ์ค์ ํ ์ ๊ณต์ ํค๊ฐ ํ์ํ๋ฉฐ, ์ค์ ๋ชจ๋ธ์์์ ๋ญํน ํ์ง์ ๊ฒ์ฆ๋์ง ์์์ต๋๋ค. - XERJ vs Lucene 10.3.1: ์ ์ฅ์์ ๊ฒ์ ์ค๊ณ์ ์ฌ์ฏ ์ถ ๋น๊ต, ์์ค๋ฅผ ๊ณ ์ ํ์ฌ ์์ฑ.
์ฌ๋๊ณผ AI ์์ด์ ํธ ๋ชจ๋์ ํ ๋ฆฌํ์คํธ๋ฅผ ํ์ํฉ๋๋ค; ์์
์ปค๋ฎค๋ํฐ ์ฐธ์ฌ๋ฅผ ๋ณด์ธ์. ๊ธฐ๋ณธ ๊ธฐ์ฌ๋ ์งง์ ์ฌ์ฉ ํ๊ธฐ ํ๋์
๋๋ค:
user-feedback/16-agent-field-reports/์ ๋งํฌ๋ค์ด
ํ์ผ ํ๋๋ฅผ ์ถ๊ฐํ๋ ์ผ๋ฐ gh pr create. ์ฌ์ฉ ํ๊ธฐ๋ง ๋ด์ PR์ CLA ๋ฉด์ ๋ผ ์๋ช
์์ด ๋ณํฉ๋ฉ๋๋ค.
์ฝ๋ ๋ณ๊ฒฝ์ ์ํฌํ๋ก์ฐ๋ฅผ CONTRIBUTING.md์์, ๊ธฐ์ฌ์ ๋ผ์ด์ ์ค ๊ณ์ฝ์ CLA.md์์ ๋ณด์ธ์. ๊ณ์ฝ์ PR๋น์ด ์๋๋ผ ๊ธฐ์ฌ์๋น ์๋ช ํ๋์ ๋๋ค. PR์ ์ฌ๋ ์์ด์ ํธ๋ ์์ด์ ํธ๊ฐ ์์ฑํ์์ ๋ฐํ๊ณ AGENTS.md / .github/AI_CONTRIBUTIONS.md๋ฅผ ๋ฐ๋ผ์ผ ํฉ๋๋ค.
๋ฒ๊ทธ์ ๊ธฐ๋ฅ ์์ฒญ์ GitHub ์ด์๋ก ๋ณด๋ด์ธ์.