۵۰ فایل توکن، یک مشکل مشترک: ایجنت معنیشون رو نمیفهمه
خلاصهٔ کاملتر
نویسنده (رومینا کاوچیچ) تو خبرنامهش میگه فکر میکرده توکنهای طراحی راحتترین دادهٔ دیزاینسیستم برای ایجنتهای هوش مصنوعیان: از قبل ساختاریافتهن، تو JSON زندگی میکنن و بین فیگما و کد جابهجا میشن. برای همین رفته سراغ فایل توکن ۵۰ سیستم طراحی عمومی. دو چیز غافلگیرش کرده — این فایلها خیلی بیشتر از تصورش با هم فرق دارن، و بیشترشون به ایجنت میگن یه مقدار «چیه»، بدون اینکه بگن «یعنی چی».
به گفتهٔ او، ماشینخون بودن با قابلاستفاده بودن یکی نیست. پایپلاین بیلد فقط لازمه color.red.500 رو به یه مقدار تبدیل کنه، ولی ایجنت باید بدونه اون قرمز مال متن خطاست، دکمهٔ مخرب، بوردر ارور، پسزمینهٔ هشدار، لحظههای برند، چارت — یا اصلاً نباید مستقیم استفاده بشه. بدون این لایه، ایجنت هنوز فایل رو میخونه؛ فقط باید حدس بزنه.
اولین یافته اینه که نه جای استانداردی هست، نه فرمت استانداردی: دستکم هشت فرمت فعال پیدا کرده، از DTCG JSON و Style Dictionary گرفته تا Theo YAML، آبجکتهای TypeScript، متغیرهای CSS و SCSS map. جای فایلها هم قابلحدس نیست — ادوبی توکنهای Spectrum رو برده تو ریپوی spectrum-design-data، شاپیفای توکنهای Polaris رو داخل polaris-react نگه میداره و گیتلب توکنهاش رو با پکیج @gitlab/ui میفرسته.
اندازه هم استاندارد نداره: میانهٔ پلههای اسپیسینگ حدود ۱۲ تاست، ولی Mantine پنجتا داره و Open Props هفتادوچهارتا. عجیبترین نمونه، Material هست؛ اسپک M3 روی سایت مستندات یه مقیاس کامل اسپیسینگ با ۱۸ توکن تعریف کرده، اما material-web — همون کدی که ایجنت واقعاً لود میکنه — هیچ فایل اسپیسینگی نداره. به تعبیر نویسنده، مقیاس روی کاغذ هست، تو فایل نیست.
اسمگذاری هم گرامر مشترکی نداره. یه رنگ پسزمینهٔ سمنتیک ساده تو هشت سیستم هشت جور نوشته شده، از surface.default در Workday تا colorBackgroundButtonPrimaryActive در Cloudscape. نکتهٔ نیشدار نویسنده اینه که ایجنت شما همهٔ این گرامرها رو تو دیتای آموزشش دیده، پس با ده پیشفرض متناقض میاد سراغ کدبیس شما و قاطیشون میکنه — برای همینه که توکنهای پیشنهادی AI منطقی به نظر میرسن ولی با قرارداد هیچکس، از جمله شما، جور نیستن.
ولی مهمترین کمبود، همون معنیه. از ۵۰ سیستم، حدود ۱۵ تا توضیح متنی تو خود فایل دارن، حدود ۱۰ تا فیلد منسوخشدنی که ماشین بتونه بخونه، و فقط یکیشون قانون صریح «استفاده نکن» داره: Primer گیتهاب، که کنار مقدار توکن یه بلوک مخصوص LLM با فهرست کاربردها و قواعدش گذاشته. Workday نامهای قدیمی هر توکن رو نگه میداره، اطلسین و گیتلب توضیح و فلگ منسوخشدن دارن، و NL Design System هم از همه به Primer نزدیکتره.
نویسنده ادعاش رو تست هم کرده: یه فایل توکن ساختگی با ده رنگ و یه تلهٔ آشنا — crimson500 رنگ برند، red600 رنگ خطر، و هیچی تو فایل نمیگه کدوم کدومه. با فایل خام، تو دو تا از سه اجرا ایجنت دکمهٔ «حذف حساب» رو با رنگ برند رنگ کرده؛ با همون فایل ولی با یه $description روی هر توکن، هر دو اجرا جواب یکسان و درست دادن. خودش تأکید میکنه این یه آزمایش کوچیک با تلهٔ کاشتهشدهست، نه بنچمارک.
راهحل عملیش مهاجرت نیست، برچسبزدنه: ده توکن پرکاربرد (رنگ اکشن اصلی، رنگ خطر، حالت غیرفعال، فوکوسرینگ و…) رو بردار و بهشون نقش، کاربرد، ضدکاربرد و وضعیت منسوخشدن اضافه کن. $description و $deprecated از قبل بخشی از اسپک DTCG هستن و پایپلاین بیلد فیلدهای اضافه رو نادیده میگیره:
"red600": {
"$value": "#d62b1f",
"$type": "color",
"$description": "System danger. Destructive action backgrounds, error text, error borders.",
"$deprecated": false,
"$extensions": {
"com.yourcompany.usage": { "role": "danger", "doNotUse": "Decorative elements, charts, brand moments. Use crimson500 for brand." }
}
}نکات کلیدی:
- فایل توکن ۵۰ دیزاینسیستم بررسی شده؛ دستکم ۸ فرمت مختلف و هیچ گرامر نامگذاری مشترکی وجود نداره.
- ماشینخون بودن کافی نیست: ایجنت باید نقش، کاربرد و «کجا استفاده نکن» رو از خود فایل بفهمه.
- فقط ۱ سیستم از ۵۰ (Primer گیتهاب) قانون صریح ضدکاربرد داره؛ حدود ۱۵ تا توضیح متنی دارن.
- تو آزمایش نویسنده، با فایل بدون برچسب، ۲ از ۳ اجرا رنگ برند رو روی دکمهٔ حذف گذاشتن.
- شروع ارزون: ده توکن پرکاربرد رو با $description و $deprecated برچسب بزنید و گرامر نامگذاریتون رو صریح اعلام کنید.




