ابزارها (Tools)

ابزارها (Tools)

ابزارهای AshaCode (Tools)

ابزارها به مدل زبانی اجازه می‌دهند در کدبیس شما عملیات انجام دهد. AshaCode با مجموعه‌ای از ابزارهای داخلی ارائه می‌شود و می‌توانید آن را با ابزارهای دلخواه یا سرورهای MCP گسترش دهید.

به‌طور پیش‌فرض همه ابزارها فعال هستند و برای اجرا نیازی به مجوز ندارند. رفتار هر ابزار را از طریق بخش permission کنترل کنید.

پیکربندی (Configure)

با فیلد permission می‌توانید برای هر ابزار مقدار allow، deny یا ask (درخواست تأیید) تنظیم کنید:

{
  "$schema": "https://asha-ai.ir/schema.json",
  "permission": {
    "edit": "deny",
    "bash": "ask",
    "webfetch": "allow"
  }
}

می‌توانید از وایلدکارت برای کنترل هم‌زمان چند ابزار استفاده کنید؛ مثلاً تأیید برای همه ابزارهای یک سرور MCP:

{
  "$schema": "https://asha-ai.ir/schema.json",
  "permission": {
    "mymcp_*": "ask"
  }
}
برای اطلاعات بیشتر درباره پیکربندی مجوزها به بخش دسترسی‌ها (Permissions) مراجعه کنید.

ابزارهای داخلی (Built-in)

در ادامه همه ابزارهای داخلی AshaCode آمده است.

bash

اجرای دستورات شل در محیط پروژه شما.

{
  "$schema": "https://asha-ai.ir/schema.json",
  "permission": {
    "bash": "allow"
  }
}

این ابزار به مدل اجازه می‌دهد دستورات ترمینالی مانند npm install، git status یا هر دستور شل دیگری را اجرا کند.

edit

تغییر فایل‌های موجود با جایگزینی دقیق رشته‌ها.

{
  "$schema": "https://asha-ai.ir/schema.json",
  "permission": {
    "edit": "allow"
  }
}

این ابزار ویرایش دقیق فایل‌ها را با جایگزینی متن‌های منطبق انجام می‌دهد و راه اصلی تغییر کد توسط مدل است.

write

ساخت فایل‌های جدید یا بازنویسی فایل‌های موجود.

{
  "$schema": "https://asha-ai.ir/schema.json",
  "permission": {
    "edit": "allow"
  }
}
ابزار write با مجوز edit کنترل می‌شود که همه تغییرات فایل (edit، write، apply_patch) را پوشش می‌دهد.

read

خواندن محتوای فایل‌ها از کدبیس شما.

{
  "$schema": "https://asha-ai.ir/schema.json",
  "permission": {
    "read": "allow"
  }
}

برای فایل‌های بزرگ، خواندن محدوده خطوط مشخص نیز پشتیبانی می‌شود.

grep

جستجوی محتوای فایل‌ها با استفاده از عبارات منظم.

{
  "$schema": "https://asha-ai.ir/schema.json",
  "permission": {
    "grep": "allow"
  }
}

جستجوی سریع محتوا در کدبیس. از نحو کامل regex و فیلتر الگوی فایل پشتیبانی می‌کند.

glob

یافتن فایل‌ها با تطبیق الگو.

{
  "$schema": "https://asha-ai.ir/schema.json",
  "permission": {
    "glob": "allow"
  }
}

جستجوی فایل‌ها با الگوهایی مانند **/*.js یا src/**/*.ts. مسیرهای منطبق را مرتب‌شده بر اساس زمان تغییر برمی‌گرداند.

lsp (آزمایشی)

تعامل با سرورهای LSP پیکربندی‌شده برای قابلیت‌های هوش کد مانند تعریف، ارجاع، هاور و سلسله‌مراتب فراخوانی.

این ابزار فقط وقتی در دسترس است که ASHACODE_EXPERIMENTAL_LSP_TOOL=true (یا ASHACODE_EXPERIMENTAL=true) باشد.
{
  "$schema": "https://asha-ai.ir/schema.json",
  "permission": {
    "lsp": "allow"
  }
}

عملیات پشتیبانی‌شده: goToDefinition، findReferences، hover، documentSymbol، workspaceSymbol، goToImplementation، prepareCallHierarchy، incomingCalls و outgoingCalls.

برای پیکربندی سرورهای LSP پروژه، به سرورهای LSP مراجعه کنید.

apply_patch

اعمال پچ بر روی فایل‌ها.

{
  "$schema": "https://asha-ai.ir/schema.json",
  "permission": {
    "edit": "allow"
  }
}

این ابزار پچ‌ها را روی کدبیس شما اعمال می‌کند و برای اعمال diff و patch از منابع مختلف مفید است. در هوک‌های tool.execute.before و tool.execute.after بررسی کنید که input.tool === "apply_patch" (نه "patch"). apply_patch از output.args.patchText به‌جای output.args.filePath استفاده می‌کند؛ مسیرها داخل نشانگرهای patchText و نسبت به ریشه پروژه هستند (مثل *** Add File: src/new-file.ts، *** Update File: src/existing.ts، *** Move to: src/renamed.ts، *** Delete File: src/obsolete.ts).

skill

بارگذاری یک مهارت (فایل SKILL.md) و بازگرداندن محتوای آن در مکالمه.

{
  "$schema": "https://asha-ai.ir/schema.json",
  "permission": {
    "skill": "allow"
  }
}

todowrite

مدیریت فهرست کارها در طول جلسات کدنویسی.

{
  "$schema": "https://asha-ai.ir/schema.json",
  "permission": {
    "todowrite": "allow"
  }
}

ساخت و به‌روزرسانی فهرست کارها برای پیگیری پیشرفت عملیات پیچیده. مدل از این ابزار برای سازمان‌دهی کارهای چندمرحله‌ای استفاده می‌کند.

این ابزار به‌طور پیش‌فرض برای زیرایجنت‌ها غیرفعال است، اما می‌توانید آن را به‌صورت دستی فعال کنید.

webfetch

دریافت محتوای وب.

{
  "$schema": "https://asha-ai.ir/schema.json",
  "permission": {
    "webfetch": "allow"
  }
}

به مدل اجازه می‌دهد صفحات وب را دریافت و مطالعه کند؛ برای جستجوی مستندات یا تحقیق آنلاین مفید است.

websearch

جستجوی وب برای یافتن اطلاعات.

این ابزار فقط وقتی در دسترس است که از فراهم‌کننده AshaCode استفاده می‌کنید یا یکی از متغیرهای محیطی ASHACODE_ENABLE_EXA یا ASHACODE_ENABLE_PARALLEL روی یک مقدار truthy (مثل true یا 1) باشد.

برای فعال‌سازی هنگام اجرا:

ASHACODE_ENABLE_EXA=1 ashacode
# or
ASHACODE_ENABLE_PARALLEL=1 ashacode
{
  "$schema": "https://asha-ai.ir/schema.json",
  "permission": {
    "websearch": "allow"
  }
}

جستجوهای وب را با Exa یا Parallel انجام می‌دهد. برای یافتن موضوعات، رویدادهای جاری یا اطلاعات فراتر از برش داده آموزشی مفید است. بدون نیاز به کلید API و اتصال مستقیم به سرویس MCP میزبان. وقتی نیاز به کشف دارید از websearch و وقتی نیاز به دریافت محتوا از یک URL مشخص دارید از webfetch استفاده کنید.

question

پرسیدن سؤال از کاربر در حین اجرا.

{
  "$schema": "https://asha-ai.ir/schema.json",
  "permission": {
    "question": "allow"
  }
}

به مدل اجازه می‌دهد در حین کار از کاربر سؤال بپرسد؛ برای جمع‌آوری ترجیحات یا الزامات، شفاف‌سازی دستورالعمل‌های مبهم، گرفتن تصمیم درباره انتخاب‌های پیاده‌سازی و پیشنهاد جهت کار مفید است. هر سؤال شامل سربرگ، متن سؤال و فهرست گزینه‌هاست؛ کاربر می‌تواند بین گزینه‌های متعدد حرکت کند و پاسخ دلخواه را انتخاب یا تایپ کند.

ابزارهای دلخواه (Custom Tools)

ابزارهای دلخواه به شما اجازه می‌دهند توابع خودتان را تعریف کنید که مدل بتواند فراخوانی کند. این توابع در فایل پیکربندی تعریف می‌شوند و می‌توانند هر کدی را اجرا کنند.

بیشتر بدانید: ساخت ابزارهای دلخواه.

سرورهای MCP

سرورهای MCP (پروتکل زمینه مدل) به شما اجازه می‌دهند ابزارها و سرویس‌های خارجی را یکپارچه کنید؛ از جمله دسترسی به پایگاه داده، یکپارچه‌سازی API و سرویس‌های شخص ثالث.

بیشتر بدانید: پیکربندی سرورهای MCP.

جزئیات داخلی (Internals)

در داخل، ابزارهایی مانند grep و glob از ripgrep استفاده می‌کنند. به‌طور پیش‌فرض ripgrep به الگوهای .gitignore احترام می‌گذارد؛ بنابراین فایل‌ها و پوشه‌های موجود در .gitignore از جستجو و فهرست‌بندی خارج می‌شوند.

الگوهای نادیده‌نگرفتن (Ignore Patterns)

برای گنجاندن فایل‌هایی که معمولاً نادیده گرفته می‌شوند، یک فایل .ignore در ریشه پروژه بسازید. این فایل می‌تواند مسیرهای مشخصی را صریحاً مجاز کند:

!node_modules/
!dist/
!build/

مثلاً این فایل .ignore به ripgrep اجازه می‌دهد داخل پوشه‌های node_modules/، dist/ و build/ جستجو کند حتی اگر در .gitignore فهرست شده باشند.