agentcairn MCP Server
ทางการหน่วยความจำเอเจนต์แบบ Local-first: คลัง Obsidian ในรูปแบบ Markdown ธรรมดาเป็นแหล่งข้อมูลหลัก พร้อมดัชนี DuckDB ที่สามารถสร้างใหม่ได้สำหรับการเรียกค้นแบบผสมผสาน BM25 + เวกเตอร์ + กราฟ
เอกสาร
🪨 agentcairn
หน่วยความจำแบบโลคอลเฟิร์สสำหรับเอเจนต์ AI — ที่คุณอ่าน แก้ไข และเป็นเจ้าของได้จริง
cairn /kɛən/ · คำนาม — กองหินที่ตั้งขึ้นเพื่อบอกทางหรือสถานที่ที่ควรค่าแก่การจดจำ ทิ้งไว้ให้ผู้ที่ตามมาทีหลัง
agentcairn มอบหน่วยความจำที่คงทนและมีคุณภาพสูงให้กับเอเจนต์เขียนโค้ดของคุณ — แต่แทนที่จะล็อกไว้ในฐานข้อมูลทึบแสงหรือบริการคลาวด์ ความทรงจำของคุณจะอยู่ในรูปแบบ Markdown ธรรมดาภายใน Obsidian vault ที่คุณเป็นเจ้าของ ดัชนี DuckDB ที่รวดเร็วและสร้างใหม่ได้จะอยู่ด้านบนเพื่อการค้นคืน เปิด vault ของคุณ อ่านสิ่งที่เอเจนต์จำได้ แก้ไขข้อเท็จจริงที่ผิดด้วยมือ หรือเพิ่มบันทึกของคุณเอง — แล้วเอเจนต์จะรับข้อมูลทั้งหมดนั้นไปใช้
ทำไม agentcairn จึงแตกต่าง
ระบบหน่วยความจำเอเจนต์ส่วนใหญ่ทำให้ฐานข้อมูลหรือคลาวด์เป็นแหล่งความจริง และปฏิบัติต่อไฟล์ (ถ้ามี) เป็นเพียงการส่งออกทางเดียว agentcairn กลับด้านสิ่งนั้น:
- 📂 Vault ของคุณคือแหล่งความจริง — ไม่ใช่การส่งออก หน่วยความจำคือ Markdown ที่มนุษย์อ่านได้พร้อม frontmatter และ
[[wikilinks]]แก้ไขใน Obsidian ได้ ดัชนีจะยอมรับการแก้ไขของคุณ - ♻️ ดัชนีสามารถทิ้งได้ DuckDB เป็นแคชที่สร้างใหม่ได้ (
cairn reindex) หน่วยความจำของคุณอยู่รอดจากการอัปเกรดโมเดล ดัชนีเสียหาย การเปลี่ยนแปลง schema หรือการถอนการติดตั้งเครื่องมือ — ข้อมูลไม่สูญหายเลย เพราะความจริงเป็นเพียงไฟล์บนดิสก์ - 🧠 ไม่สูญเสียข้อมูลโดยโครงสร้าง บันทึกฉบับเต็มจะถูกเก็บไว้เสมอ การกลั่นกรองเพียง เพิ่ม บันทึกที่ได้มาซึ่งลิงก์กลับไปยังแหล่งที่มา — มันไม่เคยทิ้งข้อเท็จจริงที่คิดว่าไม่จำเป็นต้องดึงออกมาในตอนเขียนอย่างเงียบๆ
- 🔒 การปกปิดข้อมูลก่อนทุกการเขียน ความลับจะถูกขัดออก (regex + entropy + การตรวจจับข้อมูลประจำตัวใน URL) ก่อนที่สิ่งใด — เนื้อหา, ชื่อเรื่อง, หรือแท็ก — จะไปถึง vault ข้อความธรรมดา เราเขียนไฟล์ที่คุณอ่านได้ ดังนั้นเราจึงถือว่าข้อมูลประจำตัวรั่วไหลเป็นโหมดความล้มเหลวที่เลวร้ายที่สุด
- 🕸️ กราฟความรู้ที่ฟรีและกำหนดได้
[[wikilinks]]และ frontmatter ของคุณ คือ กราฟ — ไม่มีการดึงข้อมูลด้วย LLM, ไม่มีเอนทิตีที่ถูกสร้างขึ้นมาเอง - 🪶 ไม่มี daemon, ไม่มีฐานข้อมูลภายนอก ไฟล์ DuckDB แบบฝังตัวหนึ่งไฟล์ทำการค้นหาเวกเตอร์เชิงความหมาย, BM25 แบบข้อความเต็ม, และการท่องกราฟ ไม่มีเซิร์ฟเวอร์ที่เปิดตลอดเวลา, ไม่มี Neo4j/Postgres/Qdrant, ไม่ต้องใช้คีย์คลาวด์ — แค่ CLI
cairnและเซิร์ฟเวอร์ MCP แบบออนดีมานด์ - 🔍 วัดผลอย่างตรงไปตรงมา ชุดทดสอบ LongMemEval-S + LoCoMo ที่ทำซ้ำได้มีอยู่ใน
benchmarks/— พร้อมตัวเลขจริง, การศึกษาแบบ ablation, และข้อควรระวังที่ชัดเจน แทนที่จะเป็นหัวข้อที่เลือกมาเพียงอันเดียว (ดูด้านล่าง)
ติดตั้ง
วิธีที่ง่ายที่สุดในการใช้ agentcairn คือ ปลั๊กอิน สำหรับ Claude Code หรือ Codex — การติดตั้งครั้งเดียวเชื่อมต่อเซิร์ฟเวอร์ MCP, หน่วยความจำแวดล้อม (เรียกคืนเมื่อเริ่มเซสชัน, บันทึกเมื่อสิ้นสุดเซสชัน), สกิลหน่วยความจำ, และคำสั่งสแลช (Claude Code):
# Claude Code
claude plugin marketplace add ccf/agentcairn
claude plugin install agentcairn@agentcairn
# Codex (from the Codex plugin marketplace)
codex plugin marketplace add ccf/agentcairn
codex plugin add agentcairn@agentcairn
เมื่อติดตั้งคุณเลือกพาธ vault (ค่าเริ่มต้น ~/agentcairn); มันจะถูก สร้างอัตโนมัติ ในเซสชันแรก — ไม่ต้องตั้งค่า Obsidian ใดๆ จากนั้น agentcairn จะแสดงหน่วยความจำที่เกี่ยวข้องเมื่อเริ่มแต่ละเซสชัน, กลั่นกรองแต่ละเซสชันลงใน vault ของคุณ, และมอบ /agentcairn:recall, /remember, /memory, /savings, และ /ingest ให้คุณ ไม่ต้อง pip-install — ปลั๊กอินรันแพ็คเกจที่เผยแพร่ผ่าน uvx
ไม่ได้ใช้ Claude Code หรือ Codex? agentcairn ยังเป็นเซิร์ฟเวอร์ MCP แบบสแตนด์อโลน + CLI สำหรับโฮสต์ใดๆ — ดู การใช้งานโดยตรง
วิธีการทำงาน
flowchart LR
T["Session transcripts<br/>(out-of-band)"]
H["You · Obsidian<br/>(hand edits)"]
V["📂 Obsidian vault<br/>Markdown + frontmatter + wikilinks<br/><b>source of truth</b>"]
I["♻️ DuckDB index<br/>vector + BM25 + graph<br/><b>rebuildable cache</b>"]
M["MCP tools<br/>remember · recall · search · build_context · recent"]
T -- "redact → judge → distill → consolidate" --> V
H -- "edit" --> V
V -- "parse / reconcile-on-spawn" --> I
I -- "READ_ONLY hybrid recall" --> M
M -. "remember (redacted write)" .-> V
classDef truth fill:#eaf1ff,stroke:#317cff,color:#191919;
classDef cache fill:#f5f5f3,stroke:#999999,color:#191919;
class V truth
class I cache
- การจับภาพ อ่านบันทึกเซสชันของชุดควบคุมเอเจนต์ของคุณ (แบบเพิ่มเติมเท่านั้น, อยู่บนดิสก์แล้ว) นอกแบนด์ — แข็งแกร่งโดยการออกแบบ, ไม่มี hooks สดที่เปราะบาง — จากนั้นปกปิดข้อมูล → ขจัดรายการซ้ำ → ตัดสิน (ความคงทนเชิงความหมาย; การกลั่นกรอง LLM เสริมผ่าน
CAIRN_JUDGE=anthropic) → ควบคุม → กลั่นกรองลงใน vault, โดยไม่สูญเสียข้อมูลcairn sweepตรวจจับอัตโนมัติทุกชุดควบคุมที่มีอยู่ (รองรับ Claude Code, Codex, Antigravity CLI, และ Cursor ทั้งหมด, ภายใต้รอยต่อHarnessAdapter) คุณจึงได้หน่วยความจำรวมศูนย์จากทั้งสี่โดยไม่ต้องตั้งค่าเพิ่มเติม ในระดับ LLM มันยัง รวมข้อมูล: หน่วยความจำใหม่ที่ซ้ำกับที่มีอยู่จะถูกข้าม, และเวอร์ชันใหม่กว่าของข้อเท็จจริงที่เปลี่ยนแปลงจะทำเครื่องหมายบันทึกเก่าว่าsuperseded_by(เก็บไว้ + ลดระดับในการเรียกคืน, ไม่เคยลบ) — ปลอดภัยเมื่อล้มเหลว, ดังนั้นการเรียกที่ผิดพลาดจะไม่ทิ้งหน่วยความจำที่แตกต่าง (CAIRN_CONSOLIDATE=0เพื่อปิดใช้งาน) รวมถึงเครื่องมือrememberที่ขับเคลื่อนโดยเอเจนต์สำหรับหน่วยความจำที่คัดสรรและมีมูลค่าสูง - การค้นคืน ผสาน BM25 + เวกเตอร์เชิงความหมายด้วย Reciprocal Rank Fusion, ใช้การเพิ่มประสิทธิภาพกราฟเสริม, และ ลดระดับอย่างสง่างาม ลงเหลือแค่คำสำคัญเมื่อไม่มีโมเดล embedding — ดังนั้นการเรียกคืนจะ ไม่เคย เงียบหายไปโดยสิ้นเชิง ตัวจัดอันดับใหม่แบบ cross-encoder เสริมเพิ่มความแม่นยำ
- ปัญญาผสม: การฝังตัวแบบโลคอลออฟไลน์ (FastEmbed /
nomic-embed-text-v1.5โดยค่าเริ่มต้น) ทันทีที่แกะกล่อง — แข็งแกร่งด้วยตัวเอง และ ในการผสมผสานแบบไฮบริด (ด้วยnomic, เวกเตอร์อย่างเดียวมีประสิทธิภาพเหนือกว่า BM25 แม้ในเทิร์นสั้นๆ; ดูเกณฑ์มาตรฐาน) ตั้งค่าCAIRN_EMBED_MODELเพื่อเลือกโมเดล FastEmbed อื่น, หรือรันCAIRN_EMBEDDER=ollama/ ระดับคลาวด์เพื่อไปให้ไกลขึ้น - หน่วยความจำเชิงเวลา: บันทึกอาจมี frontmatter
valid_from/valid_until/superseded_byการเรียกคืนตระหนักถึงความถูกต้อง — มันลดระดับข้อเท็จจริงที่ถูกแทนที่และหมดอายุอย่างนุ่มนวล (ข้อเท็จจริง ปัจจุบัน ชนะ) โดยไม่เคยซ่อนมัน (ไม่สูญเสียข้อมูล), และกำกับสถานะของแต่ละผลลัพธ์ (current/superseded/expired/not_yet_valid) พร้อมจุดยึดas_ofเพื่อให้เอเจนต์สามารถให้เหตุผลข้ามเวลาได้ ไม่มีผลสำหรับบันทึกที่ไม่มีฟิลด์ความถูกต้อง - การเรียกคืนที่ตระหนักถึงที่มา: บันทึกมีที่มา
project/harness, และการเรียกคืนเพิ่มประสิทธิภาพหน่วยความจำของโปรเจกต์ปัจจุบันของคุณ (ไม่สูญเสียข้อมูล — ผลลัพธ์ข้ามโปรเจกต์ยังปรากฏ, ทำเครื่องหมาย[from: <project>]) ส่ง--project <repo>เพื่อกำหนดเป้าหมาย repo อื่น, หรือ--scope projectเพื่อกรองอย่างเข้มงวดเฉพาะโปรเจกต์ปัจจุบัน
การใช้งานโดยตรง
ปลั๊กอินเป็นเส้นทางที่ง่ายที่สุด แต่ agentcairn เป็นเพียงแพ็คเกจ — ใช้โดยไม่มี Claude Code ผ่านเซิร์ฟเวอร์ MCP แบบออนดีมานด์ (สำหรับโฮสต์ MCP ใดๆ) หรือ CLI cairn:
uvx agentcairn # on-demand MCP server for any MCP host
cairn ingest --vault ~/vault # distill recent agent sessions into the vault
cairn sweep --vault ~/vault # ingest + reindex in one pass (cron-friendly)
cairn schedule install --vault ~/vault # run sweep automatically every 30 min (launchd on macOS, crontab on Linux)
cairn recall "how did we fix the auth bug?" # hybrid recall from the CLI
cairn savings # how much context recall has saved you
cairn reindex ~/vault # rebuild the index from Markdown (always safe)
cairn doctor # health-check the index
การกำหนดค่า
การตั้งค่าทั้งหมดอยู่ในไฟล์เดียว — ~/.agentcairn/config.toml — โดยมีตัวแปรสภาพแวดล้อมเป็นตัวแทนที่ (ลำดับความสำคัญ: แฟล็ก CLI > ตัวแปรสภาพแวดล้อม > ไฟล์กำหนดค่า > ค่าเริ่มต้น):
cairn config --init # scaffold a fully-commented template (chmod 600)
cairn config # show every setting's effective value and where it came from
ตัวอย่างเช่น การเปิดใช้งานตัวตัดสินหน่วยความจำ LLM คือการยกเลิกคอมเมนต์สองบรรทัด — ไม่ต้อง export เชลล์ (การกวาดพื้นหลังของปลั๊กอินอ่านไฟล์โดยตรง):
judge = "anthropic"
anthropic_api_key = "sk-ant-..."
เอเจนต์ที่รองรับ
agentcairn ทำงานในสองระดับ โฮสต์ปลั๊กอิน (Claude Code, Codex, และ Antigravity) ได้รับปลั๊กอินชั้นหนึ่ง — เซิร์ฟเวอร์ MCP แบบรวม (เรียกคืน/ค้นหา/remember), สกิลหน่วยความจำ, และ (บน Claude Code และ Codex) hooks เซสชันแวดล้อม; cairn install <host> ติดตั้งปลั๊กอินโดยเรียก CLI ของโฮสต์เอง โฮสต์ MCP (ทุกอย่างอื่น) ได้รับเครื่องมือเรียกคืน/ค้นหา/remember เดียวกันผ่านเซิร์ฟเวอร์ MCP แบบพกพา; cairn install <host> เขียนการกำหนดค่าเซิร์ฟเวอร์ MCP โดยไม่ทำลาย (เซิร์ฟเวอร์อื่นของคุณยังคงอยู่, ต้นฉบับถูกสำรองไปที่ <config>.bak) vault ยังคงเป็น ~/agentcairn ส่วนกลางเดียว, ดังนั้นหน่วยความจำจึงถูกแชร์ข้ามทุกโฮสต์
| โฮสต์ | การสนับสนุน | ตั้งค่าด้วย | การจับภาพแวดล้อม |
|---|---|---|---|
| Claude Code | 🟢 ปลั๊กอิน | cairn install claude-code | ✅ เรียกคืนเมื่อเริ่ม + จับภาพเมื่อสิ้นสุด |
| Codex | 🟢 ปลั๊กอิน | cairn install codex | ◐ เรียกคืน/remember สด; hooks แวดล้อมรวมอยู่ (กำลังตรวจสอบ) 1 |
| Cursor | 🔌 เซิร์ฟเวอร์ MCP + สกิล + การนำเข้า | cairn install cursor | ◐ cairn sweep ตรวจจับบันทึกอัตโนมัติ 2 |
| Claude Desktop | 🔌 เซิร์ฟเวอร์ MCP | cairn install claude-desktop | — |
| VS Code (Copilot) | 🔌 เซิร์ฟเวอร์ MCP | cairn install vscode | — |
| Gemini CLI 3 | 🔌 เซิร์ฟเวอร์ MCP | cairn install gemini | — |
| Antigravity | 🟢 ปลั๊กอิน + การนำเข้า | cairn install antigravity | ◐ cairn sweep ตรวจจับบันทึกอัตโนมัติ 4 |
| โฮสต์ MCP อื่นๆ | 🔌 เซิร์ฟเวอร์ MCP | uvx agentcairn (วางส่วนย่อย cairn install … --print) | — |
cairn install กำหนดเส้นทางตามชนิดโฮสต์โดยอัตโนมัติ:
cairn install # detect installed hosts + preview (writes nothing)
cairn install codex # install the Codex plugin (shells to `codex plugin …`; strips any stale MCP block from ~/.codex/config.toml)
cairn install antigravity --source ./plugin # install the Antigravity plugin from a local checkout (see note)
cairn install cursor # write MCP config + install the memory skill for Cursor
cairn install --all # configure every detected host
cairn install codex --source /path/to/agentcairn # use a local checkout instead of the marketplace
โฮสต์ MCP รับรายการ JSON mcpServers (VS Code ใช้คีย์ servers ของมัน) โฮสต์ปลั๊กอิน (Claude Code, Codex, Antigravity) ติดตั้งปลั๊กอินผ่าน CLI ของโฮสต์ — เซิร์ฟเวอร์ MCP ถูกรวมอยู่ในปลั๊กอินและไม่ต้องการรายการกำหนดค่าแยกต่างหาก หากคุณเคยใช้ cairn install antigravity เพื่อเขียนรายการ MCP ไปที่ ~/.gemini/config/mcp_config.json, การรัน cairn install antigravity อีกครั้งจะลบรายการที่ค้างนั้นโดยอัตโนมัติ
เกณฑ์มาตรฐานที่วัด
เราทดสอบเกณฑ์มาตรฐาน agentcairn ในแบบที่เราต้องการให้ระบบหน่วยความจำถูกวัด — ทำซ้ำได้, พร้อมการศึกษาแบบ ablation, และไม่มีตัวเลขหัวข้อที่เลือกมาเพียงอันเดียว ชุดควบคุม (benchmarks/) รัน LongMemEval-S และ LoCoMo ผ่านตัวดาวน์โหลดที่ตรึงเวอร์ชัน (ชุดข้อมูลไม่เคยถูกขายรวม), ให้คะแนนการค้นคืนอย่างกำหนดได้ (recall/nDCG@k, MRR — ไม่ต้องใช้คีย์ API, รันใน CI บน fixture สังเคราะห์), และเสนอชั้น QA ที่ตัดสินโดย LLM แบบเลือกใช้
การค้นคืน — LoCoMo
ชุด LoCoMo เต็ม, ระดับเทิร์น, ค่าเฉลี่ยมหภาค, FastEmbed nomic-embed-text-v1.5 (ตัวฝังค่าเริ่มต้น):
| arm | recall@5 | recall@10 | MRR |
|---|---|---|---|
| BM25 เท่านั้น | 0.527 | 0.604 | 0.459 |
| เวกเตอร์เท่านั้น | 0.536 | 0.637 | 0.433 |
| ไฮบริด (RRF) | 0.562 | 0.648 | 0.477 |
| ไฮบริด + เพิ่มประสิทธิภาพกราฟ | 0.562 | 0.648 | 0.477 |
| ไฮบริด + ตัวจัดอันดับใหม่ | 0.662 | 0.735 | 0.608 |
สิ่งที่เราอ่านจากสิ่งนี้ — และพูดออกมาดังๆ:
- ไฮบริดชนะ arm เดี่ยวใดๆ — การผสาน RRF คุ้มค่า
- ตัวจัดอันดับใหม่แบบ cross-encoder เป็นคันโยกที่ใหญ่ที่สุด (+0.10 recall@5 เหนือไฮบริด); ความกังวลว่า "การเปลี่ยนโดเมน ms-marco อาจส่งผลเสีย" ไม่เกิดขึ้นกับข้อมูลการสนทนา
- ค่าเริ่มต้นของตัวฝังตอนนี้ทำงานได้ดี — ด้วย
nomic, เวกเตอร์เท่านั้น มีประสิทธิภาพเหนือกว่า BM25 (0.536 เทียบกับ 0.527); การเปลี่ยนจากค่าเริ่มต้นbge-smallเก่า (ซึ่งตามหลังที่ 0.483) ปิดช่องว่าง การกวาด FastEmbed 5 โมเดลตัดสินการเลือก —nomic(768-d) ชนะด้านคุณภาพต่อมิติ; โมเดล 1024-d ที่ใหญ่กว่าไม่เอาชนะมัน ตารางเต็ม:benchmarks/README.md - การเพิ่มประสิทธิภาพกราฟไม่มีผลต่อคลังข้อมูลเหล่านี้ — LoCoMo/LongMemEval ไม่มีกราฟ
[[wikilink]]ดั้งเดิม, ดังนั้นการเพิ่มประสิทธิภาพจึงไม่มีอะไรให้ทำงาน มันมีไว้สำหรับ vault ที่เชื่อมโยงกันจริง, ไม่ใช่บันทึกการแชท, และเราไม่แสร้งทำเป็นอย่างอื่น
การค้นคืน — LongMemEval-S
ชุดข้อมูลเต็ม 500 อินสแตนซ์ — งานที่ง่ายกว่าโดยมีเซสชันหลักฐานที่แยกจากกันอย่างดี ระดับเซสชันคือความละเอียดที่งานก่อนหน้ารายงาน ระดับเทิร์นคือส่วนที่ละเอียดกว่าและเปิดเผยลักษณะของคลังข้อมูล:
| arm | session r@5 | session MRR | turn r@5 | turn r@10 | turn MRR |
|---|---|---|---|---|---|
| BM25 เท่านั้น | 0.920 | 0.918 | 0.680 | 0.791 | 0.638 |
| vector เท่านั้น | 0.936 | 0.916 | 0.507 | 0.692 | 0.454 |
| hybrid (RRF) | 0.954 | 0.938 | 0.640 | 0.798 | 0.544 |
| hybrid + reranker | 0.969 | 0.963 | 0.788 | 0.891 | 0.716 |
อ่านอย่างตรงไปตรงมา:
- session recall@5 ของเราที่ 0.969 อยู่ในระดับเดียวกับงานก่อนหน้าที่ ≈0.95 บนชุดคำถาม 500 ข้อเต็ม — และในระดับเต็มมัน แยกแยะ ได้ (0.920 BM25 → 0.969 reranker) แทนที่จะอิ่มตัวเหมือนตัวอย่างขนาดเล็ก
- reranker เป็นคันโยกที่ใหญ่ที่สุดอีกครั้ง — turn r@5 0.640 → 0.788, session r@5 0.954 → 0.969
- ระดับเทิร์นเปิดเผยลักษณะคลังข้อมูล: ที่นี่ BM25 เท่านั้น (0.680) ชนะ RRF hybrid (0.640) เพราะ vector-only อ่อนแอในช่วงหลักฐานเทิร์นเดียวเหล่านี้ (0.507); reranker คือสิ่งที่ดึงค่าเริ่มต้นให้เหนือกว่า (เทียบกับ LoCoMo ที่ vector-only เหนือกว่า BM25 เล็กน้อย)
ประสิทธิภาพด้านบริบท
บริบทที่ agentcairn เรียกคืน มีขนาดเล็กกว่าประวัติเต็มที่คุณจะต้องนำเข้าโมเดลมากแค่ไหน? การตั้งค่าเริ่มต้น (hybrid + reranker, k=10):
| ชุดข้อมูล | คำถาม | haystack เฉลี่ย | เรียกคืนเฉลี่ย (k=10) | การลดบริบท |
|---|---|---|---|---|
| LoCoMo (3 การสนทนา) | 497 | 25,646 tok | 529 tok | 51.1× เฉลี่ย / 50.3× มัธยฐาน |
| LongMemEval-S (เต็ม 500) | 470 | 136,552 tok | 2,207 tok | 64.7× เฉลี่ย / 61.6× มัธยฐาน |
ประมาณการ (~4 ตัวอักษร/token) ไม่ใช่ค่าใช้จ่ายที่เรียกเก็บ; "haystack" = ประวัติที่จัดทำดัชนีทั้งหมด, "เรียกคืน" = ชิ้นส่วน top-k ที่ส่งคืน มันวัด ขนาด บริบท โดยไม่ขึ้นกับคุณภาพการเรียกคืน
ความแม่นยำ QA
ตัวเลขความแม่นยำ QA (ตัดสินโดย LLM) ก็มีให้เช่นกัน แต่ใช้ผู้ตัดสิน Anthropic แทน GPT-4o ของบทความ ดังนั้นจึง ไม่สามารถเปรียบเทียบกับลีดเดอร์บอร์ดที่เผยแพร่ได้ — ใช้ได้เฉพาะสัญญาณ ablation เชิงสัมพัทธ์เท่านั้น ดู benchmarks/README.md สำหรับวิธีรันและวิธีอ่านตัวเลข
แผนงาน
- v1 — เสร็จสิ้น วงจรหลัก: การนำเข้าบทสนทนา → การปกปิด → Markdown → ดัชนี DuckDB ที่สร้างใหม่ได้ → การเรียกคืนแบบผสม; เซิร์ฟเวอร์ MCP + CLI; การปกปิดความลับ; การฝังตัวเฉพาะที่; ชุดทดสอบที่ทำซ้ำได้
- v1.1 — ถัดไป จัดลำดับความสำคัญตามเกณฑ์มาตรฐานข้างต้น:
- ✅ Reranker เปิดใช้เป็นค่าเริ่มต้น — คันโยกการเรียกคืนที่วัดได้ใหญ่ที่สุด;
CAIRN_RERANK=0เพื่อปิดใช้ (จัดส่งแล้ว) - ระดับการฝังตัว Ollama — ✅ โมเดลท้องถิ่นผ่าน
CAIRN_EMBEDDER=ollama(CAIRN_EMBED_MODEL/OLLAMA_HOST); คลาวด์ (OpenAI/Voyage) ยังรอดำเนินการ - ✅ ความถูกต้องแบบสองช่วงเวลา — frontmatter
valid_from/valid_until/superseded_by; การเรียกคืนลดระดับข้อเท็จจริงที่ถูกแทนที่/หมดอายุอย่างนุ่มนวล (ไม่สูญเสีย — ไม่เคยซ่อน) และใส่คำอธิบายประกอบความทันสมัยของแต่ละผลลัพธ์ + จุดยึดas_ofเพื่อให้ข้อเท็จจริง ปัจจุบัน ชนะและเอเจนต์สามารถให้เหตุผลข้ามเวลาได้ (จัดส่งแล้ว) - HNSW ในหน่วยความจำสำหรับความหน่วงการเรียกคืนของคลังข้อมูลขนาดใหญ่
- ✅ Reranker เปิดใช้เป็นค่าเริ่มต้น — คันโยกการเรียกคืนที่วัดได้ใหญ่ที่สุด;
- v2 — ◐ ปลั๊กอิน Obsidian (agentcairn-obsidian) — มุมมองหน่วยความจำแบบเนทีฟของคลังข้อมูล (รายการ + ที่มา + ความทันสมัย + กราฟ) สำหรับการอ่าน/นำทางหน่วยความจำของคุณใน Obsidian; (MVP จัดส่งแล้ว; การเรียกคืนเชิงความหมายยังอยู่ใน CLI/MCP) การซิงค์คลาวด์ MotherDuck, การสกัดเอนทิตี LLM เสริมยังรอดำเนินการ
การพัฒนา
agentcairn ใช้ uv เฉพาะสำหรับการจัดการการพึ่งพาและเครื่องมือ
ห้ามใช้ pip, poetry หรือสภาพแวดล้อมเสมือนส่วนกลาง
# First-time setup
uv sync # create .venv and install all deps (including dev)
uv run pre-commit install # install git hooks (ruff + pytest run on every commit)
# Daily use
uv run pytest # run the test suite
uv run cairn --help # run the CLI
uvx agentcairn # run the installed tool ephemerally (as the MCP server does)
# Formatting and linting
uv run ruff format . # format all Python files
uv run ruff check --fix . # lint with auto-fix
uv run pre-commit run --all-files
# Benchmarks (offline retrieval metrics need no API key)
uv run pytest benchmarks/tests/ # offline synthetic-fixture suite
PYTHONPATH=benchmarks uv run --group bench python -m cairn_bench.run --dataset locomo
เซิร์ฟเวอร์ MCP เปิดใช้ผ่าน uvx agentcairn — ไม่จำเป็นต้องติดตั้งส่วนกลาง
ใบอนุญาต
Apache License 2.0 — อนุญาตแบบกว้าง พร้อมการให้สิทธิ์สิทธิบัตรอย่างชัดเจน ลิขสิทธิ์ © 2026 Charles C. Figueiredo
Footnotes
-
The การติดตั้งปลั๊กอิน Codex และเซิร์ฟเวอร์ MCP แบบรวม (เรียกคืน/ค้นหา/
remember) ได้รับการตรวจสอบแบบสดใน Codex hooks เซสชันแวดล้อม (เรียกคืนเมื่อเริ่ม, จับภาพเมื่อสิ้นสุด) มาพร้อมกับปลั๊กอินและใช้ schema hooks ที่จัดทำเอกสารของ Codex, แต่พฤติกรรมบน Codex ยังไม่ได้รับการยืนยันแบบ end-to-end; การจับภาพยังเกิดขึ้นนอกแบนด์ผ่านcairn sweepโดยไม่คำนึงถึง ↩ -
Cursor ไม่มี hooks ปลั๊กอิน, ดังนั้นการจับภาพแวดล้อมจึงเป็นนอกแบนด์ผ่าน
cairn sweep(แหล่งที่มา: ฐานข้อมูล SQLiteglobalStorage/state.vscdbส่วนกลางของ Cursor, ตารางcursorDiskKV, ผู้ใช้ "bubbles") Cursor ยังคงเป็นโฮสต์ MCP สำหรับเอาต์พุต (cairn install cursor→~/.cursor/mcp.json); ไม่มีปลั๊กอิน Cursorcairn install cursorยังติดตั้งสกิลusing-agentcairn-memory(คำแนะนำการเรียกคืน/จดจำ) ไปที่~/.cursor/skills/using-agentcairn-memory/SKILL.md↩ -
Gemini การนำเข้าบันทึกของ CLI (ผู้บริโภค) ไม่รองรับ — Google กำลังยุติ Gemini CLI (ตัดผู้บริโภค 2026-06-18) แทนที่ด้วย Antigravity CLI, ซึ่ง agentcairn นำเข้าแทน
cairn install gemini(การเชื่อมต่อเซิร์ฟเวอร์ MCP) ยังคงใช้ได้สำหรับโฮสต์ที่ใช้ Gemini ใดๆ ที่พูด MCP ↩ -
The ปลั๊กอิน Antigravity รวมเซิร์ฟเวอร์ MCP + สกิลหน่วยความจำ;
cairn install antigravity --source <dir>ติดตั้งผ่านagy plugin installและลบรายการmcpServers.agentcairnที่ค้างจาก~/.gemini/config/mcp_config.jsonหมายเหตุ:agy plugin installรับ ไดเรกทอรีโลคอล หรือ marketplace ที่ลงทะเบียน (ไม่ใช่ git repo), ดังนั้นให้ชี้--sourceไปที่ไดเรกทอรีplugin/ของ checkout ที่โคลนไว้ก่อน Antigravity ไม่มี hooks ปลั๊กอินที่รู้จัก, ดังนั้นการจับภาพแวดล้อมจึงเป็นนอกแบนด์ผ่านcairn sweep(พาธ:~/.gemini/antigravity-cli/brain/<uuid>/.system_generated/logs/transcript.jsonl) ↩