WMO: از ترِیسهای ایجنت، مدل کوچیک خودت رو بساز
خلاصهٔ کاملتر
پروژهٔ World Model Optimizer (با دستور wmo) یه ابزار خط فرمانه که ترِیسهای جمعآوریشدهٔ اجرای ایجنت رو به مدلهای اپنسورس کوچیکتر تبدیل میکنه، با استفاده از Tinker API و در صورت نیاز آموزش حلقهبسته توی شبیهسازی. بخش wmo serve هم یه اندپوینت بالا میاره که درخواستها رو بین مدل فرانتیر و مدلهای کوچیکتر مسیریابی میکنه؛ طبق مستندات پروژه، روی RouterBench کیفیت مدل فرانتیر حفظ میشه ولی هزینه ۲۷٪ پایینتر میاد.
کار با اول ثبت پرووایدرها شروع میشه: wmo providers set پرووایدر رو تأیید میکنه و مدلهاش رو بهعنوان کاندیدای مسیریابی توی .wmo/pool.toml ثبت میکنه — همون فهرستی که بقیهٔ مراحل ازش انتخاب میکنن (کاتالوگ OpenRouter با ۳۳۸ مدل منتشرشده هم پشتیبانی میشه). بعدش روتر روی ترِیسهای OpenTelemetry خودت تیون میشه و سرو میشه:
wmo build --file traces.jsonl --name my-model
wmo optimize route sweep my-model --traces traces.otel.jsonl
wmo optimize route fit matrix.json --kind knn --out .wmo/models/my-model/policy.json
wmo serve --name my-modelمرحلهٔ sweep هر مدل ثبتشده رو روی تسکهای کنارگذاشتهشده نمره میده و fit بهشکل قطعی ۳۰٪ داده رو برای گزارش کنار میذاره و روی ۷۰٪ باقیمونده مدل مسیریابی رو برازش میکنه. با wmo optimize route report هم میتونی نتیجه رو با مدلی که قبلاً استفاده میکردی مقایسه کنی؛ سناریوهایی که برای برازش روتر مصرف شدن خودکار از گزارش حذف میشن. گزینههای دیگه هم هست: distill برای اضافه کردن مدل کوچیک خودت به pool و route pin برای سرو کردن یه مدل بدون مسیریابی.
قابلیت جالب دیگه اینه که خودِ پکیج چند تا world model داره که محیط ایجنت رو شبیهسازی میکنن، هم از پایتون و هم روی HTTP با اندپوینتهای POST /world_models/{name}/sessions و مسیر step:
model_dir = WorldModelStore(".wmo").resolve("airline")
wm, _provider = load_world_model(model_dir)
session = wm.new_session(task="check out the cart")
obs = wm.step(session.id, Action(kind=ActionKind.TOOL_CALL, name="add_to_cart",
arguments={"sku": "A1"}))WMO میتونه ایجنت واقعی رو داخل سندباکسهای ایزولهٔ E2B اجرا کنه در حالی که world model نقش محیط رو بازی میکنه؛ رولاوتهای بهینهسازی و ارزیابی موازی اجرا میشن و کلیدهای مدل بیرون سندباکس میمونن. بهینهساز اجازه داره پرامپت، ابزار، سیاست، مهارت و حتی کد رانتایم رو عوض کنه، ولی هر کاندیدا روی همون تسکهای شبیهسازیشده سنجیده میشه و فقط تغییری که از گیتهای ارزیابی رد بشه champion نسخهدار بعدی میشه. تلهمتری هم پیشفرض روشنه ولی فقط متادیتاست و با DO_NOT_TRACK=1 یا WMO_TELEMETRY=0 خاموش میشه.
نکات کلیدی:
- wmo optimize ترِیسهای ایجنت رو به مدل کوچیکتر تبدیل میکنه و wmo serve بین مدل بزرگ و کوچیک مسیریابی میکنه
- ادعای پروژه روی RouterBench: همون کیفیت مدل فرانتیر با ۲۷٪ هزینهٔ کمتر
- روتر روی ترِیسهای OpenTelemetry خودت تیون میشه؛ ۳۰٪ داده قطعی برای گزارش کنار میره
- world modelهای داخلی محیط ایجنت رو شبیهسازی میکنن، هم از پایتون هم روی HTTP
- اجرای ایجنت و بهینهسازی داخل سندباکس E2B انجام میشه و کلیدهای مدل بیرون سندباکس میمونن
- فقط کاندیدایی champion میشه که از گیتهای ارزیابی رد بشه




