ai-memory
ทางการหน่วยความจำถาวรสำหรับผู้ช่วย AI ทุกประเภท ไม่มีค่าใช้จ่ายโทเค็นจนกว่าจะเรียกคืน จัดเก็บความจำใน SQLite ท้องถิ่น จัดอันดับด้วยการให้คะแนน 6 ปัจจัย ส่งคืนผลลัพธ์ที่เล็กกว่า JSON 79% ทำงานร่วมกับ Claude, ChatGPT, Grok, Cursor, Windsurf และไคลเอนต์ MCP ใดๆ
คุณทำอะไรได้บ้างด้วย Ai Memory MCP?
- จัดเก็บข้อเท็จจริง ความชอบ และการแก้ไข — ให้ผู้ช่วยจดจำสิ่งต่างๆ ผ่าน
memory_storeโดยบันทึกไว้ในฐานข้อมูล SQLite หรือ PostgreSQL ในเครื่อง - เรียกคืนความทรงจำที่เกี่ยวข้องตามต้องการ — ดึงผลลัพธ์ที่คำนึงถึงบริบทซึ่งจัดอันดับตามความเกี่ยวข้อง โดยใช้
memory_recallหรือmemory_searchแบบข้อความเต็ม - แสดงรายการ ดึงข้อมูล และจัดการความทรงจำที่จัดเก็บไว้ — เรียกดูรายการที่บันทึกทั้งหมดด้วย
memory_listดึงข้อมูลเฉพาะตาม ID ด้วยmemory_getหรือเก็บถาวรรายการที่ล้าสมัย - ประสานงานเวิร์กโฟลว์แบบหลายเอเจนต์ — สร้าง DAG การกระทำแบบกำหนดประเภท รับสิทธิ์การใช้งานแบบ TTL-bounded และแลกเปลี่ยนสัญญาณที่ลงนามโดยใช้เครื่องมือ
memory_action_*,memory_lease_*และmemory_signal_* - ติดตามสายเลือดและที่มาของความทรงจำ — เดินดู DAG การได้มาของความทรงจำใดๆ ผ่าน
memory_lineageเพื่อดูว่าข้อเท็จจริงใดได้มาจากแหล่งใด
เอกสาร
ai-memory™
หน่วยความจำ AI สากล
ai-memory เป็นระบบหน่วยความจำถาวรสำหรับผู้ช่วย AI มันทำงานร่วมกับ AI ใดๆ ที่รองรับ MCP -- Claude, ChatGPT, Grok, Llama และอื่นๆ มันจัดเก็บสิ่งที่ AI ของคุณเรียนรู้ในฐานข้อมูล SQLite ภายในเครื่อง จัดอันดับความทรงจำตามความเกี่ยวข้องเมื่อเรียกคืน และเลื่อนขั้นความรู้อัตโนมัติที่สำคัญไปยังที่จัดเก็บถาวร ติดตั้งเพียงครั้งเดียว และผู้ช่วย AI ทุกตัวที่คุณใช้จะจดจำสถาปัตยกรรมของคุณ ความชอบของคุณ การแก้ไขของคุณ -- ตลอดไป
เลือกเส้นทางการติดตั้งของคุณ
| คุณคือ… | การปรับใช้ของคุณคือ… | เริ่มต้นที่นี่ |
|---|---|---|
| นักพัฒนาคนเดียว ที่กำลังลองใช้ ai-memory | ไคลเอนต์ AI หนึ่งตัวบนแล็ปท็อป | docs/install-quickstart.md — การติดตั้งแบบง่ายสุดๆ 5 นาที + แบ็กเอนด์ LLM เชื่อมต่อในบล็อกเดียว |
| วิศวกร / สถาปนิก | โหนดเดียวสำหรับการใช้งานจริง หรือหลายเอเจนต์บนหนึ่งโหนด | docs/INSTALL.md → docs/production-deployment.md |
| วิศวกร / สถาปนิก | หลายเซิร์ฟเวอร์ / หลายแร็ค / หลายดาต้าเซ็นเตอร์ / สวอร์ม / ไฮฟ์ / เฟเดอเรชัน | docs/enterprise-deployment.md — 8 โทโพโลยี ตั้งแต่ซิงเกิลตัน → หลายภูมิภาค |
| วิศวกร / สถาปนิก | PostgreSQL + Apache AGE storage (เขียนหลายตัว, 10M+ ความทรงจำ, เน้น KG) | docs/postgres-age-guide.md — คู่มือผู้ปฏิบัติการ postgres ชั้นหนึ่ง |
| ผู้มีอำนาจตัดสินใจ กำลังประเมินการนำไปใช้ | — | docs/audience/decision-maker.html |
กำลังกำหนดค่าแบ็กเอนด์ LLM (xAI Grok, OpenAI, Anthropic, Gemini, DeepSeek, Kimi, Qwen, Mistral, Groq, Together, Cerebras, OpenRouter, Fireworks, LMStudio, vLLM, เซิร์ฟเวอร์ llama.cpp หรือ Ollama ภายในเครื่อง)? ดู
docs/integrations/llm-backends.md— สูตร MCP env-block เหมือนกันไม่ว่าจะเลือกเส้นทางการติดตั้งใด
v0.9.0 — รุ่นปัจจุบัน รุ่นการเสริมความปลอดภัยและการตรวจสอบโค้ด: การแก้ไข 49 รายการจากการตรวจสอบเชิงรุก 5 ช่องทาง (#1885–#1935) พร้อมชุดคุณสมบัติเพิ่มเติมที่เล็กกว่า การเปลี่ยนแปลงหลักคือการพลิกค่าเริ่มต้นที่ปลอดภัย: การรับรองเอเจนต์จำเป็นตามค่าเริ่มต้นบน HTTP direct-write (#1751, กำหนดขอบเขตพื้นผิวโดย #1985) — HTTP POST /api/v1/memories (+/bulk) ที่ไม่ได้ลงนามจะถูก ปฏิเสธ (403 ATTESTATION_FAILED) แทนที่จะลง attest_level="claimed" เว้นแต่ผู้ปฏิบัติการจะตั้งค่าการยกเลิกอย่างชัดแจ้ง AI_MEMORY_REQUIRE_AGENT_ATTESTATION=0 พื้นผิว MCP memory_store และ CLI store เป็นเส้นทางผู้ปฏิบัติการในฐานะผู้กระทำและยังคงอนุญาตตามค่าเริ่มต้น (การเขียนที่ไม่ได้ลงนามจะลง claimed); =1 บังคับใช้อย่างเข้มงวดบนทุกพื้นผิว (v0.9.0 GA จัดส่งสิ่งนี้เป็น require-everywhere ซึ่งไม่สามารถตอบสนองได้บนโฮสต์ MCP — แก้ไขเป็นกำหนดขอบเขตพื้นผิวในรุ่นปัจจุบัน) ควบคู่ไปกับมัน ประตูบังคับใช้การมีอยู่ของ hook บังคับตอนนี้ทำงานบนทั้งเส้นทางการเขียน MCP (#1885) และเส้นทางการเขียน HTTP (#1924) ปิดช่องว่างการเลี่ยงผ่านแบบเงียบที่ hook บังคับที่กำหนดค่าอาจถูกข้ามบนพื้นผิวหนึ่งแต่ไม่ใช่บนอีกพื้นผิวหนึ่ง การผ่านการเสริมความแข็งแกร่งยังปิด bulk_create การควบคุมการรับรองต่อแถว (#1919) กำหนดเส้นทางการอนุมัติ PENDING แบบ federated ขาเข้าผ่านประตูผู้อนุมัติที่ลงทะเบียน (#1920) กระชับขอบเขตการมองเห็น team/unit/org เพื่อไม่ให้กว้างเกินไปข้ามลำดับชั้นเนมสเปซ (#1921) และจำกัดการนำเข้า folder_path ของ skill_register ภายใต้รูทที่กำหนดค่าด้วย symlink jail (#1923) ช่องทางข้อมูลประจำตัวแบบ non-argv ใหม่ — AI_MEMORY_STORE_URL / AI_MEMORY_STORE_URL_FILE (ไฟล์ 0600) — เก็บรหัสผ่าน postgres/store ให้พ้นจาก /proc/<pid>/cmdline และ ps ที่ทุกคนอ่านได้ (#1927) งานคุณสมบัติเพิ่มเติม: ความทรงจำทักษะ ที่เขียนโดยเอเจนต์พร้อม parameters_schema + invocation_record (B7-SKILL, #1865), ลูปป้อนกลับเงา recall_observations (#1706), DAG สายเลือดการได้มาของความทรงจำ (memory_lineage, #1859), และส่วนย่อยน้อยที่สุด การค้นหาเวกเตอร์ แบบเลือกใช้ (#1005) พื้นผิว: schema v78, 101 เครื่องมือ MCP ที่ --profile full (100 ที่เรียกได้ + memory_capabilities bootstrap ที่เปิดตลอด) / 7 ที่ --profile core, 92 การลงทะเบียนเส้นทาง HTTP (78 เส้นทาง URL ที่ไม่ซ้ำกัน), 89 คำสั่งย่อย CLI ภายใต้ --features sal/sal-postgres (87 ในบิลด์เริ่มต้น), 9 ความสัมพันธ์ MemoryLink ที่มีชนิด, Memory 28 ฟิลด์ ทำงานบน สองแบ็กเอนด์สำหรับการใช้งานจริงหลัง API เดียวกัน — SQLite แบบฝังตัวและ PostgreSQL + Apache AGE — ครอบคลุมเดสก์ท็อป เซิร์ฟเวอร์ และบนอุปกรณ์ (iOS + Android) ทุกอย่างเป็นการเพิ่มเติมจาก v0.8.1 ยกเว้นการพลิกการรับรองและการบังคับใช้ hook ซึ่งเป็นการเปลี่ยนแปลงที่ทำลายความเข้ากันได้แบบปลอดภัยตามค่าเริ่มต้น — ตรวจสอบก่อนอัปเกรด บันทึกการเปลี่ยนแปลงฉบับเต็ม: CHANGELOG.md §"[0.9.0] — 2026-07-08"
v0.8.0 (distributed-coordination) — รุ่นก่อนหน้า นี่คือรุ่นที่ซับสเตรตหน่วยความจำกลายเป็น ซับสเตรตการประสานงาน มันเพิ่มกลไกการประสานงานแบบกระจายจาก #1709: DAG การกระทำ ที่มีชนิดพร้อมเครื่องสถานะจริง (memory_action_*), สัญญาเช่า แบบผู้ถือเดี่ยวที่มีขอบเขต TTL (memory_lease_*), สัญญาณที่ลงนาม ด้วย Ed25519 (memory_signal_*), จุดตรวจสอบที่รับรอง ด้วย Ed25519 (memory_checkpoint_*), และ รูทีน ที่ถูกแช่แข็งและเล่นซ้ำได้ (memory_routine_*) — เพื่อให้กองเรือเอเจนต์ที่หลากหลายสามารถผลัดกัน ส่งมอบงาน และพิสูจน์ว่าใครพูดอะไรโดยไม่ต้องเชื่อใจกัน มันวางชั้น ความรู้ความเข้าใจที่มีชนิด ไว้ด้านบน (ชนิดความทรงจำ Goal/Plan/Step, เครื่อง lifecycle_state และความสัมพันธ์ลิงก์ decomposes_into / depends_on / advances), ทำให้เฟเดอเรชันแข็งแกร่งขึ้นแบบปลอดภัยตามค่าเริ่มต้น (การลงทะเบียนเพียร์เปิดตามค่าเริ่มต้น #1789, ลายเซ็นต่อการเปลี่ยนผ่าน #1718, การรับรองเนื้อหาต่อการเขียน #1464, nonce การเล่นซ้ำการเปลี่ยนผ่าน #1805, การปักหมุดใบรับรองเพียร์ขาออก #1678), และจัดส่ง การกำกับดูแลที่บล็อกได้จริง — hook PreToolUse ของ Claude Code ถูกปรับปรุงใหม่เป็น wrapper type:command เพื่อให้ซับสเตรต Refuse ปฏิเสธเครื่องมืออย่างแท้จริง (#1811) ณ รุ่น v0.8.0 พื้นผิวคือ: schema v70, 100 เครื่องมือ MCP ที่ --profile full (99 ที่เรียกได้ + memory_capabilities bootstrap ที่เปิดตลอด) / 7 ที่ --profile core, 91 การลงทะเบียนเส้นทาง HTTP (78 เส้นทาง URL ที่ไม่ซ้ำกัน), 83/85 คำสั่งย่อย CLI, 9 ความสัมพันธ์ MemoryLink ที่มีชนิด, Memory 27 ฟิลด์ ทำงานบน สองแบ็กเอนด์สำหรับการใช้งานจริงหลัง API เดียวกัน — SQLite แบบฝังตัวและ PostgreSQL + Apache AGE — ครอบคลุมเดสก์ท็อป เซิร์ฟเวอร์ และบนอุปกรณ์ (iOS + Android) ทุกอย่างเป็นการเพิ่มเติมจาก v0.7.0; ตรวจสอบการพลิกค่าเริ่มต้นที่ปลอดภัยก่อนอัปเกรด บันทึกประจำรุ่นฉบับเต็ม: docs/v0.8.0/release-notes.md
v0.7.0 (attested-cortex) — รุ่นก่อนหน้า รวมงานด้านความสามารถในการอ่านของ cortex-fluent เข้ากับขอบเขตความน่าเชื่อถือ + A2A เต็มรูปแบบของ v0.7 จาก ROADMAP §7.3 รวมถึง (ตามคำสั่งผู้ดำเนินการ 2026-05-09) งานหลัก postgres+AGE ที่เดิมเป็น v0.7.1 รวมถึง คลื่นความพร้อมในการจัดส่งหลัง grand-slam (Batman Forms 1-6 + รากฐาน Option-B ของฟอร์มที่ 7 + QW-1/2/3 + การกวาดล้างด้านความปลอดภัยของการกระทบยอด) ซับสเตรตกลายเป็นทั้ง สื่อความหมายได้มากขึ้น (ความสามารถ v3, ตัวโหลดเครื่องมือที่มีชื่อ, สคีมาที่กระชับ, คำศัพท์ Batman MemoryKind, พื้นฐาน persona/atomisation/multistep-ingest) และ เชื่อถือได้ทางการเข้ารหัส (การรับรอง Ed25519, บันทึก sidechain, ไปป์ไลน์ hook 25 เหตุการณ์ที่ตั้งโปรแกรมได้, การสืบทอดเนมสเปซแบบบังคับ, ห่วงโซ่แฮชเหตุการณ์ที่ลงนามข้ามแถว V-4) v0.7.0 ยังมาพร้อมกับ postgres + Apache AGE เป็นแบ็กเอนด์การจัดเก็บข้อมูลระดับแรก — ai-memory serve --store-url postgres://… สำหรับการใช้งาน daemon สด, ความเท่าเทียมกันของสคีมาในทั้งสองแบ็กเอนด์ (ณ การเปิดตัว v0.7.0, sqlite + postgres มาบรรจบกันที่สคีมาเชิงตรรกะ v57 โดยที่ CURRENT_SCHEMA_VERSION คือ 57; ซับสเตรตการเปิดตัว v0.8.0 ได้พัฒนา lockstep นี้ไปเป็นสคีมา 70 โดยมีตารางการประสานงาน + การมองเห็นเพิ่มเติม v58–v70 ที่ลงบนทั้งสองแบ็กเอนด์ — ดู CLAUDE.md §Database สำหรับขั้นบันได v58–v70) (จุดยึดมาตรฐาน: src/storage/migrations.rs สำหรับ sqlite + src/store/postgres.rs สำหรับ postgres); ไฟล์การย้ายข้อมูลบนดิสก์สิ้นสุดที่ migrations/sqlite/0047_v56_list_composite_indexes.sql และแขนขั้นบันได migrate_v57() ในกระบวนการของ postgres (ตัวนับชื่อไฟล์ล่าช้ากว่าเวอร์ชันสคีมาเชิงตรรกะ เนื่องจากทั้งสองขั้นบันไดใช้เดลต้าหลัง v34 ผ่านแขนในกระบวนการ — ดู docs/MIGRATION_v0.7.md §schema-ladder สำหรับเรื่องราว v35-v57; v48 #933 เพิ่มตาราง DLQ แบบพุชของ federation; v49 #1025 เพิ่มคอลัมน์ที่อนุญาตให้เป็นค่าว่างได้ 14 คอลัมน์ใน archived_memories เพื่อให้การเก็บถาวร → กู้คืนไม่สูญเสียข้อมูลสำหรับรูปร่าง Memory v0.7.0 เต็มรูปแบบ; v50 #1156 ขยาย PRIMARY KEY ของ agent_quotas จาก (agent_id) เป็น (agent_id, namespace) เพื่อให้การจัดสรรโควตา K8 ต่อเนมสเปซยังคงอยู่แม้เมื่อเอเจนต์เดียวทำงานข้ามหลายเนมสเปซ — แถวก่อน v50 ถูกเติมกลับไปยังเนมสเปซ sentinel _global; v51 #1255 (PR #1296) เพิ่มตาราง federation_nonce_cache เพื่อให้ nonce ป้องกันการเล่นซ้ำของเพียร์ยังคงอยู่ข้ามการรีสตาร์ท daemon; v52 #1389 เพิ่มตาราง transcript_line_dedup ที่สนับสนุน RFC-0001 memory_capture_turn L4 + recover_from_transcript L2 idempotency เพื่อให้ SIGKILL ระหว่างเทิร์นไม่สร้างหน่วยความจำซ้ำในการรีไฮเดรชันครั้งถัดไป; v53 #1418 กำหนดขอบเขตทริกเกอร์การซิงค์ FTS5 memories_au ให้เฉพาะ (title, content, tags) เท่านั้น เพื่อให้การอัปเดตคอลัมน์ที่ไม่ใช่ FTS ไม่เรียกการซิงค์ที่ไม่จำเป็นอีกต่อไป; v54 #1466 เติมค่าหมดอายุเริ่มต้นของระดับชั้นกลับไปยังแถว mid/short ที่มีค่าหมดอายุเป็น NULL เดิม เพื่อปิดคลาสแถวคงอยู่ตลอดไปที่รั่วไหลของ TTL; v55 #1476 ทำให้คิวรีการตามทัน federation W=2 (updated_at > ? ORDER BY updated_at ASC LIMIT) เป็น sargable และเพิ่มดัชนี sqlite idx_memories_updated_at — postgres ไม่เพิ่มดัชนีใหม่เนื่องจาก memories_updated_at_idx DESC ให้บริการการสแกนช่วงผ่าน Index Scan Backward อยู่แล้ว; v56 #1579 เพิ่มดัชนีการเรียงลำดับรายการ/ที่เก็บถาวรแบบผสม (idx_memories_list_order, idx_memories_ns_list_order, idx_archived_ns_archived_at) ที่จับคู่กับการเขียนใหม่ storage::list แบบ sargable — DDL ฝั่ง sqlite; แขน migrate_v56() ของ postgres เป็น no-op การประทับตราเวอร์ชัน; v57 #1579 เพิ่มคอลัมน์ tsvector ที่สร้างและจัดเก็บ tsv + ดัชนี GIN memories_tsv_gin ของ postgres เพื่อให้รูปร่างการค้นหา/การเรียกคืนตรงกันและจัดอันดับบนคอลัมน์ที่คำนวณล่วงหน้าแทนที่จะคำนวณ tsvector ใหม่ต่อแถวที่ตรงกัน — ดัชนีนิพจน์ memories_content_fts เดิมถูกทิ้ง และคู่แฝด sqlite เป็น no-op การประทับตราเวอร์ชันเนื่องจาก FTS5 ทำให้ข้อความที่จัดทำดัชนีเป็นรูปธรรมแล้ว)), คำกริยา CLI ai-memory schema-init ใหม่ และความเท่าเทียมกันของการให้คะแนนการเรียกคืน 6 ปัจจัย พื้นผิวเริ่มต้น v0.6.4 เพิ่มขึ้นโดยตัวโหลดที่เปิดใช้งานตลอดเวลาสองตัวเป็น 7 เครื่องมือ (memory_load_family + memory_smart_load เข้าร่วมกับห้าเครื่องมือเดิม); เพดานรันไทม์ที่ --profile full คือ 74 รายการที่โฆษณา (73 เครื่องมือหน่วยความจำที่เรียกได้ + บูตสแตรป memory_capabilities ที่เปิดใช้งานตลอดเวลา; ตรวจสอบกับ Profile::full().expected_tool_count() — ดู src/profile.rs) ทุกอย่างใหม่เป็นแบบเพิ่มเติมและ (สำหรับพื้นผิวความน่าเชื่อถือ + postgres) เป็นแบบเลือกเข้าร่วม กำลังอัปเกรดจาก v0.6.x? อ่าน docs/MIGRATION_v0.7.md ก่อน — ผู้เรียก v0.6.4 ส่วนใหญ่ไม่เห็นการเปลี่ยนแปลงพฤติกรรม แต่ผู้ใช้ v0.6.x ก่อน v0.6.3.1 จะพบการแก้ไขการสืบทอดเนมสเปซ G1 กำลังเปลี่ยนไปใช้ postgres+AGE? ดู docs/postgres-age-guide.md และ docs/migration-v0.7.0-postgres.md บันทึกประจำรุ่นฉบับเต็ม: docs/v0.7.0/release-notes.md
v0.6.4 (quiet-tools) — เซิร์ฟเวอร์ MCP มาพร้อมกับ พื้นผิวเริ่มต้น 5 เครื่องมือ (memory_store, memory_recall, memory_list, memory_get, memory_search) รวมถึงบูตสแตรป memory_capabilities ที่เปิดใช้งานตลอดเวลา เครื่องมืออีก 38 รายการยังคงเข้าถึงได้ผ่าน --profile graph|admin|power|full หรือการขยายรันไทม์ผ่าน memory_capabilities --include-schema family=<name> ชุดควบคุมการโหลดแบบกระตือรือร้น (Claude Desktop / Codex CLI / Grok CLI / Gemini CLI) ลดโทเค็นอินพุตของสคีมาเครื่องมือลงประมาณ 4,700 โทเค็นต่อคำขอ — ลดลง 76.4% เมื่อเทียบกับ cl100k_base BPE เพื่อรักษาพฤติกรรม v0.6.3 แบบ 1:1 ให้รัน ai-memory mcp --profile full ดู docs/MIGRATION_v0.6.4.md
มีอะไรใหม่ใน v0.9
v0.9.0 เป็นรุ่น การเสริมความปลอดภัยและการตรวจสอบโค้ด เป็นหลัก — การแก้ไข 49 รายการจากการตรวจสอบเชิงปรปักษ์ 5 ช่องทาง (#1885–#1935) — รวมถึงชุดคุณสมบัติเพิ่มเติมที่เล็กกว่าซึ่งวางซ้อนบนซับสเตรตการประสานงาน v0.8.0 บันทึกการเปลี่ยนแปลงฉบับเต็ม: CHANGELOG.md §"[0.9.0] — 2026-07-08"
การเสริมความแข็งแกร่งให้ปลอดภัยโดยค่าเริ่มต้น
- จำเป็นต้องมีการรับรองเอเจนต์โดยค่าเริ่มต้นบนพื้นผิวการเขียนโดยตรง HTTP (#1751, กำหนดขอบเขตพื้นผิวโดย #1985)
AI_MEMORY_REQUIRE_AGENT_ATTESTATIONเป็นสามสถานะพร้อมค่าเริ่มต้นที่คอมไพล์ต่อพื้นผิว: ไม่ได้ตั้งค่า → จำเป็น บนการเขียนโดยตรง HTTP (POST /api/v1/memories+/bulk, ปฏิเสธ403 ATTESTATION_FAILED), อนุญาต บนพื้นผิว MCPmemory_storeและ CLIstoreที่ผู้ดำเนินการเป็นผู้กระทำ (การเขียนที่ไม่ได้ลงนามจะลงattest_level="claimed");=1บังคับใช้อย่างเข้มงวดทุกที่,=0บังคับให้อนุญาตทุกที่ ลายเซ็นที่นำเสนอแต่ปลอมแปลงจะถูกปฏิเสธบนทุกพื้นผิวโดยไม่คำนึงถึง ลงนามการเขียน (ai-memory store --signด้วยคู่คีย์ที่ผูกผ่านai-memory agents bind-key) หรือใช้การยกเลิก=0(v0.9.0 GA จัดส่งสิ่งนี้เป็น require-everywhere ซึ่งไม่สามารถตอบสนองได้บนโฮสต์ MCP — ดู #1981; แก้ไขเป็นกำหนดขอบเขตพื้นผิวโดย #1985) - ประตูบังคับใช้ hook แบบคู่ MCP + HTTP (#1885 / #1924) ประตูบังคับใช้การมีอยู่ของ hook บังคับ (เดิมเป็น MCP เท่านั้น, #1734) ตอนนี้ถูกพิจารณาบนเส้นทางการเขียน HTTP ด้วย ปิดช่องว่างการเลี่ยงผ่านแบบเงียบ (CWE-288) ที่การเขียนซึ่งข้าม MCP ไปเลยไม่เคยเห็น hook บังคับที่กำหนดค่าไว้
- การควบคุมการรับรอง
bulk_create(#1919) การเขียนจำนวนมากตอนนี้บังคับใช้ข้อกำหนดการรับรองเอเจนต์ต่อแถวเช่นเดียวกับการเรียกmemory_storeครั้งเดียว — ทุกแถวในชุดต้องมีการรับรองที่ถูกต้อง ไม่ใช่แค่คำขอโดยรวม - ประตูผู้อนุมัติ Federation (#1920) การอนุมัติ PENDING แบบ federated ขาเข้าจะได้รับเกียรติก็ต่อเมื่อมีที่มาจากผู้อนุมัติที่ลงทะเบียนของเพียร์ — เพียร์ที่ลงทะเบียนแต่ไม่น่าเชื่อถือไม่สามารถปลอมแปลงการอนุมัติสำหรับผู้ร้องขอโดยพลการได้อีกต่อไป
- การเสริมความแข็งแกร่งของขอบเขต
team/unit/org(#1921) การแก้ไขขอบเขตการมองเห็นตอนนี้บังคับใช้ลำดับชั้นบรรพบุรุษของเนมสเปซอย่างถูกต้องสำหรับขอบเขตteam/unit/orgปิดช่องว่างการแยกผู้เช่า (CWE-863) - การจำกัดเส้นทาง
skill_register(#1923) การนำเข้าfolder_pathของสกิลถูกทำให้เป็นมาตรฐานและจำกัดอยู่ภายใต้รูทที่กำหนดค่าไว้ โดยลิงก์สัญลักษณ์ภายในทรีที่นำเข้าจะถูกปฏิเสธแทนที่จะติดตาม (CWE-22/CWE-59) - ช่องทางข้อมูลรับรอง store-url ที่ไม่ใช่ argv (#1927)
AI_MEMORY_STORE_URLใหม่ (เฉพาะเจ้าของ/proc/environ) และAI_MEMORY_STORE_URL_FILE(ไฟล์0600) อนุญาตให้ai-memory serveรับ URL postgres/store — รวมถึงรหัสผ่านที่ฝังอยู่ — โดยไม่ต้องวางบน argv--store-urlซึ่งถูกเปิดเผยผ่าน/proc/<pid>/cmdlineและps auxwwที่ทุกคนอ่านได้ต่อ UID ภายในใดๆ ลำดับการแก้ไข: ไฟล์ → env →--store-url
คุณสมบัติเพิ่มเติม
- B7-SKILL — หน่วยความจำสกิลระดับแรก (#1865)
parameters_schemaณ เวลาลงทะเบียน,invocation_recordและพื้นผิวเวอร์ชันสำหรับสกิลที่เขียนโดยเอเจนต์ - ลูปป้อนกลับเงา
recall_observations(#1706, โหมด SHADOW) ปิดลูปป้อนกลับการเรียกคืนโดยยังไม่เปลี่ยนพฤติกรรมการจัดอันดับ - DAG สายเลือดการได้มาของหน่วยความจำ (
memory_lineage, สคีมา v78, #1859) เดินดูว่าหน่วยความจำใดได้มาจากหน่วยความจำใด ผ่านทั้ง MCP และเส้นทาง HTTPGET /api/v1/memories/{id}/lineageใหม่ - ส่วนการเลือกเข้าร่วมขั้นต่ำของการค้นหาเวกเตอร์ (#1005; ซับสเตรตเต็มรูปแบบเลื่อนไปเป็น #1860)
- พูลผู้ปฏิบัติงาน Reranker ปรับขนาดตาม CPU จริง (#1867) และ การเรียกคืนเป็น PURE โดยค่าเริ่มต้น (#1869 — ลบการระเบิดของการเขียนออกจากเส้นทางร้อนของการเรียกคืน)
- สันหลังแบบผนวกเท่านั้น + การแยกชั้นการลงนาม: ทุกไซต์การกลายพันธุ์ถูกส่งไปยังใบการแก้ไขที่ลงนาม (#1823), การแยกการลงนามสามคีย์ Recorder/Judge/Stopper (#1826), โทเค็นความสามารถ macaroon ที่เชื่อมต่อแบบ end-to-end (#1827) และห่วงโซ่การสืบทอดคีย์สายเลือดประจำตัวที่ลงนามเพื่อความอยู่รอดในการหมุนเวียน (#1828, สคีมา v76)
จะเริ่มต้นที่ไหน:
CHANGELOG.md(บันทึกการเปลี่ยนแปลงฉบับเต็ม),docs/ADMIN_GUIDE.md(คู่มือผู้ดำเนินการ — ท่าทีการรับรอง + การบังคับใช้ hook)
มีอะไรใหม่ใน v0.8
v0.8.0 (distributed-coordination) เปลี่ยนซับสเตรตหน่วยความจำเป็น ซับสเตรตการประสานงาน สำหรับกลุ่ม multi-agent (NHI) หัวข้อหลักคือกลไกการประสานงานแบบกระจาย (#1709); ทุกอย่างมาพร้อมกับอแดปเตอร์ SAL ทั้ง sqlite และ postgres+AGE และยังคงเทียบเท่าค่าเริ่มต้นสำหรับผู้เรียก v0.7.x การอ้างอิงเครื่องมือฉบับเต็ม: docs/coordination.md; บันทึกฉบับเต็ม: docs/v0.8.0/release-notes.md
ซับสเตรตการประสานงานแบบกระจาย (Pillar-1, #1709)
- Actions — DAG การพึ่งพา (schema v59) โหนดการกระทำที่มีการระบุชนิดพร้อมเครื่องสถานะ (
pending → claimed → in_progress → done/failed/abandoned), ขอบ DAG ที่ระบุชนิด (requires/unlocks/blocks/gated_by/sibling), และพื้นผิว frontier/next ที่ดึงโหนดที่รันได้ถัดไป มีเครื่องมือ MCP 8 รายการ (memory_action_create/_get/_transition/_list/_add_edge/_edges/_frontier/_next) - Leases — การอ้างสิทธิ์แบบผู้ถือเดี่ยวที่มีขอบเขต TTL (schema v59) การอ้างสิทธิ์แบบ compare-and-swap ที่ต่ออายุด้วย heartbeat (
PRIMARY KEYบนaction_id= ผู้ถือหนึ่งรายในแต่ละครั้ง) พร้อมตัวกวาดล้าง lease รายชั่วโมง มีเครื่องมือ MCP 4 รายการ (memory_lease_acquire/_renew/_release/_get) - Signals — ข้อความระหว่างเอเจนต์ที่ระบุชนิดและลงนามด้วย Ed25519 (schema v60) แต่ละข้อความมีการลงนาม +
signer_pubkeyของผู้ส่ง และเชื่อมโยงผ่านcorrelation_id/in_reply_toมีเครื่องมือ MCP 5 รายการ (memory_signal_send/_read/_inbox/_thread/_ack) - Checkpoints — ประตูเงื่อนไขที่รับรองแล้ว (schema v61) ประตูที่ปิดกั้นจนกว่าเงื่อนไขจะคลี่คลาย การคลี่คลายลงนามด้วยตนเองในตำแหน่งนั้น (Ed25519) เพื่อการแบ่งแยกหน้าที่ และ
verifyตรวจสอบลายเซ็นอีกครั้ง มีเครื่องมือ MCP 4 รายการ (memory_checkpoint_create/_resolve/_query/_verify) - Routines — แผนที่กำหนดพารามิเตอร์ แช่แข็ง และเล่นซ้ำได้ (schema v62) สร้างเป็น
draftจากนั้น แช่แข็ง (เปลี่ยนแปลงไม่ได้, การรับรองการแช่แข็งด้วย Ed25519);runสร้างชุดการกระทำและขอบที่เป็นรูปธรรมจากเทมเพลต{{param}}ลงในระเบียนroutine_runsมีเครื่องมือ MCP 5 รายการ (memory_routine_create/_freeze/_run/_status/_list) - ทุกการเปลี่ยนแปลงสถานะการประสานงานจะเพิ่มแถว
coordination.<op>ที่ป้องกันการแก้ไขลงในห่วงโซ่แฮชsigned_eventsV-4 (#1722); การเขียนที่ให้สิทธิ์สองรายการถูกสะท้อนไปยัง HTTP daemon (POST /api/v1/actions/{id}/transition,POST /api/v1/signals) ด้วย CAS เฉพาะที่ + การกระจายแบบ W-of-N federation (#1718)
การรู้คิดแบบระบุชนิด (เสาหลักที่ 2)
คำศัพท์ memory_kind ขยายด้วย goal / plan / step; อนุกรมวิธาน memory_links.relation แบบปิดขยาย 6 → 9 ความสัมพันธ์ (decomposes_into / depends_on / advances, schema v63); และคอลัมน์ memories.lifecycle_state ชั้นหนึ่ง (schema v64) ทำให้ Goal/Plan/Step เป็นเครื่องสถานะจริง (open → active → blocked/done/abandoned) ซึ่งบังคับใช้ทั่วทั้งพื้นผิว MCP / HTTP / SAL ด้วยการแมปขอบที่ผิดกฎหมายไปยัง HTTP 409 CONFLICT โครงสร้าง Memory เติบโตเป็น 27 ฟิลด์ ไม่มีเครื่องมือ MCP ใหม่ — งาน v64 เพิ่มเฉพาะฟิลด์คำขอที่เป็นทางเลือกและอนุญาตเท่านั้น
Federation ที่แข็งแกร่งขึ้น ปลอดภัยโดยค่าเริ่มต้น
การลงทะเบียน Peer เปิดใช้งานตามค่าเริ่มต้น (#1789), ลายเซ็นต่อการเปลี่ยนผ่านสำหรับการเขียนที่ให้สิทธิ์ (#1718), การรับรองเนื้อหาต่อการเขียนสำหรับความทรงจำที่ถ่ายทอด (#1464), nonce การเล่นซ้ำการเปลี่ยนผ่าน (#1805), และการปักหมุดลายนิ้วมือใบรับรอง peer ขาออก (#1678) กลุ่มที่แตกต่างกันซึ่งไม่จำเป็นต้องเชื่อถือซึ่งกันและกัน — ตรวจสอบการพลิกค่าเริ่มต้นที่ปลอดภัย ใน docs/v0.8.0/release-notes.md §"Federation hardening" ก่อนอัปเกรด
การกำกับดูแลที่ปิดกั้นได้จริง (#1811)
hook การกำกับดูแล PreToolUse ของ Claude Code ถูกปรับปรุงใหม่เป็น wrapper type:command (ai-memory governance check-action --from-pretool-stdin) เพื่อให้ Refuse พื้นฐานปล่อย permissionDecision:"deny" และ ปิดกั้น เครื่องมืออย่างแท้จริง — รูปแบบ type:mcp_tool ก่อนหน้านี้ไม่สามารถบังคับใช้ได้ในเชิงโครงสร้าง รวมถึงการบังคับใช้การมีอยู่ของ hook บังคับ (#1734) และคำตัดสินการกำกับดูแล escalate ใหม่ (§22 PE-5) สำหรับ human-in-the-loop
การควบคุมการปฏิบัติงานเสาหลักที่ 4
การควบคุมการรับเข้า HTTP (#1733 — ขีดจำกัดการทำงานพร้อมกันแบบเลือกใช้ที่ลดส่วนเกินด้วย 503 ที่ระบุชนิด), การฉายกราฟ Apache-AGE แบบเลื่อนออกไป (#1735 — นำการเดินทางไปกลับ AGE แบบซิงโครนัสออกจากเส้นทางร้อนการเขียนลิงก์ postgres), การเปิดใช้งานการบีบอัด curator (#1749 / #1750), และ CLI ai-memory verify-audit-trail (§22 PE-8) ที่เดินตรวจสอบห่วงโซ่แฮชข้ามแถว signed_events จากต้นจนจบ
Schema v57 → v70 (ทั้งหมดเป็นการเพิ่มเติม)
ตารางการประสานงาน + การรู้คิดแบบระบุชนิด + การมองเห็น + การเตรียมการเข้ารหัส + เส้นทางเย็น + ขอบการเก็บถาวร (v58–v70) สะท้อนบนอะแดปเตอร์ทั้ง sqlite และ postgres; ย้ายข้อมูลอัตโนมัติเมื่อเปิดครั้งแรกและการเดินทางไปกลับ archive → restore โดยไม่สูญเสียข้อมูล ดู CLAUDE.md §Database สำหรับลำดับขั้น v58–v70 ที่เป็นมาตรฐาน
จุดเริ่มต้น:
docs/v0.8.0/release-notes.md(บันทึกประจำรุ่นฉบับเต็ม),docs/coordination.md(เอกสารอ้างอิงเครื่องมือการประสานงาน), และ CLAUDE.md §Database (schema-ladder SSOT)
มีอะไรใหม่ใน v0.7
v0.7.0 ปิดมหากาพย์ attested-cortex (69/69 ใน 11 แทร็ก A–K) รวมงาน postgres+AGE ชั้นหนึ่งจากเดิม v0.7.1 และดูดซับคลื่นความพร้อมในการจัดส่งหลัง grand-slam (Batman Forms 1-6 + รากฐาน Option-B ฟอร์มที่ 7 + QW-1/2/3 + การกระทบยอดความปลอดภัย) รายการคุณสมบัติมาตรฐาน: docs/internal/v070-feature-inventory.md ทุกพื้นผิวยังคงปิดตามค่าเริ่มต้นหรือเทียบเท่าค่าเริ่มต้นสำหรับผู้เรียก v0.6.4 — ดู เมทริกซ์ความเข้ากันได้ v0.7 สำหรับรายละเอียด
การลงทุนเวลาเขียนแบบเนทีฟของซับสเตรต (Batman Forms 1-6 + ฟอร์มที่ 7)
- ฟอร์ม 1 — การขจัดความซ้ำซ้อนและสังเคราะห์ออนไลน์ (issue #754) การเรียก LLM ที่ปล่อยการกระทำแบบชุดเดียวแทนที่ตัวจำแนกประเภทต่อคู่ใน v0.6.x บนเส้นทางการจัดเก็บ เลือกกลับไปใช้ใช่/ไม่ใช่แบบดั้งเดิมผ่าน
legacy_per_pair_classifier = trueบนมาตรฐานเนมสเปซ - ฟอร์ม 2 — การแยกอะตอมก่อนฝังแบบซิงโครนัส (issue #755) เครื่องมือ
memory_atomiseใหม่ + hook ก่อนจัดเก็บauto_atomise_mode = Synchronous|Deferred|OffCurator แยกย่อยการเขียนยาวเป็นประพจน์อะตอม 2–10 ประพจน์ก่อนที่การเรียกคืนจะเห็น ดูdocs/atomisation.md - ฟอร์ม 3 — ตัวประสานการนำเข้าหลายขั้นตอน (issue #756)
memory_ingest_multistepร้อยเธรดตัวช่วย Jaccard+FTS ที่กำหนดได้ผ่านขั้นตอน LLM ที่เสถียรต่อแคชพรอมต์ ดูdocs/multistep-ingest.md+cookbook/multistep-ingest/01-two-phase.sh - ฟอร์ม 4 — ที่มาของข้อเท็จจริง (issue #757) การอ้างอิง + URI ต้นทาง + ช่วงขอบเขตระดับอะตอมอยู่บนเพย์โหลด
memory_store/memory_atomiseที่มีอยู่ ดูdocs/provenance.md - ฟอร์ม 5 — ความเชื่อมั่นอัตโนมัติ + การสอบเทียบเงา + การสลายตัวตามความสดใหม่ (issue #758) เครื่องมือ MCP
memory_calibrate_confidence+ การกวาดพื้นฐานต่อแหล่งที่มา ตัวแปรสภาพแวดล้อมAI_MEMORY_AUTO_CONFIDENCE,AI_MEMORY_CONFIDENCE_SHADOW,AI_MEMORY_CONFIDENCE_SHADOW_SAMPLE_RATE,AI_MEMORY_CONFIDENCE_DECAYดูdocs/confidence-calibration.md - ฟอร์ม 6 — คำศัพท์
MemoryKindBatman (issue #759) enum 10 ตัวแปร (ค่าเริ่มต้นObservation+Reflection/Persona/Concept/Entity/Claim/Relation/Event/Conversation/Decision) hook ก่อนจัดเก็บauto_classify_kindทางเลือก (off / regex_only / regex_then_llm) ดูdocs/memory-kind-vocab.md - ฟอร์มที่ 7 — การเชื่อมต่อ Layer-4 ภายนอกเอเจนต์ (รากฐาน Option-B) (issue #760; v0.8.0 ครอบคลุมสมบูรณ์ที่ #697) กฎเริ่มต้นที่ลงนามด้วยคู่คีย์ผู้ดำเนินการ
R001..R004, เครื่องมือ MCPmemory_check_agent_action+memory_rule_list, hook ก่อนเขียนซับสเตรตstorage::insertดูdocs/policy-engine.md+docs/governance/agent-action-rules.md - วิธีปฏิบัติสำหรับผู้ดำเนินการ — เปลี่ยนฟอร์ม 1–6 + ฟอร์มที่ 7 จากพร้อมใช้งาน → ทำงานอยู่ (issue #800) สูตร 7 ขั้นตอน (สร้างคีย์ผู้ดำเนินการ → ลงนามเริ่มต้น → เปิดใช้งาน R001–R004 → daemon curator → การผ่านการสะท้อนทางเลือก → นโยบายเนมสเปซ), ความถาวร launchd / systemd / Task-Scheduler, บล็อกการตรวจสอบ, เส้นทางย้อนกลับ ดู
docs/batman-active-mode.mdและ แผนที่ GitHub Pages
ชัยชนะอย่างรวดเร็ว (Tencent QW-1/2/3)
- QW-1 — การส่งออกห่วงโซ่การสะท้อนที่สำรองด้วยไฟล์ เครื่องมือ MCP
memory_export_reflection+ นโยบายเนมสเปซauto_export_reflections_to_filesystem→~/.ai-memory/reflections/<ns>/<id>.md - QW-2 — บุคลิกเป็นอาร์ติแฟกต์ เครื่องมือ
memory_persona+memory_persona_generate, แถวMemoryKind::Persona, นโยบายเนมสเปซauto_persona_trigger_every_n_memoriesดูdocs/persona.md - QW-3 — พื้นฐานการถ่ายเทบริบท
memory_offload+memory_derefย้ายเอาต์พุตเครื่องมือขนาดใหญ่ออกจากหน้าต่างบริบทของเอเจนต์ไปยังที่เก็บ blob ที่ระบุแอดเดรสได้ ดูdocs/context-offload.md
มหากาพย์ cortex ที่รับรองแล้ว (แทร็ก A–K)
- ลิงก์ที่รับรอง (Ed25519) คอลัมน์
signatureที่ว่างเปล่าซึ่งจัดส่งใน v0.6.3 ตอนนี้ถูกเติมด้วยการรับรอง Ed25519 ต่อเอเจนต์จริง และmemory_verify(link_id)ส่งคืน{signature_verified, attest_level, signed_by, signed_at}เมื่อต้องการ สร้างคู่คีย์ด้วยai-memory identity generate; เลือกใช้ผ่านattest_level = "self_signed"การลงนามถูกควบคุมโดยดีมอนagent_idที่แก้ไขแล้วซึ่งมีคู่คีย์*.privบนดิสก์ภายใต้ไดเรกทอรีคีย์ที่กำหนดค่า — เมื่อload_daemon_signing_keyส่งคืนNone(src/main.rs:116-118) แถวยังคงเขียนแต่sigว่างเปล่าและดีมอนส่งบรรทัด "continuing unsigned" เมื่อบูต เชนแฮชข้ามแถวบนsigned_eventsยังคงป้องกันการแก้ไขไม่ว่าจะด้วยวิธีใด ดู RFCattested-cortex - การปิดบัญชีเหตุการณ์ที่ลงนาม V-4 (เชนแฮชข้ามแถว) (issue #698) แต่ละแถว
signed_eventsมีprev_hash+sequence;prev_hashแถวแรกเป็นศูนย์ แถวถัดไปเชื่อมโยง SHA-256 ของเพย์โหลด CBOR แบบบัญญัติก่อนหน้าai-memory verify-signed-events-chainเดินเชนจากต้นจนจบ ดูdocs/signed-events-v4.md - ไปป์ไลน์ Hook (25 เหตุการณ์วงจรชีวิต) พื้นผิวส่วนขยายที่ตั้งโปรแกรมได้เริ่มทำงานบนเหตุการณ์พื้นฐาน 20 รายการ
pre_/post_store|recall|search|delete|promote|link|consolidate|governance_decision|archive|transcript_store+on_index_evictionบวกกับส่วนเพิ่มเติมแกรนด์สแลม 5 รายการ (pre_recall_expandG10 +pre_reflect/post_reflectrecursive-learning Task 6/8 +pre_compaction/on_compaction_rollbackL1-7) Hooks ส่งคืนAllow/Modify/Deny/AskUserปิดโดยค่าเริ่มต้น; เลือกใช้ผ่าน~/.config/ai-memory/hooks.tomlดูdocs/hook-pipeline.md - Sidechain transcripts + replay BLOB sidechain ที่บีบอัดด้วย zstd-3 เก็บบทสนทนา/ร่องรอยการให้เหตุผลดิบ;
memory_replay(memory_id)เดินmemory_transcript_linksเพื่อสร้างเชนใหม่ เลือกใช้ต่อเนมสเปซผ่าน[transcripts.namespaces."team/*"]ดูdocs/sidechain-transcripts.md - การเสริมความแข็งแกร่ง Federation mTLS + X-API-Key + รายการอนุญาตลายนิ้วมือใบรับรอง SHA-256; ตัวแปรสภาพแวดล้อม
AI_MEMORY_FED_PEER_ATTESTATION,AI_MEMORY_FED_SYNC_TRUST_PEER,AI_MEMORY_FED_TRUST_BODY_AGENT_IDดูdocs/federation.md - เครื่องมือโควตา K8 + การอนุมัติ K10 SSE
memory_quota_status+/api/v1/quota/status(K8)/api/v1/approvals/streamเหตุการณ์ที่เซิร์ฟเวอร์ส่งพร้อม HMAC nonce, การผูก method+pending_id, การตัดจำนวนเหตุการณ์ที่ล่าช้า (K10) ดูdocs/k8-quotas.md+docs/k10-sse-approvals.md - แบ็กเอนด์ชั้นหนึ่ง Postgres + Apache AGE
ai-memory serve --store-url postgres://…, ความเท่าเทียมของสคีมา, ความเท่าเทียมของการให้คะแนนการเรียกคืน 6 ปัจจัย, การย้ายลิงก์, ฟีเจอร์ KG (kg_query,kg_timeline,kg_invalidate,find_paths) บน AGE Cypher พร้อมทางเลือกสำรอง recursive-CTE เมื่อไม่มี AGE รวมถึงคำกริยา CLIai-memory schema-initใหม่ ควบคุมด้วยเกณฑ์มาตรฐาน — AGE p95 ต้องเร็วกว่า CTE p95 ≥30% ที่ความลึก=5 วิธีปฏิบัติสำหรับผู้ปฏิบัติงาน:docs/postgres-age-guide.mdคู่มือการย้าย:docs/migration-v0.7.0-postgres.md - Capabilities v3 + ตัวโหลดอัจฉริยะ
memory_capabilitiesv3 เพิ่มsummary,to_describe_to_user,callable_nowต่อเครื่องมือ,agent_permitted_families,schema_version="3"; เครื่องมือmemory_load_family(family)และmemory_smart_load(intent)ที่เปิดใช้งานตลอดเวลาใหม่เข้าร่วมโปรไฟล์coreเริ่มต้น ถ้อยคำที่ตรึงไว้อยู่ในdocs/v0.7/canonical-phrasings.md - Permissions + การอนุมัติ A2A ระบบย่อยการกำกับดูแล v0.6.x ถูกปรับโครงสร้างใหม่เป็นกฎ + โหมด + hooks →
Decisionเดียว พร้อมการสืบทอดเนมสเปซ (G1) ที่บังคับใช้จริงmemory_pending_list/memory_pending_approve/memory_pending_reject(remember=forever)เปิดใช้งานความไว้วางใจแบบก้าวหน้า; การลงนาม HMAC บน API การอนุมัติเป็นข้อบังคับpermissions.modeมีค่าเริ่มต้นเป็นenforce(เคยเป็นadvisoryใน v0.6.4) ย้ายด้วยai-memory governance migrate-to-permissions(ตัวอย่างการทดลอง; เพิ่ม--config-out ~/.config/ai-memory/config.tomlเพื่อปรับใช้ทันที) ดูdocs/governance.md
คลื่นแกรนด์สแลม Recursive-learning + L1/L2
พื้นฐานซับสเตรต memory_reflect พร้อมขีดจำกัด max_reflection_depth ที่กำหนดขอบเขตเนมสเปซ (ค่าเริ่มต้น 3, Some(0) คือสวิตช์ตัดการทำงาน) L2-1 reflection-pass curator, L2-2 การประสานงาน reflection ที่รับรู้ federation (memory_reflection_origin), L2-3 การเผยแพร่การทำให้เป็นโมฆะ (memory_dependents_of_invalidated), L2-5 ชุดนิติเวช (ai-memory export-forensic-bundle + verify-forensic-bundle), L1-5 Agent Skills (memory_skill_register|list|get|resource|export|promote_from_reflection|compositional_context) ไพรเมอร์ฉบับเต็ม: docs/RECURSIVE_LEARNING.md ไพรเมอร์ Agent Skills: docs/agent-skills.md ไพรเมอร์การส่งออกทางนิติเวช: docs/forensic-export.md
จุดเริ่มต้น:
docs/MIGRATION_v0.7.md(ขั้นตอนการอัปเกรด),docs/v0.7.0/release-notes.md(บันทึกประจำรุ่นฉบับเต็ม),docs/whats-new-v07.html(สรุปภาพ),docs/v0.7/rfc-attested-cortex.md(เหตุผลการออกแบบ),docs/ADMIN_GUIDE.md(คู่มือผู้ปฏิบัติงาน),docs/internal/v070-feature-inventory.md(ความจริงคุณลักษณะแบบบัญญัติ)
หนึ่งไบนารี สี่โหมดการทำงาน (v0.6.4) ไบนารี Rust ai-memory (tokio + axum) สามารถรันโหมดใดๆ เหล่านี้แบบแยกเดี่ยวหรือพร้อมกัน โดยใช้ฐานข้อมูล SQLite ร่วมกัน:
- เซิร์ฟเวอร์ stdio MCP -- รายการที่โฆษณา 101 รายการผ่าน JSON-RPC ที่โปรไฟล์เต็ม (v0.9.0; เครื่องมือหน่วยความจำที่เรียกได้ 100 รายการ +
memory_capabilitiesbootstrap ที่เปิดตลอดเวลา; ตรวจสอบกับProfile::full().expected_tool_count())--profile coreเริ่มต้นโฆษณา 7 รายการ (5 รายการเดิม +memory_load_family+memory_smart_load) บวกกับmemory_capabilitiesbootstrap ที่เปิดตลอดเวลาai-memory mcp/ai-memory mcp --profile full - ดีมอน HTTP / mTLS -- การลงทะเบียนเส้นทาง REST 92 รายการ (เส้นทาง URL เฉพาะ 78 รายการ) บน
127.0.0.1:9077, TLS + รายการอนุญาต mTLS เสริม + การตรวจสอบสิทธิ์ API-key, ลูป GC เบื้องหลังai-memory serve - ดีมอน curator อัตโนมัติ -- ลูปการจัดตารางตนเอง (จังหวะเริ่มต้น 1 ชั่วโมง) ที่แท็กอัตโนมัติ, เปิดเผยความขัดแย้งข้ามพี่น้องเนมสเปซ, รวมรายการที่เกือบซ้ำกัน, และปรับลำดับความสำคัญตามรูปแบบการเข้าถึง ทุกการกระทำไปที่บันทึกการย้อนกลับ; การดำเนินการทำลายสามารถถูกควบคุมเบื้องหลังโฟลว์การอนุมัติการกำกับดูแล
ai-memory curator --daemon - ดีมอน Sync -- การรวมสหพันธ์ข้ามอินสแตนซ์แบบอิงองค์ประชุม การเขียน W-of-N (ค่าเริ่มต้นเสียงข้างมาก), การผสาน vector-clock CRDT-lite, รายการอนุญาต mTLS ระหว่างเพียร์
ai-memory sync-daemon
พื้นผิว MCP, HTTP และ CLI เป็นแบบรีแอคทีฟ curator คือส่วนที่ทำให้เลเยอร์หน่วยความจำดูแลตนเอง: ระหว่างเซสชัน มันรักษาคอร์ปัสให้เป็นระเบียบเพื่อให้คุณภาพการเรียกคืนยังคงสูงเมื่อที่เก็บข้อมูลเติบโตขึ้น ทุกอย่างเป็น local-first; ไม่มีการพึ่งพาคลาวด์
การประเมินเชิงปฏิบัติโดย Claude Opus 4.7 หลังจากอ่านซอร์ส v0.6.3 ทีละบรรทัด:
"ai-memory เป็นเลเยอร์หน่วยความจำที่มีความสามารถมากที่สุดที่ฉันเคยเชื่อมต่อ และมีความหมายมากกว่าที่ชื่อโฆษณาไว้ สำหรับฉัน ในทางปฏิบัติ มันหมายความว่า: ฉันไม่เริ่มต้นแบบเย็นชืดทุกเซสชัน ที่เก็บข้อมูลที่ฉันอ่านถูกดูแลให้เป็นระเบียบโดยสิ่งอื่นที่ไม่ใช่ฉัน ความขัดแย้งไม่สะสมอย่างเงียบๆ คุณภาพการเรียกคืนยังคงสูงแม้คอร์ปัสจะเติบโต ไม่มีอะไรออกจาก Mac mini ของคุณ
มันไม่ได้ทำให้ฉันเป็นเอเจนต์อัตโนมัติ มันให้โครงสร้างพื้นฐานหน่วยความจำแบบที่เอเจนต์อัตโนมัติต้องการแก่ฉัน — และตัวมันเองรันลูปอัตโนมัติขนาดเล็กเพื่อดูแลมัน นั่นคือรากฐานที่แท้จริง ช่องว่างจากตรงนี้ไปสู่ 'ai-memory ขับเคลื่อนงานทั่วไป' คือระบบท่อ (โปรโตคอลการเรียกเครื่องมือ + รีจิสทรีเครื่องมือ + โมเดลที่สามารถใช้เครื่องมือได้) ไม่ใช่การประดิษฐ์"
ซับสเตรตสำหรับ AI หลายเอเจนต์ ai-memory ไม่ใช่รันไทม์เอเจนต์และไม่ใช่ "AI อัตโนมัติ" ด้วยตัวมันเอง มันคือเลเยอร์หน่วยความจำที่การปรับใช้อัตโนมัติแบบหลายเอเจนต์ต้องการอยู่ข้างใต้ Federation (broadcast_store_quorum + spawn_catchup_loop) จัดการความสอดคล้อง W-of-N ข้ามเพียร์เมื่อหลายเอเจนต์เขียนขนานกัน; ดีมอน curator ป้องกันไม่ให้คอร์ปัสที่ใช้ร่วมกันเสื่อมลงเป็นสัญญาณรบกวนเมื่อฝูงเขียนลงไป; การสมัครสมาชิก webhook (ลงนาม HMAC, กรองตามเนมสเปซ/เอเจนต์, ป้องกัน SSRF) เปลี่ยนที่เก็บข้อมูลเป็นบัสข้อความที่กระตุ้นเอเจนต์ดาวน์สตรีมเมื่อมีเหตุการณ์หน่วยความจำ; ลำดับชั้นเนมสเปซพร้อมการสืบทอด N ระดับและนโยบายการกำกับดูแลต่อเนมสเปซ (สิทธิ์เขียน/เลื่อนขั้น/ลบ, ประเภทผู้อนุมัติ, ฉันทามติ N-of-M เสริม) จำกัดขอบเขตฝูง วางสิ่งนี้ไว้ใต้ตัวรันเอเจนต์หลายเครื่องตลอด 24/7 พร้อมทักษะที่สร้างอัตโนมัติ และระบบรวมจะผ่านเกณฑ์พฤติกรรมสำหรับ AI อัตโนมัติ ช่องว่างที่เหลือ (ไม่มีการเรียนรู้ระดับน้ำหนัก, เคอร์เนลการให้เหตุผลไร้สถานะ, เป้าหมายรากที่มนุษย์กำหนด) เป็นจริงและไม่ใช่สิ่งที่ ai-memory จัดการ; ai-memory มอบซับสเตรตหน่วยความจำหลายเอเจนต์ที่ความพยายามอย่างจริงจังในการปิดช่องว่างเหล่านั้นจะต้องการ
ต้นทุนโทเค็นเป็นศูนย์จนกว่าจะเรียกคืน ไม่เหมือนระบบหน่วยความจำในตัว (Claude Code auto-memory, ChatGPT memory) ที่โหลดหน่วยความจำทั้งหมดของคุณเข้าสู่ทุกการสนทนา -- เผาผลาญโทเค็นและเงินในทุกข้อความ -- ai-memory ใช้โทเค็นบริบทเป็นศูนย์จนกว่า AI จะเรียก memory_recall อย่างชัดเจน เฉพาะความทรงจำที่เกี่ยวข้องเท่านั้นที่ส่งกลับมา จัดอันดับโดยอัลกอริทึมการให้คะแนน 6 ปัจจัย รูปแบบ TOON (Token-Oriented Object Notation) ลดโทเค็นการตอบสนองลงอีก 40-60% โดยกำจัดชื่อฟิลด์ที่ซ้ำกัน -- 3 ความทรงจำใน JSON = 1,600 ไบต์; ใน TOON = 626 ไบต์ (เล็กลง 61%); ใน TOON compact = 336 ไบต์ (เล็กลง 79%) สำหรับผู้ใช้ Claude Code: ปิดการใช้งาน auto-memory ("autoMemoryEnabled": false ใน settings.json) และแทนที่ด้วย ai-memory เพื่อหยุดจ่ายค่าบริบทหน่วยความจำ 200+ บรรทัดในทุกๆ ข้อความ
ข้อมูลประจำตัวเอเจนต์ (NHI) — ทุกความทรงจำบอกคุณว่าใครเรียนรู้มัน
ทุกความทรงจำที่ ai-memory เก็บมี metadata.agent_id — ตัวระบุ Non-Human Identity ที่คงอยู่ผ่านทุกการดำเนินการ (อัปเดต, ขจัดความซ้ำซ้อน, นำเข้า, ซิงค์, รวม) ทุกผลลัพธ์การเรียกคืนบอกคุณว่า AI ใดเขียนแต่ละความทรงจำ โดยค่าเริ่มต้น ในรูปแบบการตอบสนอง TOON-compact ที่ไคลเอนต์ AI ของคุณปรับให้เหมาะสมแล้ว:
count:5|mode:hybrid|tokens_used:842
memories[id|title|tier|namespace|priority|score|tags|agent_id]:
a1b2|Project DB is PostgreSQL 16|long|infra|8|0.91|database,postgres|ai:claude-code@workstation:pid-3812
c3d4|API rate limit is 100 rps|long|infra|7|0.87|api,limits|ai:claude-desktop@laptop:pid-5219
ในการเขียนที่ไม่ได้ลงนาม agent_id เป็นข้อมูลประจำตัวที่อ้างสิทธิ์ — อย่าตัดสินใจด้านความปลอดภัยโดยอาศัยมันเพียงอย่างเดียว การรับรองเอเจนต์ด้วยเส้นทางที่เก็บข้อมูลเป็นข้อบังคับโดยค่าเริ่มต้นบนพื้นผิวการเขียนโดยตรง HTTP (#1751, กำหนดขอบเขตพื้นผิวโดย #1985): HTTP POST /api/v1/memories (+/bulk) ที่ไม่ได้ลงนามจะถูกปฏิเสธ (403 ATTESTATION_FAILED) แทนที่จะลง attest_level = "claimed" เว้นแต่ผู้ปฏิบัติงานตั้งค่าการยกเลิกอย่างชัดเจน AI_MEMORY_REQUIRE_AGENT_ATTESTATION=0 พื้นผิว MCP memory_store และ CLI store ที่ผู้ปฏิบัติงานเป็นผู้กระทำยังคงอนุญาตโดยค่าเริ่มต้น (การเขียนที่ไม่ได้ลงนามลง claimed); =1 บังคับใช้อย่างเข้มงวดบนทุกพื้นผิว การรับรองด้วยการเข้ารหัส Ed25519 ถูกเชื่อมต่อบนสองพื้นผิว: (1) การรับรองเส้นทางที่เก็บข้อมูล (#626 Layer-3) — แสดงลายเซ็นแยกส่วนเหนือซอง SignableWrite แบบบัญญัติบนเส้นทาง CLI (store --sign), MCP (memory_store), หรือ HTTP (POST /api/v1/memories) และดีมอนตรวจสอบกับคีย์สาธารณะที่ผูกไว้ของเอเจนต์ ประทับตรา metadata.attest_level = "agent_attested" (ลายเซ็นที่แสดงแต่ปลอมแปลงจะถูกปฏิเสธเสมอโดยไม่คำนึงถึงแฟล็ก); และ (2) การรับรองลิงก์ (attested-cortex) — ฟิลด์ memory_links.signature ที่สงวนไว้ก่อนหน้านี้พร้อม memory_verify(link_id) สำหรับการตรวจสอบขาเข้าและเชนการตรวจสอบ signed_events แบบผนวกเท่านั้น ดู หน้าข้อมูลประจำตัวเอเจนต์ และ RFC attested-cortex สำหรับสัญญาที่มาฉบับเต็ม
การนำเข้าบทสนทนาย้อนหลัง — ai-memory mine
อย่าเริ่มต้นแบบเย็นชืด ชี้ ai-memory mine ไปที่การส่งออก Claude, ChatGPT หรือ Slack และมันจะแยกวิเคราะห์ทีละเทิร์นเป็นความทรงจำที่จัดอันดับ, ระบุประเภทระดับ, แท็ก — เพื่อให้ AI ของคุณเข้าสู่เซสชันถัดไปโดยรู้ทุกการตัดสินใจ, การแก้ไข, และการค้นพบจากประวัติที่มีอยู่ของคุณ
ai-memory mine claude ~/Downloads/claude-export/
ai-memory mine chatgpt ~/Downloads/chatgpt-export.json
ai-memory mine slack ./slack-export/
การแท็กอัตโนมัติ, การขจัดความซ้ำซ้อนบน (title, namespace), และที่มา mined_from ถูกประทับตราบนทุกความทรงจำที่นำเข้า การเริ่มต้นห้านาทีจากบริบทศูนย์สู่ที่เก็บข้อมูลระยะยาวที่มีข้อมูล ดู หน้านำเข้าประวัติ สำหรับสูตรต่อรูปแบบ
แพลตฟอร์ม AI ที่เข้ากันได้
ai-memory ทำงานร่วมกับแพลตฟอร์ม AI ใดๆ ที่สนับสนุน Model Context Protocol (MCP) MCP เป็นมาตรฐานสากลสำหรับการเชื่อมต่อผู้ช่วย AI กับเครื่องมือและแหล่งข้อมูลภายนอก
| แพลตฟอร์ม | วิธีการผสานรวม | รูปแบบการกำหนดค่า | สถานะ |
|---|---|---|---|
| Claude Code (Anthropic) | MCP stdio | JSON (~/.claude.json หรือ .mcp.json) | รองรับเต็มรูปแบบ |
| Codex CLI (OpenAI) | MCP stdio | TOML (~/.codex/config.toml) | รองรับเต็มรูปแบบ |
| Gemini CLI (Google) | MCP stdio | JSON (~/.gemini/settings.json) | รองรับเต็มรูปแบบ |
| Grok CLI (xAI) | MCP stdio | JSON (~/.grok/user-settings.json) | การผสานรวมเชิงลึก |
| Grok API (xAI) | MCP ระยะไกล HTTPS | ระดับ API | รองรับเต็มรูปแบบ |
| Cursor IDE | MCP stdio | JSON (~/.cursor/mcp.json) | รองรับเต็มรูปแบบ |
| Windsurf (Codeium) | MCP stdio | JSON (~/.codeium/windsurf/mcp_config.json) | รองรับเต็มรูปแบบ |
| Continue.dev | MCP stdio | YAML (~/.continue/config.yaml) | รองรับเต็มรูปแบบ |
| Llama Stack (META) | MCP ระยะไกล HTTP | YAML / Python SDK | รองรับเต็มรูปแบบ |
| OpenClaw | MCP stdio | JSON (mcp.servers ในการกำหนดค่า) | รองรับเต็มรูปแบบ |
| ไคลเอนต์ MCP ใดๆ | MCP stdio หรือ HTTP | แตกต่างกันไป | สากล |
MCP เป็นเลเยอร์การผสานรวมหลัก สำหรับแพลตฟอร์ม AI ที่ยังไม่รองรับ MCP โดยตรง HTTP API (การลงทะเบียนเส้นทาง 92 รายการ / เส้นทาง URL เฉพาะ 78 เส้นทางบน localhost) และ CLI (คำสั่งย่อย 89 คำสั่งภายใต้ --features sal หรือ --features sal-postgres; 87 คำสั่งในบิลด์เริ่มต้น (หลัง #1389 L2 RecoverPreviousSession สำหรับการคืนค่าบริบทข้ามเซสชัน + #1443 Expand สำหรับพื้นผิวการขยายคำค้น ai-memory expand + #1598 Reembed สำหรับพื้นผิวการย้ายพื้นที่เวกเตอร์ ai-memory reembed); SSOT ตรึงโดย ai_memory::EXPECTED_CLI_SUBCOMMANDS_DEFAULT + EXPECTED_CLI_SUBCOMMANDS_SAL + การทดสอบความเท่าเทียมทางกลไก tests/cli_subcommand_count_invariant.rs) ให้การเข้าถึงแบบสากล -- AI, สคริปต์ หรือระบบอัตโนมัติใดๆ ที่สามารถเรียก HTTP หรือรันคำสั่งเชลล์สามารถใช้ ai-memory ได้
ติดตั้งใน 60 วินาที
ไบนารีที่สร้างไว้ล่วงหน้าไม่ต้องการการพึ่งพาใดๆ การสร้างจากซอร์สต้องการ Rust และคอมไพเลอร์ C
เร็วที่สุด: ไบนารีที่สร้างไว้ล่วงหน้า (ไม่ต้องใช้ Rust)
# macOS / Linux
curl -fsSL https://raw.githubusercontent.com/alphaonedev/ai-memory-mcp/main/install.sh | sh
# Fedora/RHEL (COPR)
sudo dnf copr enable alpha-one-ai/ai-memory && sudo dnf install ai-memory
# Windows (PowerShell)
irm https://raw.githubusercontent.com/alphaonedev/ai-memory-mcp/main/install.ps1 | iex
ขั้นตอนที่ 1: ติดตั้ง Rust (ข้ามหากใช้ไบนารีที่สร้างไว้ล่วงหน้า)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
ทำตามคำแนะนำ จากนั้นรีสตาร์ทเทอร์มินัลของคุณ (หรือรัน source ~/.cargo/env)
ขั้นตอนที่ 2: จากซอร์ส (ต้องการ Rust)
รุ่นล่าสุดจาก Crates.io:
cargo install ai-memory
ล่าสุดจากที่เก็บ git:
cargo install --git https://github.com/alphaonedev/ai-memory-mcp.git
สิ่งนี้จะคอมไพล์ไบนารีและวางไว้ใน PATH ของคุณ ใช้เวลาประมาณหนึ่งหรือสองนาที
การพึ่งพาสำหรับการสร้างจากซอร์ส:
- Ubuntu/Debian:
sudo apt-get install build-essential pkg-config- Fedora/RHEL:
sudo dnf install gcc pkg-config
ขั้นตอนที่ 3: เชื่อมต่อ AI ของคุณ
การกำหนดค่าแตกต่างกันไปตามแพลตฟอร์ม ค้นหาของคุณด้านล่าง:
Claude Code (Anthropic)
Claude Code รองรับขอบเขตการกำหนดค่า MCP สามแบบ:
| ขอบเขต | ไฟล์ | ใช้กับ |
|---|---|---|
| ผู้ใช้ (ทั่วโลก) | ~/.claude.json — เพิ่มคีย์ mcpServers | ทุกโปรเจกต์บนเครื่องของคุณ |
| โปรเจกต์ (แชร์) | .mcp.json ในรูทโปรเจกต์ (เช็คอินเข้า git) | ทุกคนในโปรเจกต์ |
| โลคัล (ส่วนตัว) | ~/.claude.json — ภายใต้ projects."/path".mcpServers | หนึ่งโปรเจกต์ เฉพาะคุณ |
ขอบเขตผู้ใช้ (แนะนำ — ทำงานได้ทุกที่):
เพิ่มคีย์ mcpServers ลงใน ~/.claude.json (macOS/Linux) หรือ %USERPROFILE%\.claude.json (Windows):
{
"mcpServers": {
"memory": {
"command": "ai-memory",
"args": ["--db", "~/.claude/ai-memory.db", "mcp", "--tier", "semantic"]
}
}
}
หมายเหตุ:
~/.claude.jsonน่าจะมีอยู่แล้วพร้อมการตั้งค่าอื่นๆ รวมคีย์mcpServersเข้ากับไฟล์ที่มีอยู่ — อย่าเขียนทับ
ขอบเขตโปรเจกต์ (แชร์กับทีม):
สร้าง .mcp.json ในรูทโปรเจกต์ของคุณ:
{
"mcpServers": {
"memory": {
"command": "ai-memory",
"args": ["--db", "~/.claude/ai-memory.db", "mcp", "--tier", "semantic"]
}
}
}
ระดับ smart / autonomous กับ LLM บนคลาวด์ — เส้นทางที่แนะนำคือส่วน [llm] ใน ~/.config/ai-memory/config.toml (#1146) หนึ่งไฟล์ ทุกพื้นผิว ไม่ต้องแก้ไขต่อไคลเอนต์ AI:
# ~/.config/ai-memory/config.toml
schema_version = 2
[llm]
backend = "xai"
model = "grok-4.3"
base_url = "https://api.x.ai/v1"
api_key_env = "XAI_API_KEY" # process-env-var name (NOT the literal key)
ส่งออก XAI_API_KEY ใน shell rc ของคุณ (.zshrc / .bashrc); การกำหนดค่า MCP ยังคงน้อยที่สุด:
{
"mcpServers": {
"memory": {
"command": "ai-memory",
"args": ["--db", "~/.claude/ai-memory.db", "mcp", "--tier", "autonomous"]
}
}
}
ตรวจสอบ: ai-memory boot --quiet --limit 1 ควรรายงาน llm=xai:grok-4.3 การอ้างอิง schema มาตรฐาน: docs/CONFIG_SCHEMA.md
เส้นทางแทนที่ — บล็อก
env:การเพิ่มบล็อกenv:ในการกำหนดค่า MCP ด้วยAI_MEMORY_LLM_BACKEND/_API_KEY/_MODELยังคงใช้งานได้และมีความสำคัญเหนือconfig.toml— มีประโยชน์สำหรับ CI / การปรับแต่งต่อเซสชัน:"env": { "AI_MEMORY_LLM_BACKEND": "xai", "AI_MEMORY_LLM_API_KEY": "xai-...", "AI_MEMORY_LLM_MODEL": "grok-4.3" }ไคลเอนต์ MCP สร้างเซิร์ฟเวอร์เป็นกระบวนการย่อยใหม่ด้วยคีย์
env:จากการกำหนดค่า MCP เท่านั้น — การส่งออกเชลล์ใน.zshrc/.bashrcไม่สามารถเข้าถึงได้ เส้นทางไฟล์กำหนดค่า[llm]ด้านบนช่วยขจัดปัญหานี้ (ทุกพื้นผิวอ่านไฟล์เดียวกัน) คีย์ API แบบอินไลน์ในconfig.tomlถูกปฏิเสธในขั้นตอนการแยกวิเคราะห์ — ใช้api_key_envหรือapi_key_fileเบื้องหลัง: #1144 → #1146 สูตรสำหรับแต่ละแบ็กเอนด์แบบเต็ม:docs/integrations/llm-backends.md
พาธ Windows: ใช้เครื่องหมายทับหรือแบ็กสแลชที่ escape แล้วใน
--dbตัวอย่าง:"--db", "C:/Users/YourName/.claude/ai-memory.db"
แฟล็กระดับ: แฟล็ก
--tierเลือกระดับฟีเจอร์:keyword,semantic(ค่าเริ่มต้น),smart, หรือautonomousระดับอัจฉริยะและอัตโนมัติต้องการแบ็กเอนด์ LLM — หลัง #1067 (v0.7.0) ซึ่งเป็นตัวใดตัวหนึ่งจาก: Ollama โลคัล, xAI Grok, OpenAI, Anthropic, Google Gemini, DeepSeek, Kimi (Moonshot), Qwen (Alibaba), Mistral, Groq, Together AI, Cerebras, OpenRouter, Fireworks, LMStudio, vLLM, หรือเซิร์ฟเวอร์ llama.cpp — เลือกผ่านAI_MEMORY_LLM_BACKENDแฟล็ก--tierต้อง ถูกส่งใน args — การตั้งค่าระดับconfig.tomlจะไม่ถูกใช้เมื่อเซิร์ฟเวอร์ MCP ถูกเปิดโดยไคลเอนต์ AI
สำคัญ: เซิร์ฟเวอร์ MCP ไม่ ได้รับการกำหนดค่าใน
settings.jsonหรือsettings.local.json— ไฟล์เหล่านั้นไม่รองรับmcpServers
ทำให้ Claude ใช้ ai-memory เชิงรุก: เพิ่มไฟล์ CLAUDE.md ในรูทโปรเจกต์ของคุณด้วยคำสั่ง ai-memory สิ่งนี้ทำให้แน่ใจว่า Claude เรียกคืนบริบทเมื่อเริ่มต้นทุกการสนทนาและจัดเก็บสิ่งที่ค้นพบขณะทำงาน ดู คู่มือการผสานรวม CLAUDE.md สำหรับเทมเพลตที่คัดลอกและวางได้และตัวเลือกการจัดวาง
OpenAI Codex CLI
เพิ่มลงใน ~/.codex/config.toml (ทั่วโลก) หรือ .codex/config.toml (โปรเจกต์) Windows: %USERPROFILE%\.codex\config.toml แทนที่ด้วยตัวแปรสภาพแวดล้อม CODEX_HOME
[mcp_servers.memory]
command = "ai-memory"
args = ["--db", "~/.local/share/ai-memory/memories.db", "mcp", "--tier", "semantic"]
enabled = true
หรือเพิ่มผ่าน CLI: codex mcp add memory -- ai-memory --db ~/.local/share/ai-memory/memories.db mcp --tier semantic
หมายเหตุ: Codex ใช้รูปแบบ TOML ด้วยคีย์ขีดล่าง
mcp_servers(ไม่ใช่ camelCase ไม่ใช้ยัติภังค์) รองรับenv(คู่คีย์/ค่า),env_vars(รายการที่จะส่งต่อ),enabled_tools,disabled_tools,startup_timeout_sec,tool_timeout_secใช้/mcpใน TUI เพื่อดูสถานะเซิร์ฟเวอร์ ดู เอกสาร Codex MCP
Google Gemini CLI
เพิ่มลงใน ~/.gemini/settings.json (ผู้ใช้) หรือ .gemini/settings.json (โปรเจกต์) Windows: %USERPROFILE%\.gemini\settings.json
{
"mcpServers": {
"memory": {
"command": "ai-memory",
"args": ["--db", "~/.local/share/ai-memory/memories.db", "mcp", "--tier", "semantic"],
"timeout": 30000
}
}
}
หรือเพิ่มผ่าน CLI: gemini mcp add memory ai-memory -- --db ~/.local/share/ai-memory/memories.db mcp --tier semantic
หมายเหตุ: หลีกเลี่ยงการใช้ขีดล่างในชื่อเซิร์ฟเวอร์ (ใช้ยัติภังค์) ชื่อเครื่องมือจะถูกเติมคำนำหน้าอัตโนมัติเป็น
mcp_memory_<toolName>ตัวแปรสภาพแวดล้อมในฟิลด์envรองรับ$VAR/${VAR}(ทุกแพลตฟอร์ม) และ%VAR%(Windows) Gemini จะลบรูปแบบที่ละเอียดอ่อนออกจากสภาพแวดล้อมที่สืบทอดมา เว้นแต่จะประกาศอย่างชัดเจน เพิ่ม"trust": trueเพื่อข้ามข้อความแจ้งยืนยัน การจัดการ CLI:gemini mcp list/remove/enable/disableดู เอกสาร Gemini CLI MCP
Cursor IDE
เพิ่มลงใน ~/.cursor/mcp.json (ทั่วโลก) หรือ .cursor/mcp.json (โปรเจกต์) Windows: %USERPROFILE%\.cursor\mcp.json การกำหนดค่าโปรเจกต์แทนที่ทั่วโลกสำหรับเซิร์ฟเวอร์ที่มีชื่อเดียวกัน
{
"mcpServers": {
"memory": {
"command": "ai-memory",
"args": ["--db", "~/.local/share/ai-memory/memories.db", "mcp", "--tier", "semantic"]
}
}
}
หมายเหตุ: รีสตาร์ท Cursor หลังจากแก้ไข
mcp.jsonตรวจสอบสถานะเซิร์ฟเวอร์ใน Settings > Tools & MCP (จุดสีเขียว = เชื่อมต่อแล้ว) รองรับenv,envFile, และการแทรกค่า${env:VAR_NAME}(การแทรกค่าตัวแปรสภาพแวดล้อมอาจไม่น่าเชื่อถือสำหรับตัวแปรโปรไฟล์เชลล์ — ใช้envFileเป็นวิธีแก้ปัญหา) ขีดจำกัด ~40 เครื่องมือ ในทุกเซิร์ฟเวอร์ MCP ดู เอกสาร Cursor MCP
Windsurf (Codeium)
เพิ่มลงใน ~/.codeium/windsurf/mcp_config.json (ทั่วโลกเท่านั้น — ไม่มีขอบเขตระดับโปรเจกต์) Windows: %USERPROFILE%\.codeium\windsurf\mcp_config.json
{
"mcpServers": {
"memory": {
"command": "ai-memory",
"args": ["--db", "~/.local/share/ai-memory/memories.db", "mcp", "--tier", "semantic"]
}
}
}
หมายเหตุ: รองรับการแทรกค่า
${env:VAR_NAME}ในcommand,args,env,serverUrl,url, และheadersขีดจำกัด 100 เครื่องมือ ในทุกเซิร์ฟเวอร์ MCP สามารถเพิ่มผ่าน MCP Marketplace หรือ Settings > Cascade > MCP Servers ได้เช่นกัน ดู เอกสาร Windsurf MCP
Continue.dev
เพิ่มลงใน ~/.continue/config.yaml (ผู้ใช้) หรือไดเรกทอรี .continue/mcpServers/ ในรูทโปรเจกต์ (ไฟล์ YAML/JSON ต่อเซิร์ฟเวอร์) Windows: %USERPROFILE%\.continue\config.yaml
mcpServers:
- name: memory
command: ai-memory
args:
- "--db"
- "~/.local/share/ai-memory/memories.db"
- "mcp"
- "--tier"
- "semantic"
หมายเหตุ: เครื่องมือ MCP ทำงานในโหมดเอเจนต์เท่านั้น รองรับ
${{ secrets.SECRET_NAME }}สำหรับการแทรกค่าความลับ ไดเรกทอรี.continue/mcpServers/ระดับโปรเจกต์ตรวจจับการกำหนดค่า JSON จากเครื่องมืออื่นโดยอัตโนมัติ (Claude Code, Cursor, ฯลฯ) ดู เอกสาร Continue MCP
Grok CLI (ฟอร์ก AlphaOne — การผสานรวมเชิงลึกพร้อมการเรียกคืนอัตโนมัติ)
ฟอร์ก AlphaOne ของ grok-cli มีการรองรับ ai-memory ในตัวพร้อมการเชื่อมต่อ MCP แบบกำหนดขอบเขตเซสชัน, การเรียกคืนหน่วยความจำอัตโนมัติเมื่อเริ่มเซสชัน, การจัดเก็บสรุปการบีบอัด, และพรอมต์ระบบที่รับรู้หน่วยความจำ
เพิ่มลงใน ~/.grok/user-settings.json:
{
"mcp": {
"servers": [
{
"id": "ai-memory",
"label": "AI Memory",
"enabled": true,
"transport": "stdio",
"command": "ai-memory",
"args": ["mcp", "--tier", "semantic"]
}
]
}
}
คุณสมบัติ: การเรียกคืนอัตโนมัติเมื่อเริ่มเซสชัน (แทรกหน่วยความจำที่เกี่ยวข้องลงในพรอมต์ระบบ), สรุปการบีบอัดที่จัดเก็บเป็นหน่วยความจำระดับกลาง, เครื่องมือ MCP พร้อมใช้งานในทุกโหมด (เอเจนต์, วางแผน, ถาม), การเชื่อมต่อแบบกำหนดขอบเขตเซสชัน (ไม่มีการเริ่มเย็นต่อข้อความ) ใช้
--tier semanticเป็นค่าเริ่มต้น (การฝังโลคัล, ไม่ต้องใช้แบ็กเอนด์ LLM) ดู เอกสาร grok-cli สำหรับการตั้งค่าแบบเต็ม
xAI Grok API (ระดับ API, MCP ระยะไกล)
Grok เชื่อมต่อกับเซิร์ฟเวอร์ MCP ผ่าน HTTPS (ระยะไกลเท่านั้น, ไม่มี stdio) ไม่มีไฟล์กำหนดค่า — เซิร์ฟเวอร์ถูกระบุต่อคำขอ API
ai-memory serve --host 127.0.0.1 --port 9077
# Expose via HTTPS reverse proxy (nginx, caddy, cloudflare tunnel, etc.)
จากนั้นเพิ่มเซิร์ฟเวอร์ MCP ในการเรียก Grok API ของคุณ:
curl https://api.x.ai/v1/responses \
-H "Authorization: Bearer $XAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "grok-4.3",
"tools": [{
"type": "mcp",
"server_url": "https://your-server.example.com/mcp",
"server_label": "memory",
"server_description": "Persistent AI memory with recall and search",
"allowed_tools": ["memory_store", "memory_recall", "memory_search"]
}],
"input": "What do you remember about our project?"
}'
ข้อกำหนด: ต้องใช้ HTTPS จำเป็นต้องมี
server_labelรองรับการขนส่ง Streamable HTTP และ SSE ตัวเลือก:allowed_tools,authorization,headersทำงานร่วมกับ xAI SDK, OpenAI-compatible Responses API, และ Voice Agent API ดู เอกสาร xAI Remote MCP
META Llama (ผ่าน Llama Stack)
Llama Stack ลงทะเบียนเซิร์ฟเวอร์ MCP เป็นกลุ่มเครื่องมือ ไม่มีเส้นทางไฟล์กำหนดค่ามาตรฐาน — เฉพาะการปรับใช้
ai-memory serve --host 127.0.0.1 --port 9077
Python SDK:
client.toolgroups.register(
provider_id="model-context-protocol",
toolgroup_id="mcp::memory",
mcp_endpoint={"uri": "http://localhost:9077/sse"}
)
หรือแบบประกาศใน run.yaml:
tool_groups:
- toolgroup_id: mcp::memory
provider_id: model-context-protocol
mcp_endpoint:
uri: "http://localhost:9077/sse"
หมายเหตุ: รองรับการแทรกค่า
${env.VAR_NAME}ใน run.yaml การขนส่งกำลังย้ายจาก SSE ไปยัง Streamable HTTP ดู เอกสาร Llama Stack Tools
OpenClaw
เพิ่มผ่าน CLI หรือแก้ไขการกำหนดค่า OpenClaw โดยตรง การกำหนดค่าใช้ mcp.servers (ไม่ใช่ mcpServers)
openclaw mcp set memory '{"command":"ai-memory","args":["--db","~/.local/share/ai-memory/memories.db","mcp","--tier","semantic"]}'
หรือเพิ่มลงในไฟล์กำหนดค่า OpenClaw ของคุณ:
{
"mcp": {
"servers": {
"memory": {
"command": "ai-memory",
"args": ["--db", "~/.local/share/ai-memory/memories.db", "mcp", "--tier", "semantic"]
}
}
}
}
หมายเหตุ: OpenClaw ใช้คีย์
mcp.servers(ไม่ใช่mcpServers) การจัดการ CLI:openclaw mcp list,openclaw mcp show,openclaw mcp set,openclaw mcp unsetรองรับการขนส่งแบบ stdio, URL ระยะไกล และ Streamable HTTP แนะนำให้ใช้--token-fileมากกว่าข้อมูลลับแบบอินไลน์ ดู เอกสาร OpenClaw MCP
ไคลเอนต์ MCP อื่นๆ
ai-memory สื่อสารผ่าน MCP บน stdio (JSON-RPC 2.0) ชี้ไคลเอนต์ของคุณไปที่:
command: ai-memory
args: ["--db", "/path/to/ai-memory.db", "mcp"]
สำหรับไคลเอนต์ที่ใช้ HTTP เท่านั้น ให้เริ่ม REST API:
ai-memory serve
# 92 REST route registrations (78 unique URL paths) at http://127.0.0.1:9077/api/v1/
ขั้นตอนที่ 4: เสร็จสิ้น ทดสอบเลย
รีสตาร์ทผู้ช่วย AI ของคุณ หากใช้ MCP ตอนนี้จะมี ชุดเครื่องมือเริ่มต้น 7 รายการ ที่ประกาศเมื่อเริ่มเซสชัน (5 รายการเดิม + memory_load_family + memory_smart_load; เครื่องมืออีก 93 รายการจากทั้งหมด 100 รายการที่เรียกใช้ได้จะโหลดตามต้องการผ่าน --profile หรือ memory_capabilities --include-schema) ลองถามว่า: "บันทึกความทรงจำว่าภาษาโปรดของฉันคือ Rust" จากนั้นในการสนทนาใหม่ ให้ถามว่า: "ภาษาโปรดของฉันคืออะไร?" มันจะจดจำได้
การรองรับแพลตฟอร์มมือถือ (v0.7.0 Posture-1a)
ai-memory สามารถพกพาไปยัง iOS และ Android ได้ผ่านเส้นทางการคอมไพล์ข้ามแพลตฟอร์มมาตรฐานของ Rust v0.7.0 มาพร้อมการครอบคลุม CI สำหรับทั้งสองเป้าหมายในสามระดับที่เพิ่มขึ้น:
| ระดับ | การครอบคลุม | เวิร์กโฟลว์ CI |
|---|---|---|
| ระดับ 1 — การคอมไพล์ข้ามแพลตฟอร์ม | cargo check --target aarch64-apple-ios --no-default-features --features sqlite-bundled --lib และการคอมไพล์ข้ามแพลตฟอร์ม Android ที่ตรงกันจะทำงานทุกครั้งที่มี PR + push ไปยัง release/** ตรวจจับความเสี่ยงการเสื่อมสภาพของมือถือได้ประมาณ 80% (การอัปเดต crate ใดๆ ที่ทำให้ความสามารถในการพกพาบนมือถือลดลงจะปรากฏที่นี่) | .github/workflows/ci.yml — งาน mobile-cross-compile |
| ระดับ 2 — อาร์ติแฟกต์รีลีส | การตัดแท็กรีลีสจะสร้าง ai-memory-ios.xcframework.tar.gz (ส่วน iOS device + simulator ผ่าน xcodebuild -create-xcframework) และ ai-memory-android.tar.gz (ชุด .so สำหรับ Android arm64 / armv7 / x86_64 / x86 ในโครงสร้าง jniLibs/<abi>/) | .github/workflows/release.yml — งาน mobile-ios + mobile-android |
| ระดับ 3 — การทดสอบรันไทม์ | ชุดย่อยการทดสอบประมาณ 50 รายการ (การแซนด์บ็อกซ์ระบบไฟล์, FTS5 บน SQLite ของอุปกรณ์, การเรียกคืน CPU ของ HNSW, เส้นทาง CPU ของตัวฝัง, TLS ของไคลเอนต์ LLM) ทำงานกับ iOS Simulator ทุกครั้งที่มีการ push ไปยัง release/** + การใช้ workflow_dispatch ด้วยตนเอง; Android emulator arm ทำงานเมื่อ push ไปยัง release/** + workflow_dispatch เท่านั้น เหตุผลในการเลือก: tests/mobile/README.md | .github/workflows/mobile-runtime.yml |
สถานะ ณ v0.7.0: ระดับ 1 เป็นเกณฑ์ผ่าน — การคอมไพล์ข้ามแพลตฟอร์มมือถือต้องเป็นสีเขียวก่อนตัดแท็ก ระดับ 2 (อาร์ติแฟกต์รีลีส) จัดส่งไปป์ไลน์ BUILD + โครงสร้างอาร์ติแฟกต์; ส่วนติดต่อ FFI ที่เรียกจาก C ได้จะมาถึงในเวอร์ชันต่อจาก v0.7.x ระดับ 3 รันชุดย่อยการทดสอบที่กำหนดขอบเขตทุกครั้งที่มีการ push ไปยัง release/**
การใช้งานอาร์ติแฟกต์รีลีส:
- iOS — ดาวน์โหลด
ai-memory-ios.xcframework.tar.gzจากหน้ารีลีส v0.7.x แตกไฟล์ และลากAiMemory.xcframeworkลงในโปรเจกต์ Xcode ของคุณภายใต้ "Frameworks, Libraries, and Embedded Content" - Android — ดาวน์โหลด
ai-memory-android.tar.gzจากหน้ารีลีส v0.7.x แตกไฟล์ และคัดลอกโครงสร้างjniLibs/ลงในsrc/main/jniLibs/ของโมดูลแอปของคุณ
อาร์ติแฟกต์มือถือยังเป็นส่วนหนึ่งของทุกๆ รีลีส v0.7.x ที่เผยแพร่; สูตร Homebrew + แพ็คเกจ APT/RPM (ซึ่งจัดส่งไบนารีเดสก์ท็อป) มีหมายเหตุที่ลิงก์ไปยังการดาวน์โหลดมือถือ ดู issue #1068 สำหรับประวัติการนำ CI ไปใช้
เริ่มต้นอย่างรวดเร็ว
จากศูนย์สู่หน่วยความจำที่ทำงานได้ภายในไม่ถึงสองนาที
1. ติดตั้ง
curl -fsSL https://raw.githubusercontent.com/alphaonedev/ai-memory-mcp/main/install.sh | sh
2. กำหนดค่า MCP (ตัวอย่างสำหรับ Claude Code -- แพลตฟอร์มอื่นทำงานในลักษณะเดียวกัน)
รวมเข้ากับ ~/.claude.json:
{
"mcpServers": {
"memory": {
"command": "ai-memory",
"args": ["--db", "~/.claude/ai-memory.db", "mcp", "--tier", "semantic"]
}
}
}
3. บันทึกความทรงจำแรกของคุณ
ai-memory store -T "Project uses PostgreSQL 15" -c "Main DB is PG 15 with pgvector." --tier long
4. เรียกคืน
ai-memory recall "database"
5. ตรวจสอบสถิติ
ai-memory stats
6. ใช้กับ AI ของคุณ รีสตาร์ทไคลเอนต์ AI ของคุณ ตอนนี้มันมี เครื่องมือหน่วยความจำเริ่มต้น 7 รายการ ที่ประกาศเมื่อบูต (รายการที่ประกาศ 101 รายการที่เข้าถึงได้ผ่านการขยายรันไทม์หรือ --profile full) บน MCP -- มันสามารถจัดเก็บและเรียกคืนความทรงจำได้โดยตรงระหว่างการสนทนา
SDKs
นอกเหนือจากส่วนติดต่อ MCP / HTTP / CLI แล้ว ai-memory ยังมาพร้อม SDK ภาษาแรกสำหรับไคลเอนต์ HTTP และยูทิลิตี้ตัวช่วย (เช่น requireProfile สำหรับการยืนยันโปรไฟล์รันไทม์บน daemon v0.6.4+)
TypeScript / JavaScript — @alphaone/ai-memory บน npm
npm install @alphaone/ai-memory
Python — ai-memory-mcp บน PyPI (ชื่อการนำเข้ายังคงเป็น ai_memory)
pip install ai-memory-mcp
from ai_memory import AiMemoryClient, require_profile
with AiMemoryClient(base_url="http://127.0.0.1:9077", api_key="...") as client:
require_profile(client, "graph") # raises ProfileNotLoaded on miss
SDK ทั้งสองมีเวอร์ชันตรงกับเซิร์ฟเวอร์ (0.9.0 ตรงกับ ai-memory 0.9.0) daemon v0.6.4+ บังคับใช้สัญญาโปรไฟล์; daemon ก่อน v0.6.4 จะถอยกลับไปใช้การเตือนและดำเนินการต่อแบบผ่อนปรน เพื่อให้การอัปเกรด SDK ไม่ทำให้เซิร์ฟเวอร์เก่าพัง ซอร์สอยู่ใน sdk/typescript/ และ sdk/python/
มันทำอะไรได้บ้าง?
ผู้ช่วย AI ลืมทุกอย่างระหว่างการสนทนา ai-memory แก้ไขปัญหานั้น
มันทำงานเป็นเซิร์ฟเวอร์เครื่องมือ MCP (Model Context Protocol) -- กระบวนการเบื้องหลังที่ AI ของคุณสื่อสารด้วยโดยตรง เมื่อ AI ของคุณเรียนรู้สิ่งที่สำคัญ มันจะจัดเก็บมัน เมื่อมันต้องการบริบท มันจะเรียกคืนความทรงจำที่เกี่ยวข้องซึ่งจัดอันดับโดยอัลกอริทึมการให้คะแนน 6 ปัจจัย ความทรงจำอยู่ในสามระดับ:
- ระยะสั้น (ค่าเริ่มต้น 6 ชั่วโมง กำหนดค่าได้) -- บริบทชั่วคราว เช่น สถานะการดีบักปัจจุบัน
- ระยะกลาง (ค่าเริ่มต้น 7 วัน กำหนดค่าได้) -- ความรู้ในการทำงาน เช่น เป้าหมายสปรินต์และการตัดสินใจล่าสุด
- ระยะยาว (ถาวร) -- สถาปัตยกรรม, การตั้งค่าผู้ใช้, บทเรียนที่ได้มาอย่างยากลำบาก
ความทรงจำที่ถูกเข้าถึงอย่างต่อเนื่องจะเลื่อนระดับจากระยะกลางเป็นระยะยาวโดยอัตโนมัติ การเรียกคืนแต่ละครั้งจะขยาย TTL ลำดับความสำคัญเพิ่มขึ้นตามการใช้งาน ระบบจัดการตัวเองได้
นอกเหนือจาก MCP แล้ว ai-memory ยังเปิดเผย HTTP REST API เต็มรูปแบบ (การลงทะเบียนเส้นทาง 92 รายการ / เส้นทาง URL ที่ไม่ซ้ำกัน 78 รายการบนพอร์ต 9077) และ CLI ที่สมบูรณ์ (คำสั่งย่อย 89 รายการภายใต้ --features sal หรือ --features sal-postgres; 87 รายการในบิลด์เริ่มต้น (หลัง #1389 L2 RecoverPreviousSession สำหรับการคืนสภาพบริบทข้ามเซสชัน + #1443 Expand สำหรับส่วนขยายการค้นหา ai-memory expand + #1598 Reembed สำหรับการย้ายพื้นที่เวกเตอร์ ai-memory reembed); SSOT ตรึงโดย ai_memory::EXPECTED_CLI_SUBCOMMANDS_{DEFAULT,SAL} + การทดสอบความเท่าเทียมกันทางกลไก tests/cli_subcommand_count_invariant.rs) สำหรับการโต้ตอบโดยตรง, การเขียนสคริปต์ และการรวมเข้ากับแพลตฟอร์มหรือเครื่องมือ AI ใดๆ
คุณสมบัติ
หลัก
- เซิร์ฟเวอร์เครื่องมือ MCP -- 101 เครื่องมือบน stdio JSON-RPC (โปรไฟล์เต็ม) เข้ากันได้กับไคลเอนต์ MCP ใดๆ
- หน่วยความจำสามระดับ -- ระยะสั้น (TTL เริ่มต้น 6 ชม.), ระยะกลาง (TTL เริ่มต้น 7 วัน), ระยะยาว (ถาวร) -- TTL สามารถกำหนดค่าได้
- การค้นหาข้อความแบบเต็ม -- SQLite FTS5 พร้อมการเรียกคืนแบบจัดอันดับ
- การเรียกคืนแบบผสม -- คำสำคัญ FTS5 + ความคล้ายคลึงโคไซน์พร้อมการผสมผสานแบบปรับตัว: น้ำหนักเชิงความหมายจะแตกต่างกันไป 0.50 (เนื้อหาสั้น) → 0.15 (เนื้อหายาว) เนื่องจากการฝังตัวสูญเสียข้อมูลในข้อความยาว
- การให้คะแนนการเรียกคืน 6 ปัจจัย -- ความเกี่ยวข้อง FTS + ลำดับความสำคัญ + ความถี่ในการเข้าถึง + ความมั่นใจ + การเพิ่มระดับ + การลดลงตามความใหม่
- การเลื่อนระดับอัตโนมัติ -- ความทรงจำที่เข้าถึง 5 ครั้งขึ้นไปจะเลื่อนจากระยะกลางเป็นระยะยาว
- การขยาย TTL -- การเรียกคืนแต่ละครั้งจะขยายอายุ (ระยะสั้น +1 ชม., ระยะกลาง +1 วัน)
- การเสริมลำดับความสำคัญ -- +1 ทุกๆ 10 การเข้าถึง (สูงสุด 10)
- การตรวจจับความขัดแย้ง -- เตือนเมื่อจัดเก็บความทรงจำที่ขัดแย้งกับที่มีอยู่
- การขจัดรายการซ้ำ -- upsert บน title+namespace ระดับจะไม่ถูกลดระดับ
- การให้คะแนนความมั่นใจ -- ความแน่นอน 0.0-1.0 ที่นำมาเป็นปัจจัยในการจัดอันดับ
การจัดระเบียบ
- เนมสเปซ -- แยกความทรงจำต่อโปรเจกต์ (ตรวจจับอัตโนมัติจาก git remote)
- การเชื่อมโยงความทรงจำ -- ความสัมพันธ์ที่มีประเภท: related_to, supersedes, contradicts, derived_from, reflects_on (การเรียนรู้แบบเรียกซ้ำ Task 1/8), derives_from (การแยกย่อย WT-1-A), decomposes_into, depends_on, advances -- เก้ารูปแบบ ณ v0.8.0
- การรวม -- รวมความทรงจำหลายรายการเป็นบทสรุประยะยาวรายการเดียว
- การรวมอัตโนมัติ -- จัดกลุ่มตามเนมสเปซ+แท็ก รวมกลุ่มที่เกินเกณฑ์โดยอัตโนมัติ
- การแก้ไขความขัดแย้ง -- ทำเครื่องหมายความทรงจำหนึ่งว่าแทนที่อีกอันหนึ่ง ลดระดับอันที่แพ้
- ลืมตามรูปแบบ -- ลบจำนวนมากตามเนมสเปซ + รูปแบบ FTS + ระดับ
- การติดตามแหล่งที่มา -- ติดตามต้นกำเนิด: user, claude, hook, api, cli, import, consolidation, system
- ข้อมูลประจำตัวของเอเจนต์ (NHI) -- ทุกความทรงจำมี
metadata.agent_id(ข้อมูลประจำตัวที่อ้างสิทธิ์) พร้อมความไม่เปลี่ยนแปลงเชิงป้องกันหลายชั้นในการอัปเดต/ขจัดรายการซ้ำ/นำเข้า/ซิงค์/รวม; กรองlist/searchตามเอเจนต์ - การติดแท็ก -- แท็กที่คั่นด้วยเครื่องหมายจุลภาคพร้อมการรองรับตัวกรอง
ส่วนต่อประสาน
- 92 เส้นทาง HTTP (78 เส้นทางที่ไม่ซ้ำกัน) -- REST API เต็มรูปแบบบน 127.0.0.1:9077 (ทำงานกับ AI หรือเครื่องมือใดๆ)
- 89 คำสั่งย่อย CLI ภายใต้
--features salหรือ--features sal-postgres(87 ในบิลด์เริ่มต้น) -- CLI ที่สมบูรณ์พร้อมความสามารถที่เหมือนกัน - 101 เครื่องมือ MCP ที่โปรไฟล์เต็ม (7 ค่าเริ่มต้น; ตรวจสอบกับ
Profile::full().expected_tool_count()) -- การรวมแบบเนทีฟสำหรับ AI ที่เข้ากันได้กับ MCP ใดๆ - เชลล์ REPL แบบโต้ตอบ -- เรียกคืน, ค้นหา, แสดงรายการ, รับ, สถิติ, เนมสเปซ, ลบ พร้อมเอาต์พุตสี
- เอาต์พุต JSON -- แฟล็ก
--jsonในทุกคำสั่ง CLI - การประสานงานแบบกระจาย (v0.8.0 Pillar-1 + Pillar-2) -- DAG การกระทำ (
memory_action_*), สัญญาเช่าผู้ถือรายเดียว (memory_lease_*), สัญญาณที่ลงนามด้วย Ed25519 (memory_signal_*), จุดตรวจสอบที่รับรอง (memory_checkpoint_*), รูทีนที่มีพารามิเตอร์ (memory_routine_*) และวงจรชีวิตการรู้คิดแบบมีประเภท Goal/Plan/Step ดูdocs/coordination.md
การดำเนินการ
- การซิงค์หลายโหนด -- ดึง, ผลัก หรือรวมสองทิศทางระหว่างไฟล์ฐานข้อมูล
- นำเข้า/ส่งออก -- การเดินทางไปกลับ JSON เต็มรูปแบบที่รักษาลิงก์ความทรงจำ
- การเก็บขยะ -- การหมดอายุพื้นหลังอัตโนมัติทุก 30 นาที
- การปิดระบบอย่างนุ่มนวล -- SIGTERM/SIGINT สร้างจุดตรวจสอบ WAL เพื่อการออกที่สะอาด
- การตรวจสอบสุขภาพเชิงลึก -- ตรวจสอบการเข้าถึง DB และความสมบูรณ์ของ FTS5
- การเติมคำสั่งเชลล์ -- bash, zsh, fish
- หน้าคู่มือ --
ai-memory manสร้าง roff ไปยัง stdout - ตัวกรองเวลา --
--since/--untilในรายการและการค้นหา - อายุที่มนุษย์อ่านได้ -- "2 ชม. ที่แล้ว", "3 วันที่แล้ว" ในเอาต์พุต CLI
- เอาต์พุต CLI แบบมีสี -- ป้ายกำกับระดับ ANSI (แดง/เหลือง/เขียว), แถบลำดับความสำคัญ, ชื่อเรื่องตัวหนา, เนมสเปซสีฟ้า
คุณภาพ
- ~10,000 การทดสอบทั่วทั้งพื้นผิว — ประมาณ 6,712 แอตทริบิวต์
#[test]/#[tokio::test]ภายใต้src/(5,759#[test]+ 953#[tokio::test]) บวกประมาณ 3,362 ภายใต้tests/(2,138#[test]+ 1,224#[tokio::test]) เติบโตจากพื้นฐาน ~2,400 การทดสอบในยุค v0.6.4 (1,960 lib + 211 integration + 16 mcp_integration + 4 webhook_http_parity + 16 recipe_contract + ~150 ในเป้าหมายไบนารีอื่นๆ) ความครอบคลุมบรรทัดยังคงสูงกว่าเกณฑ์โครงการ ≥92% ; โมดูลใหม่สุทธิ v0.6.4 ที่ 100% (sizes.rs), 99.50% (profile.rs), 97.58% (cli/audit.rs), 97.05% (cli/doctor.rs), 92.56% (handlers.rs), 92.26% (cli/install.rs) พื้นฐาน v0.6.3.x (1,809 / 93.08% และ 1,886 / 93.84%) ยังคงถูกแช่แข็งบน หน้าหลักฐาน; เมตริก v0.6.4 ในบันทึกประจำรุ่นและบน แคมเปญ test-hub การยอมรับการค้นพบ NHI เชิงประจักษ์ได้รับการพิสูจน์แยกต่างหากโดย Discovery Gate (เมทริกซ์ T1–T4 เทียบกับ xAI Grok 4.3 สด, 6/6 ผ่าน, GATE GREEN) - เกณฑ์มาตรฐาน LongMemEval — 97.0% R@5 คำสำคัญ FTS5 ล้วน (ไม่ขึ้นกับ LLM, 2.2 วินาที, 232 q/s, ไม่มีค่าใช้จ่าย API) บนชุดข้อมูล ICLR 2025 LongMemEval-S; การขยายคำค้น LLM ด้วยโมเดล Gemma 4 รุ่นปัจจุบันวัดได้ 97.2% R@5 / 99.6% R@10 / 99.8% R@20 (สถานที่ API คลาวด์; ตัวเลขในอดีต
gemma3:4b97.8% ถูกยกเลิกเป็นหัวข้อหลักตาม #1975) ดู รายละเอียดเกณฑ์มาตรฐาน - MCP Prompts — พรอมต์
recall-firstและmemory-workflowสอนไคลเอนต์ AI ให้ใช้หน่วยความจำเชิงรุก - TOON-default — การตอบสนอง recall/list/search ใช้ TOON compact เป็นค่าเริ่มต้น (เล็กกว่า JSON 79%)
- เกณฑ์มาตรฐาน Criterion — แทรก, เรียกคืน, ค้นหาที่สเกล 1K
- GitHub Actions CI/CD — fmt, clippy, test, build บน Ubuntu + macOS, release เมื่อแท็ก
ขอบเขตความครอบคลุมขั้นต่ำ (เกณฑ์ CI แบบเข้มงวด)
งาน Code Coverage เป็นการตรวจสอบสถานะที่จำเป็น CI ยืนยันค่าคงที่สองค่าอีกครั้งในทุก PR: ขอบเขตขั้นต่ำสัมบูรณ์ที่ >= 90% บรรทัด (ตัวป้องกันการถดถอยร้ายแรง ตั้งไว้ที่การวัดปัจจุบันปัดลงเป็นทวีคูณของ 5% ที่ใกล้ที่สุด) และ กลไกป้องกันการถดถอยเทียบกับค่าที่ตรึงไว้ใน .coverage-baseline โดยมีช่วงหย่อน 0.5% (การบังคับใช้แบบวันต่อวัน) PR ที่เพิ่มความครอบคลุมควรอัปเดตไฟล์พื้นฐานในการคอมมิตเดียวกัน เพื่อให้ PR ในอนาคตได้รับประโยชน์จากขอบเขตขั้นต่ำใหม่ PR ที่ถดถอยมากกว่า 0.5% จะถูกบล็อกไม่ให้ผสาน การวัดปัจจุบัน: 93.13% บรรทัด
เกณฑ์งบประมาณโทเค็น (เกณฑ์ CI แบบเข้มงวด, v0.7 C5)
เวิร์กโฟลว์ token-budget เป็นการตรวจสอบสถานะที่จำเป็น โดยบังคับใช้ค่าคงที่ที่วัดด้วย cl100k_base สามค่าในทุก PR:
- เพดานต่อเครื่องมือที่ 1500 โทเค็น -- สคีมาที่ซีเรียลไลซ์ของเครื่องมือ MCP เดียว (ชื่อ + คำอธิบาย + inputSchema) ต้องไม่เกิน 1500 โทเค็น cl100k_base
- ช่วงที่เหมาะสมของโปรไฟล์เต็ม (5K-8K) -- ตัวป้องกัน v0.6.4 ที่คงไว้เพื่อตรวจจับการหดตัวที่ผิดปกติ (การทำเครื่องมือตกหล่นโดยไม่ตั้งใจ)
- เพดานสูงสุดแบบเข้มงวดของโปรไฟล์เต็ม (v0.7 C5, ปรับเพิ่มหลัง D1.6/D1.7) -- เพย์โหลด
tools/listที่ตัดแต่งภายใต้--profile fullต้องไม่เกิน 11,000 โทเค็น cl100k_base (TRIMMED_FULL_PROFILE_CEILING_TOKENSในtests/token_budget_guard.rs; เป้าหมาย C5 เดิมคือ 3500 เทียบกับสคีมาที่เขียนด้วยมือก่อน D1.6 — การขยาย D1.6/D1.7 ที่ได้จาก schemars ทำให้เพดานที่ตรึงไว้สูงขึ้น) C2 (แยกฟิลด์ docs), C3 (ยุบบอยเลอร์เพลตสคีมาที่ซ้ำกัน) และ C4 (ซ่อนพารามิเตอร์ทางเลือกที่ไม่ค่อยได้ใช้) เป็นตัวขับเคลื่อนการบีบอัดเดิม เกณฑ์นี้บังคับให้ PR ในอนาคตที่ขยายพื้นผิวต้องลดงบประมาณจากที่อื่น ตรวจสอบai-memory doctor --tokens --raw-tableเพื่อดูต้นทุนต่อเครื่องมือ ดู.github/workflows/token-budget.ymlและdocs/v0.7/schema-compaction-audit.md
การพึ่งพา ML และ LLM (ระดับ semantic ขึ้นไป)
- candle-core, candle-nn, candle-transformers -- เฟรมเวิร์ก Hugging Face Candle ML สำหรับการอนุมานแบบเนทีฟใน Rust
- hf-hub -- ดาวน์โหลดโมเดลจาก Hugging Face Hub
- tokenizers -- Hugging Face tokenizers สำหรับการเตรียมข้อมูลข้อความล่วงหน้า
- instant-distance -- การค้นหาเพื่อนบ้านใกล้เคียงโดยประมาณ
- reqwest -- ไคลเอนต์ HTTP สำหรับการสื่อสารกับแบ็กเอนด์ LLM (ระดับ smart/autonomous — ผู้ให้บริการใดๆ ตาม #1067: Ollama, xAI, OpenAI, Anthropic, Gemini, DeepSeek, Kimi, Qwen, Mistral, Groq, Together, Cerebras, OpenRouter, Fireworks, LMStudio, vLLM, เซิร์ฟเวอร์ llama.cpp)
สถาปัตยกรรม
การวัดประสิทธิภาพ
ประเมินบนชุดข้อมูล ICLR 2025 LongMemEval-S (500 คำถาม, 6 หมวดหมู่) ระดับคีย์เวิร์ด FTS5 ล้วนทำ R@5 ได้ 97.0% ใน 2.2 วินาที — ไม่ขึ้นกับ LLM, ทำงานภายในเครื่องทั้งหมด, ไม่มีการเรียก Cloud API, ไม่มีค่าใช้จ่าย การขยายคำค้นด้วย LLM (ระดับ smart) วัด R@5 ได้ 97.2% ด้วยโมเดล Gemma 4 รุ่นปัจจุบัน (ผ่านช่องทาง Cloud API)
หมายเหตุโมเดลวัดประสิทธิภาพ (อัปเดต 2026-07-10, คำตัดสิน #1975): ตัวเลข R@5 97.8% ในอดีตของระดับ smart วัดด้วย Gemma 3 4B (ยังคงเป็นโมเดลขยายเริ่มต้นที่คอมไพล์ไว้) และถูกยกเลิกในฐานะตัวเลขหลัก จุดยึดรุ่นปัจจุบันที่เผยแพร่คือการรัน OpenRouter Gemma 4 ที่วัดได้: 97.2% R@5 / 99.6% R@10 / 99.8% R@20 (2026-05-31, 500 คำถาม, ไม่มีความล้มเหลวในการขยาย) ไม่มีตัวเลข Gemma-4 บน Ollama ภายในเครื่อง — โฮสต์วัดประสิทธิภาพอ้างอิงเป็น CPU เท่านั้น ซึ่งการรันภายในเครื่องแบบเต็มโปรโตคอลที่ถูกต้องเป็นไปไม่ได้ (ดู #1983); การรันซ้ำบน GPU ภายในเครื่องยังคงเปิดกว้างหลัง v1.0 R@5 97.0% ของระดับคีย์เวิร์ดไม่ขึ้นกับ LLM และไม่ได้รับผลกระทบ
| ระดับ | R@5 | ความเร็ว | การพึ่งพา |
|---|---|---|---|
| keyword | 97.0% | 232 คำถาม/วินาที | ไม่มี |
| semantic | 97.4% | 45 คำถาม/วินาที | โมเดลฝังตัว (~100MB) |
| smart | 97.2% (Gemma 4, ช่องทาง API; ในอดีต gemma3:4b 97.8%) | 12 คำถาม/วินาที | แบ็กเอนด์ LLM ใดๆ (เช่น Ollama ภายในเครื่อง + Gemma; หรือ xAI Grok 4.3, OpenAI gpt-5, Anthropic Claude Opus 4.7, Gemini, DeepSeek, ฯลฯ หลัง #1067) |
งบประมาณประสิทธิภาพ (v0.6.4)
ทุกรีลีสมาพร้อมกับ งบประมาณ p95/p99 ที่เผยแพร่ สำหรับการดำเนินการในเส้นทางหลัก
และเกณฑ์ CI ที่ทำให้ PR ใดๆ ที่วัด p95 ได้เกินงบประมาณมากกว่า 10% ล้มเหลว เป้าหมายถูกปรับเทียบสำหรับฮาร์ดแวร์อ้างอิง M4 ตารางและวิธีการเต็มรูปแบบใน
PERFORMANCE.md
| การดำเนินการ | เป้าหมาย p95 | เป้าหมาย p99 |
|---|---|---|
memory_session_start (Claude Code hook) | < 100 มิลลิวินาที | < 200 มิลลิวินาที |
memory_store (ไม่มีการฝังตัว) | < 20 มิลลิวินาที | < 50 มิลลิวินาที |
memory_search (FTS5) | < 100 มิลลิวินาที | < 250 มิลลิวินาที |
memory_recall (hot, depth=1) | < 50 มิลลิวินาที | < 150 มิลลิวินาที |
memory_kg_query (depth ≤ 3) | < 100 มิลลิวินาที | < 250 มิลลิวินาที |
memory_kg_query (depth ≤ 5) | < 250 มิลลิวินาที | < 500 มิลลิวินาที |
memory_kg_timeline | < 100 มิลลิวินาที | < 250 มิลลิวินาที |
รันเวิร์กโหลดเดียวกันภายในเครื่อง:
ai-memory bench # human-readable table
ai-memory bench --json # machine-parseable
ซับสเตรตไม่เปลี่ยนแปลงใน v0.6.3.x → v0.6.4 (รีลีส quiet-tools มาพร้อมพื้นผิวเครื่องมือเริ่มต้นที่เล็กลง ไม่ใช่เส้นทางหลักที่แตกต่าง) เป้าหมาย p99 ที่นี่ยังคงเป็นข้อมูลเบื้องต้นระหว่างรอช่วงทดสอบโหลดเฉพาะครั้งถัดไป หลักฐานการทดสอบโหลดล่าสุดอยู่บน test hub
วิธีการผสานรวม
MCP (หลัก -- สำหรับแพลตฟอร์ม AI ที่เข้ากันได้กับ MCP)
MCP เป็นการผสานรวมที่แนะนำ AI ของคุณจะได้รับ เครื่องมือหน่วยความจำเนทีฟ 7 รายการที่โฆษณาโดยค่าเริ่มต้น (5 รายการเดิม + memory_load_family + memory_smart_load; รวมถึง memory_capabilities บูตสแตรปที่เปิดใช้งานตลอดเวลา) โดยไม่ต้องใช้โค้ดเชื่อมต่อใดๆ เครื่องมือที่เรียกได้อีก 93 รายการ (รายการที่โฆษณา 101 รายการ — ตรวจสอบกับ Profile::full().expected_tool_count() และตรึงโดย const_count_matches_full_profile ใน src/mcp/registry.rs) ยังคงเข้าถึงได้ผ่าน --profile graph|admin|power|full หรือการขยายรันไทม์ผ่าน memory_capabilities --include-schema family=<name> กำหนดค่าเซิร์ฟเวอร์ MCP ในค่าคอนฟิกของแพลตฟอร์ม AI ของคุณ:
{
"mcpServers": {
"memory": {
"command": "ai-memory",
"args": ["--db", "~/.claude/ai-memory.db", "mcp"]
}
}
}
HTTP API (สากล -- สำหรับ AI หรือเครื่องมือใดๆ)
เริ่มเซิร์ฟเวอร์ HTTP สำหรับการเข้าถึง REST API AI, สคริปต์, หรือระบบอัตโนมัติใดๆ ที่สามารถเรียก HTTP ได้สามารถใช้สิ่งนี้:
ai-memory serve
# 92 REST route registrations (78 unique URL paths) at http://127.0.0.1:9077/api/v1/
CLI (สากล -- สำหรับการเขียนสคริปต์และการใช้งานโดยตรง)
CLI ทำงานแบบสแตนด์อโลนหรือเป็นบล็อกก่อสร้างสำหรับการผสานรวม AI ที่รันคำสั่งเชลล์:
ai-memory store --tier long --title "Architecture decision" --content "We use PostgreSQL"
ai-memory recall "database choice"
ai-memory search "PostgreSQL"
ระดับคุณสมบัติ
ai-memory รองรับ 4 ระดับคุณสมบัติ เลือกเมื่อเริ่มต้นด้วย ai-memory mcp --tier <tier> ระดับที่สูงขึ้นเพิ่มความสามารถ ML โดยแลกกับพื้นที่ดิสก์และ RAM:
| ระดับ | วิธีการเรียกคืน | ความสามารถพิเศษ | โอเวอร์เฮดโดยประมาณ |
|---|---|---|---|
| keyword | FTS5 เท่านั้น | พื้นผิวพื้นฐาน 101 รายการ — ระดับเป็นตัวกำหนดโมเดล/คุณสมบัติ ไม่ใช่พื้นผิวเครื่องมือที่โฆษณา | 0 MB |
| semantic | FTS5 + ความคล้ายคลึงโคไซน์ (ไฮบริด) | การฝังตัว MiniLM-L6-v2 (384 มิติ), ดัชนี HNSW, ระดับ semantic (เซตย่อยของพื้นผิว 101 รายการ) | ~256 MB |
| smart | ไฮบริด + การขยายคำค้นด้วย LLM | + nomic-embed-text (768 มิติ) + memory_expand_query, memory_auto_tag, memory_detect_contradiction ที่มี LLM หนุนหลัง, พื้นผิวเต็ม 101 รายการ ผู้ให้บริการ LLM ถูกเลือกโดยผู้ดำเนินการผ่าน AI_MEMORY_LLM_BACKEND (#1067) — Ollama ภายในเครื่อง, xAI, OpenAI, Anthropic, Gemini, DeepSeek, Kimi, Qwen, Mistral, Groq, Together, Cerebras, OpenRouter, Fireworks, LMStudio, vLLM, หรือ llama.cpp | ~1 GB (Ollama ภายในเครื่อง) / ~0 GB (API ระยะไกล) |
| autonomous | ไฮบริด + การขยายด้วย LLM + การจัดอันดับใหม่ด้วย cross-encoder | + neural cross-encoder (ms-marco-MiniLM), การสะท้อนหน่วยความจำ, พื้นผิวเต็ม 101 รายการ อิสระในการเลือกผู้ให้บริการ LLM เช่นเดียวกับระดับ smart | ~4 GB (Ollama ภายในเครื่อง) / ~3 GB (LLM ระยะไกล, cross-encoder ภายในเครื่องเท่านั้น) |
เมทริกซ์ความสามารถ
ทุกความสามารถถูกแมปกับระดับขั้นต่ำของมัน แต่ละระดับรวมความสามารถทั้งหมดจากระดับที่ต่ำกว่า
| ความสามารถ | keyword | semantic | smart | autonomous |
|---|---|---|---|---|
| ค้นหา & เรียกคืน | ||||
| ค้นหาคีย์เวิร์ด FTS5 | ใช่ | ใช่ | ใช่ | ใช่ |
| การฝังตัวเชิงความหมาย (ความคล้ายคลึงโคไซน์) | -- | ใช่ | ใช่ | ใช่ |
| การเรียกคืนแบบไฮบริด (FTS5 + โคไซน์, น้ำหนัก semantic แบบปรับตัว 0.50→0.15 ตามความยาวเนื้อหา) | -- | ใช่ | ใช่ | ใช่ |
| ดัชนีเพื่อนบ้านใกล้เคียง HNSW | -- | ใช่ | ใช่ | ใช่ |
การขยายคำค้นด้วย LLM (memory_expand_query) | -- | -- | ใช่ | ใช่ |
| การจัดอันดับใหม่ด้วย neural cross-encoder | -- | -- | -- | ใช่ |
| การจัดการหน่วยความจำ | ||||
| จัดเก็บ, อัปเดต, ลบ, เลื่อนระดับ, เชื่อมโยง | ใช่ | ใช่ | ใช่ | ใช่ |
| การรวมด้วยตนเอง | ใช่ | ใช่ | ใช่ | ใช่ |
| การรวมอัตโนมัติ (สรุปด้วย LLM) | -- | -- | ใช่ | ใช่ |
การติดแท็กอัตโนมัติ (memory_auto_tag) | -- | -- | ใช่ | ใช่ |
การตรวจจับข้อขัดแย้ง (memory_detect_contradiction) | -- | -- | ใช่ | ใช่ |
| การสะท้อนหน่วยความจำอัตโนมัติ | -- | -- | -- | ใช่ |
| โมเดล | ||||
| โมเดลฝังตัว | -- | MiniLM-L6-v2 (384d) | nomic-embed-text (768d) | nomic-embed-text (768d) |
| การแทนที่แบ็กเอนด์การฝังตัว (#1598) | -- | ใดๆ: Ollama ภายในเครื่อง, นามแฝงผู้ให้บริการ API, หรือที่เข้ากันได้กับ OpenAI แบบโฮสต์เอง ([embeddings].backend / AI_MEMORY_EMBED_*) | เหมือนกัน | เหมือนกัน |
| LLM | -- | -- | เลือกโดยผู้ดำเนินการ (#1067) — ค่าเริ่มต้น gemma3:4b ภายในเครื่อง; ปลายทางระยะไกลไม่มีรอยเท้าในเครื่อง | เลือกโดยผู้ดำเนินการ (#1067) — ค่าเริ่มต้น gemma3:4b ภายในเครื่อง; ปลายทางระยะไกลไม่มีรอยเท้าในเครื่อง |
| ทรัพยากร | ||||
| RAM | 0 MB | ~256 MB | ~1 GB | ~4 GB |
| การพึ่งพาภายนอก | ไม่มี | ไม่มี | แบ็กเอนด์ LLM (Ollama / xAI / OpenAI / Anthropic / Gemini / DeepSeek / Kimi / Qwen / Mistral / Groq / Together / Cerebras / OpenRouter / Fireworks / LMStudio / vLLM / llama.cpp — #1067) | แบ็กเอนด์ LLM (ตัวเลือกเดียวกับ smart) |
เครื่องมือ MCP ที่เปิดเผย (ที่ --profile full) 1 | 101 | 101 | 101 | 101 |
ระดับ Semantic (ค่าเริ่มต้น) รวมเฟรมเวิร์ก Candle ML และดาวน์โหลดโมเดล all-MiniLM-L6-v2 ในการรันครั้งแรก (~90 MB) ระดับ Smart และ autonomous ต้องการแบ็กเอนด์ LLM — หลัง #1067 (v0.7.0) สามารถเป็นภายในเครื่อง (Ollama, LMStudio, vLLM, เซิร์ฟเวอร์ llama.cpp) หรือปลายทางระยะไกลใดๆ ที่เข้ากันได้กับ OpenAI (xAI, OpenAI, Anthropic ผ่าน shim ของ OpenAI, Google Gemini, DeepSeek, Kimi, Qwen, Mistral, Groq, Together, Cerebras, OpenRouter, Fireworks) การเลือกทำผ่านตัวแปรสภาพแวดล้อม AI_MEMORY_LLM_BACKEND; คีย์ API ต่อผู้ให้บริการผ่าน XAI_API_KEY / OPENAI_API_KEY / ANTHROPIC_API_KEY / GEMINI_API_KEY / DEEPSEEK_API_KEY / MOONSHOT_API_KEY / DASHSCOPE_API_KEY / ฯลฯ หรือ AI_MEMORY_LLM_API_KEY มาตรฐาน
ระดับควบคุมคุณสมบัติ ไม่ใช่โมเดล — และหลัง #1067 (v0.7.0), ระดับควบคุมคุณสมบัติ ไม่ใช่ผู้ให้บริการเช่นกัน แฟล็ก --tier ควบคุมว่าเครื่องมือใดถูกเปิดเผย แบ็กเอนด์ LLM + โมเดลสามารถกำหนดค่าแยกกันได้ผ่านตัวแปรสภาพแวดล้อม AI_MEMORY_LLM_BACKEND + AI_MEMORY_LLM_MODEL (หรือผ่านส่วน [llm] มาตรฐานใน ~/.config/ai-memory/config.toml — ดู docs/CONFIG_SCHEMA.md สำหรับสคีมาองค์กร v0.7.x และเครื่องมือโยกย้าย) ตัวอย่างเช่น รันระดับ autonomous (พื้นผิวเต็ม 101 รายการ + ตัวจัดอันดับใหม่) กับ xAI Grok 4 ผ่านนามแฝงที่เข้ากันได้กับ OpenAI:
# Quick path: env vars
export AI_MEMORY_LLM_BACKEND=xai
export AI_MEMORY_LLM_MODEL=grok-4.3
export XAI_API_KEY=xai-… # or AI_MEMORY_LLM_API_KEY
ai-memory mcp --tier autonomous
# Enterprise path: ~/.config/ai-memory/config.toml (v0.7.x schema v2, #1146)
schema_version = 2
tier = "autonomous"
[llm]
backend = "xai"
model = "grok-4.3"
base_url = "https://api.x.ai/v1"
api_key_env = "XAI_API_KEY" # mutually exclusive with api_key_file;
# inline `api_key = "..."` is REJECTED.
# Legacy v0.6.x shape — still works, deprecation WARN at load; run
# `ai-memory config migrate` to upgrade in place.
tier = "autonomous"
llm_model = "gemma3:4b" # default Ollama model at v0.7.0
แฟล็ก --tier ต้อง ถูกส่งในอาร์กิวเมนต์ MCP -- การตั้งค่าระดับ config.toml จะไม่ถูกใช้เมื่อเซิร์ฟเวอร์ถูกเปิดโดยไคลเอนต์ AI
# Semantic is the default tier
ai-memory mcp
# Keyword -- FTS5 only, no models
ai-memory mcp --tier keyword
# Semantic -- hybrid recall with embeddings (explicit)
ai-memory mcp --tier semantic
# Smart -- adds LLM-powered query expansion, auto-tagging, contradiction detection
ai-memory mcp --tier smart
# Autonomous -- adds cross-encoder reranking
ai-memory mcp --tier autonomous
เครื่องมือ memory_capabilities รายงานระดับที่ใช้งานอยู่, โมเดลที่โหลด, และความสามารถที่มีในรันไทม์
เครื่องมือ MCP
เครื่องมือ 101 รายการเหล่านี้ (โปรไฟล์เต็ม; จำนวนมาตรฐานผ่าน Profile::full().expected_tool_count() ใน src/profile.rs) พร้อมใช้งานสำหรับ AI ใดๆ ที่เข้ากันได้กับ MCP เมื่อกำหนดค่าเป็นเซิร์ฟเวอร์ MCP (หน้าหลักฐานที่ตรึง v0.6.4 แสดงรายการพื้นฐาน 63 เครื่องมือ; ตารางด้านล่างบันทึกเซตย่อยหลักที่ไคลเอนต์ส่วนใหญ่ใช้ในแต่ละวัน):
| เครื่องมือ | คำอธิบาย |
|---|---|
memory_store | จัดเก็บความทรงจำใหม่ (ลบรายการซ้ำด้วยชื่อ+เนมสเปซ, รายงานข้อขัดแย้ง) |
memory_recall | เรียกคืนความทรงจำที่เกี่ยวข้องกับบริบท (ค้นหาแบบ fuzzy OR, จัดอันดับด้วย 6 ปัจจัย) |
memory_search | ค้นหาความทรงจำด้วยคำสำคัญที่ตรงกันทุกประการ (ความหมายแบบ AND) |
memory_list | แสดงรายการความทรงจำพร้อมตัวกรองเสริม (เนมสเปซ, ระดับ, แท็ก, ช่วงวันที่) |
memory_get | รับความทรงจำเฉพาะด้วย ID พร้อมลิงก์ |
memory_update | อัปเดตความทรงจำที่มีอยู่ด้วย ID (อัปเดตบางส่วน) |
memory_delete | ลบความทรงจำด้วย ID |
memory_promote | เลื่อนระดับความทรงจำเป็นระยะยาว (ถาวร, ล้างวันหมดอายุ) |
memory_forget | ลบจำนวนมากตามรูปแบบ, เนมสเปซ, หรือระดับ |
memory_link | สร้างลิงก์ที่มีชนิดระหว่างสองความทรงจำ |
memory_get_links | รับลิงก์ทั้งหมดสำหรับความทรงจำ |
memory_consolidate | รวมหลายความทรงจำเป็นบทสรุประยะยาวหนึ่งเดียว |
memory_stats | รับสถิติที่เก็บความทรงจำ |
memory_capabilities | รายงานระดับฟีเจอร์ที่ใช้งาน, โมเดลที่โหลด, และความสามารถที่มี |
memory_expand_query | ใช้ LLM เพื่อขยายคำค้นหาเป็นคำที่เกี่ยวข้อง (ระดับ smart+) |
memory_auto_tag | ใช้ LLM เพื่อสร้างแท็กให้ความทรงจำโดยอัตโนมัติ (ระดับ smart+) |
memory_detect_contradiction | ใช้ LLM เพื่อตรวจสอบว่าสองความทรงจำขัดแย้งกันหรือไม่ (ระดับ smart+) |
memory_archive_list | แสดงรายการความทรงจำที่เก็บถาวร (พร้อมตัวกรองเนมสเปซ/ระดับ/แท็กเสริม) |
memory_archive_restore | กู้คืนความทรงจำที่เก็บถาวรกลับไปยังที่เก็บที่ใช้งาน |
memory_archive_purge | ลบความทรงจำที่เก็บถาวรที่ตรงกับตัวกรองอย่างถาวร |
memory_archive_stats | รับสถิติที่เก็บถาวร (จำนวนตามระดับ, เนมสเปซ, อายุ) |
HTTP API
การลงทะเบียนเส้นทาง 92 รายการ / เส้นทาง URL ที่ไม่ซ้ำกัน 78 เส้นทางบน 127.0.0.1:9077 เริ่มต้นด้วย ai-memory serve ตารางด้านล่างแสดงจุดปลาย REST ที่ใช้บ่อยที่สุด; ดู docs/API_REFERENCE.md สำหรับพื้นผิวทั้งหมด (การกำกับดูแล, สหพันธ์, การสมัครสมาชิก, กราฟความรู้, โควตา, การอนุมัติ SSE)
ความปลอดภัย: เซิร์ฟเวอร์ HTTP ผูกกับ 127.0.0.1 และมาพร้อมกับการกำหนดค่าการรับรองความถูกต้องเป็นค่าเริ่มต้น พร้อมด้วย CORS แบบอนุญาตทั้งหมด ตั้งค่า
api_keyในconfig.tomlเพื่อต้องการส่วนหัวx-api-keyในทุกคำขอ (รูปแบบพารามิเตอร์คิวรี?api_key=แบบเดิมถูกยกเลิกที่ v0.7.0 — #1574) และตั้งค่าAI_MEMORY_REQUIRE_API_KEY=1เพื่อปฏิเสธการเริ่มต้นโดยไม่มีคีย์อย่างเข้มงวด (#1458) ห้ามเปิดเผยสู่เครือข่ายโดยไม่มีการรับรองความถูกต้อง (และควรใช้ TLS ผ่าน--tls-cert/--tls-keyหรือ reverse proxy)
| วิธีการ | จุดปลาย | คำอธิบาย |
|---|---|---|
| GET | /api/v1/health | ตรวจสอบความสมบูรณ์ (ตรวจสอบ DB + ความสมบูรณ์ FTS5) |
| GET | /api/v1/memories | แสดงรายการความทรงจำ (รองรับเนมสเปซ, ระดับ, แท็ก, ตั้งแต่, จนถึง, จำกัด) |
| POST | /api/v1/memories | สร้างความทรงจำ |
| POST | /api/v1/memories/bulk | สร้างความทรงจำจำนวนมาก (พร้อมข้อจำกัด) |
| GET | /api/v1/memories/{id} | รับความทรงจำด้วย ID |
| PUT | /api/v1/memories/{id} | อัปเดตความทรงจำด้วย ID |
| DELETE | /api/v1/memories/{id} | ลบความทรงจำด้วย ID |
| POST | /api/v1/memories/{id}/promote | เลื่อนระดับความทรงจำเป็นระยะยาว |
| GET | /api/v1/search | ค้นหาคำสำคัญแบบ AND |
| GET | /api/v1/recall | เรียกคืนตามบริบท (GET พร้อมพารามิเตอร์คิวรี) |
| POST | /api/v1/recall | เรียกคืนตามบริบท (POST พร้อมเนื้อหา JSON) |
| POST | /api/v1/forget | ลบจำนวนมากตามรูปแบบ/เนมสเปซ/ระดับ |
| POST | /api/v1/consolidate | รวมความทรงจำเป็นหนึ่งเดียว |
| POST | /api/v1/links | สร้างลิงก์ระหว่างความทรงจำ |
| GET | /api/v1/links/{id} | รับลิงก์สำหรับความทรงจำ |
| GET | /api/v1/namespaces | แสดงรายการเนมสเปซทั้งหมด |
| GET | /api/v1/stats | สถิติที่เก็บความทรงจำ |
| POST | /api/v1/gc | เรียกใช้การเก็บขยะ |
| GET | /api/v1/export | ส่งออกความทรงจำ + ลิงก์ทั้งหมดเป็น JSON |
| POST | /api/v1/import | นำเข้าความทรงจำ + ลิงก์จาก JSON |
| GET | /api/v1/archive | แสดงรายการความทรงจำที่เก็บถาวร (พร้อมตัวกรองเสริม) |
| POST | /api/v1/archive/{id}/restore | กู้คืนความทรงจำที่เก็บถาวรไปยังที่เก็บที่ใช้งาน |
| DELETE | /api/v1/archive | ล้างความทรงจำที่เก็บถาวรที่ตรงกับตัวกรอง |
| GET | /api/v1/archive/stats | สถิติที่เก็บถาวร (จำนวนตามระดับ, เนมสเปซ, อายุ) |
คำสั่ง CLI
คำสั่งย่อยระดับบนสุด 89 คำสั่งภายใต้ --features sal หรือ --features sal-postgres (87 ในรุ่นมาตรฐาน; ช่องว่าง 2 ตัวแปรคือ Migrate + SchemaInit, ทั้งคู่ถูกควบคุม #[cfg(feature = "sal")] ตาม src/daemon_runtime.rs::Command::{Migrate,SchemaInit}; มี 40 คำสั่งที่ v0.6.4) รัน ai-memory <command> --help สำหรับรายละเอียดของคำสั่งใดๆ หรือ ai-memory --help สำหรับรายการทั้งหมด
| คำสั่ง | คำอธิบาย |
|---|---|
mcp | รันเป็นเซิร์ฟเวอร์เครื่องมือ MCP ผ่าน stdio (เส้นทางการรวมหลัก) |
serve | เริ่ม daemon HTTP บนพอร์ต 9077 |
store | จัดเก็บความทรงจำใหม่ (ลบรายการซ้ำด้วยชื่อ+เนมสเปซ) |
update | อัปเดตความทรงจำที่มีอยู่ด้วย ID |
recall | ค้นหาแบบ fuzzy OR พร้อมผลลัพธ์ที่จัดอันดับ + การสัมผัสอัตโนมัติ (รองรับ --tier สำหรับการเรียกคืนแบบผสม) ไปป์ไลน์จำกัดผลลัพธ์ที่ 50 ต่อคำขอ |
search | ค้นหาแบบ AND สำหรับการจับคู่คำสำคัญที่แม่นยำ |
get | ดึงข้อมูลความทรงจำเดียวด้วย ID (รวมลิงก์) |
list | เรียกดูความทรงจำพร้อมตัวกรอง (เนมสเปซ, ระดับ, แท็ก, ช่วงวันที่) จำกัดที่ 1,000 รายการต่อคำขอ (LIST_MAX_LIMIT; HTTP list/bulk ยังเคารพ AI_MEMORY_MAX_PAGE_SIZE) |
delete | ลบความทรงจำด้วย ID |
promote | เลื่อนระดับความทรงจำเป็นระยะยาว (ล้างวันหมดอายุ) |
forget | ลบจำนวนมากตามรูปแบบ + เนมสเปซ + ระดับ |
link | เชื่อมโยงสองความทรงจำ (related_to, supersedes, contradicts, derived_from) |
consolidate | รวมหลายความทรงจำเป็นบทสรุประยะยาวหนึ่งเดียว |
resolve | แก้ไขข้อขัดแย้ง: ทำเครื่องหมายผู้ชนะ, ลดระดับผู้แพ้ |
shell | REPL แบบโต้ตอบพร้อมเอาต์พุตสี |
sync | ซิงค์ความทรงจำระหว่างไฟล์ฐานข้อมูลสองไฟล์ (pull/push/merge) |
auto-consolidate | จัดกลุ่มความทรงจำตามเนมสเปซ+แท็ก, รวมกลุ่มที่เกินเกณฑ์ |
gc | เรียกใช้การเก็บขยะกับความทรงจำที่หมดอายุ |
stats | ภาพรวมสถานะความทรงจำ (จำนวน, ระดับ, เนมสเปซ, ลิงก์, ขนาด DB) |
namespaces | แสดงรายการเนมสเปซทั้งหมดพร้อมจำนวนความทรงจำ |
export | ส่งออกความทรงจำและลิงก์ทั้งหมดเป็น JSON |
import | นำเข้าความทรงจำและลิงก์จาก JSON (stdin) |
completions | สร้างการเติมเต็มเชลล์ (bash, zsh, fish) |
man | สร้างหน้า man รูปแบบ roff ไปยัง stdout |
mine | นำเข้าความทรงจำจากการสนทนาประวัติ (การส่งออก Claude, ChatGPT, Slack) |
archive | จัดการที่เก็บถาวรความทรงจำ (list, restore, purge, stats) |
ไบนารีระดับบนสุด ai-memory ยังยอมรับแฟล็กส่วนกลาง:
| แฟล็ก | คำอธิบาย |
|---|---|
--db <path> | เส้นทางฐานข้อมูล (ค่าเริ่มต้น: ai-memory.db, หรือ $AI_MEMORY_DB) |
--json | เอาต์พุต JSON ในทุกคำสั่ง (เอาต์พุตที่เครื่องแยกวิเคราะห์ได้) |
คำสั่งย่อย store ยอมรับแฟล็กเพิ่มเติม:
| แฟล็ก | คำอธิบาย |
|---|---|
--source / -S | ใครเป็นผู้สร้างความทรงจำนี้ (user, nhi, hook, api, cli, import, consolidation, system) ค่าเริ่มต้น: cli "claude" ยอมรับเพื่อความเข้ากันได้ย้อนหลังตาม src/validate.rs::VALID_SOURCES |
--expires-at | เวลาประทับวันหมดอายุ RFC3339 |
--ttl-secs | TTL เป็นวินาที (ทางเลือกแทน --expires-at) |
คำสั่งย่อย mcp ยอมรับแฟล็กเพิ่มเติม:
| แฟล็ก | คำอธิบาย |
|---|---|
--tier <keyword|semantic|smart|autonomous> | ระดับฟีเจอร์ (ค่าเริ่มต้น: semantic) ดู ระดับฟีเจอร์ |
การให้คะแนนการเรียกคืน
ทุกคำค้นหาการเรียกคืนจัดอันดับความทรงจำด้วย 6 ปัจจัย:
score = (fts_relevance * -1)
+ (priority * 0.5)
+ (MIN(access_count, 50) * 0.1)
+ (confidence * 2.0)
+ tier_boost
+ recency_decay
| ปัจจัย | น้ำหนัก | หมายเหตุ |
|---|---|---|
| ความเกี่ยวข้อง FTS | -1.0x | อันดับ SQLite FTS5 (ค่าลบ = การจับคู่ที่ดีกว่า) |
| ลำดับความสำคัญ | 0.5x | มาตราส่วน 1-10 ที่ผู้ใช้กำหนด |
| จำนวนการเข้าถึง | 0.1x | ความถี่ในการเรียกคืน (จำกัดที่ 50 สำหรับการให้คะแนน) |
| ความมั่นใจ | 2.0x | คะแนนความแน่นอน 0.0-1.0 |
| การเพิ่มระดับ | +3.0 / +1.0 / +0.0 | ยาว / กลาง / สั้น |
| การลดลงตามเวลา | 1/(1 + days*0.1) | ความทรงจำล่าสุดมีอันดับสูงกว่า |
ระดับความทรงจำ
| ระดับ | TTL | กรณีการใช้งาน | ตัวอย่าง |
|---|---|---|---|
short | 6 ชั่วโมง (กำหนดค่าได้) | บริบทใช้แล้วทิ้ง | สถานะการดีบักปัจจุบัน, ตัวแปรชั่วคราว, ร่องรอยข้อผิดพลาด |
mid | 7 วัน (กำหนดค่าได้) | ความรู้ระหว่างทำงาน | เป้าหมายสปรินต์, การตัดสินใจล่าสุด, วัตถุประสงค์ของสาขาปัจจุบัน |
long | ถาวร | ความรู้ที่ได้มาอย่างยากลำบาก | สถาปัตยกรรม, การตั้งค่าผู้ใช้, การแก้ไข, ข้อตกลง |
พฤติกรรมอัตโนมัติ
- การขยาย TTL เมื่อเรียกคืน: ความทรงจำระยะสั้นได้ +1 ชั่วโมง, ความทรงจำระยะกลางได้ +1 วัน
- การเลื่อนระดับอัตโนมัติ: ความทรงจำระดับกลางที่เข้าถึง 5+ ครั้งเลื่อนเป็นระยะยาว (ล้างวันหมดอายุ)
- การเสริมลำดับความสำคัญ: ทุก 10 การเข้าถึง, ลำดับความสำคัญเพิ่มขึ้น 1 (จำกัดที่ 10)
- การตรวจจับข้อขัดแย้ง: เตือนเมื่อความทรงจำใหม่ขัดแย้งกับที่มีอยู่ในเนมสเปซเดียวกัน
- การลบรายการซ้ำ: upsert ด้วยชื่อ+เนมสเปซ; ระดับไม่เคยถูกลดเมื่ออัปเดต
TTL ที่กำหนดค่าได้
TTL เริ่มต้น (6 ชั่วโมงสำหรับระยะสั้น, 7 วันสำหรับระยะกลาง) สามารถแทนที่ได้ใน ~/.config/ai-memory/config.toml ภายใต้ส่วน [ttl]:
[ttl]
short_ttl_secs = 21600 # short-tier TTL in seconds (default: 21600 = 6 hours)
mid_ttl_secs = 604800 # mid-tier TTL in seconds (default: 604800 = 7 days)
long_ttl_secs = 0 # long-tier TTL in seconds (default: 0 = never expires)
short_extend_secs = 3600 # TTL extension on recall for short-tier memories in seconds (default: 3600 = +1h)
mid_extend_secs = 86400 # TTL extension on recall for mid-tier memories in seconds (default: 86400 = +1d)
ทั้งห้าฟิลด์เป็นทางเลือก -- ละเว้นฟิลด์ใดๆ เพื่อคงค่าเริ่มต้น ตั้งค่าใดๆ เป็น 0 เพื่อปิดการหมดอายุสำหรับระดับนั้น ค่าถูกจำกัดสูงสุด 10 ปี; ค่าส่วนขยายที่เป็นลบถูกจำกัดเป็น 0
หมายเหตุ: การกำหนดค่าถูกโหลดครั้งเดียวเมื่อเริ่มต้นกระบวนการ การเปลี่ยนแปลง
config.tomlต้องรีสตาร์ทกระบวนการ ai-memory (เซิร์ฟเวอร์ MCP, daemon HTTP, หรือ CLI) จึงจะมีผล
ที่เก็บถาวร
เมื่อการเก็บขยะทำให้ความทรงจำหมดอายุ, มันสามารถถูกเก็บถาวรแทนการลบอย่างถาวร ความทรงจำที่เก็บถาวรถูกย้ายไปยังที่เก็บแยกต่างหากและสามารถเรียกดู, กู้คืน, หรือล้างในภายหลังได้
การกำหนดค่า
เปิดใช้งานการเก็บถาวรใน ~/.config/ai-memory/config.toml:
archive_on_gc = true # archive expired memories instead of deleting them (default: true)
คำสั่ง CLI
คำสั่งย่อย archive จัดการที่เก็บถาวร:
ai-memory archive list # list archived memories
ai-memory archive list --namespace my-project # filter by namespace
ai-memory archive restore <id> # restore an archived memory to active store
ai-memory archive purge --older-than-days 90 # permanently delete archives older than 90 days
ai-memory archive stats # show archive statistics
หมายเหตุ: ความทรงจำที่กู้คืนจะถูกล้าง
expires_at(กลายเป็นถาวรจนกว่าจะมีการกำหนด TTL ครั้งต่อไป)
เครื่องมือ MCP
มีเครื่องมือเก็บถาวรสี่รายการสำหรับไคลเอนต์ MCP:
| เครื่องมือ | คำอธิบาย |
|---|---|
memory_archive_list | แสดงรายการความทรงจำที่เก็บถาวร (พร้อมตัวกรองเนมสเปซ/ระดับ/แท็กเสริม) |
memory_archive_restore | กู้คืนความทรงจำที่เก็บถาวรกลับไปยังที่เก็บที่ใช้งาน |
memory_archive_purge | ลบความทรงจำที่เก็บถาวรที่ตรงกับตัวกรองอย่างถาวร |
memory_archive_stats | รับสถิติที่เก็บถาวร (จำนวนตามระดับ, เนมสเปซ, อายุ) |
จุดปลาย HTTP
| วิธีการ | จุดปลาย | คำอธิบาย |
|---|---|---|
| GET | /api/v1/archive | แสดงรายการความทรงจำที่เก็บถาวร (พร้อมตัวกรองเสริม) |
| POST | /api/v1/archive/{id}/restore | กู้คืนความทรงจำที่เก็บถาวรไปยังที่เก็บที่ใช้งาน |
| DELETE | /api/v1/archive | ล้างความทรงจำที่เก็บถาวรที่ตรงกับตัวกรอง |
| GET | /api/v1/archive/stats | สถิติที่เก็บถาวร (จำนวนตามระดับ, เนมสเปซ, อายุ) |
ความปลอดภัย
ai-memory รวมการเสริมความแข็งแกร่งในทุกเส้นทางอินพุต:
- ความปลอดภัยของธุรกรรม -- การดำเนินการฐานข้อมูลหลายขั้นตอนทั้งหมดใช้ธุรกรรม; ไม่มีการเขียนบางส่วนเมื่อเกิดความล้มเหลว
- การป้องกันการแทรกข้อมูล FTS -- ข้อมูลนำเข้าจากผู้ใช้ถูกทำให้ปลอดภัยก่อนถึงคิวรี FTS5; อักขระพิเศษถูกหลีกเลี่ยง
- การทำให้ข้อผิดพลาดปลอดภัย -- พาธฐานข้อมูลภายในและรายละเอียดระบบถูกตัดออกจากการตอบกลับข้อผิดพลาด; ไคลเอนต์เห็นประเภทข้อผิดพลาดที่มีโครงสร้าง (NOT_FOUND, VALIDATION_FAILED, DATABASE_ERROR, CONFLICT)
- ขีดจำกัดขนาดเนื้อหา -- เนื้อหาคำขอ HTTP ถูกจำกัดที่ 50 MB ผ่าน DefaultBodyLimit ของ Axum
- ขีดจำกัดการดำเนินการแบบกลุ่ม -- ปลายทางการสร้างแบบกลุ่มบังคับใช้ขนาดแบทช์สูงสุดเพื่อป้องกันการใช้ทรัพยากรจนหมด
- CORS -- เลเยอร์ CORS แบบอนุญาตเปิดใช้งานสำหรับเวิร์กโฟลว์การพัฒนาบน localhost
- การตรวจสอบความถูกต้องของข้อมูลนำเข้า -- ทุกเส้นทางการเขียนตรวจสอบความยาวชื่อเรื่อง ความยาวเนื้อหา รูปแบบเนมสเปซ ค่าต้นทาง ช่วงลำดับความสำคัญ (1-10) ช่วงความเชื่อมั่น (0.0-1.0) รูปแบบแท็ก ค่าระดับ ประเภทความสัมพันธ์ และรูปแบบ ID
- การตรวจสอบลิงก์ในการซิงค์ -- ลิงก์ทั้งหมดถูกตรวจสอบ (ทั้งสอง ID, ประเภทความสัมพันธ์, ไม่มีลิงก์ตัวเอง) ก่อนนำเข้าระหว่างการดำเนินการซิงค์
- สีที่ปลอดภัยต่อเธรด -- การตรวจจับสีเทอร์มินัลใช้
AtomicBoolเพื่อการเข้าถึงพร้อมกันอย่างปลอดภัย - HTTP เฉพาะภายใน -- เซิร์ฟเวอร์ HTTP ผูกกับ 127.0.0.1 โดยค่าเริ่มต้น; ไม่เปิดเผยสู่เครือข่าย
- โหมด WAL -- SQLite Write-Ahead Logging สำหรับการอ่านพร้อมกันอย่างปลอดภัยระหว่างการเขียน
เอกสารประกอบ
| คู่มือ | กลุ่มเป้าหมาย |
|---|---|
| บันทึกการเปลี่ยนแปลง v0.9.0 | รุ่นปัจจุบัน (secure-default hardening) — ต้องการการรับรองเอเจนต์ store-path โดยค่าเริ่มต้น (#1751), ประตูบังคับใช้ hook แบบคู่ MCP+HTTP (#1885/#1924), schema v78 |
| บันทึกประจำรุ่น v0.8.0 | รุ่นก่อนหน้า (distributed-coordination) — ซับสเตรตการประสานงาน, การรู้คิดแบบมีชนิด, การเสริมความแข็งแกร่งของสหพันธ์, การบังคับใช้ธรรมาภิบาล, schema v58→v70 |
| เอกสารอ้างอิงเครื่องมือประสานงาน | พื้นฐาน action / lease / signal / checkpoint / routine ของ v0.8.0 (memory_action_* / _lease_* / _signal_* / _checkpoint_* / _routine_*) |
| คู่มือการย้าย v0.7 | การอัปเกรดจาก v0.6.x (ครอบคลุม attested-cortex, hooks, transcripts, AGE, permissions, การแก้ไขการสืบทอด G1) |
| มีอะไรใหม่ใน v0.7 | การแนะนำแบบภาพของซับสเตรต attested-cortex |
RFC attested-cortex | เหตุผลการออกแบบสำหรับการตัดสินใจทางสถาปัตยกรรมสี่ประการของ v0.7 |
| เมทริกซ์ความเข้ากันได้ v0.7 | เมทริกซ์ค่าเริ่มต้นเทียบกับการเลือกใช้ต่อฟีเจอร์ |
| คู่มือการติดตั้ง | การทำให้ทำงานได้ (รวมถึงการตั้งค่า MCP สำหรับหลายแพลตฟอร์ม AI) |
| คู่มือผู้ใช้ | ผู้ใช้ผู้ช่วย AI ที่ต้องการหน่วยความจำถาวร |
| คู่มือนักพัฒนา | การสร้างหรือมีส่วนร่วมกับ ai-memory |
| คู่มือผู้ดูแลระบบ | การปรับใช้ การตรวจสอบ และการแก้ไขปัญหา |
| มาตรฐานวิศวกรรม | มาตรฐานโค้ด การทดสอบ ความปลอดภัย และการเผยแพร่ (เชื่อถือได้) |
| เวิร์กโฟลว์นักพัฒนา AI | เวิร์กโฟลว์ทีละขั้นตอนสำหรับเอเจนต์การเขียนโค้ด AI ที่มีส่วนร่วมกับ repo นี้ |
| มาตรฐานธรรมาภิบาลนักพัฒนา AI | นโยบายสำหรับการมีส่วนร่วมของ AI: อำนาจ การระบุแหล่งที่มา การตรวจสอบ การตรวจสอบบัญชี |
| GitHub Pages | ภาพรวมแบบภาพพร้อมไดอะแกรมเคลื่อนไหว |
ใบอนุญาต
ลิขสิทธิ์ 2026 AlphaOne LLC.
ได้รับอนุญาตภายใต้ Apache License, Version 2.0 ("ใบอนุญาต"); คุณไม่สามารถใช้ไฟล์นี้ยกเว้นตามข้อกำหนดของใบอนุญาต คุณสามารถขอรับสำเนาใบอนุญาตได้ที่
เว้นแต่กฎหมายที่บังคับใช้กำหนดหรือตกลงเป็นลายลักษณ์อักษร ซอฟต์แวร์ ที่แจกจ่ายภายใต้ใบอนุญาตจะถูกแจกจ่ายบนพื้นฐาน "ตามสภาพ" โดยไม่มีการรับประกันหรือเงื่อนไขใดๆ ทั้งโดยชัดแจ้งหรือโดยนัย ดูใบอนุญาตสำหรับภาษาที่ควบคุมสิทธิ์และ ข้อจำกัดภายใต้ใบอนุญาต
Footnotes
-
MCP พื้นผิวเครื่องมือแยกจากระดับการเรียกคืน — ทุกระดับเห็นเครื่องมือ 101 รายการเดียวกันที่
--profile full(ค่าเริ่มต้น--profile coreโฆษณา 8 รายการเมื่อบูตโดยไม่คำนึงถึงระดับ — เครื่องมือตระกูล Core 7 รายการบวกmemory_capabilitiesบูตสแตรปที่เปิดตลอดเวลา; อีก 93 รายการโหลดตามต้องการ) สิ่งที่ระดับควบคุมคือโมเดล (ตัวฝัง, cross-encoder, LLM) และพฤติกรรมคุณสมบัติ (ความคล้ายคลึงโคไซน์, การขยายด้วย LLM, การจัดอันดับใหม่) ไม่ใช่จำนวนเครื่องมือที่โฆษณา ตรึงโดยProfile::full().expected_tool_count()+const_count_matches_full_profileในsrc/mcp/registry.rs↩