[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-SakanaAI--ShinkaEvolve":3,"tool-SakanaAI--ShinkaEvolve":61},[4,18,26,36,44,52],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":17},4358,"openclaw","openclaw\u002Fopenclaw","OpenClaw 是一款专为个人打造的本地化 AI 助手，旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚，能够直接接入你日常使用的各类通讯渠道，包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息，OpenClaw 都能即时响应，甚至支持在 macOS、iOS 和 Android 设备上进行语音交互，并提供实时的画布渲染功能供你操控。\n\n这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地，用户无需依赖云端服务即可享受快速、私密的智能辅助，真正实现了“你的数据，你做主”。其独特的技术亮点在于强大的网关架构，将控制平面与核心助手分离，确保跨平台通信的流畅性与扩展性。\n\nOpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者，以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力（支持 macOS、Linux 及 Windows WSL2），即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你",349277,3,"2026-04-06T06:32:30",[13,14,15,16],"Agent","开发框架","图像","数据工具","ready",{"id":19,"name":20,"github_repo":21,"description_zh":22,"stars":23,"difficulty_score":10,"last_commit_at":24,"category_tags":25,"status":17},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,"2026-04-05T11:01:52",[14,15,13],{"id":27,"name":28,"github_repo":29,"description_zh":30,"stars":31,"difficulty_score":32,"last_commit_at":33,"category_tags":34,"status":17},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",141543,2,"2026-04-06T11:32:54",[14,13,35],"语言模型",{"id":37,"name":38,"github_repo":39,"description_zh":40,"stars":41,"difficulty_score":32,"last_commit_at":42,"category_tags":43,"status":17},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",107888,"2026-04-06T11:32:50",[14,15,13],{"id":45,"name":46,"github_repo":47,"description_zh":48,"stars":49,"difficulty_score":10,"last_commit_at":50,"category_tags":51,"status":17},4487,"LLMs-from-scratch","rasbt\u002FLLMs-from-scratch","LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目，旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型（LLM）。它不仅是同名技术著作的官方代码库，更提供了一套完整的实践方案，涵盖模型开发、预训练及微调的全过程。\n\n该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型，却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码，用户能够透彻掌握 Transformer 架构、注意力机制等关键原理，从而真正理解大模型是如何“思考”的。此外，项目还包含了加载大型预训练权重进行微调的代码，帮助用户将理论知识延伸至实际应用。\n\nLLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API，而是渴望探究模型构建细节的技术人员而言，这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计：将复杂的系统工程拆解为清晰的步骤，配合详细的图表与示例，让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础，还是为未来研发更大规模的模型做准备",90106,"2026-04-06T11:19:32",[35,15,13,14],{"id":53,"name":54,"github_repo":55,"description_zh":56,"stars":57,"difficulty_score":10,"last_commit_at":58,"category_tags":59,"status":17},4292,"Deep-Live-Cam","hacksider\u002FDeep-Live-Cam","Deep-Live-Cam 是一款专注于实时换脸与视频生成的开源工具，用户仅需一张静态照片，即可通过“一键操作”实现摄像头画面的即时变脸或制作深度伪造视频。它有效解决了传统换脸技术流程繁琐、对硬件配置要求极高以及难以实时预览的痛点，让高质量的数字内容创作变得触手可及。\n\n这款工具不仅适合开发者和技术研究人员探索算法边界，更因其极简的操作逻辑（仅需三步：选脸、选摄像头、启动），广泛适用于普通用户、内容创作者、设计师及直播主播。无论是为了动画角色定制、服装展示模特替换，还是制作趣味短视频和直播互动，Deep-Live-Cam 都能提供流畅的支持。\n\n其核心技术亮点在于强大的实时处理能力，支持口型遮罩（Mouth Mask）以保留使用者原始的嘴部动作，确保表情自然精准；同时具备“人脸映射”功能，可同时对画面中的多个主体应用不同面孔。此外，项目内置了严格的内容安全过滤机制，自动拦截涉及裸露、暴力等不当素材，并倡导用户在获得授权及明确标注的前提下合规使用，体现了技术发展与伦理责任的平衡。",88924,"2026-04-06T03:28:53",[14,15,13,60],"视频",{"id":62,"github_repo":63,"name":64,"description_en":65,"description_zh":66,"ai_summary_zh":66,"readme_en":67,"readme_zh":68,"quickstart_zh":69,"use_case_zh":70,"hero_image_url":71,"owner_login":72,"owner_name":73,"owner_avatar_url":74,"owner_bio":75,"owner_company":76,"owner_location":76,"owner_email":77,"owner_twitter":78,"owner_website":79,"owner_url":80,"languages":81,"stars":94,"forks":95,"last_commit_at":96,"license":97,"difficulty_score":32,"env_os":98,"env_gpu":99,"env_ram":100,"env_deps":101,"category_tags":108,"github_topics":76,"view_count":32,"oss_zip_url":76,"oss_zip_packed_at":76,"status":17,"created_at":110,"updated_at":111,"faqs":112,"releases":147},4551,"SakanaAI\u002FShinkaEvolve","ShinkaEvolve","ShinkaEvolve: Towards Open-Ended and Sample-Efficient Program Evolution 🧬","ShinkaEvolve 是一个将大语言模型（LLM）与进化算法巧妙结合的开源框架，旨在推动科学发现与代码的自动化演进。它主要解决了在科学研究中，如何高效地探索海量代码可能性并优化性能指标的难题。传统方法往往依赖人工试错或计算成本高昂的随机搜索，而 ShinkaEvolve 通过模拟生物进化过程，维护一个不断迭代的程序种群，利用大模型作为“智能变异算子”来提出创造性的代码改进方案，从而在保证代码正确性和可读性的同时，显著提升样本效率。\n\n这款工具特别适合人工智能研究人员、数据科学家以及需要优化复杂算法的开发者使用。无论是希望自动化探索新算法的研究团队，还是需要在特定约束下寻找最优解的工程人员，都能从中受益。其独特亮点在于支持本地或集群环境下的并行评估，能够跨不同“进化岛”迁移成功经验，并具备与主流编程智能体（如 Claude Code、Codex）无缝集成的技能接口。自发布以来，ShinkaEvolve 不仅助力团队在国际编程竞赛中夺冠，更被 ICLR 2026 收录，成为连接生成式 AI 创造力与进化搜索优化能力的有力桥梁。","\u003Ch1 align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FSakanaAI\u002FShinkaEvolve\">\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FSakanaAI_ShinkaEvolve_readme_202d10842f2f.png\" width=\"180\" \u002F>\u003C\u002Fa>\u003Cbr>\n  \u003Cb>\u003Ccode>ShinkaEvolve\u003C\u002Fcode>: Towards Open-Ended and Sample-Efficient Program Evolution 🧬\u003C\u002Fb>\u003Cbr>\n\u003C\u002Fh1>\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fpython-%3E%3D3.10-blue\" \u002F>\n  \u003Ca href=\"https:\u002F\u002Fpypi.org\u002Fproject\u002Fshinka-evolve\u002F\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fv\u002Fshinka-evolve.svg\" \u002F>\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FSakanaAI\u002FShinkaEvolve\u002Fblob\u002Fmain\u002FLICENSE\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-Apache2.0-blue.svg\" \u002F>\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fastral-sh\u002Fruff\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fendpoint?url=https:\u002F\u002Fraw.githubusercontent.com\u002Fastral-sh\u002Fruff\u002Fmain\u002Fassets\u002Fbadge\u002Fv2.json\" \u002F>\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Farxiv.org\u002Fabs\u002F2509.19349\">\u003Cimg src=\"http:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fpaper-arxiv.2509.19349-B31B1B.svg\" \u002F>\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fsakana.ai\u002Fshinka-evolve\u002F\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FBlog%20%7C%20Sakana-0A66C2.svg\" \u002F>\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fcolab.research.google.com\u002Fgithub\u002FSakanaAI\u002FShinkaEvolve\u002Fblob\u002Fmain\u002Fexamples\u002Fshinka_tutorial.ipynb\">\u003Cimg src=\"https:\u002F\u002Fcolab.research.google.com\u002Fassets\u002Fcolab-badge.svg\" \u002F>\u003C\u002Fa>\n\u003C\u002Fp>\n\n\n[`shinka`](https:\u002F\u002Fsakana.ai\u002Fshinka-evolve\u002F) is a framework that combines Large Language Models (LLMs) with evolutionary algorithms to drive scientific discovery. By leveraging the creative capabilities of LLMs and the optimization power of evolutionary search, `shinka` enables automated exploration and improvement of scientific code. The system is inspired by the [AI Scientist](https:\u002F\u002Fsakana.ai\u002Fai-scientist\u002F), [AlphaEvolve](https:\u002F\u002Fdeepmind.google\u002Fdiscover\u002Fblog\u002Falphaevolve-a-gemini-powered-coding-agent-for-designing-advanced-algorithms\u002F) and the [Darwin Goedel Machine](https:\u002F\u002Fsakana.ai\u002Fdgm\u002F): It maintains a population of programs that evolve over generations, with an ensemble of LLMs acting as intelligent mutation operators that suggest code improvements.\n\n---\n\n**Mar 2026 Update**: Refactored API and unified runner `ShinkaEvolveRunner` (replacing `EvolutionRunner` and `AsyncEvolutionRunner`). You can now install `shinka` via PyPI and `uv`: `pip install shinka-evolve`.\n\n**Feb 2026 Update**: Added [agent skills](https:\u002F\u002Fgithub.com\u002FSakanaAI\u002FShinkaEvolve\u002Fblob\u002Fmain\u002Fdocs\u002Fagentic_usage.md) for using `shinka` within coding agents (Claude Code, Codex, etc.) for new task generation ([`shinka-setup`](https:\u002F\u002Fgithub.com\u002FSakanaAI\u002FShinkaEvolve\u002Fblob\u002Fmain\u002Fskills\u002Fshinka-setup\u002FSKILL.md)), converting your repo ([`shinka-convert`](https:\u002F\u002Fgithub.com\u002FSakanaAI\u002FShinkaEvolve\u002Fblob\u002Fmain\u002Fskills\u002Fshinka-convert\u002FSKILL.md)),  evolution ([`shinka-run`](https:\u002F\u002Fgithub.com\u002FSakanaAI\u002FShinkaEvolve\u002Fblob\u002Fmain\u002Fskills\u002Fshinka-run\u002FSKILL.md)), and result inspection ([`shinka-inspect`](https:\u002F\u002Fgithub.com\u002FSakanaAI\u002FShinkaEvolve\u002Fblob\u002Fmain\u002Fskills\u002Fshinka-inspect\u002FSKILL.md)). Install them via `npx`:\n\n```\nnpx skills add SakanaAI\u002FShinkaEvolve --skill '*' -a claude-code -a codex -y\n```\n\n**Jan 2026 Update**: ShinkaEvolve was accepted at ICLR 2026 and we [released an update](https:\u002F\u002Fgithub.com\u002FSakanaAI\u002FShinkaEvolve\u002Fblob\u002Fmain\u002FCHANGELOG.md) with new features.\n\n**Nov 2025 Update**: Rob gave several public talks about our ShinkaEvolve effort ([Official](https:\u002F\u002Fx.com\u002FSakanaAILabs\u002Fstatus\u002F1989352976792846356?s=20), [AutoML Seminar](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=dAOIer_1INo)).\n\n**Oct 2025 Update** ShinkaEvolve supported Team Unagi in winning the [ICFP 2025 Programming Contest](https:\u002F\u002Fsakana.ai\u002Ficfp-2025\u002F).\n\n---\n\nThe framework supports **parallel evaluation of candidates** locally or on a Slurm cluster. It maintains an archive of successful solutions, enabling knowledge transfer between different evolutionary islands. `shinka` is particularly well-suited for scientific tasks where there is a verifier available and the goal is to optimize performance metrics while maintaining code correctness and readability.\n\n![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FSakanaAI_ShinkaEvolve_readme_da8f1398876a.png)\n\n## Documentation 📝\n\n| Guide | Description | What You'll Learn |\n|-------|-------------|-------------------|\n| 🚀 **[First steps](https:\u002F\u002Fgithub.com\u002FSakanaAI\u002FShinkaEvolve\u002Fblob\u002Fmain\u002Fdocs\u002Fgetting_started.md)** | Installation, basic usage, and examples | Setup, first evolution run, core concepts |\n| 📓 **[Tutorial](https:\u002F\u002Fgithub.com\u002FSakanaAI\u002FShinkaEvolve\u002Fblob\u002Fmain\u002Fexamples\u002Fshinka_tutorial.ipynb)** | Interactive walkthrough of Shinka | Hands-on examples, config, best practices |\n| ⚙️  **[Config](https:\u002F\u002Fgithub.com\u002FSakanaAI\u002FShinkaEvolve\u002Fblob\u002Fmain\u002Fdocs\u002Fconfiguration.md)** | Comprehensive config reference | All config options & advanced features |\n| 🎨 **[WebUI](https:\u002F\u002Fgithub.com\u002FSakanaAI\u002FShinkaEvolve\u002Fblob\u002Fmain\u002Fdocs\u002Fwebui.md)** | Interactive visualization and monitoring | Real-time tracking, result analysis, debugging | \n| ⚡ **[Async Evo](https:\u002F\u002Fgithub.com\u002FSakanaAI\u002FShinkaEvolve\u002Fblob\u002Fmain\u002Fdocs\u002Fasync_evolution.md)** | High-perf. throughput (5-10x speedup) | Concurrent processing, proposal\u002Feval tuning | \n| 🧠 **[Local Models](https:\u002F\u002Fgithub.com\u002FSakanaAI\u002FShinkaEvolve\u002Fblob\u002Fmain\u002Fdocs\u002Fsupport_local_models.md)** | How to use local LLMs and embeddings with Shinka | Running open-source models & integration tips |\n| 🤖 **[Agentic Use](https:\u002F\u002Fgithub.com\u002FSakanaAI\u002FShinkaEvolve\u002Fblob\u002Fmain\u002Fdocs\u002Fagentic_usage.md)** | Run Shinka with Claude\u002FCodex skills | CLI install, skill placement, setup\u002Frun workflows |\n\n## Installation & Quick Start 🚀\n\n```bash\n# Install from PyPI\npip install shinka-evolve\n\n# Or with uv\nuv pip install shinka-evolve\n\n# Run your first evolution experiment\nshinka_launch variant=circle_packing_example\n```\n\nThe distribution name is `shinka-evolve`; Python imports stay `import shinka`.\n\n`shinka_launch` still supports the original shorthand group overrides:\n\n```bash\nshinka_launch variant=circle_packing_example\nshinka_launch task=novelty_generator database=island_small\n```\n\nBuilt-in Hydra presets ship inside the package under `shinka\u002Fconfigs\u002F`. To add your own presets from a PyPI install without cloning the repo, place them in your own config directory and pass `--config-dir`:\n\n```bash\nmkdir -p ~\u002Fmy-shinka-configs\u002Fvariant\n$EDITOR ~\u002Fmy-shinka-configs\u002Fvariant\u002Fmy_variant.yaml\nshinka_launch --config-dir ~\u002Fmy-shinka-configs variant=my_variant\n```\n\nFor development installs from source:\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002FSakanaAI\u002FShinkaEvolve\ncd ShinkaEvolve\nuv venv --python 3.11\nsource .venv\u002Fbin\u002Factivate  # On Windows: .venv\\Scripts\\activate\nuv pip install -e .\n```\n\nFor detailed installation instructions and usage examples, see the [Getting Started Guide](https:\u002F\u002Fgithub.com\u002FSakanaAI\u002FShinkaEvolve\u002Fblob\u002Fmain\u002Fdocs\u002Fgetting_started.md).\n\n## Examples 📖\n\n| Example | Description | Environment Setup |\n|---------|-------------|-------------------|\n| ⭕ [Circle Packing](https:\u002F\u002Fgithub.com\u002FSakanaAI\u002FShinkaEvolve\u002Ftree\u002Fmain\u002Fexamples\u002Fcircle_packing) | Optimize circle packing to maximize radii. | `LocalJobConfig` |\n| 🎮 [Game 2048](https:\u002F\u002Fgithub.com\u002FSakanaAI\u002FShinkaEvolve\u002Ftree\u002Fmain\u002Fexamples\u002Fgame_2048) | Optimize a policy for the Game of 2048. | `LocalJobConfig` |\n| ∑ [Julia Prime Counting](https:\u002F\u002Fgithub.com\u002FSakanaAI\u002FShinkaEvolve\u002Ftree\u002Fmain\u002Fexamples\u002Fjulia_prime_counting) | Optimize a Julia solver for prime-count queries. | `LocalJobConfig` |\n| ✨ [Novelty Generator](https:\u002F\u002Fgithub.com\u002FSakanaAI\u002FShinkaEvolve\u002Ftree\u002Fmain\u002Fexamples\u002Fnovelty_generator) | Generate creative, surprising outputs (e.g., ASCII art). | `LocalJobConfig` |\n\n\n## `shinka` Run with Python API 🐍\n\nFor the simplest setup with default settings, you only need to specify the evaluation program:\n\n```python\nfrom shinka.core import ShinkaEvolveRunner, EvolutionConfig\nfrom shinka.database import DatabaseConfig\nfrom shinka.launch import LocalJobConfig, SlurmCondaJobConfig, SlurmDockerJobConfig\n\n# Minimal - only specify what's required\njob_conf = LocalJobConfig(eval_program_path=\"evaluate.py\")\n# Or source a uv\u002Fvenv environment per job:\n# job_conf = LocalJobConfig(\n#     eval_program_path=\"evaluate.py\",\n#     activate_script=\".venv\u002Fbin\u002Factivate\",\n# )\n# Or run evaluations on SLURM:\n# job_conf = SlurmCondaJobConfig(\n#     eval_program_path=\"evaluate.py\",\n#     partition=\"gpu\",\n#     time=\"01:00:00\",\n#     cpus=1,\n#     gpus=1,\n#     mem=\"8G\",\n#     conda_env=\"shinka\",\n# )\n# Or run evaluations in a Docker container on SLURM:\n# job_conf = SlurmDockerJobConfig(\n#     eval_program_path=\"evaluate.py\",\n#     image=\"ubuntu:latest\",\n#     partition=\"gpu\",\n#     time=\"01:00:00\",\n#     cpus=1,\n#     gpus=1,\n#     mem=\"8G\",\n# )\ndb_conf = DatabaseConfig()\nevo_conf = EvolutionConfig(init_program_path=\"initial.py\")\n\nrunner = ShinkaEvolveRunner(\n    evo_config=evo_conf,\n    job_config=job_conf,\n    db_config=db_conf,\n    max_evaluation_jobs=2,\n    max_proposal_jobs=3,  # modest oversubscription when proposal generation is slower than eval\n    max_db_workers=4,\n)\nrunner.run()\n```\n\n\u003Cdetails>\n\u003Csummary>\u003Cstrong>EvolutionConfig Parameters\u003C\u002Fstrong> (click to expand)\u003C\u002Fsummary>\n\nClass defaults below come from `shinka\u002Fcore\u002Fconfig.py` (`EvolutionConfig`). Hydra presets and CLI overrides can replace these values. Concurrency lives on `ShinkaEvolveRunner` via `max_evaluation_jobs`, `max_proposal_jobs`, and `max_db_workers`.\n\n| Key | Default Value | Type | Explanation |\n|-----|---------------|------|-------------|\n| `task_sys_msg` | `\"You are an expert optimization and algorithm design assistant. Improve the program while preserving correctness and immutable regions.\"` | `Optional[str]` | System message describing the optimization task |\n| `patch_types` | `[\"diff\", \"full\", \"cross\"]` | `List[str]` | Types of patches to generate: \"diff\", \"full\", \"cross\" |\n| `patch_type_probs` | `[0.6, 0.3, 0.1]` | `List[float]` | Probabilities for each patch type |\n| `num_generations` | `50` | `int` | Number of evolution generations to run |\n| `max_patch_resamples` | `3` | `int` | Max times to resample a patch if it fails |\n| `max_patch_attempts` | `1` | `int` | Max attempts to generate a valid patch |\n| `job_type` | `\"local\"` | `str` | Job execution type: \"local\", \"slurm_docker\", \"slurm_conda\" |\n| `language` | `\"python\"` | `str` | Programming language for evolution |\n| `llm_models` | `[\"gpt-5-mini\", \"gemini-3-flash-preview\", \"gemini-3.1-pro-preview\", \"gpt-5.4\"]` | `List[str]` | List of LLM models for code generation |\n| `llm_dynamic_selection` | `\"ucb\"` | `Optional[Union[str, BanditBase]]` | Dynamic model selection strategy |\n| `llm_dynamic_selection_kwargs` | `{\"cost_aware_coef\": 0.5}` | `dict` | Kwargs for dynamic selection |\n| `llm_kwargs` | `{\"temperatures\": [0.0, 0.5, 1.0], \"max_tokens\": 16384}` | `dict` | Additional kwargs for LLM calls |\n| `meta_rec_interval` | `10` | `Optional[int]` | Interval for meta-recommendations |\n| `meta_llm_models` | `None` | `Optional[List[str]]` | LLM models for meta-recommendations |\n| `meta_llm_kwargs` | `{}` | `dict` | Kwargs for meta-recommendation LLMs |\n| `meta_max_recommendations` | `5` | `int` | Max number of meta-recommendations |\n| `sample_single_meta_rec` | `True` | `bool` | Sample a single recommendation from meta output when enabled |\n| `embedding_model` | `\"text-embedding-3-small\"` | `Optional[str]` | Model for code embeddings. Also accepts `local\u002F\u003Cmodel>@http(s):\u002F\u002Fhost[:port]\u002Fv1` for local OpenAI-compatible embedding servers, with optional `?api_key_env=ENV_VAR` for per-model credentials. |\n| `init_program_path` | `\"initial.py\"` | `Optional[str]` | Path to initial program to evolve |\n| `results_dir` | `None` | `Optional[str]` | Directory to save results (auto-generated if None) |\n| `max_novelty_attempts` | `3` | `int` | Max attempts for novelty generation |\n| `code_embed_sim_threshold` | `0.99` | `float` | Similarity threshold for code embeddings |\n| `novelty_llm_models` | `None` | `Optional[List[str]]` | LLM models for novelty judgment |\n| `novelty_llm_kwargs` | `{}` | `dict` | Kwargs for novelty LLMs |\n| `use_text_feedback` | `False` | `bool` | Whether to use text feedback in evolution |\n| `max_api_costs` | `None` | `Optional[float]` | Total API budget cap (USD); async runner stops new proposals at cap |\n| `enable_controlled_oversubscription` | `True` | `bool` | Enable bounded proposal oversubscription when proposal generation is slower than evaluation. |\n| `proposal_target_mode` | `'adaptive'` | `str` | Proposal target controller mode (`adaptive` or `fixed`). |\n| `proposal_target_min_samples` | `5` | `int` | Minimum completed timing samples before adaptive targeting activates. |\n| `proposal_target_ratio_cap` | `2.0` | `float` | Maximum sampling\u002Fevaluation ratio used by the adaptive controller. |\n| `proposal_buffer_max` | `2` | `int` | Maximum extra proposal jobs beyond evaluation concurrency. |\n| `proposal_target_hard_cap` | `None` | `Optional[int]` | Absolute cap for the adaptive proposal target. |\n| `proposal_target_ewma_alpha` | `0.3` | `float` | EWMA smoothing factor for proposal\u002Fevaluation timing estimates. |\n| `inspiration_sort_order` | `\"ascending\"` | `str` | Inspiration ordering (`\"ascending\"`, `\"chronological\"`, `\"none\"`) |\n| `evolve_prompts` | `False` | `bool` | Enable meta-prompt evolution loop |\n| `prompt_patch_types` | `[\"diff\", \"full\"]` | `List[str]` | Patch formats used for prompt evolution |\n| `prompt_patch_type_probs` | `[0.7, 0.3]` | `List[float]` | Sampling probabilities for prompt patch formats |\n| `prompt_evolution_interval` | `None` | `Optional[int]` | Prompt-evolution cadence in generations (`None` disables periodic updates) |\n| `prompt_archive_size` | `10` | `int` | Size of system-prompt archive |\n| `prompt_llm_models` | `None` | `Optional[List[str]]` | LLM models for prompt evolution (`None` falls back to `llm_models`) |\n| `prompt_llm_kwargs` | `{}` | `dict` | Extra kwargs for prompt-evolution LLM calls |\n| `prompt_ucb_exploration_constant` | `1.0` | `float` | UCB exploration constant for prompt sampling |\n| `prompt_epsilon` | `0.1` | `float` | Epsilon-greedy exploration probability for prompt sampling |\n| `prompt_evo_top_k_programs` | `3` | `int` | Number of top programs used as context in prompt evolution |\n| `prompt_percentile_recompute_interval` | `20` | `int` | Generations between prompt percentile recomputations |\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cstrong>DatabaseConfig Parameters\u003C\u002Fstrong> (click to expand)\u003C\u002Fsummary>\n\nClass defaults below come from `shinka\u002Fdatabase\u002Fdbase.py` (`DatabaseConfig`). Hydra presets and CLI overrides can replace these values.\n\n| Key | Default Value | Type | Explanation |\n|-----|---------------|------|-------------|\n| `db_path` | `None` | `Optional[str]` | Database file path (auto-generated if None) |\n| `num_islands` | `2` | `int` | Number of evolution islands for diversity |\n| `archive_size` | `40` | `int` | Global archive size cap |\n| `elite_selection_ratio` | `0.3` | `float` | Proportion of elite programs for inspiration |\n| `num_archive_inspirations` | `1` | `int` | Number of archive programs to use as inspiration |\n| `num_top_k_inspirations` | `1` | `int` | Number of top-k programs for inspiration |\n| `migration_interval` | `10` | `int` | Generations between island migrations |\n| `migration_rate` | `0.0` | `float` | Proportion of island population to migrate |\n| `island_elitism` | `True` | `bool` | Keep best programs on their original islands |\n| `enforce_island_separation` | `True` | `bool` | Enforce full separation between islands |\n| `island_selection_strategy` | `\"uniform\"` | `str` | Island sampler (`\"uniform\"`, `\"equal\"`, `\"proportional\"`, `\"weighted\"`) |\n| `enable_dynamic_islands` | `False` | `bool` | Enable stagnation-triggered island spawning |\n| `stagnation_threshold` | `100` | `int` | Generations without improvement before spawning a new island |\n| `island_spawn_strategy` | `\"initial\"` | `str` | New-island seed strategy (`\"initial\"`, `\"best\"`, `\"archive_random\"`) |\n| `island_spawn_subtree_size` | `1` | `int` | Number of programs copied when spawning an island |\n| `parent_selection_strategy` | `\"weighted\"` | `str` | Parent selection: \"weighted\", \"power_law\", \"beam_search\" |\n| `exploitation_alpha` | `1.0` | `float` | Power-law exponent (0=uniform, 1=power-law) |\n| `exploitation_ratio` | `0.2` | `float` | Chance to pick parent from archive |\n| `parent_selection_lambda` | `10.0` | `float` | Sharpness of sigmoid for weighted selection |\n| `num_beams` | `5` | `int` | Number of beams for beam search selection |\n| `archive_selection_strategy` | `\"fitness\"` | `str` | Archive replacement strategy (`\"fitness\"` or `\"crowding\"`) |\n| `archive_criteria` | `{\"combined_score\": 1.0}` | `Dict[str, float]` | Weighted ranking criteria used by fitness archive updates |\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cstrong>JobConfig Parameters\u003C\u002Fstrong> (click to expand)\u003C\u002Fsummary>\n\n**LocalJobConfig** (for local execution):\n| Key | Default Value | Type | Explanation |\n|-----|---------------|------|-------------|\n| `eval_program_path` | `\"evaluate.py\"` | `Optional[str]` | Path to evaluation script |\n| `extra_cmd_args` | `{}` | `Dict[str, Any]` | Additional command line arguments |\n| `time` | `None` | `Optional[str]` | Time limit for job execution |\n| `conda_env` | `None` | `Optional[str]` | Conda environment to run jobs in |\n| `activate_script` | `None` | `Optional[str]` | Sourceable env script path, e.g. `.venv\u002Fbin\u002Factivate` |\n\n**SlurmDockerJobConfig** (for SLURM with Docker):\n| Key | Default Value | Type | Explanation |\n|-----|---------------|------|-------------|\n| `eval_program_path` | `\"evaluate.py\"` | `Optional[str]` | Path to evaluation script |\n| `extra_cmd_args` | `{}` | `Dict[str, Any]` | Additional command line arguments |\n| `image` | `\"ubuntu:latest\"` | `str` | Docker image to use |\n| `image_tar_path` | `None` | `Optional[str]` | Path to Docker image tar file |\n| `docker_flags` | `\"\"` | `str` | Additional Docker flags |\n| `partition` | `\"gpu\"` | `str` | SLURM partition to use |\n| `time` | `\"01:00:00\"` | `str` | Job time limit |\n| `cpus` | `1` | `int` | Number of CPUs to request |\n| `gpus` | `1` | `int` | Number of GPUs to request |\n| `mem` | `\"8G\"` | `Optional[str]` | Memory to request |\n\n**SlurmCondaJobConfig \u002F SlurmEnvJobConfig** (for SLURM with sourced or Conda environments):\n| Key | Default Value | Type | Explanation |\n|-----|---------------|------|-------------|\n| `eval_program_path` | `\"evaluate.py\"` | `Optional[str]` | Path to evaluation script |\n| `extra_cmd_args` | `{}` | `Dict[str, Any]` | Additional command line arguments |\n| `conda_env` | `\"\"` | `str` | Conda environment name |\n| `activate_script` | `None` | `Optional[str]` | Sourceable env script path, e.g. `.venv\u002Fbin\u002Factivate` |\n| `modules` | `[]` | `Optional[List[str]]` | Environment modules to load |\n| `partition` | `\"gpu\"` | `str` | SLURM partition to use |\n| `time` | `\"01:00:00\"` | `str` | Job time limit |\n| `cpus` | `1` | `int` | Number of CPUs to request |\n| `gpus` | `1` | `int` | Number of GPUs to request |\n| `mem` | `\"8G\"` | `Optional[str]` | Memory to request |\n\n`conda_env` and `activate_script` are mutually exclusive.\n\n\u003C\u002Fdetails>\n\n### Evaluation Setup & Initial Solution 🏃\n\nTo use `ShinkaEvolveRunner`, you need two key files: The **`evaluate.py`** script defines how to test and score your programs - it runs multiple evaluations, validates results, and aggregates them into metrics that guide the `shinka` evolution loop. The **`initial.py`** file contains your starting solution with the core algorithm that will be iteratively improved by LLMs across generations.\n\n\u003Ctable>\n\u003Ctr>\n\u003Ctd width=\"50%\">\n\n**`evaluate.py` - Evaluation Script**\n\n```python\nfrom shinka.core import run_shinka_eval\n\ndef main(program_path: str,\n         results_dir: str):\n    metrics, correct, err = run_shinka_eval(\n        program_path=program_path,\n        results_dir=results_dir,\n        experiment_fn_name=\"run_experiment\",\n        num_runs=3, # Multi-evals to aggreg.\n        run_workers=1,  # >1 => per-run parallel\n        get_experiment_kwargs=get_kwargs,\n        aggregate_metrics_fn=aggregate_fn,\n        validate_fn=validate_fn,  # Optional\n    )\n\ndef get_kwargs(run_idx: int) -> dict:\n    return {\"param1\": \"value\", \"param2\": 42}\n\ndef aggregate_fn(results: list) -> dict:\n    score = results[0]\n    text = results[1]\n    return {\n        \"combined_score\": float(score),\n        \"public\": {...},  # shinka-visible\n        \"private\": {...},  # shinka-invisible\n        \"extra_data\": {...},  # store as pkl\n        \"text_feedback\": text,  # str fb\n    }\n\nif __name__ == \"__main__\":\n    # argparse program path & dir\n    main(program_path, results_dir)\n```\n\n\u003C\u002Ftd>\n\u003Ctd width=\"50%\">\n\n**`initial.py` - Starting Solution**\n\n```python\n# EVOLVE-BLOCK-START\ndef advanced_algo():\n    # This will be evolved\n    return solution\n# EVOLVE-BLOCK-END\n\ndef run_experiment(**kwargs):\n    \"\"\"Main called by evaluator\"\"\"\n    result = solve_problem(kwargs)\n    return result\n\ndef solve_problem(params):\n    solution = advanced_algo()\n    return solution\n```\n\n**Key Points:**\n- Eval name matches `experiment_fn_name`\n- Use `EVOLVE-BLOCK-START` and `EVOLVE-BLOCK-END` to mark evolution sections\n- Return format matches validation expectations\n- Dependencies must be available in env\n- Results can be unpacked for metrics\n- Auto-stores several results in `results_dir`\n- Can add text feedback in `shinka` loop\n- Higher `combined_score` values indicate better performance (maximization)\n\n\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftable>\n\n\n## `shinka` Launcher with Hydra 🚀\n\n`shinka` Launcher utilizes [Hydra](https:\u002F\u002Fhydra.cc\u002F) to configure and launch evolutionary experiments effortlessly. It supports concise configuration via Hydra's powerful override syntax, making it easy to manage and iterate scientific explorations.\n\n```bash\n# Run with the shared default baseline\nshinka_launch\n\n# Run with custom parameters\nshinka_launch \\\n    task=circle_packing \\\n    database=island_large \\\n    evolution=small_budget \\\n    cluster=local \\\n    evo_config.num_generations=20\n```\n\nFor comprehensive configuration options and advanced usage, see the [Configuration Guide](https:\u002F\u002Fgithub.com\u002FSakanaAI\u002FShinkaEvolve\u002Fblob\u002Fmain\u002Fdocs\u002Fconfiguration.md).\n\n## `shinka_run` Agent CLI 🤖\n\n`shinka_run` is a task-directory launcher for async evolution. It is designed for agent workflows and does not require Hydra config files.\n\n```bash\n# Inspect full interface (detailed help)\nshinka_run --help\n\n# Minimal run\nshinka_run \\\n    --task-dir examples\u002Fcircle_packing \\\n    --results_dir results\u002Fcircle_agent_run \\\n    --num_generations 20\n\n# Run with keyword overrides\nshinka_run \\\n    --task-dir examples\u002Fcircle_packing \\\n    --results_dir results\u002Fcircle_agent_custom \\\n    --num_generations 50 \\\n    --max-evaluation-jobs 6 \\\n    --set db.num_islands=2 \\\n    --set job.time=00:10:00 \\\n    --set job.activate_script=.venv\u002Fbin\u002Factivate \\\n    --set evo.llm_models='[\"gpt-5-mini\",\"gemini-3-flash-preview\"]'\n\n# Load optional YAML config (relative to --task-dir), then override via --set\nshinka_run \\\n    --task-dir examples\u002Fcircle_packing \\\n    --config-fname shinka_small.yaml \\\n    --results_dir results\u002Fcircle_agent_from_yaml \\\n    --num_generations 50 \\\n    --set db.num_islands=2\n```\n\n`--task-dir` must contain `evaluate.py` and `initial.\u003Cext>`.  \n`--config-fname` can define `evo\u002Fdb\u002Fjob` (or `evo_config\u002Fdb_config\u002Fjob_config`) plus `max_evaluation_jobs\u002Fmax_proposal_jobs\u002Fmax_db_workers` and `verbose\u002Fdebug`.  \nPrecedence: config YAML \u003C `--set` \u003C authoritative flags.  \n`--results_dir` and `--num_generations` are authoritative and always override config\u002F`--set` values for `evo.results_dir` and `evo.num_generations`.\n\n\n## Interactive WebUI 🎨\n\nMonitor your evolution experiments in real-time with Shinka's interactive web interface! The WebUI provides live visualization of the evolutionary process, genealogy trees, and performance metrics.\n\n![WebUI Screenshot](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FSakanaAI_ShinkaEvolve_readme_a488eb4ff454.png)\n\nLaunch the WebUI alongside your evolution experiment:\n\n```bash\n# Start your evolution experiment\nshinka_launch\n\n# In another terminal, launch the WebUI\nshinka_visualize --port 8888 --open\n```\n\nFor detailed WebUI documentation, see the [WebUI Guide](https:\u002F\u002Fgithub.com\u002FSakanaAI\u002FShinkaEvolve\u002Fblob\u002Fmain\u002Fdocs\u002Fwebui.md).\n\n## Contributing 👥\n\nContributions are welcome across code, docs, representative benchmarks, and bug reports.\n\nPlease read the [contribution guide](https:\u002F\u002Fgithub.com\u002FSakanaAI\u002FShinkaEvolve\u002Fblob\u002Fmain\u002FCONTRIBUTING.md) before opening an issue or pull request. It documents the expected issue and PR structure, local checks, and the extra evidence required for changes to the core program evolution pipeline.\n\nIf you propose a change to the core evolution pipeline, please include results on a representative runnable task that highlights the new capability and compare them against a baseline. Please do not add random benchmark tasks just to justify a PR.\n\n## Related Open-Source Projects 🧑‍🔧\n\n- [OpenEvolve](https:\u002F\u002Fgithub.com\u002Fcodelion\u002Fopenevolve): An open-source implementation of AlphaEvolve\n- [LLM4AD](https:\u002F\u002Fgithub.com\u002FOptima-CityU\u002Fllm4ad): A Platform for Algorithm Design with Large Language Model\n\n## Citation ✍️\n\nIf you use `ShinkaEvolve` in your research, please cite it as follows:\n\n```\n@article{lange2025shinka,\n  title={ShinkaEvolve: Towards Open-Ended And Sample-Efficient Program Evolution},\n  author={Lange, Robert Tjarko and Imajuku, Yuki and Cetin, Edoardo},\n  journal={arXiv preprint arXiv:2509.19349},\n  year={2025}\n}\n```\n","\u003Ch1 align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FSakanaAI\u002FShinkaEvolve\">\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FSakanaAI_ShinkaEvolve_readme_202d10842f2f.png\" width=\"180\" \u002F>\u003C\u002Fa>\u003Cbr>\n  \u003Cb>\u003Ccode>ShinkaEvolve\u003C\u002Fcode>: 朝着开放-ended且样本高效的程序进化 🧬\u003C\u002Fb>\u003Cbr>\n\u003C\u002Fh1>\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fpython-%3E%3D3.10-blue\" \u002F>\n  \u003Ca href=\"https:\u002F\u002Fpypi.org\u002Fproject\u002Fshinka-evolve\u002F\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fv\u002Fshinka-evolve.svg\" \u002F>\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FSakanaAI\u002FShinkaEvolve\u002Fblob\u002Fmain\u002FLICENSE\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-Apache2.0-blue.svg\" \u002F>\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fastral-sh\u002Fruff\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fendpoint?url=https:\u002F\u002Fraw.githubusercontent.com\u002Fastral-sh\u002Fruff\u002Fmain\u002Fassets\u002Fbadge\u002Fv2.json\" \u002F>\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Farxiv.org\u002Fabs\u002F2509.19349\">\u003Cimg src=\"http:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fpaper-arxiv.2509.19349-B31B1B.svg\" \u002F>\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fsakana.ai\u002Fshinka-evolve\u002F\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FBlog%20%7C%20Sakana-0A66C2.svg\" \u002F>\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fcolab.research.google.com\u002Fgithub\u002FSakanaAI\u002FShinkaEvolve\u002Fblob\u002Fmain\u002Fexamples\u002Fshinka_tutorial.ipynb\">\u003Cimg src=\"https:\u002F\u002Fcolab.research.google.com\u002Fassets\u002Fcolab-badge.svg\" \u002F>\u003C\u002Fa>\n\u003C\u002Fp>\n\n\n[`shinka`](https:\u002F\u002Fsakana.ai\u002Fshinka-evolve\u002F) 是一个将大型语言模型（LLMs）与进化算法相结合的框架，用于推动科学发现。通过利用 LLM 的创造性能力和进化搜索的优化能力，`shinka` 能够实现科学代码的自动化探索与改进。该系统受到 [AI Scientist](https:\u002F\u002Fsakana.ai\u002Fai-scientist\u002F)、[AlphaEvolve](https:\u002F\u002Fdeepmind.google\u002Fdiscover\u002Fblog\u002Falphaevolve-a-gemini-powered-coding-agent-for-designing-advanced-algorithms\u002F) 和 [达尔文哥德尔机](https:\u002F\u002Fsakana.ai\u002Fdgm\u002F) 的启发：它维护一个由多代演化而来的程序种群，并由一组 LLM 作为智能突变算子，提出代码改进建议。\n\n---\n\n**2026年3月更新**：重构了 API，并统一了运行器 `ShinkaEvolveRunner`（取代了 `EvolutionRunner` 和 `AsyncEvolutionRunner`）。现在可以通过 PyPI 和 `uv` 安装 `shinka`：`pip install shinka-evolve`。\n\n**2026年2月更新**：新增了 [agent 技能](https:\u002F\u002Fgithub.com\u002FSakanaAI\u002FShinkaEvolve\u002Fblob\u002Fmain\u002Fdocs\u002Fagentic_usage.md)，用于在编码代理（Claude Code、Codex 等）中使用 `shinka` 进行新任务生成（[`shinka-setup`](https:\u002F\u002Fgithub.com\u002FSakanaAI\u002FShinkaEvolve\u002Fblob\u002Fmain\u002Fskills\u002Fshinka-setup\u002FSKILL.md)）、仓库转换（[`shinka-convert`](https:\u002F\u002Fgithub.com\u002FSakanaAI\u002FShinkaEvolve\u002Fblob\u002Fmain\u002Fskills\u002Fshinka-convert\u002FSKILL.md)）、进化（[`shinka-run`](https:\u002F\u002Fgithub.com\u002FSakanaAI\u002FShinkaEvolve\u002Fblob\u002Fmain\u002Fskills\u002Fshinka-run\u002FSKILL.md)）以及结果检查（[`shinka-inspect`](https:\u002F\u002Fgithub.com\u002FSakanaAI\u002FShinkaEvolve\u002Fblob\u002Fmain\u002Fskills\u002Fshinka-inspect\u002FSKILL.md)）。可通过 `npx` 安装这些技能：\n\n```\nnpx skills add SakanaAI\u002FShinkaEvolve --skill '*' -a claude-code -a codex -y\n```\n\n**2026年1月更新**：ShinkaEvolve 已被 ICLR 2026 接受，我们还发布了包含新功能的 [更新日志](https:\u002F\u002Fgithub.com\u002FSakanaAI\u002FShinkaEvolve\u002Fblob\u002Fmain\u002FCHANGELOG.md)。\n\n**2025年11月更新**：Rob 就我们的 ShinkaEvolve 项目进行了多次公开演讲（[官方](https:\u002F\u002Fx.com\u002FSakanaAILabs\u002Fstatus\u002F1989352976792846356?s=20)、[AutoML 研讨会](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=dAOIer_1INo))。\n\n**2025年10月更新**：ShinkaEvolve 支持 Team Unagi 赢得了 [ICFP 2025 编程竞赛](https:\u002F\u002Fsakana.ai\u002Ficfp-2025\u002F)。\n\n---\n\n该框架支持在本地或 Slurm 集群上对候选方案进行 **并行评估**。它维护着一个成功解决方案的档案，从而实现不同进化岛屿之间的知识转移。`shinka` 特别适用于那些存在验证器、旨在优化性能指标同时保持代码正确性和可读性的科学任务。\n\n![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FSakanaAI_ShinkaEvolve_readme_da8f1398876a.png)\n\n## 文档 📝\n\n| 指南 | 描述 | 你将学到的内容 |\n|-------|-------------|-------------------|\n| 🚀 **[入门指南](https:\u002F\u002Fgithub.com\u002FSakanaAI\u002FShinkaEvolve\u002Fblob\u002Fmain\u002Fdocs\u002Fgetting_started.md)** | 安装、基本用法和示例 | 设置、首次进化运行、核心概念 |\n| 📓 **[教程](https:\u002F\u002Fgithub.com\u002FSakanaAI\u002FShinkaEvolve\u002Fblob\u002Fmain\u002Fexamples\u002Fshinka_tutorial.ipynb)** | Shinka 的交互式导览 | 实战示例、配置、最佳实践 |\n| ⚙️  **[配置](https:\u002F\u002Fgithub.com\u002FSakanaAI\u002FShinkaEvolve\u002Fblob\u002Fmain\u002Fdocs\u002Fconfiguration.md)** | 全面的配置参考 | 所有配置选项及高级功能 |\n| 🎨 **[WebUI](https:\u002F\u002Fgithub.com\u002FSakanaAI\u002FShinkaEvolve\u002Fblob\u002Fmain\u002Fdocs\u002Fwebui.md)** | 交互式可视化与监控 | 实时跟踪、结果分析、调试 |\n| ⚡ **[异步进化](https:\u002F\u002Fgithub.com\u002FSakanaAI\u002FShinkaEvolve\u002Fblob\u002Fmain\u002Fdocs\u002Fasync_evolution.md)** | 高性能吞吐量（提升 5–10 倍） | 并发处理、提案\u002F评估调优 |\n| 🧠 **[本地模型](https:\u002F\u002Fgithub.com\u002FSakanaAI\u002FShinkaEvolve\u002Fblob\u002Fmain\u002Fdocs\u002Fsupport_local_models.md)** | 如何在 Shinka 中使用本地 LLM 和嵌入 | 运行开源模型及集成技巧 |\n| 🤖 **[代理式使用](https:\u002F\u002Fgithub.com\u002FSakanaAI\u002FShinkaEvolve\u002Fblob\u002Fmain\u002Fdocs\u002Fagentic_usage.md)** | 使用 Claude\u002FCodex 技能运行 Shinka | CLI 安装、技能部署、设置\u002F运行工作流 |\n\n## 安装与快速入门 🚀\n\n```bash\n# 从 PyPI 安装\npip install shinka-evolve\n\n# 或者使用 uv\nuv pip install shinka-evolve\n\n# 运行你的第一个进化实验\nshinka_launch variant=circle_packing_example\n```\n\n发行包名称为 `shinka-evolve`；Python 导入语句仍为 `import shinka`。\n\n`shinka_launch` 仍然支持原有的简写组覆盖方式：\n\n```bash\nshinka_launch variant=circle_packing_example\nshinka_launch task=novelty_generator database=island_small\n```\n\n软件包内自带 Hydra 预设，位于 `shinka\u002Fconfigs\u002F` 目录下。若要从 PyPI 安装中添加自定义预设而不克隆仓库，可以将其放置在自己的配置目录中，并通过 `--config-dir` 参数指定：\n\n```bash\nmkdir -p ~\u002Fmy-shinka-configs\u002Fvariant\n$EDITOR ~\u002Fmy-shinka-configs\u002Fvariant\u002Fmy_variant.yaml\nshinka_launch --config-dir ~\u002Fmy-shinka-configs variant=my_variant\n```\n\n对于从源码进行开发安装的情况：\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002FSakanaAI\u002FShinkaEvolve\ncd ShinkaEvolve\nuv venv --python 3.11\nsource .venv\u002Fbin\u002Factivate  # 在 Windows 上：.venv\\Scripts\\activate\nuv pip install -e .\n```\n\n有关详细的安装说明和使用示例，请参阅 [入门指南](https:\u002F\u002Fgithub.com\u002FSakanaAI\u002FShinkaEvolve\u002Fblob\u002Fmain\u002Fdocs\u002Fgetting_started.md)。\n\n## 示例 📖\n\n| 示例 | 描述 | 环境设置 |\n|---------|-------------|-------------------|\n| ⭕ [圆填充](https:\u002F\u002Fgithub.com\u002FSakanaAI\u002FShinkaEvolve\u002Ftree\u002Fmain\u002Fexamples\u002Fcircle_packing) | 优化圆填充以最大化半径。 | `LocalJobConfig` |\n| 🎮 [2048 游戏](https:\u002F\u002Fgithub.com\u002FSakanaAI\u002FShinkaEvolve\u002Ftree\u002Fmain\u002Fexamples\u002Fgame_2048) | 优化 2048 游戏的策略。 | `LocalJobConfig` |\n| ∑ [Julia 素数计数](https:\u002F\u002Fgithub.com\u002FSakanaAI\u002FShinkaEvolve\u002Ftree\u002Fmain\u002Fexamples\u002Fjulia_prime_counting) | 优化用于素数计数查询的 Julia 求解器。 | `LocalJobConfig` |\n| ✨ [新颖性生成器](https:\u002F\u002Fgithub.com\u002FSakanaAI\u002FShinkaEvolve\u002Ftree\u002Fmain\u002Fexamples\u002Fnovelty_generator) | 生成富有创意、令人惊喜的输出（例如 ASCII 艺术）。 | `LocalJobConfig` |\n\n\n## 使用 Python API 运行 `shinka` 🐍\n\n对于使用默认设置的最简单配置，您只需指定评估程序即可：\n\n```python\nfrom shinka.core import ShinkaEvolveRunner, EvolutionConfig\nfrom shinka.database import DatabaseConfig\nfrom shinka.launch import LocalJobConfig, SlurmCondaJobConfig, SlurmDockerJobConfig\n\n# 最简配置 - 只需指定必要内容\njob_conf = LocalJobConfig(eval_program_path=\"evaluate.py\")\n# 或为每个作业单独加载 uv\u002Fvenv 环境：\n# job_conf = LocalJobConfig(\n#     eval_program_path=\"evaluate.py\",\n#     activate_script=\".venv\u002Fbin\u002Factivate\",\n# )\n# 或在 SLURM 上运行评估：\n# job_conf = SlurmCondaJobConfig(\n#     eval_program_path=\"evaluate.py\",\n#     partition=\"gpu\",\n#     time=\"01:00:00\",\n#     cpus=1,\n#     gpus=1,\n#     mem=\"8G\",\n#     conda_env=\"shinka\",\n# )\n# 或在 SLURM 上的 Docker 容器中运行评估：\n# job_conf = SlurmDockerJobConfig(\n#     eval_program_path=\"evaluate.py\",\n#     image=\"ubuntu:latest\",\n#     partition=\"gpu\",\n#     time=\"01:00:00\",\n#     cpus=1,\n#     gpus=1,\n#     mem=\"8G\",\n# )\ndb_conf = DatabaseConfig()\nevo_conf = EvolutionConfig(init_program_path=\"initial.py\")\n\nrunner = ShinkaEvolveRunner(\n    evo_config=evo_conf,\n    job_config=job_conf,\n    db_config=db_conf,\n    max_evaluation_jobs=2,\n    max_proposal_jobs=3,  # 当提案生成速度慢于评估时，适度超量提交任务\n    max_db_workers=4,\n)\nrunner.run()\n```\n\n\u003Cdetails>\n\u003Csummary>\u003Cstrong>EvolutionConfig 参数\u003C\u002Fstrong>（点击展开）\u003C\u002Fsummary>\n\n以下类的默认值来自 `shinka\u002Fcore\u002Fconfig.py` 中的 `EvolutionConfig`。Hydra 预设和 CLI 覆盖可以替换这些值。并发控制由 `ShinkaEvolveRunner` 通过 `max_evaluation_jobs`、`max_proposal_jobs` 和 `max_db_workers` 来管理。\n\n| 键 | 默认值 | 类型 | 说明 |\n|-----|---------------|------|-------------|\n| `task_sys_msg` | `\"You are an expert optimization and algorithm design assistant. Improve the program while preserving correctness and immutable regions.\"` | `Optional[str]` | 描述优化任务的系统消息 |\n| `patch_types` | `[\"diff\", \"full\", \"cross\"]` | `List[str]` | 要生成的补丁类型：`\"diff\"`、`\"full\"`、`\"cross\"` |\n| `patch_type_probs` | `[0.6, 0.3, 0.1]` | `List[float]` | 各补丁类型的概率 |\n| `num_generations` | `50` | `int` | 运行的进化代数 |\n| `max_patch_resamples` | `3` | `int` | 如果补丁生成失败，最多重新采样次数 |\n| `max_patch_attempts` | `1` | `int` | 生成有效补丁的最大尝试次数 |\n| `job_type` | `\"local\"` | `str` | 作业执行类型：`\"local\"`、`\"slurm_docker\"`、`\"slurm_conda\"` |\n| `language` | `\"python\"` | `str` | 用于进化的编程语言 |\n| `llm_models` | `[\"gpt-5-mini\", \"gemini-3-flash-preview\", \"gemini-3.1-pro-preview\", \"gpt-5.4\"]` | `List[str]` | 用于代码生成的大模型列表 |\n| `llm_dynamic_selection` | `\"ucb\"` | `Optional[Union[str, BanditBase]]` | 动态模型选择策略 |\n| `llm_dynamic_selection_kwargs` | `{\"cost_aware_coef\": 0.5}` | `dict` | 动态选择的相关参数 |\n| `llm_kwargs` | `{\"temperatures\": [0.0, 0.5, 1.0], \"max_tokens\": 16384}` | `dict` | 大模型调用的额外参数 |\n| `meta_rec_interval` | `10` | `Optional[int]` | 元推荐的间隔 |\n| `meta_llm_models` | `None` | `Optional[List[str]]` | 用于元推荐的大模型 |\n| `meta_llm_kwargs` | `{}` | `dict` | 元推荐大模型的相关参数 |\n| `meta_max_recommendations` | `5` | `int` | 元推荐的最大数量 |\n| `sample_single_meta_rec` | `True` | `bool` | 启用时从元推荐输出中采样单个推荐 |\n| `embedding_model` | `\"text-embedding-3-small\"` | `Optional[str]` | 用于代码嵌入的模型。也支持本地兼容 OpenAI 的嵌入服务器格式 `local\u002F\u003Cmodel>@http(s):\u002F\u002Fhost[:port]\u002Fv1`，并可选使用 `?api_key_env=ENV_VAR` 来指定每个模型的凭据。 |\n| `init_program_path` | `\"initial.py\"` | `Optional[str]` | 待进化的初始程序路径 |\n| `results_dir` | `None` | `Optional[str]` | 保存结果的目录（若未指定则自动生成） |\n| `max_novelty_attempts` | `3` | `int` | 新颖性生成的最大尝试次数 |\n| `code_embed_sim_threshold` | `0.99` | `float` | 代码嵌入的相似度阈值 |\n| `novelty_llm_models` | `None` | `Optional[List[str]]` | 用于判断新颖性的大模型 |\n| `novelty_llm_kwargs` | `{}` | `dict` | 新颖性判断大模型的相关参数 |\n| `use_text_feedback` | `False` | `bool` | 是否在进化过程中使用文本反馈 |\n| `max_api_costs` | `None` | `Optional[float]` | 总 API 预算上限（美元）；当达到上限时，异步运行器将停止新的提案。 |\n| `enable_controlled_oversubscription` | `True` | `bool` | 当提案生成速度慢于评估速度时，启用有限制的提案超额提交。 |\n| `proposal_target_mode` | `'adaptive'` | `str` | 提案目标控制器模式（`adaptive` 或 `fixed`）。 |\n| `proposal_target_min_samples` | `5` | `int` | 在自适应目标控制激活之前，需要完成的最少计时样本数。 |\n| `proposal_target_ratio_cap` | `2.0` | `float` | 自适应控制器使用的最大采样\u002F评估比例。 |\n| `proposal_buffer_max` | `2` | `int` | 除评估并发之外，允许的最大额外提案任务数。 |\n| `proposal_target_hard_cap` | `None` | `Optional[int]` | 自适应提案目标的绝对上限。 |\n| `proposal_target_ewma_alpha` | `0.3` | `float` | 提案\u002F评估计时估计的 EWMA 平滑因子。 |\n| `inspiration_sort_order` | `\"ascending\"` | `str` | 灵感排序方式（`\"ascending\"`、`\"chronological\"`、`\"none\"`） |\n| `evolve_prompts` | `False` | `bool` | 启用元提示进化循环 |\n| `prompt_patch_types` | `[\"diff\", \"full\"]` | `List[str]` | 用于提示进化的工作补丁格式 |\n| `prompt_patch_type_probs` | `[0.7, 0.3]` | `List[float]` | 提示补丁格式的采样概率 |\n| `prompt_evolution_interval` | `None` | `Optional[int]` | 提示进化的频率（以代数为单位；`None` 表示禁用定期更新） |\n| `prompt_archive_size` | `10` | `int` | 系统提示存档的大小 |\n| `prompt_llm_models` | `None` | `Optional[List[str]]` | 用于提示进化的大模型（若未指定则回退到 `llm_models`） |\n| `prompt_llm_kwargs` | `{}` | `dict` | 提示进化大模型调用的额外参数 |\n| `prompt_ucb_exploration_constant` | `1.0` | `float` | UCB 探索常数，用于提示采样。 |\n| `prompt_epsilon` | `0.1` | `float` | 提示采样的 epsilon-greedy 探索概率。 |\n| `prompt_evo_top_k_programs` | `3` | `int` | 在提示进化中用作上下文的顶级程序数量。 |\n| `prompt_percentile_recompute_interval` | `20` | `int` | 两次重新计算提示百分位数之间的代数间隔。\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cstrong>数据库配置参数\u003C\u002Fstrong>（点击展开）\u003C\u002Fsummary>\n\n以下类默认值来自 `shinka\u002Fdatabase\u002Fdbase.py` 中的 `DatabaseConfig`。Hydra 预设和 CLI 覆盖可以替换这些值。\n\n| 键 | 默认值 | 类型 | 说明 |\n|-----|---------------|------|-------------|\n| `db_path` | `None` | `Optional[str]` | 数据库文件路径（如果为 None，则自动生成） |\n| `num_islands` | `2` | `int` | 用于多样性的进化岛屿数量 |\n| `archive_size` | `40` | `int` | 全局档案大小上限 |\n| `elite_selection_ratio` | `0.3` | `float` | 用于启发的精英程序比例 |\n| `num_archive_inspirations` | `1` | `int` | 用作启发的档案程序数量 |\n| `num_top_k_inspirations` | `1` | `int` | 用于启发的前 k 名程序数量 |\n| `migration_interval` | `10` | `int` | 岛屿间迁移的代数间隔 |\n| `migration_rate` | `0.0` | `float` | 要迁移的岛屿种群比例 |\n| `island_elitism` | `True` | `bool` | 在原岛屿上保留最佳程序 |\n| `enforce_island_separation` | `True` | `bool` | 强制岛屿之间完全隔离 |\n| `island_selection_strategy` | `\"uniform\"` | `str` | 岛屿采样器（`\"uniform\"`、`\"equal\"`、`\"proportional\"`、`\"weighted\"`） |\n| `enable_dynamic_islands` | `False` | `bool` | 启用由停滞触发的岛屿繁殖 |\n| `stagnation_threshold` | `100` | `int` | 在产生新岛屿之前，无改进的代数 |\n| `island_spawn_strategy` | `\"initial\"` | `str` | 新岛屿种子策略（`\"initial\"`、`\"best\"`、`\"archive_random\"`） |\n| `island_spawn_subtree_size` | `1` | `int` | 繁殖岛屿时复制的程序数量 |\n| `parent_selection_strategy` | `\"weighted\"` | `str` | 父代选择：`\"weighted\"`、`\"power_law\"`、`\"beam_search\"` |\n| `exploitation_alpha` | `1.0` | `float` | 幂律指数（0=均匀，1=幂律） |\n| `exploitation_ratio` | `0.2` | `float` | 从档案中选择父代的概率 |\n| `parent_selection_lambda` | `10.0` | `float` | 加权选择中 sigmoid 函数的陡峭程度 |\n| `num_beams` | `5` | `int` | 束搜索选择中的束数量 |\n| `archive_selection_strategy` | `\"fitness\"` | `str` | 档案替换策略（`\"fitness\"` 或 `\"crowding\"`） |\n| `archive_criteria` | `{\"combined_score\": 1.0}` | `Dict[str, float]` | 由适应度档案更新使用的加权排名标准 |\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cstrong>JobConfig 参数\u003C\u002Fstrong>（点击展开）\u003C\u002Fsummary>\n\n**LocalJobConfig**（用于本地执行）：\n| 键 | 默认值 | 类型 | 说明 |\n|-----|---------------|------|-------------|\n| `eval_program_path` | `\"evaluate.py\"` | `Optional[str]` | 评估脚本路径 |\n| `extra_cmd_args` | `{}` | `Dict[str, Any]` | 额外的命令行参数 |\n| `time` | `None` | `Optional[str]` | 作业执行的时间限制 |\n| `conda_env` | `None` | `Optional[str]` | 用于运行作业的 Conda 环境 |\n| `activate_script` | `None` | `Optional[str]` | 可加载的环境脚本路径，例如 `.venv\u002Fbin\u002Factivate` |\n\n**SlurmDockerJobConfig**（用于使用 Docker 的 SLURM）：\n| 键 | 默认值 | 类型 | 说明 |\n|-----|---------------|------|-------------|\n| `eval_program_path` | `\"evaluate.py\"` | `Optional[str]` | 评估脚本路径 |\n| `extra_cmd_args` | `{}` | `Dict[str, Any]` | 额外的命令行参数 |\n| `image` | `\"ubuntu:latest\"` | `str` | 要使用的 Docker 镜像 |\n| `image_tar_path` | `None` | `Optional[str]` | Docker 镜像 tar 文件的路径 |\n| `docker_flags` | `\"\"` | `str` | 额外的 Docker 标志 |\n| `partition` | `\"gpu\"` | `str` | 要使用的 SLURM 分区 |\n| `time` | `\"01:00:00\"` | `str` | 作业时间限制 |\n| `cpus` | `1` | `int` | 请求的 CPU 数量 |\n| `gpus` | `1` | `int` | 请求的 GPU 数量 |\n| `mem` | `\"8G\"` | `Optional[str]` | 请求的内存 |\n\n**SlurmCondaJobConfig \u002F SlurmEnvJobConfig**（用于使用加载环境或 Conda 环境的 SLURM）：\n| 键 | 默认值 | 类型 | 说明 |\n|-----|---------------|------|-------------|\n| `eval_program_path` | `\"evaluate.py\"` | `Optional[str]` | 评估脚本路径 |\n| `extra_cmd_args` | `{}` | `Dict[str, Any]` | 额外的命令行参数 |\n| `conda_env` | `\"\"` | `str` | Conda 环境名称 |\n| `activate_script` | `None` | `Optional[str]` | 可加载的环境脚本路径，例如 `.venv\u002Fbin\u002Factivate` |\n| `modules` | `[]` | `Optional[List[str]]` | 要加载的环境模块 |\n| `partition` | `\"gpu\"` | `str` | 要使用的 SLURM 分区 |\n| `time` | `\"01:00:00\"` | `str` | 作业时间限制 |\n| `cpus` | `1` | `int` | 请求的 CPU 数量 |\n| `gpus` | `1` | `int` | 请求的 GPU 数量 |\n| `mem` | `\"8G\"` | `Optional[str]` | 请求的内存 |\n\n`conda_env` 和 `activate_script` 是互斥的。\n\n\u003C\u002Fdetails>\n\n\n\n### 评估设置与初始解决方案 🏃\n\n要使用 `ShinkaEvolveRunner`, 你需要两个关键文件：**`evaluate.py`** 脚本定义了如何测试和评分你的程序——它会运行多次评估、验证结果，并将这些结果汇总成指标，以指导 `shinka` 的进化循环。**`initial.py`** 文件包含你的初始解决方案，其中包含了核心算法，该算法将在多代迭代中由 LLM 不断改进。\n\n\u003Ctable>\n\u003Ctr>\n\u003Ctd width=\"50%\">\n\n**`evaluate.py` - 评估脚本**\n\n```python\nfrom shinka.core import run_shinka_eval\n\ndef main(program_path: str,\n         results_dir: str):\n    metrics, correct, err = run_shinka_eval(\n        program_path=program_path,\n        results_dir=results_dir,\n        experiment_fn_name=\"run_experiment\",\n        num_runs=3, # 多次评估以进行汇总\n        run_workers=1,  # >1 => 每次运行并行\n        get_experiment_kwargs=get_kwargs,\n        aggregate_metrics_fn=aggregate_fn,\n        validate_fn=validate_fn,  # 可选\n    )\n\ndef get_kwargs(run_idx: int) -> dict:\n    return {\"param1\": \"value\", \"param2\": 42}\n\ndef aggregate_fn(results: list) -> dict:\n    score = results[0]\n    text = results[1]\n    return {\n        \"combined_score\": float(score),\n        \"public\": {...},  # shinka可见\n        \"private\": {...},  # shinka不可见\n        \"extra_data\": {...},  # 存储为 pkl\n        \"text_feedback\": text,  # str反馈\n    }\n\nif __name__ == \"__main__\":\n    # argparse程序路径&目录\n    main(program_path, results_dir)\n```\n\n\u003C\u002Ftd>\n\u003Ctd width=\"50%\">\n\n**`initial.py` - 初始解决方案**\n\n```python\n# EVOLVE-BLOCK-START\ndef advanced_algo():\n    # 这部分将被进化\n    return solution\n# EVOLVE-BLOCK-END\n\ndef run_experiment(**kwargs):\n    \"\"\"主函数，由评估者调用\"\"\"\n    result = solve_problem(kwargs)\n    return result\n\ndef solve_problem(params):\n    solution = advanced_algo()\n    return solution\n```\n\n**要点：**\n- 评估名称需与 `experiment_fn_name` 匹配\n- 使用 `EVOLVE-BLOCK-START` 和 `EVOLVE-BLOCK-END` 标记进化部分\n- 返回格式需符合验证预期\n- 环境中必须提供所需依赖\n- 结果可解包以获取指标\n- 自动将多个结果存储在 `results_dir` 中\n- 可在 `shinka` 循环中添加文本反馈\n- 较高的 `combined_score` 值表示更好的性能（最大化）\n\n\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftable>\n\n## 带有 Hydra 的 `shinka` 启动器 🚀\n\n`shinka` 启动器利用 [Hydra](https:\u002F\u002Fhydra.cc\u002F) 轻松配置并启动进化实验。它支持通过 Hydra 强大的覆盖语法进行简洁的配置，从而便于管理和迭代科学探索。\n\n```bash\n# 使用共享的默认基准运行\nshinka_launch\n\n# 使用自定义参数运行\nshinka_launch \\\n    task=circle_packing \\\n    database=island_large \\\n    evolution=small_budget \\\n    cluster=local \\\n    evo_config.num_generations=20\n```\n\n有关全面的配置选项和高级用法，请参阅[配置指南](https:\u002F\u002Fgithub.com\u002FSakanaAI\u002FShinkaEvolve\u002Fblob\u002Fmain\u002Fdocs\u002Fconfiguration.md)。\n\n## `shinka_run` 代理 CLI 🤖\n\n`shinka_run` 是一个用于异步进化的任务目录启动器。它专为代理工作流设计，无需 Hydra 配置文件。\n\n```bash\n# 查看完整界面（详细帮助）\nshinka_run --help\n\n# 最小化运行\nshinka_run \\\n    --task-dir examples\u002Fcircle_packing \\\n    --results_dir results\u002Fcircle_agent_run \\\n    --num_generations 20\n\n# 使用关键字覆盖运行\nshinka_run \\\n    --task-dir examples\u002Fcircle_packing \\\n    --results_dir results\u002Fcircle_agent_custom \\\n    --num_generations 50 \\\n    --max-evaluation-jobs 6 \\\n    --set db.num_islands=2 \\\n    --set job.time=00:10:00 \\\n    --set job.activate_script=.venv\u002Fbin\u002Factivate \\\n    --set evo.llm_models='[\"gpt-5-mini\",\"gemini-3-flash-preview\"]'\n\n# 加载可选 YAML 配置文件（相对于 --task-dir），然后通过 --set 覆盖\nshinka_run \\\n    --task-dir examples\u002Fcircle_packing \\\n    --config-fname shinka_small.yaml \\\n    --results_dir results\u002Fcircle_agent_from_yaml \\\n    --num_generations 50 \\\n    --set db.num_islands=2\n```\n\n`--task-dir` 必须包含 `evaluate.py` 和 `initial.\u003Cext>`。  \n`--config-fname` 可以定义 `evo\u002Fdb\u002Fjob`（或 `evo_config\u002Fdb_config\u002Fjob_config`）以及 `max_evaluation_jobs\u002Fmax_proposal_jobs\u002Fmax_db_workers` 和 `verbose\u002Fdebug`。  \n优先级：配置 YAML \u003C `--set` \u003C 权威性标志。  \n`--results_dir` 和 `--num_generations` 具有权威性，始终会覆盖配置\u002F`--set` 中的 `evo.results_dir` 和 `evo.num_generations` 值。\n\n## 交互式 WebUI 🎨\n\n使用 Shinka 的交互式 Web 界面实时监控您的进化实验！WebUI 提供进化过程、谱系树和性能指标的实时可视化。\n\n![WebUI 截图](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FSakanaAI_ShinkaEvolve_readme_a488eb4ff454.png)\n\n在启动进化实验的同时启动 WebUI：\n\n```bash\n# 开始您的进化实验\nshinka_launch\n\n# 在另一个终端中启动 WebUI\nshinka_visualize --port 8888 --open\n```\n\n有关详细的 WebUI 文档，请参阅[WebUI 指南](https:\u002F\u002Fgithub.com\u002FSakanaAI\u002FShinkaEvolve\u002Fblob\u002Fmain\u002Fdocs\u002Fwebui.md)。\n\n## 贡献 👥\n\n欢迎在代码、文档、代表性基准测试和错误报告等方面做出贡献。\n\n请在提交问题或拉取请求之前阅读[贡献指南](https:\u002F\u002Fgithub.com\u002FSakanaAI\u002FShinkaEvolve\u002Fblob\u002Fmain\u002FCONTRIBUTING.md)。其中记录了预期的问题和 PR 结构、本地检查，以及对核心程序进化流程进行更改所需的额外证据。\n\n如果您提议对核心进化流程进行更改，请附上在一个具有代表性的可运行任务上的结果，以突出新功能，并将其与基准进行比较。请勿仅为了证明 PR 的合理性而随意添加基准测试任务。\n\n## 相关开源项目 🧑‍🔧\n\n- [OpenEvolve](https:\u002F\u002Fgithub.com\u002Fcodelion\u002Fopenevolve)：AlphaEvolve 的开源实现\n- [LLM4AD](https:\u002F\u002Fgithub.com\u002FOptima-CityU\u002Fllm4ad)：基于大型语言模型的算法设计平台\n\n## 引用 ✍️\n\n如果您在研究中使用 `ShinkaEvolve`，请按以下方式引用：\n\n```\n@article{lange2025shinka,\n  title={ShinkaEvolve: Towards Open-Ended And Sample-Efficient Program Evolution},\n  author={Lange, Robert Tjarko and Imajuku, Yuki and Cetin, Edoardo},\n  journal={arXiv preprint arXiv:2509.19349},\n  year={2025}\n}\n```","# ShinkaEvolve 快速上手指南\n\nShinkaEvolve 是一个结合大语言模型（LLM）与进化算法的框架，旨在通过自动化探索和改进科学代码来驱动科学发现。它维护一个程序种群，利用 LLM 作为智能变异算子，在多代演化中不断优化代码性能。\n\n## 环境准备\n\n在开始之前，请确保您的开发环境满足以下要求：\n\n*   **操作系统**：Linux, macOS 或 Windows (WSL2 推荐)\n*   **Python 版本**：>= 3.10 (推荐使用 Python 3.11)\n*   **包管理器**：推荐使用 `uv` (高速安装) 或 `pip`\n*   **API 密钥**：需配置主流 LLM 提供商的 API Key (如 OpenAI, Google Gemini 等)，用于代码生成和评估。\n\n> **提示**：国内用户若访问 PyPI 较慢，可配置国内镜像源加速安装。\n> *   `uv` 示例：`uv pip install shinka-evolve --index-url https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple`\n> *   `pip` 示例：`pip install shinka-evolve -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple`\n\n## 安装步骤\n\n您可以选择通过 PyPI 直接安装稳定版，或从源码安装以进行开发。\n\n### 方式一：使用 uv 安装（推荐，速度最快）\n\n```bash\n# 创建并激活虚拟环境（可选但推荐）\nuv venv --python 3.11\nsource .venv\u002Fbin\u002Factivate  # Windows: .venv\\Scripts\\activate\n\n# 安装 shinka-evolve\nuv pip install shinka-evolve\n```\n\n### 方式二：使用 pip 安装\n\n```bash\npip install shinka-evolve\n```\n\n### 方式三：从源码安装（开发者模式）\n\n如果您需要修改框架源码或运行最新示例：\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002FSakanaAI\u002FShinkaEvolve\ncd ShinkaEvolve\nuv venv --python 3.11\nsource .venv\u002Fbin\u002Factivate\nuv pip install -e .\n```\n\n## 基本使用\n\n安装完成后，您可以通过命令行工具或 Python API 快速启动第一个演化实验。\n\n### 方法 A：命令行快速启动 (CLI)\n\n使用内置的预设配置运行一个简单的“圆堆积优化”示例：\n\n```bash\nshinka_launch variant=circle_packing_example\n```\n\n**自定义配置运行：**\n您也可以通过组合不同的任务、数据库和变体来运行实验：\n\n```bash\nshinka_launch task=novelty_generator database=island_small\n```\n\n**使用自定义配置文件：**\n如果您有自己的 Hydra 配置文件，可以指定配置目录运行：\n\n```bash\nmkdir -p ~\u002Fmy-shinka-configs\u002Fvariant\n# 编辑您的配置文件 ...\nshinka_launch --config-dir ~\u002Fmy-shinka-configs variant=my_variant\n```\n\n### 方法 B：Python API 调用\n\n对于更灵活的控制，您可以在 Python 脚本中直接定义运行逻辑。以下是最小化配置示例：\n\n```python\nfrom shinka.core import ShinkaEvolveRunner, EvolutionConfig\nfrom shinka.database import DatabaseConfig\nfrom shinka.launch import LocalJobConfig\n\n# 1. 配置作业执行环境 (本地运行)\n# 只需指定评估脚本路径即可\njob_conf = LocalJobConfig(eval_program_path=\"evaluate.py\")\n\n# 2. 配置数据库 (默认使用本地 SQLite)\ndb_conf = DatabaseConfig()\n\n# 3. 配置演化参数\n# 指定初始程序路径\nevo_conf = EvolutionConfig(init_program_path=\"initial.py\")\n\n# 4. 初始化并运行\nrunner = ShinkaEvolveRunner(\n    evo_config=evo_conf,\n    job_config=job_conf,\n    db_config=db_conf,\n    max_evaluation_jobs=2,       # 最大并行评估任务数\n    max_proposal_jobs=3,         # 最大并行提案生成数\n    max_db_workers=4,            # 最大数据库工作线程数\n)\n\nrunner.run()\n```\n\n**运行说明：**\n1. 确保当前目录下存在 `evaluate.py` (评估脚本) 和 `initial.py` (初始代码)。\n2. 设置好您的 LLM API 环境变量 (例如 `OPENAI_API_KEY`)。\n3. 运行上述 Python 脚本即可开始演化过程。\n\n更多高级用法（如 Slurm 集群支持、异步演化、WebUI 监控等），请参考官方文档中的详细教程。","某生物计算实验室的研究团队正致力于优化一种复杂的蛋白质折叠模拟算法，需要在保证物理正确性的前提下大幅提升运算速度。\n\n### 没有 ShinkaEvolve 时\n- 研究人员只能依靠人工经验手动调整代码逻辑，尝试新的启发式策略，过程极其耗时且容易陷入思维定势。\n- 每次代码修改后需串行运行耗时的模拟验证，一天内仅能测试寥寥几种变体，样本效率极低。\n- 缺乏系统性的知识沉淀，之前尝试过的失败方案往往被丢弃，无法为后续迭代提供有价值的“负向反馈”。\n- 难以在代码性能提升与可读性之间找到平衡，手动优化的代码常常变得晦涩难懂，不利于团队协作维护。\n\n### 使用 ShinkaEvolve 后\n- ShinkaEvolve 利用大语言模型作为智能变异算子，自动提出人类未曾设想的创造性代码改进方案，打破研发瓶颈。\n- 支持在本地或 Slurm 集群上并行评估数百个候选程序，将原本需要数周的探索周期压缩至几天甚至几小时。\n- 系统自动维护成功解法的档案库，实现不同进化岛之间的知识迁移，让每一次失败都成为通往最优解的阶梯。\n- 在追求极致性能的同时，ShinkaEvolve 能通过多目标优化约束，确保生成的代码依然保持高可读性和物理逻辑的正确性。\n\nShinkaEvolve 将原本依赖直觉和体力的手工试错，转化为高效、自动化的科学发现引擎，让研究人员能专注于更高层的假设构建。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FSakanaAI_ShinkaEvolve_a488eb4f.png","SakanaAI","Sakana AI","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002FSakanaAI_76656b64.png","On a quest to create a new kind of foundation model based on nature-inspired intelligence.",null,"info at sakana dot ai","SakanaAILabs","https:\u002F\u002Fsakana.ai\u002F","https:\u002F\u002Fgithub.com\u002FSakanaAI",[82,86,90],{"name":83,"color":84,"percentage":85},"Python","#3572A5",63.9,{"name":87,"color":88,"percentage":89},"HTML","#e34c26",36.1,{"name":91,"color":92,"percentage":93},"Shell","#89e051",0.1,1038,208,"2026-04-06T01:46:43","Apache-2.0","Linux, macOS, Windows","非必需（本地运行不需要）；若使用 Slurm 集群可配置 GPU 任务（示例中显示 gpus=1），具体型号和显存未说明","未说明（Slurm 示例中默认配置为 8G，可根据任务调整）",{"notes":102,"python":103,"dependencies":104},"该工具主要依赖云端 LLM API（如 GPT-5, Gemini 等）进行代码演化，本地无需部署大模型。支持在本地、Slurm 集群（Conda\u002FDocker 环境）或 Docker 容器中并行运行评估任务。可通过 PyPI 或 uv 安装。若需使用本地模型，需自行配置兼容 OpenAI 格式的本地推理服务。",">=3.10 (开发环境推荐使用 3.11)",[105,106,107],"shinka-evolve","hydra-core","uv (可选包管理器)",[35,14,13,109],"其他","2026-03-27T02:49:30.150509","2026-04-07T02:08:19.116348",[113,118,123,128,133,138,143],{"id":114,"question_zh":115,"answer_zh":116,"source_url":117},20709,"ShinkaEvolve 如何决定在进化循环中使用哪种变异方法（如 diff、全量重写或交叉）？","变异方法的选择主要基于配置文件中给定的概率进行采样。虽然自适应选择（Bandit 算法）主要用于调整不同 LLM 模型（如 Gemini vs Claude）的采样分布，但变异类型（diff、full、cross）目前是通过提示词（prompt）控制的分类变量，按配置概率采样。启发式来看，'diff'通常偏向利用（exploitation），而'full rewrite'和'crossover'更偏向探索（exploration），因为全量重写往往能产生语义差异更大的补丁。此外，嵌入\u002F新颖性判断器也可以用来强制增加多样性。","https:\u002F\u002Fgithub.com\u002FSakanaAI\u002FShinkaEvolve\u002Fissues\u002F82",{"id":119,"question_zh":120,"answer_zh":121,"source_url":122},20710,"使用 Gemini 模型时遇到 'max_tokens' 导致请求失败或长度错误怎么办？","这通常是因为“思考令牌”（thinking tokens）加上输出令牌超过了配置的 `max_tokens` 限制。Gemini 模型的思考令牌数量往往是实际输出令牌的 5-10 倍，容易导致预算超支。解决方案是提高配置文件中的 `max_tokens` 值。如果从配置中删除该参数，Gemini 将默认使用最大可能值。框架中已实现了回退重采样机制，但最直接的方法是增加令牌预算以适应 Gemini 的高思考成本。","https:\u002F\u002Fgithub.com\u002FSakanaAI\u002FShinkaEvolve\u002Fissues\u002F22",{"id":124,"question_zh":125,"answer_zh":126,"source_url":127},20711,"是否支持并行化 LLM 查询以加速进化过程？","是的，最新的更新已通过完整的异步采样和评估（AsyncEvolutionRunner）实现了并行化。此前框架仅支持并行评估候选程序，而 LLM 查询是串行的瓶颈。现在通过异步运行器，对于像圆堆积（circle packing）这样测试时间短的任务，速度提升几乎与资源呈线性关系。请查阅最新的 README 和发布说明（release notes）以获取如何使用 `AsyncEvolutionRunner` 的详细文档。","https:\u002F\u002Fgithub.com\u002FSakanaAI\u002FShinkaEvolve\u002Fissues\u002F51",{"id":129,"question_zh":130,"answer_zh":131,"source_url":132},20712,"如何在配置文件中选择异步评估运行器（AsyncRunner）？","在最近合并的 PR 中已更新支持。现在可以通过 Hydra 配置文件直接启动异步进化，而无需单独创建 `run_evo_async.py` 脚本。您可以使用类似 `shinka_launch variant=variant.yaml` 的命令，并在 YAML 配置中指定变体来启用异步运行器。具体配置项请参考最新的配置文件示例或文档。","https:\u002F\u002Fgithub.com\u002FSakanaAI\u002FShinkaEvolve\u002Fissues\u002F83",{"id":134,"question_zh":135,"answer_zh":136,"source_url":137},20713,"使用本地小模型（如 Ollama 运行的 8B 模型）在圆堆积任务上效果不佳是正常的吗？","使用 8B 参数量的本地模型（如 qwen3:8b）在此类任务上得分较低（例如仅达到 1.6 分）可能是由于模型能力限制。较小的模型可能在理解复杂指令或生成高质量代码变异方面不如大模型。建议参考相关的 Pull Request（如 #58 或 #33），其中包含了针对本地模型支持的修复和优化。如果可能，尝试使用参数量更大的模型或检查是否有特定的配置调整（如温度、最大令牌数）能改善本地模型的表现。","https:\u002F\u002Fgithub.com\u002FSakanaAI\u002FShinkaEvolve\u002Fissues\u002F44",{"id":139,"question_zh":140,"answer_zh":141,"source_url":142},20714,"ShinkaEvolve 能否用于解决机器学习任务（如最小化误差函数）？","是的，ShinkaEvolve 可以处理机器学习任务。在这种场景下，`evaluate.py` 的作用是作为评估器，用于最小化误差函数或最大化目标函数，而不仅仅是像教程中那样使用 LLM 作为新颖性判断器。只要你能定义明确的评估指标（分数），框架就能通过进化算法优化代码以改进该指标。建议仔细阅读相关论文以了解其在 ML 任务上的具体应用范围和最前沿进展。","https:\u002F\u002Fgithub.com\u002FSakanaAI\u002FShinkaEvolve\u002Fissues\u002F31",{"id":144,"question_zh":145,"answer_zh":146,"source_url":117},20715,"ShinkaEvolve 与 OpenEvolve 在自适应 LLM 选择和变异策略上有什么主要区别？","主要区别在于：1. ShinkaEvolve 使用 UCB1 算法进行自适应模型选择，而 OpenEvolve 通常允许手动指定主模型和辅助模型；2. ShinkaEvolve 允许 LLM 池中包含无限数量的模型集成（unlimited ensemble），不仅限于两个；3. 在变异策略上，ShinkaEvolve 明确区分并采样三种方法（diff、full rewrite、crossover），而 OpenEvolve 主要关注 diff 和全量重写。ShinkaEvolve 的自适应机制更侧重于动态调整模型采样分布以优化性能。",[148,153,158,163],{"id":149,"version":150,"summary_zh":151,"released_at":152},126679,"v0.0.4","### 新增\n\n- 新增了一个 `shinka_models` CLI 工具，用于检查当前环境及发现的 `.env` 文件，并报告哪些付费的 LLM 和嵌入模型可供使用。\n- 为本地 OpenAI 兼容的 LLM 和嵌入后端添加了按模型的 `api_key_env` 支持，允许通过 `local\u002F\u003Cmodel>@http(s):\u002F\u002F...?...api_key_env=ENV_VAR` 的方式内联指定凭据。\n\n### 变更\n\n- 将 `shinka_models` 的默认输出改为一个紧凑的 JSON 对象，其中包含独立的 `embedding` 和 `llm` 模型列表；而使用 `--verbose` 选项时，则会在相同的顶级列表中输出提供商级别的可用性详情。\n- 更新了 `shinka-run` 技能，使其在启动进化流程之前，必须先通过 `shinka_models` 验证突变、元推荐、提示进化和嵌入模型的有效性。\n- 改进了本地异步运行时的扩展能力，具体措施包括：使用当前项目解释器启动评估子进程、限制每个进程的数值库线程并发数，以及降低本地监控轮询的延迟。\n- 将提示适应度百分位数的重新计算从提示副作用的关键路径上移至一个带防抖机制的后台任务，并使用新的只读数据库连接来执行该任务。\n- 更新了圆 packing 扩展预设，将其运行代数调整为 `100` 代；同时将小型、中型和大型基准配置中的 `max_patch_resamples` 参数值降低至 `1`。\n\n### 修复\n\n- 修复了自适应提案目标功能，避免当 `proposal_target_hard_cap` 值低于评估容量且无效时，自动禁用超额提交的情况。\n- 修复了提示百分位数的后台刷新逻辑，防止在异步运行期间重新计算提示适应度时出现 SQLite 线程亲和性错误。\n- 修复了 Windows 系统下异步候选文件 I\u002FO、差异摘要和最佳路径导出的 Unicode 处理问题，强制对 LLM 生成的文件使用 UTF-8 编码进行读写操作。","2026-04-06T00:39:02",{"id":154,"version":155,"summary_zh":156,"released_at":157},126680,"v0.0.3","### 新增\n\n- 增加了通过 `evo.embedding_model=local\u002F\u003Cmodel>@http(s):\u002F\u002Fhost[:port]\u002Fv1` 的本地 OpenAI 兼容嵌入端点支持。\n- 添加了 `CONTRIBUTING.md` 文件以及 GitHub 问题和拉取请求模板，用于记录贡献流程。\n- 在 `shinka.plots` 中新增了 Python 吞吐量绘图工具，用于生成运行时序图和归一化占用率随时间变化的视图。\n- 增加了一个持久化的 SQLite `generation_event_log` 日志，用于异步生成生命周期的调试，包括停止事件和持久化失败事件。\n- 为新的 Python 吞吐量绘图辅助工具增加了回归测试覆盖，包括池槽准备、占用率计算以及图例和布局行为。\n- 为并发异步已完成作业的持久化增加了回归测试覆盖，以确保多工作器后处理吞吐量始终处于活跃状态。\n- 为轻量级程序摘要和 WebUI 嵌入选项卡的加载增加了回归测试覆盖，以确保相似度矩阵仅在嵌入数据完全加载后才渲染。\n\n### 变更\n\n- 重新设计了异步完成处理逻辑，使已完成的调度任务能够立即被检测到，在持久化完成之前释放评估槽位，并且关闭时会等待已排队的已完成任务批次以及持久化后的副作用全部处理完毕。\n- 将数据库归档、最佳程序和岛屿维护操作从插入热点路径中移出，改用延迟重放钩子；同时允许异步写入者使用新的工作线程本地连接，并将运行时元数据合并回共享数据库状态。\n- 扩展了管道计时元数据，增加了评估后队列等待时间、持久化后副作用耗时，以及用于端到端异步吞吐量分析的汇总统计信息。\n- 调整了 `examples\u002Fcircle_packing\u002Fshinka_long.yaml` 配置文件，使用更小规模的长期运行预设，并在仓库根目录中忽略生成的 `results*` 和 `shinka_scale*` 产物。\n- 将本地后端指南从 `docs\u002Fsupport_local_llm.md` 重命名为 `docs\u002Fsupport_local_models.md`，并扩展内容以涵盖本地嵌入模型后端，而不仅仅是本地 LLM。\n- 重构了异步代码验证逻辑，使其在不改变验证行为的前提下，跨 Python、Rust、Swift、JSON 和 C++ 验证器使用共享的子进程辅助工具。\n- 更新了 `examples\u002Fcircle_packing\u002Fload_results.ipynb` 笔记本，在底部加入了新的吞吐量图表。\n- 更新了 `examples\u002Fcircle_packing\u002Fload_results.ipynb` 和 `examples\u002Fcircle_packing\u002Fshinka_long.yaml` 文件，以适应最新的大规模异步圆填充运行分析设置。\n- 优化了 Python 吞吐量图表的图例，采用紧凑的居中面板置于每个子图下方，以获得更整洁的笔记本渲染效果。\n- 将异步生成日志简化为仅记录高优先级的失败或停止事件，从而避免持久化调试带来沉重的热点路径开销。\n\n### 修复\n\n- 修复了完成时间的统计逻辑，使得重试或重复持久化的任务仍保留原始调度器的完成时间戳，而不至于夸大评估持续时间。\n- 修复了异步作业监控机制，确保在达到生成目标时能够干净地完成清理工作，即使在轮询边界处已无任何活动任务。","2026-04-03T23:16:00",{"id":159,"version":160,"summary_zh":161,"released_at":162},126681,"v0.0.2","### 新增\n\n- 新增自适应提案超量调度控制功能及文档，用于管理有界的异步提案积压。\n- 在 WebUI 中新增“吞吐量”选项卡，包含运行时时间线、工作线程占用率、归一化占用率、占用率分布、完成速率和利用率等汇总信息。\n- 为 WebUI 运行时时间线和“吞吐量”选项卡的结构增加了回归测试覆盖。\n\n### 变更\n\n- 改进了异步运行时统计逻辑，使评估计时从获取评估槽位时开始，而非从调度器提交时开始。\n- 优化了 WebUI 中运行时时间线的渲染效果，包括改进图例位置，并对资源使用图表中的已生成子岛副本进行去重处理。\n- 改进了嵌入相似度矩阵的布局，使大规模运行时单元格大小保持一致，且可流畅滚动，不再出现视觉上的坍塌现象。\n- 扩展了 `docs\u002Fasync_evolution.md` 文件，添加了关于受控超量调度设置及调优启发式方法的详细说明。\n\n### 修复\n\n- 通过将 `source_job_id` 写入操作视为幂等操作，避免了对同一已完成调度作业重复持久化异步程序的问题。\n- 修复了因将已生成的子岛副本计为独立运行时任务而导致运行时时间线峰值被高估的问题。\n- 修复了 WebUI 中运行时时间线图例重叠及相关布局问题。","2026-03-22T17:37:27",{"id":164,"version":165,"summary_zh":166,"released_at":167},126682,"v0.0.1","## 亮点\n- 首次在 PyPI 上以 `shinka-evolve` 名称发布\n- 通过 `pypi-release.yml` 实现 GitHub Actions 可信发布\n- Hydra 预设打包在 `shinka\u002Fconfigs\u002F` 目录下，确保从 PyPI 安装后 `shinka_launch` 仍可正常工作\n- 保留了原有的简写启动语法（`variant=...`、`task=...`、`database=...`、`cluster=...`）\n- 更新文档，支持 PyPI 安装及通过 `--config-dir` 加载自定义预设\n\n## 验证\n- 在打标签之前，本地通过了 ruff、mypy 检查以及完整的 pytest 测试套件\n- 包构建、`twine check` 和忽略无关文件的检查均顺利通过\n","2026-03-12T07:30:32"]