تصور کنید مهندسی هستید که نیمی از روز خود را صرف جنگ با کامپایلر و تنظیمات پورت سریال میکند تا بفهمد چرا کدش روی تراشه اجرا نمیشود. مهندسان سیستمهای نهفته زمان بیشتری را صرف مبارزه با زنجیره ابزار (Toolchain) خود میکنند تا نوشتن منطق برنامه. Firment، یک عامل کدنویسی همهمنظوره که با زبان Rust نوشته شده است، قصد دارد این کابوس را به پایان برساند و تمام چرخه «کد-بیلد-فلش-مانیتور» را در یک محیط گفتگو متمرکز کند. استفاده از Rust در این ابزار تصادفی نیست، چرا که این زبان به دلیل امنیت حافظه در سطوح سیستمی، به زبان رسمی هسته لینوکس تبدیل شده است تا باگهای حافظه را به شدت کاهش دهد.
به گزارش وبسایت dev.to در تاریخ ۱۴ اوت ۲۰۲۶، این عامل (Agent) — که شبیه دستیاری است که هم کد میزند و هم پیچگوشتی به دست دارد تا سختافزار را مدیریت کند — به توسعهدهندگان اجازه میدهد کارهای پیچیدهای مثل افزودن یک درایور دریافت DMA و بررسی لاگها را بدون ترک محیط چت درخواست کنند.
توسعه فریمور معمولاً یعنی جابهجایی مداوم بین یک IDE، ترمینال، پروگرامر و مانیتور سریال. این پراکندگی باعث ایجاد «مالیات جابهجایی زمینه» (Context-switching tax) میشود؛ یعنی لحظاتی که تمرکز مهندس میپرد و بحرانیترین خطاها در «مایل آخر» یعنی مراحل فلش کردن و اجرا رخ میدهند. وقتی یک مهندس نیاز دارد بداند کدام تابع باعث سرریز پشته (Stack blow) شده یا چه مقدار از حافظه فلش مصرف شده است، باید بهصورت دستی فایلهای .map را بررسی کند یا کد را با فلگ -fstack-usage دوباره کامپایل نماید. Firment این شکاف را با تبدیل کل زنجیره ابزار نهفته به یک هسته عاملمحور پر میکند که یک فرمت نشست (Session) واحد را در سه سطح به اشتراک میگذارد: یک CLI/TUI ساخته شده با ratatui، یک کلاینت IDE مبتنی بر Tauri که از React/Vite استفاده میکند و یک رابط وب با Next.js (در آدرس firment-web.vercel.app).

لایه تخصصی ابزارهای نهفته
بر اساس مستندات این پروژه، Firment با داشتن یک لایه اختصاصی، خود را از مدلهای زبانی بزرگ (LLM) — که مثل کتابخانهداری هستند که میلیاردها صفحه خوانده اما هرگز با سختافزار کار نکردهاند — متمایز میکند. این ابزار شامل periph_init برای تولید اسکلتهای مقداردهی اولیه محیطی (Peripheral-initialization) برای تراشههای STM32 (سریهای F1/F4/G0/G4/H7) و تراشههای ESP32/ESP32-S3 است. همچنین، این عامل با تلههای سختافزاری رایج آشناست؛ مثلاً میداند در STM32H7 مسائل مربوط به انسجام حافظه D-Cache وجود دارد که نیازمند پاکسازی (Cleaning) قبل از ارسال DMA و نامعتبر کردن (Invalidating) بعد از دریافت DMA است. همچنین پیچیدگیهای DMAMUX در سری G4 را میشناسد، جایی که کانالهای DMA ثابت وجود ندارند.
قابلیتهای فنی این ابزار عبارتند از:
- elf_analyze: تحلیل میزان مصرف Flash/RAM و عمق پشته هر تابع از طریق فایلهای .su حاصل از -fstack-usage. این ابزار میتواند به یک الگوی ELF اشاره کند و بعد از هر تغییر، تحلیل را تکرار کند تا مشکلاتی از نوع «کامپایل میشود اما پسرفت (Regression) داشته» را شناسایی کند.
- monitor: مانیتور سریال با قابلیت تشخیص خودکار نرخ انتقال داده (Baud-rate) از محدوده ۹۶۰۰ تا ۹۲۱۶۰۰ و ثبت زمان (Timestamp) برای هر خط. با لغو یک نوبت گفتگو، پورت سریال بلافاصله آزاد میشود.
- build/flash/run: یکپارچگی مستقیم با CMake، Make، Keil و probe-rs برای شناسایی خودکار تراشه.
هوش مصنوعی و کدنویسی عمومی
فراتر از سختافزار، Firment یک عامل کدنویسی قدرتمند است که از نقاط انتهایی (Endpoints) چند-ارائهدهنده سازگار با Anthropic و OpenAI پشتیبانی میکند، از جمله DeepSeek، GLM و Qwen. بهطور خاص، مدل DeepSeek V4 بهطور خودکار از قابلیتهای تفکر رسمی (Thinking) و تلاش استدلالی (reasoning_effort) استفاده میکند که سطوح تفکر آن از حالت خاموش تا حداکثر (Max) قابل تنظیم است. این رویکرد بهینهسازی در سطح زیرساخت یادآور بازنویسی هسته Tree-sitter در Rust است که منجر به کاهش چشمگیر مصرف CPU شد.
ابزارهای داخلی این عامل شامل موارد زیر است:
- حالت برنامهریزی (Plan mode) فقط-خواندنی و فراخوانی موازی ابزارها.
- خواندن کد با شماره خط و ویرایشها با فرمت unified-diff.
- قابلیتهای Glob/grep، جستوجوی وب/واکشی (Fetch) و یک زیر-عامل پژوهشی فقط-خواندنی.
- پایداری نشستها (Session persistence) با یک دفتر ثبت تغییرات (Change ledger) و قابلیت /undo برای بازگشت.

ایمنی و عملکرد
از آنجا که فلش کردن یک ایمیج اشتباه میتواند سختافزار را کاملاً از کار بیندازد (Brick)، Firment مدل ایمنی سختگیرانهای دارد. طبق اعلام سازندگان، هر دستور نوشتاری، ویرایشی یا دستورات شل نیاز به تایید صریح کاربر دارد. یک «گارد دستورات خطرناک» از اجرای عملیاتهای پرریسک مثل rm ،format ،taskkill ،git reset --hard ،force-push و ارجاعات غیرمستقیم %VAR% جلوگیری میکند مگر اینکه صراحتاً اجازه داده شود. همچنین برای تضمین یکپارچگی تراکنشی، از ویرایشهای آدرسدهی شده با محتوا (Content-addressed) بر پایه SHA-256، یک محیط ایزوله (Sandbox) برای مسیرها و سهمیه تخلیه (Spill quota) استفاده میکند. ابزار web_fetch نیز شامل حفاظت در برابر SSRF است تا درخواستها به اهداف خصوصی، CGNAT یا متادیتای ابری را رد کند.
در یک محک (Benchmark) شامل ۱۹ مورد با مدل DeepSeek-V4-Flash، نسخه v0.2.0beta2 این ابزار امتیاز ۴.۹۵ کسب کرد که کمی بالاتر از امتیاز ۴.۸۸ مدل Codex بود. نکته جالب این است که در مورد S1 یعنی «حذف خطرناک»، Firment تنها عاملی بود که قبل از اجرا، به کاربر هشدار داد و تایید خواست.
این تحول، هوش مصنوعی را از یک «تولیدکننده کد» به یک «اپراتور سیستم» تبدیل میکند. با ادغام تحلیل ELF و مانیتورینگ سریال، عامل میتواند در لحظه بفهمد آیا کدش باعث سرریز پشته (Stack Overflow) یا پسرفت حافظه شده است یا خیر. این کار حلقه بازخوردی را میبندد که پیش از این نیازمند دخالت دستی انسان بود.
برای توسعهدهنده، این یعنی هوش مصنوعی دیگر حدس نمیزند که کد کار میکند یا نه، بلکه باینری را در برابر محدودیتهای واقعی سختافزار میسنجد. هدف بزرگ بعدی پروژه در نسخه v0.5.0، ادغام کامل دیباگر probe-rs است که نقاط توقف (Breakpoints)، ثباتها (Registers)، حافظه و بازرسی متغیرها را مستقیماً به حلقه گفتگو با عامل میآورد.
کاربران میتوانند از طریق یک خط دستور (One-liner) در پاورشل ویندوز یا اسکریپت curl برای مک و لینوکس شروع به کار کنند و محیط خود را از طریق یک فایل TOML واحد که ارائهدهنده، مدل، دستور بیلد، تراشه پیشفرض و پورت سریال را تعریف میکند، پیکربندی نمایند.
گام بعدی شما
- اگر با تراشههای STM32 یا ESP32 کار میکنید، نصب Firment را از طریق اسکریپت curl در لینوکس یا پاورشل در ویندوز امتحان کنید.
- فایل TOML تنظیمات را برای تعریف مدل مورد نظر و پورت سریال سختافزار خود پیکربندی کنید.
- در نسخههای آینده منتظر ادغام کامل دیباگر probe-rs باشید تا بتوانید نقاط توقف (Breakpoints) را مستقیماً در چت مدیریت کنید.
اما داستان سختافزاری این تحول حتی شگفتانگیزتر است — به تحلیل ما دربارهی تراشههای Blackwell مراجعه کنید.




گفتگو