# OpenHands Agent System Prompt ๆžถๆž„่ฏดๆ˜Ž ## ๐Ÿ—๏ธ ๆ•ดไฝ“ๆžถๆž„ ``` โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ OpenHands Agent โ”‚ โ”‚ โ”‚ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ โ”‚ โ”‚ System Prompt (Jinja2 ๆจกๆฟ) โ”‚ โ”‚ โ”‚ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ Agent ็š„่ง’่‰ฒๅฎšไน‰ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ ๆ ธๅฟƒ่กŒไธบๅŽŸๅˆ™ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ ๅทฅไฝœๆต็จ‹ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ ็บฆๆŸๆกไปถ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ {% if custom_instructions %} โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ {{ custom_instructions }} โ† ๅ˜้‡ๆณจๅ…ฅ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ {% endif %} โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ”‚ โ”‚ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ โ”‚ โ”‚ Tools โ”‚ โ”‚ โ”‚ โ”‚ โ€ข TerminalTool - ๆ‰ง่กŒๅ‘ฝไปค โ”‚ โ”‚ โ”‚ โ”‚ โ€ข FileEditorTool - ็ผ–่พ‘ๆ–‡ไปถ โ”‚ โ”‚ โ”‚ โ”‚ โ€ข TaskTrackerTool - ่ทŸ่ธชไปปๅŠก โ”‚ โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ”‚ โ”‚ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ โ”‚ โ”‚ LLM โ”‚ โ”‚ โ”‚ โ”‚ Model: vertex_ai/gemini-2.5-flash โ”‚ โ”‚ โ”‚ โ”‚ API Key: *** โ”‚ โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ–ผ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ Conversation โ”‚ โ”‚ (ๅฏน่ฏ็ฎก็†ๅ™จ) โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ–ผ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ Workspace โ”‚ โ”‚ (ๅทฅไฝœ็›ฎๅฝ•) โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ ``` ## ๐Ÿ“Š ่‡ชๅฎšไน‰ System Prompt ็š„ไธ‰ๅฑ‚ๆžถๆž„ ``` โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ ็ฌฌ 1 ๅฑ‚: Agent ๅˆๅง‹ๅŒ–ๅ‚ๆ•ฐ โ”‚ โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”‚ โ”‚ โ”‚ agent = Agent( โ”‚ โ”‚ llm=llm, โ”‚ โ”‚ tools=tools, โ”‚ โ”‚ system_prompt_filename="custom.j2", โ† ๆŒ‡ๅฎšๆจกๆฟๆ–‡ไปถ โ”‚ โ”‚ system_prompt_kwargs={...} โ† ไผ ้€’ๅ˜้‡ โ”‚ โ”‚ ) โ”‚ โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ–ผ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ ็ฌฌ 2 ๅฑ‚: Jinja2 ๆจกๆฟๆ–‡ไปถ (custom.j2) โ”‚ โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”‚ โ”‚ โ”‚ You are an AI agent... โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ * Your primary role is... โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ {% if custom_instructions %} โ† ๆกไปถๅˆคๆ–ญ โ”‚ โ”‚ โ”‚ โ”‚ {{ custom_instructions }} โ† ๅ˜้‡ๅผ•็”จ โ”‚ โ”‚ โ”‚ โ”‚ {% endif %} โ”‚ โ”‚ โ”‚ โ”‚ {% if project_name %} โ”‚ โ”‚ โ”‚ โ”‚ Project: {{ project_name }} โ”‚ โ”‚ Task: {{ task_type }} โ”‚ โ”‚ โ”‚ โ”‚ {% endif %} โ”‚ โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ–ผ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ ็ฌฌ 3 ๅฑ‚: ๆธฒๆŸ“ๅŽ็š„ๆœ€็ปˆ Prompt (ๅ‘้€็ป™ LLM) โ”‚ โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”‚ โ”‚ โ”‚ You are an AI agent... โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ * Your primary role is... โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ Focus on code evolution and optimization... โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ Project: ShinkaEvolve โ”‚ โ”‚ Task: Code Evolution โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ–ผ ๅ‘้€็ป™ LLM ๆ‰ง่กŒ ``` ## ๐Ÿ”„ ๆ•ฐๆฎๆต็จ‹ๅ›พ ``` โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ User Message โ”‚ "่ฏทไผ˜ๅŒ–่ฟ™ๆฎตไปฃ็ " โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ–ผ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ Conversation โ”‚ โ”‚ โ€ข ็ฎก็†ๅฏน่ฏๅކๅฒ โ”‚ โ”‚ โ€ข ๆ ผๅผๅŒ–็”จๆˆทๆถˆๆฏ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ–ผ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ Agent โ”‚ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ โ”‚ โ”‚ System Prompt (่‡ชๅฎšไน‰็š„ๆผ”ๅŒ– prompt) โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”‚ โ”‚ โ”‚ User Message: "่ฏทไผ˜ๅŒ–่ฟ™ๆฎตไปฃ็ " โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”‚ โ”‚ โ”‚ Conversation History: [...] โ”‚ โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ–ผ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ LLM โ”‚ โ”‚ โ€ข ็†่งฃๆŒ‡ไปคๅ’ŒไธŠไธ‹ๆ–‡ โ”‚ โ”‚ โ€ข ็”Ÿๆˆๅ“ๅบ” โ”‚ โ”‚ โ€ข ๅ†ณๅฎšไฝฟ็”จๅ“ชไบ›ๅทฅๅ…ท โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ–ผ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ Tool Execution โ”‚ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ โ”‚ โ”‚ TerminalTool โ”‚ โ”‚FileEditorToolโ”‚ โ”‚TaskTracker โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”‚ โ”‚ โ”‚ ่ฟ่กŒๆต‹่ฏ• โ”‚ โ”‚ ไฟฎๆ”นไปฃ็  โ”‚ โ”‚ ๅˆ›ๅปบไปปๅŠก โ”‚ โ”‚ โ”‚ โ”‚ ๆฃ€ๆŸฅๆ€ง่ƒฝ โ”‚ โ”‚ ไฟๅญ˜ๆ–‡ไปถ โ”‚ โ”‚ ๆ›ดๆ–ฐ็Šถๆ€ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ–ผ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ Tool Results โ”‚ โ”‚ โ€ข ๅ‘ฝไปค่พ“ๅ‡บ โ”‚ โ”‚ โ€ข ๆ–‡ไปถไฟฎๆ”น็กฎ่ฎค โ”‚ โ”‚ โ€ข ไปปๅŠก็Šถๆ€ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ–ผ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ LLM (ๅ†ๆฌกๅค„็†) โ”‚ โ”‚ โ€ข ๅˆ†ๆžๅทฅๅ…ทๆ‰ง่กŒ็ป“ๆžœ โ”‚ โ”‚ โ€ข ็”Ÿๆˆๆœ€็ปˆๅ“ๅบ” โ”‚ โ”‚ โ€ข ๆˆ–ๅ†ณๅฎšๆ‰ง่กŒๆ›ดๅคšๅทฅๅ…ท โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ–ผ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ User Response โ”‚ "ไปฃ็ ๅทฒไผ˜ๅŒ–๏ผŒๆ€ง่ƒฝๆๅ‡ 20%" โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ ``` ## ๐ŸŽฏ ๅ››็ง่‡ชๅฎšไน‰ๆ–นๆณ•ๅฏนๆฏ” ``` โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ ๆ–นๆณ• 1: ้ป˜่ฎค Prompt โ”‚ โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”‚ โ”‚ โ”‚ Agent(llm, tools) โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ†’ ่‡ชๅŠจไฝฟ็”จ system_prompt.j2 โ”‚ โ”‚ โ””โ”€โ†’ ้€š็”จๆŒ‡ไปค๏ผŒ้€‚็”จไบŽๅคงๅคšๆ•ฐไปปๅŠก โ”‚ โ”‚ โ”‚ โ”‚ โœ“ ๆœ€็ฎ€ๅ• โ”‚ โ”‚ โœ— ๆ— ๆณ•่‡ชๅฎšไน‰ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ ๆ–นๆณ• 2: ้€‰ๆ‹ฉๅ†…็ฝฎๆจกๆฟ โ”‚ โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”‚ โ”‚ โ”‚ Agent( โ”‚ โ”‚ llm, tools, โ”‚ โ”‚ system_prompt_filename="system_prompt_planning.j2" โ”‚ โ”‚ ) โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ†’ ไฝฟ็”จ OpenHands ้ข„ๅฎšไน‰็š„ๆจกๆฟ โ”‚ โ”‚ โ””โ”€โ†’ ้’ˆๅฏน็‰นๅฎšไปปๅŠก็ฑปๅž‹ไผ˜ๅŒ–๏ผˆ่ง„ๅˆ’/ไบคไบ’/้•ฟๆœŸไปปๅŠก็ญ‰๏ผ‰ โ”‚ โ”‚ โ”‚ โ”‚ โœ“ ็ฎ€ๅ•๏ผŒๆ— ้œ€่‡ชๅทฑๅ†™ prompt โ”‚ โ”‚ โœ— ้€‰ๆ‹ฉๆœ‰้™๏ผˆๅชๆœ‰ 5-6 ไธชๆจกๆฟ๏ผ‰ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ ๆ–นๆณ• 3: ่‡ชๅฎšไน‰ๆจกๆฟ + ๅ˜้‡ๆณจๅ…ฅ (ๆŽจ่) โ”‚ โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”‚ โ”‚ โ”‚ Agent( โ”‚ โ”‚ llm, tools, โ”‚ โ”‚ system_prompt_filename="custom_evolution_prompt.j2", โ”‚ โ”‚ system_prompt_kwargs={ โ”‚ โ”‚ "custom_instructions": "...", โ”‚ โ”‚ "project_name": "ShinkaEvolve", โ”‚ โ”‚ "task_type": "Code Evolution", โ”‚ โ”‚ } โ”‚ โ”‚ ) โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ†’ ไฝฟ็”จ่‡ชๅฎšไน‰ๆจกๆฟๆ–‡ไปถ โ”‚ โ”‚ โ”œโ”€โ†’ ๅŠจๆ€ๆณจๅ…ฅไปปๅŠก็‰นๅฎšไฟกๆฏ โ”‚ โ”‚ โ””โ”€โ†’ ็ตๆดป้€‚ๅบ”ไธๅŒๅœบๆ™ฏ โ”‚ โ”‚ โ”‚ โ”‚ โœ“ ้ซ˜ๅบฆ็ตๆดป โ”‚ โ”‚ โœ“ ๅฏ้‡็”จๆจกๆฟ โ”‚ โ”‚ โœ“ ๅŠจๆ€้…็ฝฎ โ”‚ โ”‚ โœ— ้œ€่ฆ็ปดๆŠคๆจกๆฟๆ–‡ไปถ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ ๆ–นๆณ• 4: ๅฎŒๅ…จ่‡ชๅฎšไน‰ๆจกๆฟ โ”‚ โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”‚ โ”‚ โ”‚ Agent( โ”‚ โ”‚ llm, tools, โ”‚ โ”‚ system_prompt_filename="path/to/fully_custom.j2" โ”‚ โ”‚ ) โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ†’ ๅฎŒๅ…จไปŽ้›ถ็ผ–ๅ†™ prompt โ”‚ โ”‚ โ”œโ”€โ†’ ้’ˆๅฏน็‰นๅฎš้ข†ๅŸŸๆทฑๅบฆๅฎšๅˆถ โ”‚ โ”‚ โ””โ”€โ†’ ๅŒ…ๅซไธ“ไธš้ข†ๅŸŸ็Ÿฅ่ฏ† โ”‚ โ”‚ โ”‚ โ”‚ โœ“ ๆœ€ๅคง็ตๆดปๆ€ง โ”‚ โ”‚ โœ“ ๅฎŒๅ…จๆŽงๅˆถ โ”‚ โ”‚ โœ— ้œ€่ฆๆทฑๅ…ฅ็†่งฃ prompt engineering โ”‚ โ”‚ โœ— ็ปดๆŠคๆˆๆœฌ้ซ˜ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ ``` ## ๐Ÿ”ง ๅ…ณ้”ฎ API ๅ‚ๆ•ฐ่ฏฆ่งฃ ### Agent ็ฑป็š„ๆ ธๅฟƒๅ‚ๆ•ฐ ```python class Agent: def __init__( self, llm: LLM, # LLM ้…็ฝฎ tools: List[Tool], # ๅฏ็”จๅทฅๅ…ทๅˆ—่กจ # System Prompt ็›ธๅ…ณ system_prompt_filename: str = "system_prompt.j2", system_prompt_kwargs: Dict[str, Any] = {}, # ๅ…ถไป–้…็ฝฎ security_policy_filename: str = "security_policy.j2", agent_context: Optional[AgentContext] = None, condenser: Optional[CondenserBase] = None, critic: Optional[CriticBase] = None, # ๅทฅๅ…ท่ฟ‡ๆปค filter_tools_regex: Optional[str] = None, include_default_tools: List[str] = [], # MCP ้…็ฝฎ mcp_config: Dict[str, Any] = {}, ): ... ``` ### ๅ‚ๆ•ฐ่ฏดๆ˜Ž | ๅ‚ๆ•ฐ | ็ฑปๅž‹ | ้ป˜่ฎคๅ€ผ | ่ฏดๆ˜Ž | |-----|------|--------|------| | `llm` | `LLM` | ๅฟ…้œ€ | LLM ้…็ฝฎๅฏน่ฑก | | `tools` | `List[Tool]` | ๅฟ…้œ€ | Agent ๅฏ็”จ็š„ๅทฅๅ…ทๅˆ—่กจ | | `system_prompt_filename` | `str` | `"system_prompt.j2"` | Prompt ๆจกๆฟๆ–‡ไปถๅๆˆ–่ทฏๅพ„ | | `system_prompt_kwargs` | `Dict` | `{}` | ไผ ้€’็ป™ๆจกๆฟ็š„ๅ˜้‡ๅญ—ๅ…ธ | | `security_policy_filename` | `str` | `"security_policy.j2"` | ๅฎ‰ๅ…จ็ญ–็•ฅๆจกๆฟๆ–‡ไปถ | | `agent_context` | `AgentContext` | `None` | Agent ไธŠไธ‹ๆ–‡ไฟกๆฏ | | `condenser` | `CondenserBase` | `None` | ๅฏน่ฏๅŽ‹็ผฉๅ™จ | | `critic` | `CriticBase` | `None` | ๆ‰น่ฏ„่€…็ป„ไปถ | ## ๐ŸŽจ Jinja2 ๆจกๆฟ่ฏญๆณ•้€ŸๆŸฅ ### ๅŸบๆœฌๅ˜้‡ๅผ•็”จ ```jinja2 {{ variable_name }} # ็›ดๆŽฅ่พ“ๅ‡บๅ˜้‡ {{ project_name }} # ่พ“ๅ‡บ: ShinkaEvolve ``` ### ๆกไปถๅˆคๆ–ญ ```jinja2 {% if custom_instructions %} {{ custom_instructions }} {% endif %} {% if not use_default %} ไฝฟ็”จ่‡ชๅฎšไน‰้…็ฝฎ {% else %} ไฝฟ็”จ้ป˜่ฎค้…็ฝฎ {% endif %} ``` ### ๅพช็Žฏ ```jinja2 {% for tool in available_tools %} - {{ tool.name }}: {{ tool.description }} {% endfor %} ``` ### ๅŒ…ๅซๅ…ถไป–ๆจกๆฟ ```jinja2 {% include 'security_policy.j2' %} {% include 'self_documentation.j2' %} ``` ### ๆณจ้‡Š ```jinja2 {# ่ฟ™ๆ˜ฏๆณจ้‡Š๏ผŒไธไผšๅ‡บ็Žฐๅœจๆœ€็ปˆ่พ“ๅ‡บไธญ #} ``` ### ่ฟ‡ๆปคๅ™จ ```jinja2 {{ text | upper }} # ่ฝฌๅคงๅ†™ {{ text | trim }} # ๅŽป้™ค้ฆ–ๅฐพ็ฉบ็™ฝ {{ items | length }} # ่Žทๅ–้•ฟๅบฆ ``` ## ๐Ÿ“ ๆ–‡ไปถ็ป„็ป‡็ป“ๆž„ ``` eval_agent/ โ”‚ โ”œโ”€โ”€ ๐Ÿ“„ openhands_sample.py โ”‚ โ””โ”€โ†’ ๅŸบ็ก€็คบไพ‹ๅ’Œ่‡ชๅฎšไน‰็คบไพ‹ โ”‚ โ€ข basic_example() ไฝฟ็”จ้ป˜่ฎค prompt โ”‚ โ€ข custom_evolution_example() ไฝฟ็”จ่‡ชๅฎšไน‰ prompt โ”‚ โ”œโ”€โ”€ ๐Ÿ“„ openhands_custom_prompt_examples.py โ”‚ โ””โ”€โ†’ ่ฏฆ็ป†็š„ๆ–นๆณ•ๅฏนๆฏ”ๅ’Œ็คบไพ‹ โ”‚ โ€ข example_custom_prompt_file() ๆ–นๆณ• 1 โ”‚ โ€ข example_with_kwargs() ๆ–นๆณ• 2 โ”‚ โ€ข example_builtin_templates() ๆ–นๆณ• 3 โ”‚ โ€ข example_with_custom_evolution_prompt() ๆ–นๆณ• 4 โ”‚ โ€ข print_comparison() ๆ‰“ๅฐๅฏนๆฏ” โ”‚ โ”œโ”€โ”€ ๐Ÿ“„ custom_evolution_prompt.j2 โ”‚ โ””โ”€โ†’ ไปฃ็ ๆผ”ๅŒ–ไธ“็”จ็š„ system prompt ๆจกๆฟ โ”‚ ๅŒ…ๅซ๏ผš โ”‚ โ€ข ่ง’่‰ฒๅฎšไน‰ โ”‚ โ€ข ๆผ”ๅŒ–ๅŽŸๅˆ™ โ”‚ โ€ข ๅ˜ๅผ‚็ญ–็•ฅ โ”‚ โ€ข ๅทฅไฝœๆต็จ‹ โ”‚ โ€ข ๅ˜้‡ๆณจๅ…ฅ็‚น โ”‚ โ”œโ”€โ”€ ๐Ÿ“– README_CUSTOM_PROMPT.md โ”‚ โ””โ”€โ†’ ๅฎŒๆ•ด็š„ไฝฟ็”จๆŒ‡ๅ—๏ผˆไธญๆ–‡๏ผ‰ โ”‚ โ€ข ๅŸบ็ก€ๆฆ‚ๅฟต โ”‚ โ€ข ๅ››็ง่‡ชๅฎšไน‰ๆ–นๆณ•่ฏฆ่งฃ โ”‚ โ€ข ๅฎŒๆ•ดไปฃ็ ็คบไพ‹ โ”‚ โ€ข ๆœ€ไฝณๅฎž่ทต โ”‚ โ€ข ๅธธ่ง้—ฎ้ข˜ โ”‚ โ”œโ”€โ”€ ๐Ÿ“– QUICK_START_ZH.md โ”‚ โ””โ”€โ†’ ๅฟซ้€Ÿๅ…ฅ้—จๆŒ‡ๅ—๏ผˆไธญๆ–‡๏ผ‰ โ”‚ โ€ข ๆ ธๅฟƒ่ฆ็‚น โ”‚ โ€ข ๆ–นๆณ•ๅฏนๆฏ” โ”‚ โ€ข ็ซ‹ๅณๅฏ็”จ็š„็คบไพ‹ไปฃ็  โ”‚ โ””โ”€โ”€ ๐Ÿ“– ARCHITECTURE_ZH.md (ๆœฌๆ–‡ไปถ) โ””โ”€โ†’ ๆžถๆž„่ฏดๆ˜Žๅ’Œๅฏ่ง†ๅŒ–ๅ›พ่กจ โ€ข ๆ•ดไฝ“ๆžถๆž„ๅ›พ โ€ข ๆ•ฐๆฎๆต็จ‹ๅ›พ โ€ข API ๅ‚ๆ•ฐ่ฏฆ่งฃ ``` ## ๐Ÿ’ผ ๅฎž้™…ไฝฟ็”จๅœบๆ™ฏ ### ๅœบๆ™ฏ 1: ไปฃ็ ไผ˜ๅŒ–ไปปๅŠก ```python agent = Agent( llm=llm, tools=[TerminalTool, FileEditorTool], system_prompt_filename="custom_evolution_prompt.j2", system_prompt_kwargs={ "custom_instructions": "Focus on performance optimization", "task_type": "Performance Optimization", } ) conversation.send_message("Optimize the sorting algorithm in utils.py") ``` ### ๅœบๆ™ฏ 2: Bug ไฟฎๅคไปปๅŠก ```python agent = Agent( llm=llm, tools=[TerminalTool, FileEditorTool, TaskTrackerTool], system_prompt_filename="custom_evolution_prompt.j2", system_prompt_kwargs={ "custom_instructions": "Focus on finding and fixing bugs", "task_type": "Bug Fixing", } ) conversation.send_message("Find and fix the memory leak in server.py") ``` ### ๅœบๆ™ฏ 3: ไปฃ็ ้‡ๆž„ไปปๅŠก ```python agent = Agent( llm=llm, tools=[TerminalTool, FileEditorTool], system_prompt_filename="custom_evolution_prompt.j2", system_prompt_kwargs={ "custom_instructions": "Refactor for better readability and maintainability", "task_type": "Code Refactoring", } ) conversation.send_message("Refactor the authentication module") ``` ## ๐ŸŽ“ ๆœ€ไฝณๅฎž่ทตๆ€ป็ป“ ### โœ… ๆŽจ่ๅšๆณ• 1. **ไฝฟ็”จๆ–นๆณ• 3๏ผˆ่‡ชๅฎšไน‰ๆจกๆฟ + ๅ˜้‡ๆณจๅ…ฅ๏ผ‰** ๅฏนไบŽๅคงๅคšๆ•ฐไธ“ไธšไปปๅŠก 2. **ไฟๆŒๆจกๆฟ็ป“ๆž„ๆธ…ๆ™ฐ** ไฝฟ็”จ `
` ๆ ‡็ญพ็ป„็ป‡ๅ†…ๅฎน 3. **ไฝฟ็”จๆกไปถๅ—** ่ฎฉๆจกๆฟๆ›ด็ตๆดป๏ผš`{% if variable %}` 4. **ๆไพ›ๅ…ทไฝ“ๆŒ‡ไปค** ่€Œไธๆ˜ฏๆจก็ณŠ็š„ๆ่ฟฐ 5. **ๅŒ…ๅซ็คบไพ‹** ๅœจ prompt ไธญๅฑ•็คบๆœŸๆœ›็š„่กŒไธบ 6. **็‰ˆๆœฌๆŽงๅˆถ** ๅฏน prompt ๆจกๆฟๆ–‡ไปถ่ฟ›่กŒ็‰ˆๆœฌ็ฎก็† 7. **ๆต‹่ฏ•้ชŒ่ฏ** ้€š่ฟ‡ๅฎž้™…ไปปๅŠก้ชŒ่ฏ prompt ็š„ๆ•ˆๆžœ ### โŒ ้ฟๅ…ๅšๆณ• 1. **่ฟ‡ไบŽๅ†—้•ฟ** ็š„ prompt ๅฏ่ƒฝ้™ไฝŽๆ•ˆๆžœ 2. **็Ÿ›็›พ็š„ๆŒ‡ไปค** ไผš่ฎฉ agent ๅ›ฐๆƒ‘ 3. **็กฌ็ผ–็ ** ไปปๅŠก็‰นๅฎšไฟกๆฏ๏ผˆๅบ”่ฏฅ็”จๅ˜้‡ๆณจๅ…ฅ๏ผ‰ 4. **ๅฟฝ็•ฅๆต‹่ฏ•** ็›ดๆŽฅๅœจ็”Ÿไบง็Žฏๅขƒไฝฟ็”จๆœช้ชŒ่ฏ็š„ prompt 5. **่ฟ‡ๅบฆๅคๆ‚** ็š„ๆกไปถ้€ป่พ‘ ## ๐Ÿ” ่ฐƒ่ฏ•ๆŠ€ๅทง ### ๆŸฅ็œ‹ๆœ€็ปˆ Prompt ```python agent = Agent(...) print("="*80) print("Final System Prompt:") print("="*80) print(agent.system_message) print("="*80) ``` ### ้ชŒ่ฏๆจกๆฟๆธฒๆŸ“ ```python from pathlib import Path from jinja2 import Template template_path = Path("custom_evolution_prompt.j2") template = Template(template_path.read_text()) rendered = template.render( custom_instructions="Test instructions", project_name="TestProject" ) print(rendered) ``` ### ๆต‹่ฏ• Agent ่กŒไธบ ```python # ็ฎ€ๅ•ไปปๅŠกๆต‹่ฏ• conversation.send_message("Describe your role and capabilities") conversation.run() # ๆฃ€ๆŸฅๆ˜ฏๅฆ็†่งฃ็‰นๅฎšๆŒ‡ไปค conversation.send_message("What are your constraints?") conversation.run() ``` ## ๐Ÿ“š ็›ธๅ…ณ่ต„ๆบ - **ๅฎŒๆ•ดๆŒ‡ๅ—**: `README_CUSTOM_PROMPT.md` - **ๅฟซ้€Ÿๅ…ฅ้—จ**: `QUICK_START_ZH.md` - **ไปฃ็ ็คบไพ‹**: `openhands_custom_prompt_examples.py` - **ๅŸบ็ก€็คบไพ‹**: `openhands_sample.py` - **ๆจกๆฟๆ–‡ไปถ**: `custom_evolution_prompt.j2` --- **ๅˆ›ๅปบๆ—ฅๆœŸ**: 2026-01-29 **็‰ˆๆœฌ**: 1.0 **้กน็›ฎ**: ShinkaEvolve - OpenHands Integration