انضم إلى النسخة التجريبية من Hanzo واحصل على خصم 50% على أي خطة مدفوعة

Hanzo Brain: رسم معرفة يبدأ من الجهاز المحلي للوكلاء

ملف SQLite واحد يقرأه وكيلك من كل بيئة تشغيل. صفر رحلات ذهاب وعودة إلى نموذج لغوي لعمليات الرسم، مع FTS5 والمتجهات واستخراج الحواف ذات النوع وقت الكتابة.

في هذه الصفحة

وكيلك ذكي لكنه نسيان. أصلحنا ذلك. اليوم نشحن Hanzo Brain: ملف تنفيذي واحد، وملف SQLite واحد عند ~/.hanzo/brain/brain.db، وسطح الخوارزمية نفسه في TypeScript وPython وRust وGo وC++. أسقط ملف markdown في ~/.hanzo/workspace/. يستوعبه الدماغ، ويستخرج الحواف ذات النوع، ويفهرس المحتوى للاسترجاع الهجين. لا يُستدعى أي نموذج لغوي. الرسم يتراكم.

هذه طبقة الذاكرة لكل بيئة تشغيل من Hanzo: البوت، وخادم MCP، وعقدة Hanzo، وأي شيء تضمّنه في مضيفك.

ما هو الدماغ

الدماغ ثلاثة أشياء في عملية واحدة:

  1. الصفحات — محتوى يُعنون بالمسار المختصر، يُكتب من أي مكان، ويُراقب على القرص.
  2. الحواف — علاقات ذات نوع (mentions، attended، works_at، invested_in، founded، advises) تُستخرج عند كل كتابة بالتعبير النمطي واستنتاج الدور. بلا نموذج لغوي.
  3. الحقائق — صفوف (subject, predicate, object, ts, confidence) يمكن الاستعلام عنها في الزمن الحقيقي عبر الجلسات.

الصفحات تحصل على فهرس FTS5. الحواف تحصل على مفتاح أساسي فوق (source, target, type). الحقائق تحصل على معرّف ووسم زمني. المخطط قصير بما يكفي ليبقى في رأسك:

CREATE TABLE pages (slug TEXT PRIMARY KEY, content TEXT, frontmatter TEXT, updated_at TEXT);
CREATE VIRTUAL TABLE pages_fts USING fts5(content, content='pages', content_rowid='rowid');
CREATE TABLE edges (source TEXT, target TEXT, type TEXT, evidence TEXT, PRIMARY KEY (source, target, type));
CREATE TABLE facts (id TEXT PRIMARY KEY, subject TEXT, predicate TEXT, object TEXT, source TEXT, ts TEXT, confidence REAL);

هذا هو العقد كله. كل واجهة خلفية تلتزمه. كل بيئة تشغيل تكتب ملفًا مطابقًا بايتًا ببايت.

لماذا يهم الاستخراج من دون نموذج لغوي

مستخرجات النماذج اللغوية تحرق الرموز والزمن والمال عند كل كتابة. تنتج انجرافًا بين التشغيلات. تجعل الرسم غير حتمي.

يستخرج الدماغ الحواف بالتعبير النمطي واستنتاج الدور وقت الكتابة. هو سريع، وهو مجاني، وينتج الحواف نفسها في كل مرة أمام المدخل نفسه. حين تستوعب "Alice founded Acme. She invested in Foobar," تحصل على:

people/alice -[founded]->     companies/acme
people/alice -[invested_in]-> companies/foobar

في كل مرة. على كل بيئة تشغيل. بلا رحلة ذهاب وعودة.

إن أردت إثراءً بنموذج لغوي فوق ذلك، من تمييز الكيانات والتحقق من الادعاءات والتلخيص، فاستدعِ نموذجك فوق الرسم الحتمي. الرسم هو الركيزة. النموذج اللغوي لمسة اختيارية.

ملف واحد. كل بيئات التشغيل.

ملف brain.db نفسه يُفتح في TypeScript وPython وRust وGo وC++. بلا ترجمة للتنسيق، وبلا ترحيل. إن كتبت من hanzobot/go على خادم وقرأت من @hanzo/bot-memory في عامل المتصفح، فأنت تقرأ الملف الذي كتبه الخادم.

الميزةTSPythonRustGoC++
واجهة BrainStoreنعمنعمنعمنعمنعم
SQLite (الافتراضي)نعمنعمنعمنعمنعم
بحث هجين عبر FTS5نعمنعمسمةنعمنعم
مستخرج روابط الرسمنعمنعمنعمنعمنعم
محمّل الوصفاتنعمنعمنعمنعمنعم
واجهات خلفية قابلة للتبديلنعمنعمنعمنعمنعم

مجاميع الاختبار عبر بيئات التشغيل عند الإطلاق: 121 TS + 53 Python + 58 Go + 38 Rust (mcp) + 38 Rust (node) + 98 C++ = 406 اختبارًا، كلها خضراء. كل بيئة تشغيل تشحن الدمج نفسه، وإعادة الترتيب نفسها (MMR)، وRRF نفسه، وتطبيع المسار المختصر نفسه، ومستخرج الحواف نفسه.

قابل للاستعلام من MCP

الدماغ مكشوف عبر MCP بثلاث أدوات:

  • brain.recall <entity> — كل حقيقة أُثبتت يومًا عن كيان، مع الأوسام الزمنية.
  • brain.search <query> — بحث هجين يجمع FTS والمتجهات، مدمجًا بـ RRF، مع إعادة ترتيب MMR اختيارية.
  • brain.ingest <slug> <content> — اكتب صفحة، واستخرج الحواف تلقائيًا، وحدّث FTS.

كل وكيل يتحدث إلى عقدة Hanzo، أو خادم Hanzo MCP، أو بوت مبني على hanzobot/* يحصل على هذه الأدوات مجانًا. بلا عربة جانبية، وبلا خدمة إضافية، وبلا قاعدة بيانات منفصلة لتشغيلها.

لمسار الملف التنفيذي الواحد في Go:

go install github.com/hanzobot/go/cmd/hanzo-bot@latest

hanzo-bot brain init                  # opens ~/.hanzo/brain/brain.db
hanzo-bot brain ingest people/alice.md
hanzo-bot brain recall people/alice
hanzo-bot brain search "founded"

لـ Python:

from hanzo_memory.graph_links import extract_edges
edges = extract_edges(slug="people/alice", content="Alice founded Acme.")

لـ Rust، مضمّنًا داخل hanzo-mcp:

use hanzo_mcp::brain::{extract_edges, slugify};
let edges = extract_edges("people/alice", "Alice is CEO of Acme.", Some("person"));

تخزين قابل للتبديل، والعقد نفسه

SQLite هو الافتراضي. يكفي أول مئة ألف صفحة على حاسوب محمول. حين تتجاوزه، سجّل واجهة خلفية مختلفة من دون تغيير كود التطبيق:

الواجهة الخلفيةمتى
sqliteمنفرد، < 100K صفحة
qdrantANN متجهي على نطاق واسع
meilisearchFTS للكلمات المفتاحية على نطاق واسع
zapdbمخزن أصلي متعدد اللغات بوصفه المرجع
replicateسجل WAL الخاص بـ SQLite يُبث إلى S3 للنسخ الاحتياطي
vfsنظام ملفات كتلي متدفق على S3، بحجم غير محدود
postgresنشر للفرق متعددة المستأجرين

للدلالات الموزعة على شكل SQLite بين عدة آلات نستخدم نقل ZAP مع إجماع Quasar وzapdb. الدماغ يبقى نفسه. عقد البايتات الداخلة والخارجة يصمد.

ذاكرة تتراكم

الغرض من الدماغ ليس قاعدة بيانات. إنه تحوّل في الافتراض. وكيلك لا يبدأ كل جلسة فارغًا. ما كتبته من markdown قبل سنة هو رسم بالفعل. محادثات الأمس أنتجت حوافًا وحقائق تستطيع جلسة اليوم الاستعلام عنها من دون دفع رموز مقابلها. وكيلان على آلتين يمكنهما مشاركة brain.db عبر replicate ويتقاربان على المنظر نفسه.

هذا ما نعنيه بذاكرة تتراكم. الرسم ينمو. النموذج يصبح أرخص. يرى المستخدم مساعدًا يتذكر.

احصل على الدماغ

  • مرجع TypeScript (يُشحن مع البوت): npm install -g @hanzo/bot && hanzo-bot serve
  • Python: pip install hanzo-memory
  • ملف Go تنفيذي واحد: go install github.com/hanzobot/go/cmd/hanzo-bot@latest
  • Rust: عضو في مساحة العمل لكل من hanzoai/node وhanzoai/mcp
  • C++: ترويسات فقط عند hanzobot/cpp/include/hanzo/brain/

المصدر: github.com/hanzoai/brain. الترخيص: MIT.


ملف واحد. خمس بيئات تشغيل. صفر استدعاءات لنموذج لغوي من أجل عمليات الرسم. محلي أولاً، بالتصميم.

التعليقات

سجّل الدخول بحساب Hanzo ID لتعلّق.

جارٍ تحميل التعليقات…

اقرأ المزيد