درس ۹ از ۱۱

Module 9

عنوان اصلی: Anthropic Apps: Claude Code & Computer Use هدف یادگیری: شناخت دو محصول رسمی Anthropic که روی Messages API ساخته شده‌اند — Claude Code (CLI agentic coding) و Computer Use (کنترل GUI). مفاهیم کلیدی: claude CLI, CLAUDE.md, subagent, skill, slash command, plan mode, Computer Use, computer_20251124, bash_20250124, agent loop.

۹.۱ Claude Code — راه‌اندازی

هدف: نصب CLI، authentication و تنظیم memory در سطح پروژه.

Claude Code، CLI رسمی Anthropic برای agentic coding است. در یک ترمینال اجرا می‌شود، repo شما را می‌خواند/می‌نویسد، command اجرا می‌کند، و از MCP server ها استفاده می‌کند.

نصب و authentication.

npm install -g @anthropic-ai/claude-code
claude /login                       # one-time browser auth
cd ~/my-repo
claude                              # interactive session
claude -p "Explain this codebase"   # one-shot

سلسله مراتب memory.

  • ~/.claude/CLAUDE.md — memory سطح کاربر (در همه‌ی پروژه‌ها فعال).
  • <repo>/CLAUDE.md — memory سطح پروژه (فقط در آن repo).
  • <repo>/.claude/settings.json — permissions و hooks.
  • ~/.claude/skills/<name>/SKILL.md — skill های شخصی شما.

اولویت. پروژه همیشه برنده‌ی user است. اگر در project CLAUDE.md نوشته «از pytest -q استفاده کن» و در user CLAUDE.md نوشته «از pytest -v استفاده کن»، در آن پروژه -q اعمال می‌شود.

نمونه‌ی CLAUDE.md.

<!-- ~/my-repo/CLAUDE.md -->
# Project: Pippa Receipts API
- Stack: FastAPI + Postgres
- Run tests: `pytest -q`
- Deploy: `make deploy STAGE=prod`

اشتباهات رایج.

  • mix کردن user و project CLAUDE.md → پروژه همیشه برنده.
  • commit کردن ~/.claude/ → user-scoped است، نباید در repo باشد.
  • روشن کردن بی‌پروای bypassPermissions → خطر امنیتی جدی.

برای جزئیات کامل Claude Code، فصل ۳ این جزوه را ببینید.

منابع: Claude Code documentation.

۹.۲ Claude Code در عمل

هدف: یک loop واقعی توسعه با Claude Code: explore → change → test → commit.

Claude Code یک حلقه‌ی کدنویسی واقعی را می‌چرخاند: فایل‌ها را می‌خواند، grep می‌کند، edit می‌کند، تست‌ها را با Bash اجرا می‌کند، روی failure ها iterate می‌کند، و commit می‌زند. بهترین نتایج وقتی به دست می‌آید که شما معیارهای موفقیت را از پیش بگویید: «همه‌ی pytest cases باید pass شوند، dependency جدید اضافه نشود، coverage زیر ۸۰٪ نرود.»

$ claude
> Read pyproject.toml and the tests/ directory. Add a /healthz endpoint
> in app/main.py that returns {"status": "ok"}. Then run pytest and
> commit with a conventional-commits message.

این یک agent خودگردان است، نه autocomplete. اگر مثل autocomplete با آن کار کنید، کندتر از خودتان عمل می‌کند. اگر مثل یک junior engineer با او کار کنید (چیستی task، چیستی acceptance criteria، چه ابزارهایی مجاز است)، شگفت‌زده می‌شوید.

اشتباهات رایج.

  • اجازه‌ی auto-commit بدون review (در حالت Guardian-style) → گاهی کد نیمه‌خراب commit می‌شود.
  • pin نکردن model snapshot در ~/.claude/settings.json.
  • نگاه کردن به آن مثل autocomplete به‌جای agent.

منابع: Claude Code documentation.

۹.۳ MCP enhancements و Computer Use

هدف: لایه‌بندی MCP server ها و tool computer use روی Claude Code.

MCP در Claude Code. Claude Code فایل .mcp.json (یا تنظیمات MCP در settings.json خودش) را می‌خواند تا MCP server ها را بارگذاری کند. در لحظه، agent به GitHub، Slack، DB، یا tool های in-house شما دسترسی پیدا می‌کند.

Computer Use. یک tool beta است که به Claude اجازه می‌دهد screenshot بگیرد، کلیک کند، تایپ کند و scroll کند، داخل یک VM sandbox شده. نسخه‌ی feature برای Opus 4.7 / 4.6 و Sonnet 4.6: computer_20251124. برای مدل‌های قدیمی‌تر: computer_20250124. Anthropic یک Docker reference implementation می‌دهد — همیشه از آن استفاده کنید، نه روی ماشین خودتان.

معماری. agent loop دقیقاً همان tool use loop است؛ فقط در یک VM لینوکس VNC شده اجرا می‌شود. یک harness Python، action هایی مثل {"action": "left_click", "coordinate": [500, 300]} را به command های xdotool ترجمه می‌کند.

from anthropic import Anthropic
client = Anthropic()

tools = [
    {"type": "computer_20251124", "name": "computer",
     "display_width_px": 1024, "display_height_px": 768},
    {"type": "text_editor_20250728", "name": "str_replace_based_edit_tool"},
    {"type": "bash_20250124", "name": "bash"},
]

messages = [{"role": "user", "content": "Save a picture of a cat to my desktop."}]
while True:
    r = client.beta.messages.create(
        model="claude-opus-4-8", max_tokens=4096,
        tools=tools, messages=messages,
        betas=["computer-use-2025-11-24"],
    )
    messages.append({"role": "assistant", "content": r.content})
    tool_uses = [b for b in r.content if b.type == "tool_use"]
    if not tool_uses: break
    results = [
        {"type": "tool_result", "tool_use_id": b.id, "content": run_in_vm(b.name, b.input)}
        for b in tool_uses
    ]
    messages.append({"role": "user", "content": results})

ملاحظات امنیتی جدی.

  • هرگز Computer Use را روی ماشین host اجرا نکنید. همیشه Docker یا VM. اگر prompt injection اتفاق بیفتد، یک agent با دسترسی به desktop شما می‌تواند کارهای جبران‌ناپذیر بکند.
  • credentials را از environment agent جدا کنید.
  • برای action های consequential (delete، transfer مالی، send email) human-in-the-loop بگذارید.
  • Anthropic یک prompt-injection classifier hint برمی‌گرداند — به آن دقت کنید.

Coordinate scaling. برای display های بزرگ‌تر از ۱۵۶۸ px در لبه‌ی بزرگ، coordinate ها در فضای resize شده‌ی Claude گزارش می‌شوند. قبل از اجرای کلیک، آنها را به فضای اصلی scale کنید.

اشتباهات رایج.

  • اجرای computer use روی host → خطر امنیتی بزرگ.
  • skip کردن coordinate scaling → کلیک‌ها به‌جای هدف اشتباه می‌خورند.
  • نادیده گرفتن classifier warnings → screenshot ها ممکن است پیام مخرب داشته باشند.

منابع: Computer use · Computer use reference impl.