Sandcastle: چند ایجنت موازی، بدون تداخل فایل
خلاصهٔ کاملتر
آدام رکیس تو بلاگش Sandcastle رو معرفی میکنه؛ ابزاری برای orchestration ایجنتهای هوش مصنوعی، یعنی اینکه چند تا ایجنت رو همزمان روی چند تا کار مختلف بذاری. به گفتهٔ نویسنده اگه چهار ترمینال باز کنی و تو هر کدوم یه ایجنت راه بندازی، تهش همهشون روی یه فایلسیستم و یه برنچ فعال کار میکنن و پای همدیگه رو لگد میکنن.
راهحل یه فیچر قدیمی گیته: worktree (یعنی چند دایرکتوری کاری جدا از یه ریپو، که هر کدوم برنچ خودشو داره). worktree بیشتر از ده ساله تو گیت هست ولی نویسنده اعتراف میکنه تا قبل از دوران ایجنتها اسمشم نشنیده بود. Sandcastle همینو خودکار میکنه، پس دیگه لازم نیست دستی worktree بسازی و جمعش کنی. سندباکس داکرش هم ایزولهسازی رو یه پله فراتر از دایرکتوری کاری گیت میبره.
نصب با npm انجام میشه و دستور init پوشهٔ .sandcastle و در صورت تمایل یه ایمیج داکر پیشفرض میسازه. تو فایل .env دو تا توکن میخواد: CLAUDE_CODE_OAUTH_TOKEN و GH_TOKEN که دومی برای ساختن ایشو و پولریکوئسته. سادهترین اجرا یه main.ts ـه که با یه فراخوانی run یه پرامپت رو جلو میبره:
await run({
agent: claudeCode("claude-opus-4-6"),
sandbox: docker(),
promptFile: "./.sandcastle/prompt.md",
});قسمت جالب از جایی شروع میشه که همین تابع رو تو یه اسکریپت بذاری. نویسنده یه اسکریپت نوشته که با gh issue list ایشوهای باز رو میگیره، اونایی که ایشوی باز دیگهای بلاکشون کرده رو کنار میذاره، با @inquirer/prompts یه چکباکس تو ترمینال نشون میده و برای هر ایشوی انتخابشده یه ایجنت جدا بالا میآره. هر ایجنت هم برنچ خودشو میگیره:
branchStrategy: {
type: "branch",
branch: `agent/gh-issue-${issueId}`,
baseBranch: "main",
},نویسنده تأکید میکنه Sandcastle عمداً یه primitive سطحپایینه، نه ابزاری که از جعبه معجزه کنه؛ کارهای سطحپایین رو خوب انجام میده و ورکفلو رو خودت باید بچینی. جمعبندیش اینه که وقتی اجرای یه پرامپت به یه فراخوانی تابع تبدیل بشه، اجرای موازی چند پرامپت و ساختن ورکفلوی دلخواه دیگه راحته.
نکات کلیدی:
- پکیج با نام @ai-hero/sandcastle روی npm منتشر شده و دستور init اسکلت پوشهٔ .sandcastle رو میسازه
- هر ایجنت تو یه worktree جدا و در صورت انتخاب، داخل کانتینر داکر اجرا میشه
- فایل .env به دو توکن نیاز داره: CLAUDE_CODE_OAUTH_TOKEN و GH_TOKEN
- توکن گیتهاب حداقل به دسترسی خواندن و نوشتن روی contents، issues و pull requests احتیاج داره
- Sandcastle یه primitive سطحپایینه، نه ورکفلوی آمادهٔ حاضری




