Süni İntellektDƏRC OLUNUB YENİLƏNİB 6 DƏQ OXUNUŞ

Claude Code + Excalidraw: səhv promptda idi

Claude Code və Excalidraw MCP serveri vasitəsilə birləşir, bundan sonra agent canlı canvas üzərində çəkə, çəkdiyinə baxa və düzəldə bilir. Qurulum iki Docker əmri və təxminən beş dəqiqədir, bu vaxtın çoxu isə yalnız VS Code quraşdırmasında qlobal claude faylının mövcud olmadığını öyrənməyə gedir. Çətini sonra başlayır: ilk diaqramımda on bir modul, bütün canvas boyu kəsişən iyirmi ox və başdan-sona izləyə biləcəyin bir yol belə yox idi. Alət qaydasında idi. Promptum nəyi daxil etməyi deyir, necə görünməli olduğu barədə susurdu, ona görə agent ona verdiyim yeganə məsələni həll etdi. Bu yazıda tam qurulum, bağlantının həqiqətən işlədiyini göstərən yoxlamalar və artıq hər dəfə yapışdırdığım prompt var.

TL;DR

  • İki Docker əmri Claude Code-u canlı Excalidraw canvas-ına qoşur. Nə Excalidraw+ hesabı, nə API açarı. Quraşdırma tələsi odur ki, yalnız VS Code variantında qlobal claude faylı yoxdur.
  • claude mcp list-in connected yazması sübut deyil. Canvas-ın 3000 portunda cavab verdiyini və işləyən sessiyanın alətləri gördüyünü yoxla, çünki alət siyahısı sessiya başlayanda yüklənir.
  • İlk diaqramım düzgün və oxunmaz idi. Üç düzülüş qaydası işi həll etdi, onları saxlayan tam prompt isə bu yazıdadır.

Excalidraw MCP adlanan iki şey var. Düzgününü seç.

Buna hələ heç nə quraşdırmamışdan büdrəyirlər, çünki iki layihə adı bölüşür və ayrı problemləri həll edir.

Rəsmi Excalidraw+ MCP chat widget-dir. Prompt yazırsan, diaqram söhbətin içinə axır, modelin bir neçə aləti olur. Excalidraw+ hesabından API açarı tələb edir. Söhbətdə birdəfəlik şəkil üçün yaxşıdır.

Community serveri, yctimlin/mcp_excalidraw, dəzgahdır. Daimi lokal canvas, elementləri tək-tək yaratmaq, oxumaq, yeniləmək və silmək üçün 26 alət və agentin öz nəticəsinə baxması üçün screenshot aləti. MIT lisenziyalı, öz maşınında Docker və ya Node üzərində işləyir, nə hesab, nə açar.

Kodlaşdırma agentinə yalnız ikincisi lazımdır, səbəb də məhz screenshot alətidir. Öz canvas-ını görməyən agent kor-koranə çəkir və nə çıxırsa sənə verir. Baxa bilən agent isə öz üst-üstə düşmələrini sən görməmişdən tutur. Yazının qalanı community serveri haqqındadır.

Claude Code-u Excalidraw-a qoşuruq

İki konteyner iki ayrı iş görür və onları qarışdırmaq ən çox rast gəlinən qurulum səhvidir. Canvas serveri lövhənin özüdür: veb interfeys, REST API və websocket sinxronizasiyası, daimi işləyir. MCP serveri Claude Code-un danışdığı körpüdür və birdəfəlikdir: sessiya üçün qalxır və hər dəyişikliyi canvas-a göndərir.

Əvvəlcə canvas:

docker run -d -p 3000:3000 --name excalidraw-canvas \
  ghcr.io/yctimlin/mcp_excalidraw-canvas:latest

http://localhost:3000 ünvanını aç, orada boş Excalidraw lövhəsi görünməlidir. Həmin sekmeni açıq saxla, sonra lazım olacaq.

İndi körpünü Claude Code-da qeydiyyata alırıq:

claude mcp add excalidraw -- docker run -i --rm \
  -e EXPRESS_SERVER_URL=http://host.docker.internal:3000 \
  -e ENABLE_CANVAS_SYNC=true \
  ghcr.io/yctimlin/mcp_excalidraw:latest

Agentin işinin yaddaşda qalıb yox olmaq əvəzinə sənin lövhəndə görünməsini məhz ENABLE_CANVAS_SYNC=true təmin edir.

Mənə iyirmi dəqiqəyə başa gələn tələ. Claude Code-u VS Code genişlənməsi kimi quraşdırıb CLI-ni ayrıca quraşdırmamısansa, ikinci əmr hər shell-də sınır:

/usr/bin/bash: line 1: claude: command not found
claude : The term 'claude' is not recognized as the name of a cmdlet...

Qlobal fayl yoxdur. CLI genişlənmənin içindədir, təxminən belə bir yolda: ...\extensions\anthropic.claude-code-2.1.226-win32-x64\resources\native-binary\claude.exe. Tam yol vasitəsilə claude mcp add dərhal işləyir.

Üzərinə nəsə qurmadan əvvəl iki məqam. Bu yolda versiya nömrəsi var, ona görə genişlənmənin növbəti yeniləməsi skript etdiyin hər şeyi sındıracaq - repozitoriyaya gedirsə, CLI-ni normal quraşdır. Və claude mcp add defolt olaraq local scope-a yazır: konfiq yalnız həmin layihə üçün ~/.claude.json-a düşür, --scope project verən və komandanın görəcəyi .mcp.json-a yox..

MCP serverinin həqiqətən qoşulduğunu haradan bilirsən?

"Added successfully" yoxlama deyil. Bir-birindən asılı olmayan üç şey var və hər biri doğru ya yanlış ola bilər. Məndə ikisi yaşıl yanırdı, üçüncüsü isə səssizcə işləmirdi.

Yoxlama

Əmr

Nəyi sübut edir

Host qeydiyyata aldı

claude mcp list

Claude Code serverin varlığını bilir və işə sala bilir

Canvas sağdır

localhost:3000-i aç

Serverin sinxronlaşdığı lövhə həqiqətən cavab verir

Sessiyan istifadə edə bilir

sessiya daxilində /mcp

Alətlər elə indi, bu söhbətdə çağırıla bilir

Vaxtı üçüncüdə itirdim. CLI connected deyirdi, canvas cavab verirdi, işləyən sessiyada /mcp isə dörd yox, üç server göstərirdi. Heç nə xarab deyildi. Sessiya alət siyahısını başlanğıcda yükləyir, ona görə sonradan əlavə edilən server restart-a qədər görünməz qalır. Söhbətin ortasındasansa və konteksti itirmək istəmirsənsə, cari işi bitir və çəkməyə başlamazdan əvvəl restart et.

Tanımağa dəyən daha bir nasazlıq, çünki server problemi kimi görünür, amma deyil. Sessiyanın ortasında screenshot-lar 30 saniyədə timeout verməyə başladı, element sayı isə yenilənmədi. Server qaydasında idi, data yerində idi: brauzer sekmesi websocket bağlantısını səssizcə itirmişdi. Bağlı etiketlərin render olunması və şəkil ixracı frontend-də baş verir, ona görə həmin sekme susanda hər ikisi dayanır.

Simptom

Nəyə oxşayır

Əslində nədir

Screenshot 30 saniyədə timeout verir

MCP serveri donubMCP-сервер

Brauzer sekmesi bağlantını itirib

Element sayı yenilənmir

Yazılar keçmir

Eyni sekme, eyni səbəb

Canvas API isə data qaytarır

Heç nə uyğun gəlmir

Server sağlamdır, frontend yox

localhost:3000-i yenidən yükləmək hər ikisini dərhal həll edir. Hansı tərəfin sındığını müəyyən et, sonra düzəlt.

Nə istədim və nə aldım

backend-architecture.md onsuz da repozitoriyada vardı. Asılılıqları ilə on bir modul: auth, çoxvalyutalılıq, e-commerce, geri qaytarma və dəyişikliklər, təhlükəsizlik, ödənişlər, anbar, bildirişlər, hesabat, admin paneli. Əksər komandada olan və heç kimin təkrar oxumadığı planlaşdırma sənədi.

Ona görə açıq-aydın olanı istədim:

Read backend-architecture.md and draw an architecture diagram of this backend,
showing the modules and how they connect.

Gələnə bax. Bütün modullar yerindədir. Bütün asılılıqlar düzgündür. Auth girişi bağlayır, Refunds E-commerce-dən oxuyur, hesabat xətləri tək istiqamətdə gedir. Sistemin təsviri kimi dəqiqdir.

İndi isə onunla bir suala cavab verməyə çalış. Geri qaytarma gələndə nə baş verir? Göz 4. Refunds & Amendments-dən başlayır, üfüqi oxla 3. E-commerce-ə keçir, sonra aşağıda haradasa 2. Multi-currency-ni axtarır, sonra sağda 7. Payments-ə qayıdır, bu vaxt üç narıncı punktir xətt həmin yolu kəsir, boz hesabat xətləri isə küncə gedərkən hər şeyin üstündən keçir. authorizedapproves bir ifadə kimi oxunacaq qədər yaxın dayanıb.

Səhv yoxdur. Oxumaq mümkün deyil.

Bu diaqramda hər şey düzgündür. İndi geri qaytarma gələndə nə baş verdiyini izləməyə çalış.

Süni intellekt arxitektura diaqramlarını niyə qarışıq çəkir?

Çünki prompt məzmunu təsvir edir, forma haqqında heç nə demirdi, agent də yalnız soruşulan şeyi optimallaşdırdı: hər şeyi daxil etmək və düzgün birləşdirmək. Bunu qüsursuz etdi. Oxunaqlılıq tapşırıqda ümumiyyətlə yox idi.

Bir müddət simptomları düzəltdim: bu etiketi tərpət, o birini qısalt, qutunu sürüşdür. Bir az yaxşılaşdı və oxunmaz qaldı, bu isə səhv məsələ üzərində işlədiyinin dəqiq əlamətidir.

Vəziyyəti təsvir etmək yox, göstərmək dəyişdi. İki referans diaqramı şəkil kimi verdim: Netflix arxitektura xəritəsi və gateway ilə qruplaşdırılmış domen konteynerləri olan domen yönümlü backend sxemi. Bir keçiddə düzülüş yerinə düşdü, hər iki referansın arxasındakı prinsip isə daha yaxşı marşrutlaşdırma deyildi:

Təmiz diaqramlar uzun oxları yaxşı marşrutlaşdırmır. Onların uzun oxu demək olar ki, yoxdur.

Oxumaqdan zövq aldığın istənilən arxitektura diaqramında oxları say. İstinad backend xəritəsində iyirmi beş qutuya səkkiz ox düşürdü. Məndə on birə iyirmi. Bütün fərq bu nisbətdədir və üç qaydadan çıxır.

Yuvalanma oxların yerini tutur. commerce domain adlı konteynerin içindəki qutu onsuz da kommersiyaya aid olduğunu deyir. Eyni şeyi deyən ox canvas boyu bir xəttə başa gəlir və heç nə qazandırmır.

Hər əlaqələndirici düz bucaqlıdır və qısa qalır. Diaqonal yoxdur. Diaqonal səhifənin dirsəkdən daha çox hissəsini kəsir, deməli daha çox şeylə toqquşur.

Hər zolaqda bir axın. Hər uçdan-uca yola öz üfüqi zolağını ver. Ayrı zolaqlardakı axınlar nə qədər əlavə etsən də struktur olaraq toqquşa bilmir. Miqyaslanan qayda budur: ilk ikisi bugünkü diaqramı təmizləyir, bu isə on ikinci modul gələndə də təmiz saxlayır.

Köçürə biləcəyin prompt

Agentini arxitektura sənədinə yönəlt və bunu yapışdır. Üç qayda artıq içindədir ki, sən onları mənim kimi kəşf etməli olmayasan.

Başqa dildə işləsən belə promptu ingiliscə saxla - agent onu daha yaxşı emal edir, modul adların da yəqin onsuz ingiliscədir.

Read <YOUR-ARCHITECTURE-DOC.md> and draw an architecture diagram of this system
on the Excalidraw canvas.

LAYOUT RULES - these matter more than completeness:

1. Group before you connect. Put related modules inside labelled containers
   (for example: commerce domain, money domain, platform domain). Nesting a box
   inside a container already expresses that it belongs there, so do not also
   draw an arrow saying the same thing. Cross-cutting concerns like security
   wrap everything as an outer dashed boundary rather than connecting to each
   module individually.

2. Every connector is orthogonal and short. Right angles only, no diagonals.
   If two things need a long connector, they are probably in the wrong place -
   move them closer instead of drawing a longer line.

3. One flow per lane. After the system overview, add a separate horizontal lane
   for each end-to-end path (checkout, refund, sign-in, admin action, webhook,
   reporting). Each lane reads left to right as one story. Flows in separate
   lanes cannot collide with each other.

4. Annotate every step. Under each module box in a flow lane, add a short note
   saying what that module does IN THAT FLOW - not what the module is. Write
   "locks the exchange rate at purchase", not "handles currency".

5. Nothing overlaps. No two boxes, no label on top of another label, no
   connector passing through a box, no panel straddling the edge of a container.

BEFORE YOU START: call read_diagram_guide and follow its conventions.

WHEN YOU ARE DONE: take a screenshot of the canvas and look at it. Check for
overlapping labels, connectors crossing each other, and any path a reader
cannot follow from start to finish. Fix what you find, then show me the result.

Buradakı iki sətir qalanlarından çox iş görür və hər ikisini atmaq asandır.

read_diagram_guide serverin öz stil bələdçisini qaytaran alətidir: hex dəyərləri ilə palitra, minimum forma ölçüləri, ox bağlama qaydaları, anti-pattern siyahısı. Pulsuz keyfiyyətdir, amma sən istəməsən agent onu çağırmayacaq.

Screenshot təlimatı ona görə vacibdir ki, agent öz canvas-ını görə bilir. Ona baxdır. Mənimki gözümdən qaçacaq iki üst-üstə düşməni tutdu və mənə heç nə göstərməmişdən əvvəl düzəltdi.

İlk nəticə hələ də çox sıxdırsa, işə yarayan davamı marşrutlaşdırma xahişi deyil, həcm xahişidir: bunu sistem icmalına və ayrı axın diaqramlarına böl.

What is this duo actually good for?

Eyni markdown faylı, eyni modullar, eyni alət. Bir diaqram yerinə iki.

Sistem icmalı hörümçək torundan çıxdı. Punktir Security sərhədi backend-i əhatə edir, çünki təhlükəsizlik kəsişən məsələdir və ondan on bir ox çəkmək həmişə səhv şəkil idi. Auth giriş sütununda dayanır. Üç konteyner - commerce domain, money domain, platform domain - öz modullarını saxlayır, mənsubiyyət isə bir ox belə xərcləmir. Xarici ödəniş provayderləri təhlükəsizlik sərhədinin kənarındadır, tam yerində, və içəri bir düzbucaqlı oxla girir.

Sonra altı axın zolağı, hər uçdan-uca yola bir dənə: baxış və checkout, geri qaytarma və dəyişiklik, MFA ilə giriş, işçi əməliyyatı, provayder webhook-u, hesabat. Hər biri soldan sağa bir hekayə kimi oxunur.

Addımların altındakı qeydlər gözlədiyimdən vacib çıxdı. 2. Multi-currency yazılmış qutu sənə yeni heç nə demir. Eyni qutu geri qaytarma zolağında, altında alış zamanı götürülmüş məzənnə snapshot-unu yenidən istifadə edir qeydi ilə, artıq görünən dizayn qərarıdır. Həmin zolağı oxuyan hər kəs indi bilir ki, biz bugünkü deyil, ilkin məzənnə ilə qaytarırıq. Belə şeylər adətən bir mühəndisin başında yaşayır, o məzuniyyətə çıxan həftəyə qədər.

Sistemin şəkli ilə sistem haqqında sənəd arasındakı fərq elə budur.

Eyni on bir modul. Security backend-i əhatə edir, domenlər bir-birinə aid olanı qruplaşdırır, oxlar qısadır.
Geri qaytarma yolu, bir baxışda oxunur. İlk diaqramın cavab verə bilmədiyi sual məhz bu idi.

Bu tandem əslində nəyə lazımdır?

Üç şey, və yalnız birini gözləyirdim.

Onboarding. Yeni backend mühəndisi geri qaytarma yolunu repozitoriya boyu səpələnmiş fayllardan yığmaq əvəzinə bir dəqiqəyə izləyir. Açıq-aydın, real və ən böyüyü deyil.

Dizayn müzakirəsi. Məni təəccübləndirən bu oldu. Geri qaytarma zolağı başdan-sona düzüləndə addımların altındakı qeydlər heç vaxt dilə gətirmədiyim bağlılığı aydın etdi: geri qaytarmalar alış zamanı götürülən məzənnə snapshot-undan asılıdır, deməli həmin snapshot geri qaytarma pəncərəsi açıq qaldığı müddətdə yaşamalıdır. Sistemdə bu həmişə belə idi. Sadəcə ondan asılı olan şeyin yanında yazılmış halda heç görməmişdim. Səni öz dizaynınla mübahisə etməyə vadar edən diaqram, onu sənədləşdirəndən dəyərlidir.

Backend mühəndisi olmayanlarla danışmaq. Frontend, məhsul, imza atan adam. Əl ilə çəkilmiş üslub burada real iş görür: cilalanmış korporativ diaqram hər qutunun dəqiqliyinə irad tutmağa çağırır, eskiz isə dizayn haqqında söhbətə. Eyni məlumat, tamamilə fərqli görüş.

Dürüst qiymət odur ki, ilk cəhd uğursuz olacaq və on dəqiqə yox, bir axşam ayırmaq lazımdır. Əvəzində .excalidraw faylı kodun yanında yaşayır və agent onu yeniləyə bilir, əlimlə çəkdiyim heç bir diaqram haqqında bunu deyə bilmərəm. Onlar çəkdiyim gün dəqiq idi və elə həmin gündən köhnəlməyə başlayırdı.

Növbəti sınamaq istədiyim: main-ə hər merge-də diaqramı CI-da yenidən yaratmaq və commit olunmuş versiya ilə diff etmək ki, arxitektura sənədi arxitekturadan səssizcə uzaqlaşa bilməsin.

Sözlə təsvir etdim və heç kimin oxuya bilmədiyi diaqram aldım. İki nümunə göstərdim və düzülüşü bir keçiddə aldım.

Ogtay Iskandarov

Dizayner və fullstack tərtibatçı, Bakıda tək nəfərlik klauzzdcode studiyasını aparıram. 2023-cü ildən frilansdayam: məhsulları Figma-dan proda qədər özüm çıxarıram, prodla təmasdan sağ çıxanları isə yazıya salıram.

HEKAYƏ →

FAQ

Claude Code-u Excalidraw-a necə qoşmaq olar?

Canvas serverini Docker-də 3000 portunda işə sal, sonra claude mcp add excalidraw ilə körpünü qeydiyyata al və ENABLE_CANVAS_SYNC=true ver ki, agentin işi lövhəndə görünsün. yctimlin/mcp_excalidraw istifadə et, hesab lazım deyil. claude tapılmırsa, CLI VS Code genişlənməsinin içindədir.

Bunun üçün Excalidraw+ abunəliyi lazımdırmı?

Xeyr. Community serveri yctimlin/mcp_excalidraw MIT lisenziyalıdır və tamamilə sənin maşınında Docker və ya Node üzərində işləyir, nə hesab, nə API açarı tələb edir. Excalidraw-un rəsmi endpoint-inə açar lazımdır, amma o, dəzgah yox, chat widget-dir və bu iş axını üçün uyğun alət deyil.

Əlavə etdikdən sonra Claude Code MCP serverini niyə görmür?

Çünki sessiya alət siyahısını başlanğıcda yükləyir, sessiyanın ortasında əlavə edilən server isə restart-a qədər görünməz qalır. Sessiya daxilində /mcp işlət və nəyin həqiqətən çağırıla bildiyinə bax, say azdırsa restart et. claude mcp list-in connected yazması yalnız hostun qeydiyyatını sübut edir, cari söhbətin ondan istifadə edə bildiyini yox.

Süni intellektə arxitektura diaqramı üçün promptu necə yazmalı?

Ona təkcə məzmun yox, düzülüş qaydaları ver. Modulları oxla birləşdirmək əvəzinə adlandırılmış konteynerlərdə qruplaşdır, hər əlaqələndiricini düz bucaqda saxla, hər uçdan-uca axına öz üfüqi zolağını ver və hər addımın altında modulun məhz həmin axında nə etdiyini yaz. Sonra canvas-ın screenshot-unu çəkib tapdığını düzəltməyi tapşır. Tam prompt bu yazıdadır.

Bu, planlaşdırma sənədi yox, real kod bazasında işləyəcəkmi?

Bəli, üstəlik agenti markdown faylına yox, koda yönəltmək adətən daha dürüst diaqram verir, çünki nəyin nəzərdə tutulduğunu deyil, nəyin olduğunu çəkir. Əvəzində real repozitoriyada detal çox olur, ona görə əvvəlcə sistem icmalını istə, axın zolaqlarını isə ayrıca yarat, hər şeyi bir canvas-a sığdırmağı gözləmə.