ثبّت Hister ذاتياً: محرك بحثك الشخصي
شغّل Hister على VPS للبحث في نصوص الصفحات التي زرتها وملفاتك، مع تثبيت ثنائي أو Docker، وTLS، وتسجيل دخول، ونقطة MCP.
ما هو Hister وما ليس عليه
Hister هو محرك بحث شخصي تستضيفه بنفسك. يفهرس النص الكامل للصفحات التي زرتها والملفات التي تحتفظ بها، ثم يتيح لك البحث في هذه المجموعة عبر واجهة ويب أو عميل طرفية أو HTTP API أو مساعد ذكاء اصطناعي. يجيب Hister عن سؤال واحد: أين قرأت ذلك؟
يتعرّف معظم القراء إلى هذه الفكرة من خلال SearXNG، لكن الأداتين مختلفتان. SearXNG هو وكيل بحث شامل. ترسل إليه استعلامك، فيستعلم من محركات أخرى نيابةً عنك، ثم يعرض نتائجها بعد إزالة التتبع. يخصّ محركات البحث تلك الفهرس. أما Hister فينشئ فهرسه الخاص من المحتوى الذي تزوّده به: صفحات التقطتها إضافة متصفح، وسجل تصفح مستورد، وعناوين URL زحف إليها، وملفات في أدلة تحددها له. تمنحك مثيلاً مستضافاً ذاتياً لـSearXNG وصولاً خاصاً إلى الويب العام. أما Hister فيمنحك البحث في ما قرأته أنت. تختلف المهمتان، لذلك من الطبيعي تشغيل الأداتين على خادم واحد.
Hister برنامج حرّ مرخّص بموجب AGPLv3 (رخصة GNU Affero العمومية، الإصدار 3) أو أي إصدار لاحق. لا يجمع بيانات القياس عن بُعد، ولا يحتاج إلى خدمة سحابية. يثبّت هذا الدليل الإصدار v0.17.0، الذي كان الإصدار الحالي في 2026-07-28. تحقّق من صفحة الإصدارات لمعرفة الوسم الحالي قبل نسخ أي شيء، ثم ثبّت الوسم الذي تجده هناك.
لماذا تستضيف Hister ذاتياً على VPS
لا يكون الفهرس مفيداً إلا إذا كان كاملاً، ولا يكتمل إلا إذا كان الخادم يعمل أثناء القراءة. يدخل الكمبيوتر المحمول في وضع السكون لنصف اليوم. ولا تصل إليه الصفحات التي تفتحها على هاتفك خلال هذه الفترة، كما لا يبدأ الاستيراد الليلي. يظل VPS قيد التشغيل، لذلك ترسل كل أجهزتك العناصر إلى الفهرس نفسه، ويواصل الزاحف عمله أثناء نومك.
السبب الثاني هو العزل. يتيح ضبط user_handling: true في قسم app لكل حساب بيانات اعتماد ومجموعة مستندات خاصة به ضمن نسخة واحدة. وبذلك يمكن لخادم واحد استضافة حسابات أسرة أو فريق صغير، من دون أن يبحث أي شخص في مواد قراءة شخص آخر.
السبب الثالث هو البنية اللازمة للاتصال. يحتوي VPS مسبقاً على اسم مضيف عام وشهادة، وهما ما تحتاج إليه إضافة المتصفح للوصول إلى الخادم من شبكة لا تتحكم فيها.
مسار التثبيت الأول: ملف الإصدار الثنائي
يصدر Hister ملفاً ثنائياً واحداً لكل منصة. نزّله مع ملف checksums، وتحقق منه قبل التثبيت.
cd /tmp
curl -LO https://github.com/asciimoo/hister/releases/download/v0.17.0/hister_0.17.0_linux_amd64
curl -LO https://github.com/asciimoo/hister/releases/download/v0.17.0/hister_0.17.0_checksums.txt
sha256sum --ignore-missing -c hister_0.17.0_checksums.txtتكون النتيجة السليمة هي السطر الوحيد hister_0.17.0_linux_amd64: OK. ويعني السطر FAILED أن التنزيل تالف أو تم تغييره، لذا أعد تنزيله بدلاً من تثبيته.
ثبّت الملف الثنائي، ثم أنشئ حساب نظام والمجلدات التي سيستخدمها.
sudo install -m 755 /tmp/hister_0.17.0_linux_amd64 /usr/local/bin/hister
sudo useradd --system --home-dir /var/lib/hister --shell /usr/sbin/nologin hister
sudo install -d -o hister -g hister -m 750 /var/lib/hister
sudo install -d -m 755 /etc/hister
sudo hister create-config /etc/hister/config.ymlينشئ create-config ملف إعدادات افتراضياً، كما يثبت أن الملف الثنائي يعمل على هذا الجهاز. ويفشل التنزيل الخاص بالمعمارية الخاطئة هنا تحديداً، مع ظهور cannot execute binary file: Exec format error.
عدّل الإعدادات القليلة المهمة. ويمكن إبقاء بقية الملف المُنشأ كما هي.
app:
directory: /var/lib/hister
access_token: 'paste-a-long-random-string-here'
server:
address: 127.0.0.1:4433
base_url: https://hister.example.comأنشئ الرمز باستخدام openssl rand -hex 32. يحتوي الملف الآن على بيانات اعتماد، لذا قيّد صلاحياته قبل بدء الخدمة.
sudo chown root:hister /etc/hister/config.yml
sudo chmod 640 /etc/hister/config.ymlشغِّله باستخدام systemd
اكتب /etc/systemd/system/hister.service:
[Unit]
Description=Hister personal search engine
After=network-online.target
Wants=network-online.target
[Service]
User=hister
Group=hister
Environment=HISTER_CONFIG=/etc/hister/config.yml
ExecStart=/usr/local/bin/hister listen
Restart=on-failure
NoNewPrivileges=yes
PrivateTmp=yes
ProtectSystem=strict
ProtectHome=yes
ReadWritePaths=/var/lib/hister
[Install]
WantedBy=multi-user.targetيمثّل HISTER_CONFIG متغير البيئة الموثّق لمسار الإعدادات، لذلك لا تعتمد الوحدة على الدليل الرئيسي لحساب hister. يجعل ProtectSystem=strict نظام الملفات بالكامل للقراءة فقط بالنسبة إلى هذه الخدمة، ولذلك يجب أن يحدد ReadWritePaths دليل البيانات. يخفي ProtectHome=yes المسار /home عن الخدمة، لذلك سيظهر أي دليل تتم مراقبته ضمن /home فارغاً بالنسبة إلى المفهرس. احذف هذا السطر إذا كنت تحتاج إلى فهرسة الملفات الموجودة هناك.
sudo systemctl daemon-reload
sudo systemctl enable --now hister
systemctl status hister --no-pager
curl -sS -o /dev/null -w '%{http_code}\n' http://127.0.0.1:4433/يعني ظهور أي رمز حالة HTTP في خرج الأمر الأخير أن العملية تستمع على المنفذ. يعني curl: (7) Failed to connect أنها لا تستمع، وسيبيّن journalctl -u hister -n 50 --no-pager السبب.
مسار التثبيت الثاني: Docker Compose
تُنشر الصورة في سجل الحاويات على GitHub، مع وسم واحد لكل إصدار.
services:
hister:
image: ghcr.io/asciimoo/hister:v0.17.0
container_name: hister
user: '1000:1000'
restart: unless-stopped
environment:
- HISTER__SERVER__ADDRESS=0.0.0.0:4433
- HISTER__SERVER__BASE_URL=https://hister.example.com
- HISTER__APP__ACCESS_TOKEN=${HISTER_ACCESS_TOKEN}
volumes:
- ./data:/hister/data
ports:
- 127.0.0.1:4433:4433لكل مفتاح إعداد تجاوز بيئي بالصيغة HISTER__<SECTION>__<KEY>، ويكون الفاصل شرطتين سفليتين، لذلك لا يحتاج نشر الحاوية إلى تحميل ملف إعداد. احتفظ بـ HISTER_ACCESS_TOKEN في ملف .env بجوار ملف compose. وإذا كنت تفضّل تحرير ملف، يعرض docker run --rm ghcr.io/asciimoo/hister:v0.17.0 create-config > config.yml القيم الافتراضية.
من السهل ارتكاب خطأ في السطرين السابقين، ويستحق كلاهما الفهم.
يجب أن يكون العنوان داخل الحاوية 0.0.0.0:4433. للحاوية مساحة أسماء شبكة خاصة بها، لذلك لا يمكن الوصول إلى عملية مرتبطة بـ 127.0.0.1 داخلها إلا من داخل الحاوية نفسها، ولا يجد المنفذ المنشور أي خدمة يوجّه إليها.
يُكتب المنفذ المنشور بالشكل 127.0.0.1:4433:4433، وليس 4433:4433. ينشر Docker المنافذ بإضافة قواعد netfilter الخاصة به، وتُقيَّم هذه القواعد قبل قواعد ufw، لذلك يبقى 4433:4433 عادي متاحاً من الإنترنت حتى على خادم يعرض فيه ufw status أن المنفذ مغلق. يؤدي ربط جانب المضيف بـ 127.0.0.1 إلى جعل الـreverse proxy الطريقة الوحيدة للوصول. ينطبق الفخ نفسه على كل حاوية في الخادم، ويغطي Docker Compose على VPS بقية التفاصيل.
تعمل الصورة الافتراضية باستخدام UID 1000 وGID 1000، لذلك يجب أن يكون ./data قابلاً للكتابة بواسطة هذا الحساب، وإلا تتوقف الحاوية عند بدء التشغيل بسبب خطأ في الصلاحيات. يعالج sudo chown -R 1000:1000 ./data ذلك. إذا لم تكن هذه الأرقام مألوفة لك، فاقرأ أولاً أي UID وGID تستخدمهما الحاوية لكتابة الملفات.
لماذا يُعدّ كشف فهرس البحث الشخصي أسوأ ما يمكن تعريضه
يستمع Hister على 127.0.0.1:4433 افتراضياً، وهذا الإعداد الافتراضي مقصود. فكّر في محتوى الفهرس بعد شهر من الاستخدام: صفحات الويكي الداخلية، والفواتير، وتذاكر الدعم التي فتحتها أثناء تسجيل الدخول، وصفحات إعادة تعيين كلمات المرور، والنص الكامل لكل ما قرأته أيضاً. توضّح وثائق المشروع ذلك مباشرة: "ينقل Hister سجل التصفح الكامل، مع محتوى الصفحات، من الخادم وإليه."
لا تزال قاعدة بيانات كلمات المرور المسربة تحتاج إلى فكّ تشفيرها. أما الفهرس الشخصي المسرب فيكون بنص واضح وقابلاً للبحث مباشرة، لذلك يتطلب حماية أكبر من التطبيق الصغير المستضاف ذاتياً الذي يشبهه.
ينتج عن ذلك أمران. لا يتطلب Hister مصادقة افتراضياً، لذلك يؤدي استخدام Reverse Proxy وحده إلى نشر نسخة قابلة للبحث من ما قرأته أمام أي شخص يعرف اسم المضيف. كما تُقدَّم نقطة نهاية MCP افتراضياً على /mcp، ومن دون token يمكن لأي عميل يصل إليها تنفيذ بحث في الفهرس.
اضبط المصادقة قبل أن تغادر الخدمة localhost للمرة الأولى. يحتاج المستخدم الواحد إلى app.access_token فقط، وهو secret مشترك ترسله إضافة المتصفح والعميل الطرفي وأي عميل MCP. ولعدة مستخدمين، اضبط user_handling: true وأنشئ الحسابات:
sudo -u hister hister create-user alice --admin --config /etc/hister/config.ymlيطلب الأمر كلمة مرور لا يقل طولها عن 8 أحرف. يحصل كل حساب على مستنداته الخاصة وعلى API token شخصي، ويمكن لمالكه إعادة إنشائه من صفحة الملف الشخصي أو باستخدام الخيار --regen-token مع hister update-user. يؤدي إنشاء token جديد إلى إبطال token السابق فوراً، لذلك يجب تحديث كل جهاز يستخدمه ذلك الحساب بعد ذلك.
اترك app.public من دون تغيير ما لم تكن تقصد تفعيله. يتيح الوضع العام البحث والمعاينات وتقديم الملفات وبحث MCP من دون مصادقة، مع الاستمرار في حظر عمليات الكتابة والوصول إلى السجل والعمليات الإدارية.
Reverse proxy وTLS وجدار الحماية
لا يوفّر Hister خدمة HTTPS بنفسه، لذلك أنهِ TLS (أمان طبقة النقل) أمامه. يُعد Caddy أقصر مسار، لأنه يطلب الشهادات ويجدّدها تلقائياً عبر ACME (بيئة إدارة الشهادات التلقائية).
hister.example.com {
reverse_proxy 127.0.0.1:4433
}أعد تحميله باستخدام sudo systemctl reload caddy. يجب تحقق شرطين قبل إصدار الشهادة: يجب أن يشير سجل A لـ hister.example.com إلى هذا الخادم، ويجب فتح المنفذ 80، لأن استجابة تحدي HTTP-01 تتم عبره. عند غياب أي من الشرطين، يعرض المتصفح خطأ TLS بدلاً من الصفحة، ويكرر سجل Caddy فشل التحدي.
بعد ذلك، أغلق كل شيء آخر.
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw statusغياب المنفذ 4433 من هذه القائمة مقصود.
يجب أن يطابق server.base_url العنوان الذي تكتبه في المتصفح، بما في ذلك المخطط. عند عدم التطابق، تُحمّل الواجهة بنص غير منسّق وصور مفقودة، لأن الخادم ينشئ روابط الأصول من base_url، ثم يطلبها المتصفح من مصدر لا يستجيب. استخدم عنوان URL نفسه في إضافة المتصفح.
ملء الفهرس
إضافة المتصفح هي أداة الجمع الرئيسية. ثبّتها من Mozilla Add-ons أو Chrome Web Store، وافتح صفحة الخيارات، واضبط عنوان الخادم على https://hister.example.com، ثم الصق رمز الوصول. بعد ذلك تلتقط عنوان كل صفحة تزورها ونصها الكامل وHTML وfavicon، وترسلها إلى خادمك. تتم عملية الاستخراج على جانب العميل داخل المتصفح. لا تتصل الإضافة بأي طرف ثالث، والطلب الخارجي الوحيد الذي تجريه يكون للحصول على favicon الصفحة.
يتيح الاستخراج على جانب العميل إنشاء فهرس خاص. ترى الإضافة الصفحة تماماً كما تراها أنت بعد تسجيل الدخول وبعد اكتمال العرض، لذلك تتم فهرسة صفحة من wiki داخلي أو مقال مدفوع بشكل صحيح، ولا يحتاج خادمك إلى بيانات الاعتماد. ويعني ذلك أيضاً أن كل ما تعرضه يُعد مرشحاً للفهرسة، ولهذا تأتي قواعد التخطي قبل إضافة مزيد من المحتوى.
توجد قواعد التخطي في rules.json عند التثبيت لمستخدم واحد، أو لكل مستخدم في قاعدة البيانات. وتُعد علامة Rules في واجهة الويب أسهل طريقة لتحريرها. وهي تعبيرات نمطية بصيغة Go تُطابق عنوان URL الكامل:
^https://mail\.example\.com
^https://bank\.example\.com
.*?utm_source=لا يطابق نمط مثل ^mail.example.com أي شيء، لأن السلسلة التي يجري اختبارها تبدأ بـ https://. كما يفشل استخدام $ في نهاية النمط مع أي عنوان URL يحتوي على سلسلة استعلام، لأن معاملات الاستعلام تبقى أثناء المطابقة.
يُستورد السجل الحالي بقراءة قاعدة بيانات المتصفح نفسه. لذلك يُشغَّل هذا الأمر على الجهاز الذي يحتوي على ملف تعريف المتصفح، أي حاسوبك المحمول وليس VPS. ثبّت الملف التنفيذي نفسه هناك، ووجّهه إلى الخادم:
export HISTER_TOKEN='your-access-token'
hister import browser firefox -u https://hister.example.com -t "$HISTER_TOKEN"تُنفَّذ عملية الاستيراد كمهمة قابلة للاستئناف باسم browser-import-YYYY-MM-DD، لذلك يمكنك إيقافها ثم تشغيلها مجدداً لاحقاً. وتُستورد خدمات الإشارات المرجعية بالطريقة نفسها، بما في ذلك Linkwarden وKarakeep وWallabag وLinkding وReadeck وShaarli. ويجلب الاستيراد المتكرر فقط ما هو أحدث من عملية الاستيراد السابقة.
تتم فهرسة الملفات الموجودة على الخادم عبر تسمية الأدلة في ملف الإعداد:
indexer:
directories:
- path: '/var/lib/hister/documents'
label: 'documents'
filetypes: ['pdf', 'docx', 'md', 'txt']تُقرأ ملفات PDF وDOCX وMarkdown وOrg mode والملفات النصية الصالحة بترميز UTF-8 كنص كامل. أما الصور ومقاطع الفيديو فلا تندرج ضمن هذه القائمة، لذلك تحتاج مكتبة الصور إلى خادم يفهرس الوجوه والأماكن والتواريخ بدلاً من النص. ويُعد PhotoPrism وImmich الخيارين اللذين تجري مقارنتهما عادةً لهذه المهمة. تُضاف صفحة واحدة باستخدام hister index https://example.com. أما تحويل مواقع كاملة إلى نص منسق ونظيف لأدوات أخرى فهو مهمة منفصلة، وتتولاها أدوات الزحف المستضافة ذاتياً التي تحوّل الصفحات إلى نص نظيف.
يعتمد البحث على الحقول، لذلك تستحق لغة الاستعلام قراءة مدتها عشر دقائق:
"connection reset" domain:github.com added:<30d
title:(wireguard|nftables) -tutorial sort:-visitsوجّه coding agent إلى الفهرس الخاص بك عبر MCP
MCP (model context protocol) هو الواجهة التي يستخدمها المساعد لاستدعاء الأدوات على خادم. يوفّره Hister على POST /mcp ضمن عنوان URL الأساسي نفسه، باستخدام بروتوكول HTTP القابل للبث، ويكشف search وget_preview وget_history. وتستخدم المصادقة bearer token نفسه المستخدم في بقية API.
{
"mcpServers": {
"hister": {
"url": "https://hister.example.com/mcp",
"headers": {
"Authorization": "Bearer YOUR_ACCESS_TOKEN"
}
}
}
}يعمل رأس X-Access-Token كبديل عن Authorization.
تكمن الفائدة هنا في المحتوى الذي يبحث فيه agent. يعرض البحث المفتوح على الويب النتائج التي تتصدر الترتيب اليوم، وغالباً ما تكون في البرمجيات سريعة التغير وثائق لإصدار لا تشغّله. يعرض الفهرس الخاص بك الصفحة التي قرأتها واخترت الاحتفاظ بها، ويقدّم get_preview النسخة المخزنة، لذلك تبقى الإجابة متاحة حتى إذا أصبحت الصفحة الأصلية غير متصلة. امنح agent المصدرين معاً إذا أردت أيضاً نتائج عامة: يضيف مهارة بحث في المتصفح مدعومة بـSearXNG الويب المفتوح كأداة منفصلة. بعد تشغيل أكثر من endpoint واحد، يجدر بك قراءة استضافة خوادم MCP على VPS، لأن كل واحد منها يواجه مشكلة التعرض نفسها.
القرص والنسخ الاحتياطية والصيانة
تقدّر الوثائق حجم الصفحة المفهرسة الواحدة بنحو 100 KB، بما في ذلك المعاينة المضغوطة، ولذلك فإن مئة ألف صفحة تساوي تقريباً 10 GB. لا يوجد نظام حصص. غالباً ما يُخلط بين إعدادين: يحدّ indexer.max_file_size_mb (وقيمته الافتراضية 1 MiB) حجم ملف واحد تتم مراقبته، بينما يحدّ server.max_batch_body_size (وقيمته الافتراضية 40 MiB) حجم طلب API واحد.
يحتوي الدليل الذي يحدده app.directory على index.db، الذي يضم ملفات الفهارس الخاصة بكل لغة، وعلى db.sqlite3 للحسابات والمهام، وdata/html/ للمعاينات، وrules.json. تتطلب النسخة الاحتياطية إيقاف الخدمة ثم نسخ الدليل بأكمله وملف الإعدادات. يكتب hister export backup.json المستندات بصيغة JSON لأغراض الترحيل، ولا يُعد نسخة احتياطية للخادم.
هناك أمران للصيانة يجدر بك معرفتهما. يعيد hister reindex بناء فهارس البحث، ويصبح ذلك ضرورياً بعد تغيير إعدادات المفهرس. إذا ازداد استهلاك الذاكرة أثناء استيراد كبير، فاضبط detect_languages: false في قسم indexer ثم أعد الفهرسة. يزيل hister cleanup ملفات المعاينات وfavicon اليتيمة التي خلفتها عمليات الحذف.
الحذف عبارة عن استعلام، لذا شغّله أولاً في الوضع التجريبي:
hister delete 'domain:example.com' --dry --verboseتعود الصفحة المحذوفة إذا استمر أحد الجامعين في إرسالها، لذا أضف قاعدة التخطي قبل حذفها.
لا تصبح AGPLv3 ذات صلة إلا إذا غيّرت الشيفرة. ولا يترتب عليك أي التزام عند تشغيل نسخة غير معدّلة لاستخدامك الشخصي. إذا عدّلت Hister وسمحت لأشخاص آخرين باستخدام نسختك عبر الشبكة، فترخيص البرنامج يلزمك بإتاحة الشيفرة المصدرية المعدّلة لهم.
أنماط الفشل والنصوص التي ستظهر لك
لا يبدأ الخادم. إما أن المنفذ 4433 مستخدم بالفعل، أو أن ملف الإعداد يحتوي على خطأ في صياغة YAML. يوضّح sudo ss -lntp | grep 4433 ما الذي يشغل المنفذ، ويطبع journalctl -u hister -n 50 --no-pager خطأ التحليل.
تُحمَّل الواجهة، لكنها تبدو معطّلة. يعني ظهور نص غير مرتب وفقدان الصور أن server.base_url لا يطابق عنوان URL الظاهر في شريط العناوين. وتُعد الشرطة المائلة في النهاية اختلافاً أيضاً.
لا يتصل الامتداد. يجب أن يساوي عنوان الخادم في الامتداد base_url، ويجب أن يكون الخادم قيد التشغيل ومحدّثاً، وقد يحظر جدار ناري بينهما الاتصال من دون عرض رسالة في الصفحة. يحتفظ Firefox بسجلات الامتدادات خارج وحدة التحكم العادية؛ افتح about:debugging#/runtime/this-firefox وافحص امتداد Hister.
تخرج الحاوية عند بدء التشغيل. يعني خطأ الصلاحيات على ./data أن الدليل مملوك لـUID غير 1000، بينما 1000 هو حساب المستخدم داخل الصورة الافتراضية.
تظهر الاستجابة 403 Forbidden من مسار إداري. يقتصر استخدام POST /api/reindex وPOST /api/cleanup على المسؤولين عند تفعيل التعامل مع المستخدمين، لذلك يُرفض طلب الحساب العادي.
تزداد الذاكرة أثناء عملية الاستيراد. يكون اكتشاف اللغة فوق سجل كبير هو السبب المعتاد. اضبط detect_languages: false ثم شغّل hister reindex بعد ذلك.
FAQ
ما الفرق بين Hister وSearXNG؟
SearXNG هو وكيل بحث شامل. يمرّر استعلامك إلى محركات البحث العامة ويعيد نتائجها بعد إزالة التتبع، لذلك يكون الفهرس تابعاً لتلك المحركات. يحتفظ Hister بفهرس نص كامل خاص به للصفحات التي زرتها والملفات التي تحتفظ بها. لذلك يجيب Hister عن سؤال «أين قرأت ذلك؟»، بينما يجيب SearXNG عن سؤال «ماذا يقول الويب؟». يحلّ كل منهما مشكلة مختلفة، ويشغّل كثير من الأشخاص كليهما على خادم واحد.
هل من الآمن وضع سجل التصفح بالكامل على VPS؟
فقط بعد تأمين الوصول إليه أولاً. يستمع Hister على 127.0.0.1:4433 ولا يتطلب مصادقة افتراضياً. اضبط app.access_token أو user_handling: true، وضع Reverse Proxy مع TLS أمامه، وأبقِ المنفذ 4433 مغلقاً في جدار الحماية. فهرس نص كامل لصفحات قراءتك هو نص صريح، لذلك يستطيع أي شخص يصل إلى المنفذ قراءة كل شيء من دون كسر أي تشفير.
هل أحتاج إلى إضافة المتصفح، أم يمكنني استيراد سجل التصفح فقط؟
الاستيراد عملية ملء بأثر رجعي تُجرى مرة واحدة. يقرأ قاعدة بيانات سجل المتصفح نفسه، لذلك يعمل على الكمبيوتر الذي يحتوي على ملف تعريف المتصفح، وليس على الخادم. تحافظ الإضافة على حداثة الفهرس بعد ذلك، وتلتقط الصفحات التي تتطلب تسجيل الدخول لأنها تستخرج المحتوى داخل المتصفح بعد عرض الصفحة. الإعداد الشائع هو إجراء استيراد واحد، ثم استخدام الإضافة.
هل يستطيع وكيل برمجي البحث في فهرس Hister؟
نعم. Hister هو خادم MCP (بروتوكول سياق النموذج) على POST /mcp ضمن عنوان URL الأساسي لديك، ويعرض search وget_preview وget_history. وجّه العميل إلى https://your-host/mcp مع رأس Authorization: Bearer الذي يحتوي على رمز الوصول الخاص بك. عندئذ يبحث الوكيل في الوثائق التي قرأتها فعلياً، وبالإصدار الذي قرأتها فيه، بدلاً من البحث في النتائج التي يحتل بها محرك بحث عام مراتب متقدمة اليوم.