agentcairn MCP Server

ทางการ

หน่วยความจำเอเจนต์แบบ Local-first: คลัง Obsidian ในรูปแบบ Markdown ธรรมดาเป็นแหล่งข้อมูลหลัก พร้อมดัชนี DuckDB ที่สามารถสร้างใหม่ได้สำหรับการเรียกค้นแบบผสมผสาน BM25 + เวกเตอร์ + กราฟ

เอกสาร

🪨 agentcairn

CI Security PyPI Python License: Apache-2.0

หน่วยความจำแบบโลคอลเฟิร์สสำหรับเอเจนต์ 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 cursorcairn sweep ตรวจจับบันทึกอัตโนมัติ 2
Claude Desktop🔌 เซิร์ฟเวอร์ MCPcairn install claude-desktop
VS Code (Copilot)🔌 เซิร์ฟเวอร์ MCPcairn install vscode
Gemini CLI 3🔌 เซิร์ฟเวอร์ MCPcairn install gemini
Antigravity🟢 ปลั๊กอิน + การนำเข้าcairn install antigravitycairn sweep ตรวจจับบันทึกอัตโนมัติ 4
โฮสต์ MCP อื่นๆ🔌 เซิร์ฟเวอร์ MCPuvx 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 (ตัวฝังค่าเริ่มต้น):

armrecall@5recall@10MRR
BM25 เท่านั้น0.5270.6040.459
เวกเตอร์เท่านั้น0.5360.6370.433
ไฮบริด (RRF)0.5620.6480.477
ไฮบริด + เพิ่มประสิทธิภาพกราฟ0.5620.6480.477
ไฮบริด + ตัวจัดอันดับใหม่0.6620.7350.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 อินสแตนซ์ — งานที่ง่ายกว่าโดยมีเซสชันหลักฐานที่แยกจากกันอย่างดี ระดับเซสชันคือความละเอียดที่งานก่อนหน้ารายงาน ระดับเทิร์นคือส่วนที่ละเอียดกว่าและเปิดเผยลักษณะของคลังข้อมูล:

armsession r@5session MRRturn r@5turn r@10turn MRR
BM25 เท่านั้น0.9200.9180.6800.7910.638
vector เท่านั้น0.9360.9160.5070.6920.454
hybrid (RRF)0.9540.9380.6400.7980.544
hybrid + reranker0.9690.9630.7880.8910.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 การสนทนา)49725,646 tok529 tok51.1× เฉลี่ย / 50.3× มัธยฐาน
LongMemEval-S (เต็ม 500)470136,552 tok2,207 tok64.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 ในหน่วยความจำสำหรับความหน่วงการเรียกคืนของคลังข้อมูลขนาดใหญ่
  • 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

  1. The การติดตั้งปลั๊กอิน Codex และเซิร์ฟเวอร์ MCP แบบรวม (เรียกคืน/ค้นหา/remember) ได้รับการตรวจสอบแบบสดใน Codex hooks เซสชันแวดล้อม (เรียกคืนเมื่อเริ่ม, จับภาพเมื่อสิ้นสุด) มาพร้อมกับปลั๊กอินและใช้ schema hooks ที่จัดทำเอกสารของ Codex, แต่พฤติกรรมบน Codex ยังไม่ได้รับการยืนยันแบบ end-to-end; การจับภาพยังเกิดขึ้นนอกแบนด์ผ่าน cairn sweep โดยไม่คำนึงถึง

  2. Cursor ไม่มี hooks ปลั๊กอิน, ดังนั้นการจับภาพแวดล้อมจึงเป็นนอกแบนด์ผ่าน cairn sweep (แหล่งที่มา: ฐานข้อมูล SQLite globalStorage/state.vscdb ส่วนกลางของ Cursor, ตาราง cursorDiskKV, ผู้ใช้ "bubbles") Cursor ยังคงเป็นโฮสต์ MCP สำหรับเอาต์พุต (cairn install cursor~/.cursor/mcp.json); ไม่มีปลั๊กอิน Cursor cairn install cursor ยังติดตั้งสกิล using-agentcairn-memory (คำแนะนำการเรียกคืน/จดจำ) ไปที่ ~/.cursor/skills/using-agentcairn-memory/SKILL.md

  3. Gemini การนำเข้าบันทึกของ CLI (ผู้บริโภค) ไม่รองรับ — Google กำลังยุติ Gemini CLI (ตัดผู้บริโภค 2026-06-18) แทนที่ด้วย Antigravity CLI, ซึ่ง agentcairn นำเข้าแทน cairn install gemini (การเชื่อมต่อเซิร์ฟเวอร์ MCP) ยังคงใช้ได้สำหรับโฮสต์ที่ใช้ Gemini ใดๆ ที่พูด MCP

  4. 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)