ساختن یه ایجنت کدنویس فقط یه LLM، یه حلقه و کافی توکنه
خلاصهٔ کاملتر
نویسنده با یه ادعای صریح شروع میکنه: ساختن یه ایجنت کدنویسِ کامل و کارراهانداز اونقدرها که به نظر میاد سخت نیست. وقتی میبینی یه ایجنت فایل ویرایش میکنه، دستور اجرا میکنه، از خطاها بیرون میخزه و استراتژیهای مختلف رو امتحان میکنه، حس میکنی حتماً یه راز پشتشه. به گفتهٔ نویسنده رازی نیست: فقط یه LLM ئه، یه حلقه (loop) و کافی توکن. بقیهش، چیزی که Amp رو اینقدر جذاب میکنه، زحمت و elbow grease ئه.
نکتهٔ اصلی مقاله اینه که یه ایجنت کوچیک ولی بهشدت چشمگیر حتی به اون زحمت هم نیاز نداره؛ میتونی تو کمتر از ۴۰۰ خط کد بسازیش که بیشترش boilerplate ئه. نویسنده بهشدت اصرار میکنه که خواننده همراهش کد بزنه، نه فقط بخونه؛ میخواد آدم حس کنه چقدر کد کمیه و با چشم خودش تو ترمینال خودش ببیندش.
برای شروع فقط دو چیز لازمه: زبان Go و یه کلید API از Anthropic که بهعنوان متغیر محیطی ANTHROPIC_API_KEY ست میشه. بعد با چند دستور ساده یه پروژهٔ Go راه میندازه و یه اسکلت اولیه تو main.go میذاره: یه client که با anthropic.NewClient() ساخته میشه، یه scanner برای گرفتن پیام کاربر از ورودی استاندارد، و یه ساختار Agent که client و تابع گرفتن پیام کاربر رو نگه میداره و یه متد Run داره.
func main() {
client := anthropic.NewClient()
scanner := bufio.NewScanner(os.Stdin)
getUserMessage := func() (string, bool) {
if !scanner.Scan() {
return "", false
}
return scanner.Text(), true
}
agent := NewAgent(&client, getUserMessage)
agent.Run(context.TODO())
}به گفتهٔ نویسنده، ایدهٔ کلی همینه: یه حلقه که پیام کاربر رو میگیره، به مدل میفرسته، و بعد به مدل اجازه میده از طریق toolها با محیط (فایلها و دستورها) تعامل کنه و نتیجه رو دوباره به حلقه برگردونه. همین چرخهٔ ساده، وقتی با toolهای درست و کافی توکن ترکیب بشه، همون رفتار «اوه، این که یه game changer ئه» رو تولید میکنه که خیلیها فکر میکنن پشتش جادوئه. پیام اصلی مقاله دقیقاً همینه: ساختار پایهای یه ایجنت کدنویس رمز و راز نداره و کاملاً در دسترسه.
نکات کلیدی:
- یه ایجنت کدنویس در اصل فقط یه LLM، یه حلقه و کافی توکنه
- کل چیز رو میشه تو کمتر از ۴۰۰ خط Go ساخت که بیشترش boilerplate ئه
- فقط Go و یه کلید API از Anthropic لازمه
- حلقه پیام کاربر رو میگیره، به مدل میده و اجازه میده مدل با toolها با محیط تعامل کنه




