مرجع ابزارها
Claude Code به مجموعهای از ابزارهای داخلی دسترسی دارد که به آن کمک میکنند کدبیست را بفهمد و تغییر دهد. نامهای ابزار همان رشتههای دقیقیاند که در قواعدِ دسترسی، فهرستِ ابزارهای سابایجنت و matcherهای hook استفاده میکنی. برای غیرفعالکردنِ کاملِ یک ابزار، نامش را به آرایهی deny در تنظیماتِ دسترسی خود اضافه کن.
برای افزودنِ ابزارهای سفارشی، یک سرورِ MCP متصل کن. برای گسترشِ Claude با ورکفلوهای مبتنیبر پرامپتِ قابلِاستفادهی مجدد، یک skill بنویس، که از طریقِ ابزارِ موجودِ Skill اجرا میشود بهجای افزودنِ یک ورودیِ ابزارِ جدید.
| ابزار | توضیح | دسترسیِ لازم |
|---|---|---|
Agent | یک سابایجنت با پنجرهی کانتکستِ خودش برای انجامِ یک کار ایجاد میکند. رفتارِ ابزارِ Agent را ببین | خیر |
AskUserQuestion | پرسشهای چندگزینهای میپرسد تا نیازمندیها را جمع کند یا ابهام را روشن کند | خیر |
Bash | دستورهای شل را در محیطت اجرا میکند. رفتارِ ابزارِ Bash را ببین | بله |
CronCreate | یک پرامپتِ تکرارشونده یا تکباره را در نشستِ فعلی زمانبندی میکند. کارها محدود به نشستاند و در --resume یا --continue اگر منقضی نشده باشند بازیابی میشوند. کارهای زمانبندیشده را ببین | خیر |
CronDelete | یک کارِ زمانبندیشده را با ID لغو میکند | خیر |
CronList | همهی کارهای زمانبندیشدهی نشست را فهرست میکند | خیر |
Edit | ویرایشهای هدفمند روی فایلهای مشخص انجام میدهد. رفتارِ ابزارِ Edit را ببین | بله |
EnterPlanMode | به plan mode تعویض میکند تا پیش از کدنویسی یک رویکرد طراحی شود | خیر |
EnterWorktree | یک git worktree ایزوله میسازد و به آن تعویض میکند. یک path بده تا بهجای ساختِ یکی جدید، به یک worktreeِ موجود از مخزن فعلی تعویض کنی. از داخلِ یک نشستِ worktree، یا از سابایجنتی با پوشهی کاریِ پینشده مثلِ isolation: worktree، فقط شکلِ path در دسترس است و هدف باید زیرِ .claude/worktrees/ باشد | خیر |
ExitPlanMode | یک plan را برای تأیید ارائه میدهد و از plan mode خارج میشود | بله |
ExitWorktree | از یک نشستِ worktree خارج میشود و به پوشهی اصلی برمیگردد. برای سابایجنتهایی که از قبل در پوشهی کاریِ خودشان اجرا میشوند، مثلِ isolation: worktree، در دسترس نیست | خیر |
Glob | فایلها را بر اساسِ تطبیقِ الگو پیدا میکند. رفتارِ ابزارِ Glob را ببین | خیر |
Grep | در محتوای فایلها دنبالِ الگو میگردد. رفتارِ ابزارِ Grep را ببین | خیر |
ListMcpResourcesTool | منابعی را که سرورهای MCP متصل افشا میکنند فهرست میکند | خیر |
LSP | هوشِ کد از طریقِ language serverها: پرش به تعاریف، یافتنِ ارجاعها، گزارشِ خطاهای نوع و هشدارها. رفتارِ ابزارِ LSP را ببین | خیر |
Monitor | دستوری را در پسزمینه اجرا میکند و هر خطِ خروجی را به Claude بازخورد میدهد، تا بتواند به ورودیهای لاگ، تغییراتِ فایل یا وضعیتِ pollشده در میانهی گفتوگو واکنش نشان دهد. ابزارِ Monitor را ببین | بله |
NotebookEdit | سلولهای نوتبوکِ Jupyter را تغییر میدهد. رفتارِ ابزارِ NotebookEdit را ببین | بله |
PowerShell | دستورهای PowerShell را بهصورتِ بومی اجرا میکند. برای در دسترسبودن ابزارِ PowerShell را ببین | بله |
PushNotification | یک اعلانِ دسکتاپ میفرستد، و یک push به تلفن وقتی Remote Control متصل است، تا یک کارِ طولانی یا کارِ زمانبندیشده بتواند وقتی دور هستی به تو برسد. {/* plan-availability: feature=push-notifications providers=anthropic */}تحویلِ push از طریقِ زیرساختِ میزبانیشدهی Anthropic اجرا میشود، که از Amazon Bedrock، Google Vertex AI یا Microsoft Foundry قابلدسترس نیست | خیر |
Read | محتوای فایلها را میخواند. رفتارِ ابزارِ Read را ببین | خیر |
ReadMcpResourceTool | یک منبعِ MCP مشخص را با URI میخواند | خیر |
RemoteTrigger | Routineها را روی claude.ai میسازد، بهروز میکند، اجرا میکند و فهرست میکند. پشتیبانِ دستورِ /schedule است. {/* plan-availability: feature=routines plans=pro,max,team,enterprise providers=anthropic */}Routineها روی claude.ai قرار دارند و به یک پلنِ Pro، Max، Team یا Enterprise نیاز دارند، پس این ابزار از Amazon Bedrock، Google Vertex AI یا Microsoft Foundry قابلدسترس نیست | خیر |
ScheduleWakeup | تکرارِ بعدیِ یک /loop خودگام را دوباره زمانبندی میکند. Claude این را در پایانِ هر تکرار صدا میزند تا انتخاب کند بعدی کِی اجرا شود، بینِ یک دقیقه تا یک ساعتِ بعد؛ تو مستقیم صدایش نمیزنی. wakeupِ در انتظار در session_crons در ورودیِ Stop hook ظاهر میشود. {/* plan-availability: feature=loop-dynamic providers=anthropic */}روی Amazon Bedrock، Google Vertex AI یا Microsoft Foundry در دسترس نیست، که در آنها یک پرامپتِ /loop بدونِ بازه بهجایش روی زمانبندیِ ثابت اجرا میشود | خیر |
SendMessage | پیامی به یک همتیمیِ agent team میفرستد، یا یک سابایجنت را با شناسهی ایجنتش ادامه میدهد. سابایجنتهای متوقفشده بهطور خودکار در پسزمینه ادامه مییابند. فقط وقتی در دسترس است که CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1 تنظیم شده باشد | خیر |
ShareOnboardingGuide | {/* plan-availability: feature=onboarding-guide-share plans=pro,max,team,enterprise providers=anthropic */}فایلِ ONBOARDING.md را آپلود میکند و یک لینکِ اشتراک برمیگرداند که همتیمیها میتوانند در Claude Code باز کنند. پس از نوشتهشدنِ راهنما از /team-onboarding فراخوانده میشود. برای مشترکانِ claude.ai روی پلنهای Pro، Max، Team و Enterprise در دسترس است | بله |
Skill | یک skill را در داخلِ گفتوگوی اصلی اجرا میکند | بله |
TaskCreate | یک کارِ جدید در فهرستِ کارها میسازد | خیر |
TaskGet | جزئیاتِ کاملِ یک کارِ مشخص را بازیابی میکند | خیر |
TaskList | همهی کارها را با وضعیتِ فعلیشان فهرست میکند | خیر |
TaskOutput | (منسوخ) خروجیِ یک کارِ پسزمینه را بازیابی میکند. بهجایش Read روی مسیرِ فایلِ خروجیِ کار را ترجیح بده | خیر |
TaskStop | یک کارِ پسزمینهی در حالِ اجرا را با ID میکُشد | خیر |
TaskUpdate | وضعیت، وابستگیها، جزئیاتِ کار را بهروز میکند، یا کارها را حذف میکند | خیر |
TeamCreate | یک agent team با چند همتیمی میسازد. فقط وقتی در دسترس است که CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1 تنظیم شده باشد | خیر |
TeamDelete | یک agent team را منحل میکند و فرایندهای همتیمیها را پاکسازی میکند. فقط وقتی در دسترس است که CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1 تنظیم شده باشد | خیر |
TodoWrite | {/* min-version: 2.1.142 */}چکلیستِ کارهای نشست را مدیریت میکند. از v2.1.142 بهنفعِ TaskCreate، TaskGet، TaskList و TaskUpdate بهطور پیشفرض غیرفعال است. CLAUDE_CODE_ENABLE_TASKS=0 را تنظیم کن تا دوباره فعال شود | خیر |
ToolSearch | وقتی tool search فعال است، ابزارهای بهتعویقافتاده را جستوجو و بارگذاری میکند | خیر |
WaitForMcpServers | {/* min-version: 2.1.142 */}منتظرِ یک یا چند سرورِ MCP میماند که هنوز در پسزمینه در حالِ اتصالاند، تا یک درخواست بتواند از ابزارهایشان استفاده کند بدونِ ریاستارتِ نشست. Claude وقتی سرورِ موردِ نیاز هنوز متصل نیست آن را صدا میزند. فقط وقتی tool search غیرفعال است ظاهر میشود، چون وقتی فعال باشد ToolSearch انتظار را مدیریت میکند | خیر |
WebFetch | محتوا را از یک URLِ مشخص واکشی میکند. رفتارِ ابزارِ WebFetch را ببین | بله |
WebSearch | جستوجوهای وب انجام میدهد. رفتارِ ابزارِ WebSearch را ببین | بله |
Workflow | یک ورکفلوی پویا را اجرا میکند: اسکریپتی که چند سابایجنت را در پسزمینه هماهنگ میکند و یک نتیجهی یکپارچه برمیگرداند | بله |
Write | فایلها را میسازد یا بازنویسی میکند. رفتارِ ابزارِ Write را ببین | بله |
پیکربندیِ ابزارها با قواعدِ دسترسی و hookها
Section titled “پیکربندیِ ابزارها با قواعدِ دسترسی و hookها”در بیشترِ موارد، Claude خودش تصمیم میگیرد کِی از این ابزارها استفاده کند و لازم نیست هنگامِ تعامل با Claude خودت نامشان را ببری. نامهای ابزار را مستقیماً وقتی دسترسیها و دیگر پیکربندیها را تعریف میکنی ارجاع میدهی:
- در
permissions.allowوpermissions.denyدر تنظیمات، و رابطِ/permissions - در پرچمهای CLIِ
--allowedToolsو--disallowedTools - در گزینههای
allowedToolsوdisallowedToolsدر Agent SDK - در frontmatterِ
toolsیاdisallowedToolsیک سابایجنت - در frontmatterِ
allowed-toolsیک skill - در شرطِ
ifیک hook
همهی اینها همان قالبِ قاعده را میپذیرند، ToolName(specifier). specifier به ابزار بستگی دارد، و چند ابزار یک قالب را بهاشتراک میگذارند:
| قالبِ قاعده | اعمال بر | جزئیات |
|---|---|---|
Bash(npm run *) | Bash, Monitor | تطبیقِ الگوی دستور |
PowerShell(Get-ChildItem *) | PowerShell | تطبیقِ الگوی دستور |
Read(~/secrets/**) | Read, Grep, Glob, LSP | تطبیقِ الگوی مسیر |
Edit(/src/**) | Edit, Write, NotebookEdit | تطبیقِ الگوی مسیر |
Skill(deploy *) | Skill | تطبیقِ نامِ skill |
Agent(Explore) | Agent | تطبیقِ نوعِ سابایجنت |
WebFetch(domain:example.com) | WebFetch | تطبیقِ دامنه |
WebSearch | WebSearch | بدونِ specifier؛ ابزار را بهعنوانِ یک کل allow یا deny کن |
ابزارهایی که اینجا فهرست نشدهاند، مثلِ ExitPlanMode یا ShareOnboardingGuide، فقط نامِ خالیِ ابزار را بدونِ specifier میپذیرند.
یک قاعدهی allowِ Edit(...) دسترسیِ خواندن به همان مسیر را هم میدهد، پس به یک قاعدهی Read(...) متناظر نیازی نداری.
فیلدهای matcher در hook از نامهای خالیِ ابزار استفاده میکنند، نه قالبِ قاعدهی پرانتزی. برای قواعدِ تطبیق الگوهای matcher را ببین. برای نامهای فیلدی که هر ابزار به tool_input در hookها میدهد، مرجعِ ورودیِ PreToolUse را ببین.
رفتارِ ابزارِ Agent
Section titled “رفتارِ ابزارِ Agent”ابزارِ Agent یک سابایجنت را در یک پنجرهی کانتکستِ جداگانه ایجاد میکند. سابایجنت کارش را بهصورتِ خودمختار پیش میبرد، بعد یک نتیجهی متنیِ واحد به گفتوگوی والد برمیگرداند. والد فراخوانیها یا خروجیهای میانیِ ابزارِ سابایجنت را نمیبیند، فقط همان نتیجهی نهایی را. برای محدودکردنِ تعدادِ نوبتهایی که یک سابایجنت اجرا میکند، maxTurns را در تعریفِ سابایجنت تنظیم کن.
همان ابزارِ Agent وقتی fork mode فعال باشد، سابایجنتهای forkشده را هم راهاندازی میکند. یک fork بهجای شروعِ تازه، کلِ گفتوگوی والد را بهارث میبرد، همیشه در پسزمینه اجرا میشود، و همچنان پرامپتهای دسترسی را در ترمینالت نمایان میکند. باقیِ این بخش سابایجنتهای نامدار را توصیف میکند.
اینکه یک سابایجنتِ نامدار از کدام ابزارها میتواند استفاده کند به فیلدهای tools و disallowedTools در تعریفِ سابایجنت بستگی دارد:
- هیچکدام تنظیم نشده: سابایجنت هر ابزاری که در دسترسِ والد است را بهارث میبرد.
- فقط
tools: سابایجنت فقط ابزارهای فهرستشده را میگیرد. - فقط
disallowedTools: سابایجنت هر ابزارِ والد را بهجز فهرستشدهها میگیرد. - هر دو تنظیم شده:
disallowedToolsاولویت دارد. ابزاری که در هر دو فهرست شده حذف میشود.
راهاندازیِ خودِ سابایجنت برای دسترسی پرامپت نمیدهد. فراخوانیهای خودِ ابزارِ سابایجنت همانطور که اجرا میشود در برابرِ قواعدِ دسترسیات بررسی میشوند:
- سابایجنتهای پیشزمینه همان پرامپتهای دسترسیای را نشان میدهند که در گفتوگوی اصلی میدیدی، در لحظهای که هر فراخوانیِ ابزار رخ میدهد.
- سابایجنتهای پسزمینه پرامپت نشان نمیدهند. با دسترسیهایی که از قبل در نشست داده شده اجرا میشوند و هر فراخوانیِ ابزاری که در غیرِ اینصورت پرامپت میداد را بهطور خودکار رد میکنند. بعد از یک رد، سابایجنت بدونِ آن ابزار ادامه میدهد.
برای محدودکردنِ آنچه یک سابایجنت از همان ابتدا میتواند به آن برسد، فیلدِ toolsاش را تنگ کن، Bash را از فهرست بیرون بگذار، یا قواعدِ deny را در تنظیماتت بگذار، همانطور که در کنترلِ تواناییهای سابایجنت توضیح داده شده. برای بیشتر دربارهی انتخاب بینِ پیشزمینه و پسزمینه، اجرای سابایجنتها در پیشزمینه یا پسزمینه را ببین.
رفتارِ ابزارِ Bash
Section titled “رفتارِ ابزارِ Bash”ابزارِ Bash هر دستور را در یک فرایندِ جداگانه با رفتارِ پایداریِ زیر اجرا میکند:
- وقتی Claude در نشستِ اصلی
cdرا اجرا میکند، پوشهی کاریِ جدید به دستورهای Bashِ بعدی منتقل میشود تا وقتی داخلِ پوشهی پروژه یا یک پوشهی کاریِ اضافی که با--add-dir،/add-dirیاadditionalDirectoriesدر تنظیمات اضافه کردهای بماند. نشستهای سابایجنت هرگز تغییراتِ پوشهی کاری را منتقل نمیکنند.- اگر
cdبیرون از آن پوشهها فرود بیاید، Claude Code به پوشهی پروژه ریست میشود وShell cwd was reset to <dir>را به نتیجهی ابزار میافزاید. - برای غیرفعالکردنِ این انتقال تا هر دستورِ Bash در پوشهی پروژه شروع شود،
CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR=1را تنظیم کن.
- اگر
- متغیرهای محیطی پایدار نمیمانند. یک
exportدر یک دستور در دستورِ بعدی در دسترس نخواهد بود. - aliasها و توابعِ شل که در فایلِ راهاندازیِ شلت تعریف شدهاند در دسترساند. در آغازِ نشست، Claude Code بسته به شلت
~/.zshrc،~/.bashrcیا~/.profileرا source میکند، aliasها، توابع و گزینههای شلِ حاصل را میگیرد، و آنها را به هر دستورِ Bash اعمال میکند.
virtualenv یا محیطِ conda خود را پیش از راهاندازیِ Claude Code فعال کن. برای اینکه متغیرهای محیطی در سراسرِ دستورهای Bash پایدار بمانند، CLAUDE_ENV_FILE را پیش از راهاندازیِ Claude Code روی یک اسکریپتِ شل تنظیم کن، یا از یک SessionStart hook برای پُرکردنِ پویایش استفاده کن.
دو محدودیت هر دستور را قید میزنند:
- Timeout: بهطور پیشفرض دو دقیقه. Claude میتواند با پارامترِ
timeoutتا ۱۰ دقیقه برای هر دستور درخواست کند. پیشفرض و سقف را باBASH_DEFAULT_TIMEOUT_MSوBASH_MAX_TIMEOUT_MSبازنویسی کن. - طولِ خروجی: بهطور پیشفرض ۳۰٬۰۰۰ کاراکتر. وقتی دستوری بیش از آن تولید کند، Claude Code خروجیِ کامل را در فایلی در پوشهی نشست ذخیره میکند و مسیرِ فایل بهعلاوهی یک پیشنمایشِ کوتاه از ابتدا را به Claude میدهد. Claude وقتی به باقیش نیاز داشته باشد آن فایل را میخواند یا جستوجو میکند. محدودیت را با
BASH_MAX_OUTPUT_LENGTHبالا ببر، تا سقفِ سختِ ۱۵۰٬۰۰۰ کاراکتر.
برای فرایندهای طولانی مثلِ سرورهای dev یا watch buildها، Claude میتواند run_in_background: true را تنظیم کند تا دستور را بهعنوانِ یک کارِ پسزمینه شروع کند و حین اجرا به کار ادامه دهد. کارهای پسزمینه را با /tasks فهرست و متوقف کن.
رفتارِ ابزارِ Edit
Section titled “رفتارِ ابزارِ Edit”ابزارِ Edit جایگزینیِ دقیقِ رشته انجام میدهد. یک old_string و یک new_string میگیرد و اولی را با دومی جایگزین میکند. از regex یا تطبیقِ فازی استفاده نمیکند.
برای اعمالشدنِ یک ویرایش باید سه بررسی موفق باشند:
- خواندن-پیشاز-ویرایش: Claude باید فایل را در گفتوگوی فعلی خوانده باشد، و فایل از زمانِ آن خواندن روی دیسک تغییر نکرده باشد. این بررسی اول اجرا میشود، پیش از هر تطبیقِ رشته.
- تطابق:
old_stringباید دقیقاً همانطور که نوشته شده در فایل ظاهر شود. یک کاراکتر فضای خالی یا تفاوتِ تورفتگی کافی است که از دست برود. - یکتایی:
old_stringباید دقیقاً یکبار ظاهر شود. وقتی بیش از یکبار ظاهر شود، Claude یا رشتهی بلندتری با کانتکستِ اطرافِ کافی میدهد تا یک رخداد را قطعی کند، یاreplace_all: trueرا تنظیم میکند تا همه را جایگزین کند.
دیدنِ یک فایل با Bash هم نیازمندیِ خواندن-پیشاز-ویرایش را برآورده میکند، وقتی دستور یکی از cat، head، tail، sed -n 'X,Yp'، grep، egrep یا fgrep روی یک فایلِ واحد بدونِ pipe یا redirect باشد. خروجیِ pipeشده و دیگر دستورهای Bash بهحساب نمیآیند، و Claude باید در آن موارد پیش از ویرایش از Read استفاده کند.
این فقط بر واجدِ شرایطبودنِ ویرایش اثر میگذارد، نه دسترسیها. قواعدِ denyِ Read و Edit به دستورهای فایلی هم که Claude Code در Bash تشخیص میدهد، مثلِ cat، head، tail، sed و grep، اعمال میشوند، اما نه به زیرفرایندهای دلخواهی که بهطور غیرمستقیم فایل میخوانند یا مینویسند، مثلِ یک اسکریپتِ Python یا Node که خودش فایلها را باز میکند. مجموعهی دستورهای شناختهشده برای قواعدِ deny با فهرستِ خواندن-پیشاز-ویرایشِ بالا یکسان نیست: مثلاً egrep و fgrep برای خواندن-پیشاز-ویرایش بهحساب میآیند ولی در برابرِ قواعدِ denyِ Read بررسی نمیشوند. برای اعمالِ سطحِ سیستمعامل که هر فرایند را پوشش میدهد، sandbox را فعال کن.
رفتارِ ابزارِ Glob
Section titled “رفتارِ ابزارِ Glob”ابزارِ Glob فایلها را با الگوی نام پیدا میکند. از نحوِ استانداردِ glob از جمله ** برای تطبیقِ بازگشتیِ پوشه پشتیبانی میکند:
**/*.jsهمهی فایلهای.jsرا در هر عمقی تطبیق میدهدsrc/**/*.tsهمهی فایلهای.tsرا زیرِsrc/تطبیق میدهد*.{json,yaml}فایلهای.jsonو.yamlرا در پوشهی فعلی تطبیق میدهد
نتایج بر اساسِ زمانِ تغییر مرتب و در ۱۰۰ فایل قطع میشوند. اگر به سقف بخورد، Claude یک پرچمِ قطعشدن را در نتیجه میبیند و میتواند الگو را تنگتر کند.
Glob بهطور پیشفرض به .gitignore احترام نمیگذارد، پس فایلهای gitignoreشده را در کنارِ ردیابیشدهها پیدا میکند. این با Grep فرق دارد، که فایلهای gitignoreشده را رد میکند. برای اینکه Glob به .gitignore احترام بگذارد، CLAUDE_CODE_GLOB_NO_IGNORE=false را پیش از راهاندازیِ Claude Code تنظیم کن.
رفتارِ ابزارِ Grep
Section titled “رفتارِ ابزارِ Grep”ابزارِ Grep محتوای فایلها را دنبالِ الگو میگردد. جایی که Glob فایلها را با نام پیدا میکند، Grep خطهای داخلشان را پیدا میکند.
Grep روی ripgrep ساخته شده و از نحوِ regexِ ripgrep استفاده میکند، نه POSIX grep. الگوهایی که شاملِ متاکاراکترهای regexاند به escape نیاز دارند. مثلاً یافتنِ interface{} در کدِ Go الگوی interface\{\} را میخواهد.
سه حالتِ خروجی کنترل میکنند چه چیزی برمیگردد:
files_with_matches: فقط مسیرهای فایل، بدونِ محتوای خط. این پیشفرض است.content: خطهای منطبق با نامِ فایل و شمارهی خط.count: تعدادِ تطابق بهازای هر فایل.
Claude میتواند نتایج را با پارامترِ glob، مثلِ **/*.tsx، با فایل دامنهبندی کند، یا با پارامترِ type، مثلِ py یا rust، با زبان. بهطور پیشفرض، الگوها در داخلِ یک خطِ واحد تطبیق داده میشوند. Claude میتواند multiline: true را تنظیم کند تا در مرزهای خط تطبیق دهد.
Grep به .gitignore احترام میگذارد، پس فایلهای gitignoreشده رد میشوند. برای جستوجوی یک فایلِ gitignoreشده، Claude مسیرش را مستقیم میدهد.
رفتارِ ابزارِ LSP
Section titled “رفتارِ ابزارِ LSP”ابزارِ LSP به Claude هوشِ کد از یک language serverِ در حالِ اجرا میدهد. بعد از هر ویرایشِ فایل، بهطور خودکار خطاهای نوع و هشدارها را گزارش میدهد تا Claude بتواند مشکلات را بدونِ یک مرحلهی build جداگانه رفع کند. Claude میتواند آن را مستقیم هم برای پیمایشِ کد صدا بزند:
- پرش به تعریفِ یک نماد
- یافتنِ همهی ارجاعها به یک نماد
- گرفتنِ اطلاعاتِ نوع در یک موقعیت
- فهرستکردنِ نمادها در یک فایل
- جستوجوی یک نماد با نام در سراسرِ فضای کاری
- یافتنِ پیادهسازیهای یک interface
- ردیابیِ سلسلهمراتبِ فراخوانی
این ابزار تا وقتی یک پلاگینِ هوشِ کد برای زبانت نصب نکنی غیرفعال است. پلاگین پیکربندیِ language server را همراه دارد، و باینریِ سرور را جداگانه نصب میکنی.
ابزارِ Monitor
Section titled “ابزارِ Monitor”ابزارِ Monitor به Claude اجازه میدهد چیزی را در پسزمینه تماشا کند و وقتی تغییر کرد واکنش نشان دهد، بدونِ مکثِ گفتوگو. از Claude بخواه:
- یک فایلِ لاگ را tail کند و خطاها را همانطور که ظاهر میشوند علامت بزند
- یک PR یا کارِ CI را poll کند و وقتی وضعیتش تغییر کرد گزارش دهد
- یک پوشه را برای تغییراتِ فایل تماشا کند
- خروجیِ هر اسکریپتِ طولانیای که به آن اشاره میکنی را ردیابی کند
Claude یک اسکریپتِ کوچک برای تماشا مینویسد، در پسزمینه اجرایش میکند، و هر خطِ خروجی را همانطور که میرسد دریافت میکند. تو در همان نشست به کار ادامه میدهی و Claude وقتی رویدادی فرود میآید مداخله میکند. یک monitor را با درخواست از Claude برای لغوش یا با پایاندادن به نشست متوقف کن.
Monitor از همان قواعدِ دسترسیِ Bash استفاده میکند، پس الگوهای allow و deny که برای Bash تنظیم کردهای اینجا هم اعمال میشوند. روی Amazon Bedrock، Google Vertex AI یا Microsoft Foundry در دسترس نیست. همچنین وقتی DISABLE_TELEMETRY یا CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC تنظیم شده باشد در دسترس نیست.
پلاگینها میتوانند monitorهایی اعلام کنند که وقتی پلاگین فعال است بهطور خودکار شروع میشوند، بهجای درخواست از Claude برای شروعشان. monitorهای پلاگین را ببین.
رفتارِ ابزارِ NotebookEdit
Section titled “رفتارِ ابزارِ NotebookEdit”NotebookEdit یک نوتبوکِ Jupyter را هر بار یک سلول تغییر میدهد، و سلولها را با cell_idشان هدف میگیرد. مثلِ Edit روی فایلهای ساده، در سراسرِ نوتبوک جایگزینیِ رشته انجام نمیدهد.
سه حالتِ ویرایش کنترل میکنند چه اتفاقی برای سلولِ هدف میافتد:
replace: منبعِ سلول را بازنویسی کن. این پیشفرض است.insert: یک سلولِ جدید بعد از هدف اضافه کن. بدونِcell_id، سلولِ جدید در ابتدای نوتبوک قرار میگیرد. بهcell_typeکه رویcodeیاmarkdownتنظیم شده نیاز دارد.delete: سلولِ هدف را حذف کن.
قواعدِ دسترسی از قالبِ مسیرِ Edit(...) استفاده میکنند. قاعدهای مثلِ Edit(notebooks/**) فراخوانیهای NotebookEdit روی فایلهای آن پوشه را پوشش میدهد.
ابزارِ PowerShell
Section titled “ابزارِ PowerShell”ابزارِ PowerShell به Claude اجازه میدهد دستورهای PowerShell را بهصورتِ بومی اجرا کند. روی Windows، این یعنی دستورها در PowerShell اجرا میشوند بهجای مسیریابی از طریقِ Git Bash. روی Windows بدونِ Git Bash، ابزار بهطور خودکار فعال است. روی Windows با Git Bashِ نصبشده، ابزار بهتدریج در حالِ عرضه است. روی Linux، macOS و WSL، ابزار اختیاری است.
فعالکردنِ ابزارِ PowerShell
Section titled “فعالکردنِ ابزارِ PowerShell”CLAUDE_CODE_USE_POWERSHELL_TOOL=1 را در محیطت یا در settings.json تنظیم کن:
{ "env": { "CLAUDE_CODE_USE_POWERSHELL_TOOL": "1" }}روی Windows، متغیر را روی 0 بگذار تا از عرضه انصراف بدهی. روی Linux، macOS و WSL، ابزار به PowerShell 7 یا بالاتر نیاز دارد: pwsh را نصب کن و مطمئن شو روی PATHت هست.
روی Windows، Claude Code بهطور خودکار pwsh.exe را برای PowerShell 7+ تشخیص میدهد با fallback به powershell.exe برای PowerShell 5.1. وقتی ابزار فعال است، Claude با PowerShell بهعنوانِ شلِ اصلی رفتار میکند. ابزارِ Bash برای اسکریپتهای POSIX وقتی Git Bash نصب باشد در دسترس میماند.
Claude Code، PowerShell را با -ExecutionPolicy Bypass فقط در سطحِ فرایند ایجاد میکند، پس اسکریپتهای .ps1 و importهای ماژول روی نصبهای پیشفرضِ Windows بدونِ تغییرِ سیاستِ دستگاه کار میکنند. bypassِ سطحِ فرایند، Group Policyِ MachinePolicy یا UserPolicy را override نمیکند، پس قفلهای سازمانی همچنان اعمال میشوند. برای اینکه بهجایش به سیاستِ اجرای مؤثرِ دستگاه احترام بگذاری، CLAUDE_CODE_POWERSHELL_RESPECT_EXECUTION_POLICY=1 را تنظیم کن.
انتخابِ شل در تنظیمات، hookها و skillها
Section titled “انتخابِ شل در تنظیمات، hookها و skillها”سه تنظیمِ اضافی کنترل میکنند PowerShell کجا استفاده میشود:
"defaultShell": "powershell"درsettings.json: دستورهای تعاملیِ!را از طریقِ PowerShell مسیریابی میکند. به فعالبودنِ ابزارِ PowerShell نیاز دارد."shell": "powershell"روی command hookهای منفرد: آن hook را در PowerShell اجرا میکند. hookها PowerShell را مستقیم ایجاد میکنند، پس این صرفنظر ازCLAUDE_CODE_USE_POWERSHELL_TOOLکار میکند.shell: powershellدر frontmatterِ skill: بلاکهای!`command`را در PowerShell اجرا میکند. به فعالبودنِ ابزارِ PowerShell نیاز دارد.
همان رفتارِ ریستِ پوشهی کاریِ نشستِ اصلی که زیرِ بخشِ ابزارِ Bash توصیف شد، به دستورهای PowerShell هم اعمال میشود، از جمله متغیرِ محیطیِ CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR.
محدودیتهای پیشنمایش
Section titled “محدودیتهای پیشنمایش”ابزارِ PowerShell در طولِ پیشنمایش محدودیتهای شناختهشدهی زیر را دارد:
- پروفایلهای PowerShell بارگذاری نمیشوند
- روی Windows، sandboxing پشتیبانی نمیشود
رفتارِ ابزارِ Read
Section titled “رفتارِ ابزارِ Read”ابزارِ Read یک مسیرِ فایل میگیرد و محتوا را با شمارهی خط برمیگرداند. به Claude دستور داده شده همیشه مسیرهای مطلق بدهد.
بهطور پیشفرض، Read فایل را از ابتدا برمیگرداند. وقتی خواندنِ کلِ فایل از محدودیتِ توکن فراتر برود، Read صفحهی اول را با اعلانِ PARTIAL view برمیگرداند که به Claude میگوید چه مقدار از فایل را دریافت کرده و چطور با offset و limit بیشتر بخواند. خواندنی که یک offset یا limit صریح میدهد و باز هم از محدودیتِ توکن فراتر میرود، خطا برمیگرداند.
Read چند نوعِ فایل را فراتر از متنِ ساده مدیریت میکند:
- تصاویر: PNG، JPG و دیگر فرمتهای تصویر بهصورتِ محتوای بصری که Claude میتواند ببیند برگردانده میشوند، نه بهصورتِ بایتِ خام. Claude Code تصاویرِ بزرگ را پیش از ارسال، تغییرِ اندازه و بازفشرده میکند تا در محدودیتهای اندازهی تصویرِ مدل جا شوند، پس Claude ممکن است نسخهای کوچکشده از یک اسکرینشاتِ بزرگ ببیند. اگر Claude جزئیاتِ ریزِ پیکسلیِ یک تصویرِ بزرگ را از دست داد، از آن بخواه اول ناحیهی موردِ نظر را crop کند، مثلاً با ImageMagick از طریقِ Bash.
- PDFها: Claude فایلهای
.pdfکوتاه را کامل میخواند. برای PDFهای بلندتر از ۱۰ صفحه، با یک پارامترِpagesدر بازهها میخواند، مثلِ"1-5"، تا ۲۰ صفحه در هر بار. - نوتبوکهای Jupyter: فایلهای
.ipynbهمهی سلولها را با خروجیهایشان برمیگردانند، شاملِ کد، markdown و مصورسازیها.
Read فقط فایلها را میخواند، نه پوشهها را. Claude از ls از طریقِ ابزارِ Bash برای فهرستکردنِ محتوای پوشه استفاده میکند.
رفتارِ ابزارِ WebFetch
Section titled “رفتارِ ابزارِ WebFetch”WebFetch یک URL و یک پرامپت که توصیف میکند چه چیزی استخراج شود میگیرد. صفحه را واکشی میکند، وقتی سرور HTML برمیگرداند پاسخ را به Markdown تبدیل میکند، و پرامپت را با استفاده از یک مدلِ کوچک و سریع روی محتوا اجرا میکند. برای بیشترِ واکشیها، Claude پاسخِ آن مدل را دریافت میکند، نه صفحهی خام را. مرحلهی تبدیل قابلِ پیکربندی نیست.
این WebFetch را طبقِ طراحی پُراتلاف (lossy) میکند. پرامپتِ استخراج تعیین میکند چه چیزی به Claude میرسد، پس نتیجهای که میگوید صفحه چیزی را ذکر نمیکند ممکن است فقط به این معنا باشد که پرامپت دربارهاش نپرسیده. از Claude بخواه دوباره با پرامپتِ مشخصتری واکشی کند، یا از curl از طریقِ Bash برای صفحهی پردازشنشده استفاده کن.
چند رفتار، پاسخی را که Claude دریافت میکند شکل میدهند:
- URLهای HTTP بهطور خودکار به HTTPS ارتقا مییابند.
- صفحههای بزرگ پیش از پردازش به یک محدودیتِ کاراکترِ ثابت قطع میشوند.
- پاسخها ۱۵ دقیقه کش میشوند، پس واکشیهای مکررِ همان URL سریع برمیگردند.
- وقتی یک URL به یک میزبانِ متفاوت redirect میکند، WebFetch بهجای دنبالکردنش، یک نتیجهی متنی برمیگرداند که URLِ اصلی و هدفِ redirect را نام میبرد. بعد Claude با یک فراخوانیِ دومِ WebFetch، URLِ جدید را واکشی میکند.
در حالتهای دسترسیِ پیشفرض و acceptEdits، WebFetch اولین باری که به یک دامنهی جدید میرسد پرامپت میدهد، بهجز یک مجموعهی داخلیِ دامنههای مستنداتِ ازپیشتأییدشده که بدونِ پرامپت واکشی میشوند. برای اجازهدادن به دامنهای دیگر از پیش و بدونِ پرامپت، یک قاعدهی دسترسی مثلِ WebFetch(domain:example.com) اضافه کن. حالتهای دسترسیِ auto و bypassPermissions پرامپت را کاملاً رد میکنند.
یک قاعدهی صریحِ WebFetch(domain:...) در deny، ask یا allow بر مجموعهی ازپیشتأییدشده اولویت دارد، پس میتوانی یک دامنهی ازپیشتأییدشده را مسدود کنی یا برایش پرامپت بخواهی.
WebFetch یک هدرِ User-Agent تنظیم میکند که با Claude-User شروع میشود، و یک هدرِ Accept که Markdown را بر HTML ترجیح میدهد تا سرورهایی که از content negotiation پشتیبانی میکنند بتوانند مستقیم Markdown برگردانند. قواعدِ شبکهی Sandbox جداگانه پیکربندی میشوند، پس دامنهای که میخواهی یک فرایندِ sandboxشده به آن برسد باز هم به یک قاعدهی دسترسیِ sandboxِ صریح نیاز دارد.
رفتارِ ابزارِ WebSearch
Section titled “رفتارِ ابزارِ WebSearch”WebSearch یک query را در برابرِ بکاندِ web searchِ Anthropic اجرا میکند و عنوانها و URLهای نتایج را برمیگرداند. صفحههای نتیجه را واکشی نمیکند. برای خواندنِ صفحهای که Claude در نتایجِ جستوجو پیدا میکند، با WebFetch دنبالش میکند.
ابزار ممکن است تا هشت جستوجوی بکاند بهازای هر فراخوانی صادر کند، و پیش از برگرداندنِ نتایج، جستوجو را بهصورتِ داخلی پالایش کند. Claude میتواند نتایج را با allowed_domains دامنهبندی کند تا فقط میزبانهای مشخصی را شامل شود، یا با blocked_domains تا آنها را کنار بگذارد. این دو فهرست را نمیتوان در یک فراخوانیِ واحد ترکیب کرد.
بکاندِ جستوجو قابلِ پیکربندی نیست. برای جستوجو با یک ارائهدهندهی متفاوت، یک سرورِ MCP اضافه کن که یک ابزارِ جستوجو را افشا میکند.
قواعدِ دسترسیِ WebSearch هیچ specifierی نمیگیرند. یک ورودیِ خالیِ WebSearch در allow یا deny تنها شکلِ آن است.
رفتارِ ابزارِ Write
Section titled “رفتارِ ابزارِ Write”ابزارِ Write یک فایلِ جدید میسازد یا یک فایلِ موجود را با محتوای کاملِ دادهشده بازنویسی میکند. append یا merge نمیکند.
اگر مسیرِ هدف از قبل وجود داشته باشد، Claude باید آن فایل را پیش از بازنویسی حداقل یکبار در گفتوگوی فعلی خوانده باشد. یک Write روی فایلِ موجودِ خواندهنشده با خطا شکست میخورد. این قید برای فایلهای جدید اعمال نمیشود.
دیدنِ فایل با Bash هم این نیازمندی را تحتِ همان قواعدِ توصیفشده در رفتارِ ابزارِ Edit برآورده میکند.
برای تغییراتِ جزئی روی یک فایلِ موجود، Claude بهجای Write از Edit استفاده میکند.
بررسی اینکه کدام ابزارها در دسترساند
Section titled “بررسی اینکه کدام ابزارها در دسترساند”مجموعهی دقیقِ ابزارهایت به ارائهدهنده، پلتفرم و تنظیماتت بستگی دارد. برای بررسیِ اینکه در یک نشستِ در حالِ اجرا چه چیزی بارگذاری شده، مستقیم از Claude بپرس:
What tools do you have access to?Claude یک خلاصهی گفتوگویی میدهد. برای نامهای دقیقِ ابزارهای MCP، /mcp را اجرا کن.
همچنین ببین
Section titled “همچنین ببین”- سرورهای MCP: با اتصالِ سرورهای بیرونی، ابزارهای سفارشی اضافه کن
- دسترسیها: سیستمِ دسترسی، نحوِ قاعده، و الگوهای مخصوصِ هر ابزار
- سابایجنتها: دسترسیِ ابزار را برای سابایجنتها پیکربندی کن
- Hooks: دستورهای سفارشی را پیش یا پس از اجرای ابزار اجرا کن