تصور کنید در یک مسیر پیادهروی، یادداشتهای صوتی ضبط میکنید که بدون خروج حتی یک بایت داده از لپتاپ شما، به یک پایگاهداده ساختاریافته و قابل جستوجو تبدیل میشوند. این هسته اصلی WanderLog است؛ پروژهای متنباز که در ۸ اکتبر ۲۰۲۶ منتشر شد و از پروتکل زمینهٔ مدل (Model Context Protocol یا MCP) برای تبدیل یک عامل کدنویسی به دفترچه یادداشت یک طبیعتشناس استفاده میکند.
بسیاری از برنامههای هوش مصنوعی امروزی به حسابهای ابری و کلیدهای API وابستهاند که برای مشاهدهگران طبیعت یک تضاد بنیادی ایجاد میکند. ابزارهایی مثل eBird یا iNaturalist قدرتمند هستند، اما کاربر را مجبور میکنند تمام مشاهدات و مختصات دقیق خود را به سرورهای مرکزی بفرستند. WanderLog با رویکردی متفاوت، دیسک محلی را تنها منبع حقیقت میداند. این ابزار برای پرندهشناسانی است که چکلیست ندارند یا کوهنوردی که میخواهد مه روی دریاچه را ثبت کند. توسعهدهنده این پروژه، انگیزه خود را از دست دادن خاطرات گذرا — مثل صدای یک طاووس در مه یا شیرجه یک ماهیخوار — بیان کرده است. این رویکرد محلی برای ثبت حیات وحش، یادآور پروژهی تبدیل رزبری پای به قاب تصویر هوشمند پرندگان است که پیشتر بر روی پردازش محلی تصاویر پرندگان تمرکز داشت.
همانطور که در تحلیلهای پیشین ما دربارهی رایانش لبه اشاره کردیم، حذف وابستگی به ابر، امنیت دادهها را به شدت افزایش میدهد. در WanderLog، این موضوع با یک معماری محلی-محور (Local-First) محقق شده است.
WanderLog به عنوان یک سرور MCP ساخته شده که به یک عامل (Agent) — شبیه به دستیاری که دستورات شما را میفهمد و ابزارهای مختلف را برای رسیدن به جواب به کار میگیرد — اجازه میدهد مستقیماً با یک پایگاهداده محلی SQLite تعامل کند. در این سامانه، صفحه نمایش کمترین بخش تجربه است؛ خبری از داشبورد یا پروفایلهای پیچیده نیست. کاربر یادداشت صوتی را در طبیعت ضبط کرده و پس از بازگشت به خانه پردازش میکند. این مدل از مدیریت عاملها، شباهتهای ساختاری با رویکرد Lloyal در ایجاد عاملهای موازی دارد که بر مدیریت بهینه حافظه در عاملهای هوش مصنوعی تأکید میکند.
به نقل از مستندات این پروژه در dev.to، پشته فنی (Tech Stack) سامانه شامل موارد زیر است:
- TypeScript و SQLite برای هسته برنامه و ذخیرهسازی.
- ONNX Runtime و Transformers.js برای اجرای مدلها در محیط پردازش.
- all-MiniLM-L6-v2 با وزنهای باز (Open Weights) — یعنی دستور پخت مدل علناً منتشر شده و هر کسی میتواند آن را اجرا کند — برای جستوجوی معنایی.
- Gemma 3 (4B) از طریق Ollama برای تجزیه متن و پرسشوپاسخ.
- ElevenLabs Scribe (اختیاری) برای تبدیل گفتار به متن.
- Sentry برای ردیابی عملیات هوش مصنوعی.
ذخیرهسازی توسط یک فایل SQLite در مسیر ~/.wanderlog/journal.db مدیریت میشود. این فایل شامل جداولی برای مشاهدات، پیادهرویها و یک جدول کوچک برای بردار معنایی (Embedding) است — چیزی شبیه به کارت معرفی عددی برای هر واژه که میگوید این کلمه همسایه چه کلمات دیگری است. توسعهدهنده اشاره میکند که در مقیاس یک دفترچه یادداشت (صدها تا چند هزار ورودی)، استفاده از پایگاهدادههای برداری پیچیده، بیشتر «تشریفات» است تا مهندسی، زیرا محاسبه شباهت کسینوسی (Cosine Similarity) روی این جدول تنها چند میلیثانیه زمان میبرد.
بردارها توسط @huggingface/transformers مدیریت میشوند. در اولین اجرا حدود ۲۳ مگابایت داده دانلود میشود و پس از آن، تمام پرسوجوها بدون نیاز به شبکه پاسخ داده میشوند. اگر مدل بارگذاری نشود، سامانه به صورت خودکار به جستوجوی کلمات کلیدی تغییر وضعیت میدهد تا دفترچه در لبه مسیر همچنان کار کند.
گردش کار با یک یادداشت صوتی آغاز میشود. اگرچه سامانه از ElevenLabs Scribe پشتیبانی میکند، اما این یک مرحله ابری اختیاری است. کاربران میتوانند با پرچم --transcript کاملاً آفلاین بمانند. برای کسانی که از Scribe استفاده میکنند، سامانه به صورت پیشفرض روی حالت عدم ذخیرهسازی دادهها (zero-retention) تنظیم شده است.
پس از تبدیل صوت به متن، مدل محلی Gemma 3:4b متن را به فرمت JSON تجزیه میکند. این مدل موجودیتهایی مثل گونهها، مکانها و شرایط آبوهوایی را شناسایی کرده و آنها را با یک طرحواره (Schema) اعتبارسنجی میکند. اگر مدل دستهای ابداع کند که در طرحواره نباشد، ورودی حذف نمیشود و در دسته «سایر» قرار میگیرد.
برای مثال، اگر کاربر دستور $ npm run log-voice -- ~/walk.m4a را اجرا کند و در فایل صوتی گفته باشد: «یک ماهیخوار سینهسفید در اسکله دریاچه دیدم. دو بار شیرجه زد و ماهی گرفت. یک سوسن بارانی هم در کنار مسیر دیدم. حلقه سنترال پارک را در ۵۰ دقیقه و ۳.۲ کیلومتر پیادهروی کردم. روی دریاچه مه بود»، سامانه این را به یک ورودی پیادهروی و دو مشاهده مرتبط تبدیل میکند.
WanderLog برای پاسخ به سوالاتی مثل «آخرین بار ماهیخوار را کجا دیدم؟» از یک سیستم رتبهبندی ترکیبی استفاده میکند:
- شباهت برداری (۷۵٪): استفاده از مدل MiniLM برای درک معنای پرسوجو.
- تطابق کلمات کلیدی (۲۵٪): برای اطمینان از ثبت نامهای خاص.
- اولویت تازگی: اولویت دادن به ورودیهای اخیر برای پرسوجوهای مربوط به «آخرین بار».
این ساختار اجازه میدهد پرسوجویی درباره «یک درخشش آبی نزدیک دریاچه در ساعت طلایی» به ورودی مربوط به ماهیخوار متصل شود، حتی اگر کلمات دقیقاً یکی نباشند. وقتی کاربر از طریق دستور $ WANDERLOG_OLLAMA_MODEL=gemma3:4b npm run demo سوالی میپرسد، سامانه شواهد را محلی بازیابی کرده و مدل Gemma صرفاً بر اساس آن ورودیها و با ذکر شماره منبع پاسخ میدهد. این قابلیت تبدیل یادداشتهای پراکنده به یک ساختار تحلیلپذیر، در واقع هوش مصنوعی را به میکروسکوپی برای تحلیل الگوهای شناختی و بازبینی خاطرات تبدیل میکند.
به دلیل اجرای محلی، تأخیر و هزینه APIهای ابری حذف شده است. طبق گزارش توسعهدهنده، روی یک مکبوک (بدون فعال شدن فن GPU)، زمان بارگذاری سرد مدل ۲۴۴ میلیثانیه، تولید یک بردار ۳ میلیثانیه و جستوجوی معنایی کامل در یک دفترچه ۱۶ ورودی، تنها ۹ میلیثانیه زمان میبرد.
حریم خصوصی ستون اصلی این طراحی است. تمام مشاهدات و بردارهای مکانی به صورت blob در فایل SQLite ذخیره میشوند. استفاده از وزنهای باز به کاربران اجازه میدهد مدلها را از طریق متغیرهای محیطی تغییر دهند، بدون اینکه نیاز به مهاجرت دادهها یا تایید یک شرکت ثالث باشد.
برای نظارت بر رفتار مدل 4B به عنوان یک عامل، پروژه از Sentry برای ردیابی استفاده میکند. هر عملیات با ویژگیهای معنایی ابزارگذاری شده است؛ مثلاً فراخوانی ابزارها در بازههای gen_ai.execute_tool و تجزیه متن در gen_ai.chat ثبت میشود تا توسعهدهنده بتواند «فرآیند تفکر» عامل را در لحظه مشاهده کند.
سرور MCP ابزارهای مشخصی را ارائه میدهد:
log_sighting: ثبت گونه، دسته، مکان و یادداشتها.log_walk: ثبت مسیر، مسافت و مدت زمان.log_voice_note: تبدیل یادداشتهای صوتی به ورودیهای ساختاریافته.search_journal: جستوجوی ترکیبی معنایی و کلیدواژهای روی دستگاه.answer_question: پاسخدهی مستند توسط Gemma محلی.journal_overview: ارائه آمار کلی و آخرین خروجی.
علاوه بر این، منابعی مثل journal://stats اجازه میدهند هر کلاینتی دفترچه را مانند یک سیستم فایل مرور کند.
این معماری ثابت میکند که عاملهای هوش مصنوعی با کاربرد بالا میتوانند در لبه (Edge) وجود داشته باشند. توسعهدهنده استدلال میکند که نسخه ابری یک دفترچه طبیعتگردی اساساً اشتباه است، زیرا مسیرهای کوهستانی آخرین جای زمین هستند که پرنده دارند اما پهنای باند ندارند. با استفاده از مدل 4B که به راحتی در RAM جای میگیرد، WanderLog هزینههای توکنی و محدودیتهای نرخ درخواست را حذف میکند.
نوآوری باز اجازه کنترل کامل بر قرارداد رفتاری را میدهد. چون این یک سرور MCP است، پرامپتهای دفترچه و ابزارها در یک مخزن کد هستند که میتوان آن را فورک کرد. تنظیم دقیق عامل به سادگی ویرایش پرامپت است. تنها فراخوانی ابری در سامانه (تبدیل صوت به متن) کاملاً اختیاری است.
این پروژه که در سه روز طی چالش Hacktoberfest ساخته شده، تحت لایسنس MIT است و شامل مجموعهای از تستهای دود (Smoke Test) برای بررسی تمام ابزارهاست. برای علاقهمندان، کد پروژه در github.com/praneshnikhar/wanderlog در دسترس است تا به عنوان الگویی برای ابزارهای عاملمحور محلی که مالکیت دادهها را به کاربر برمیگردانند، استفاده شود.
گام بعدی شما
- اگر به جمعآوری دادههای شخصی علاقه دارید، مخزن GitHub پروژه را بررسی کنید تا با نحوه پیادهسازی سرور MCP آشنا شوید.
- مدل Gemma 3:4b را از طریق Ollama نصب کنید تا قدرت استنتاج محلی در ابعاد کوچک را تجربه کنید.
- برای کاهش وابستگی به ابر، سعی کنید ابزارهای مشابه را با استفاده از Transformers.js در مرورگر یا محیط محلی پیاده کنید.
اما داستان سختافزاری این تحول حتی شگفتانگیزتر است — به تحلیل ما دربارهی تراشههای Blackwell مراجعه کنید.




گفتگو