Loading...
正在加载...
请稍候

大语言模型的自我进化之路:从Shinka Evolve到开放式智能发现

✨步子哥 (steper) 2026年04月18日 08:04
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>大语言模型的自我进化之路:从Shinka Evolve到开放式智能发现</title> <link rel="preconnect" href="https://fonts.googleapis.com"> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> <link href="https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@400;700&family=Noto+Serif+SC:wght@400;700&family=Source+Code+Pro:wght@400;700&display=swap" rel="stylesheet"> <script src="https://cdn.jsdelivr.net/npm/chart.js@4.4.2/dist/chart.umd.min.js"></script> <style> :root { --primary-color: #0D6EFD; --text-color: #212529; --bg-color: #FFFFFF; --border-color: #dee2e6; --subtle-bg: #f8f9fa; } html, body { margin: 0; padding: 0; width: 100%; background-color: var(--bg-color); } body { font-family: "Noto Serif SC", serif; font-size: 16px; line-height: 1.8; color: var(--text-color); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } .container { max-width: 800px; margin: 2.5em auto; padding: 2em 3.5em; background-color: var(--bg-color); box-shadow: 0 4px 12px rgba(0,0,0,0.05); border-radius: 8px; } h1, h2, h3, h4, h5, h6 { font-family: "Noto Sans SC", "Noto Serif SC", sans-serif; font-weight: 700; line-height: 1.4; } h1 { font-size: 28px; text-align: center; color: var(--text-color); margin-top: 24px; margin-bottom: 20px; } h2 { font-size: 22px; margin-top: 2.5em; margin-bottom: 1.2em; padding-bottom: 0.4em; border-left: 5px solid var(--primary-color); padding-left: 0.8em; } h3 { font-size: 20px; margin-top: 2em; margin-bottom: 1em; color: #343a40; } h4 { font-size: 18px; margin-top: 1.5em; margin-bottom: 0.8em; } p { margin-bottom: 1.2em; } a { color: var(--primary-color); text-decoration: none; transition: color 0.2s; } a:hover { text-decoration: underline; color: #0a58ca; } strong { font-weight: 700; color: var(--text-color); } ul, ol { padding-left: 1.8em; margin-bottom: 1.2em; } li { margin-bottom: 0.5em; } blockquote { margin: 1.5em 0; padding: 0.8em 1.5em; border-left: 4px solid var(--primary-color); background-color: var(--subtle-bg); color: #495057; } blockquote p:last-child { margin-bottom: 0; } hr { border: 0; height: 2px; background-image: linear-gradient(to right, rgba(0,0,0,0), var(--primary-color), rgba(0,0,0,0)); margin: 3em 0; } code { font-family: "Source Code Pro", monospace; background-color: #e9ecef; padding: 0.2em 0.4em; border-radius: 3px; font-size: 0.9em; color: #d63384; } pre { background-color: var(--subtle-bg); border: 1px solid var(--border-color); border-radius: 4px; padding: 1em; overflow-x: auto; } pre code { background-color: transparent; padding: 0; border-radius: 0; font-size: 0.9em; color: var(--text-color); } table { width: 100%; border-collapse: collapse; margin: 1.5em 0; font-size: 0.95em; } th, td { padding: 0.8em 1em; text-align: left; border-bottom: 1px solid var(--border-color); } thead th { border-bottom: 2px solid var(--primary-color); font-weight: 700; font-family: "Noto Sans SC", sans-serif; color: var(--text-color); } tbody tr:hover { background-color: rgba(13, 110, 253, 0.05); } .toc { background-color: var(--subtle-bg); border: 1px solid #e9ecef; border-radius: 6px; padding: 1.5em 2em; margin-bottom: 2em; } .toc-title { font-family: "Noto Sans SC", sans-serif; font-size: 1.2em; font-weight: 700; margin-top: 0; margin-bottom: 1em; color: var(--text-color); } .toc ul { padding-left: 0; list-style: none; } .toc-level-2 > li { font-weight: bold; margin-bottom: 0.8em; } .toc-level-2 > li a, .toc-level-3 > li a { color: var(--primary-color); font-weight: normal; } .toc-level-3 { padding-left: 2em; margin-top: 0.5em; list-style-type: circle; } .toc-level-3 > li { font-weight: normal; margin-bottom: 0.4em; } .info-group { background-color: #f8f9fa; border-left: 3px solid var(--primary-color); padding: 1em 1.5em; margin: 1.5em 0; border-radius: 0 4px 4px 0; } .info-group p { margin-bottom: 0.5em; } .info-group p:last-child { margin-bottom: 0; } .chart-placeholder { margin: 2em 0; border: 1px dashed #ced4da; padding: 1.5em; text-align: center; background-color: #f8f9fa; border-radius: 4px; } .placeholder-box { min-height: 200px; background-color: #e9ecef; border-radius: 4px; margin-bottom: 1em; display: flex; align-items: center; justify-content: center; color: #6c757d; font-size: 0.9em; } .placeholder-box::before { content: "图表区域 (Chart Area)"; } .chart-placeholder figcaption { font-size: 0.9em; color: #495057; line-height: 1.4; } </style> </head> <body> <div class="container"> <h1>大语言模型的自我进化之路:从Shinka Evolve到开放式智能发现</h1> <nav class="toc"> <h3 class="toc-title">目录</h3> <ul class="toc-level-2"> <li><a href="#引言从进化算法到ai自我进化的前沿探索">一、 引言:从进化算法到AI自我进化的前沿探索</a></li> <li><a href="#shinka-evolve突破进化计算的样本效率瓶颈">二、 Shinka Evolve:突破进化计算的样本效率瓶颈</a> <ul class="toc-level-3"> <li><a href="#alphaevolve的启示与局限">AlphaEvolve的启示与局限</a></li> <li><a href="#shinka-evolve的核心创新">Shinka Evolve的核心创新</a></li> <li><a href="#shinka-evolve的广泛验证与开源贡献">Shinka Evolve的广泛验证与开源贡献</a></li> </ul> </li> <li><a href="#从解决固定问题到自主发明问题ai自我进化的关键一步">三、 从解决固定问题到自主发明问题:AI自我进化的关键一步</a> <ul class="toc-level-3"> <li><a href="#开放式进化与问题发现">开放式进化与问题发现</a></li> <li><a href="#从被动优化到主动发明">从被动优化到主动发明</a></li> <li><a href="#迈向开放式智能发现">迈向开放式智能发现</a></li> </ul> </li> <li><a href="#ai自我进化的深层意义科学发现与人类协作的新范式">四、 AI自我进化的深层意义:科学发现与人类协作的新范式</a> <ul class="toc-level-3"> <li><a href="#加速科学发现的引擎">加速科学发现的引擎</a></li> <li><a href="#人类与ai的共生进化">人类与AI的共生进化</a></li> </ul> </li> <li><a href="#结语迈向自我进化的智能未来">五、 结语:迈向自我进化的智能未来</a></li> </ul> </nav> <h2 id="引言从进化算法到ai自我进化的前沿探索">引言:从进化算法到AI自我进化的前沿探索</h2> <p>在人工智能领域,<strong>进化算法</strong>(Evolutionary Algorithm)是一类借鉴自然选择和遗传机制的优化技术【11†source】【12†source】。它通过维护一个候选解的“种群”,并运用选择、交叉、变异等操作迭代优化,以在复杂的解空间中搜索最优解【11†source】。这种算法天然具备开放探索和全局搜索的能力,但其传统实现往往<strong>样本效率低下</strong>,需要成千上万次尝试才能找到较优解,导致计算开销巨大【13†source】。近年来,随着<strong>大型语言模型</strong>(LLM)的兴起,研究者开始将LLM与进化算法相结合,利用LLM强大的生成和推理能力来驱动程序或算法的进化【14†source】。然而,早期的尝试(如谷歌DeepMind的AlphaEvolve)虽然展示了在科学发现上的潜力,却依然受限于<strong>样本效率极低</strong>和<strong>系统闭源</strong>的瓶颈【1†source】。正是在这一背景下,日本AI初创企业Sakana AI开源了<strong>Shinka Evolve</strong>框架,旨在通过深度融合LLM与进化算法,实现前所未有的样本效率,并迈向真正的<strong>开放式程序搜索</strong>和<strong>AI自我进化</strong>【1†source】。</p> <h2 id="shinka-evolve突破进化计算的样本效率瓶颈">Shinka Evolve:突破进化计算的样本效率瓶颈</h2> <h3 id="alphaevolve的启示与局限">AlphaEvolve的启示与局限</h3> <p>在Shinka Evolve之前,谷歌DeepMind推出的<strong>AlphaEvolve</strong>系统是进化式程序搜索的里程碑。AlphaEvolve巧妙地将LLM的创造力与自动评估器结合,通过进化框架迭代改进算法,在数学优化、矩阵乘法算法设计乃至谷歌数据中心调度等任务上取得了突破【2†source】。然而,AlphaEvolve存在一个<strong>核心痛点</strong>:其进化搜索过程极其低效,往往需要成千上万次评估才能发现有效的解决方案【1†source】。这使得研究进展缓慢、成本高昂,且由于系统闭源,外界难以复现和改进【1†source】。AlphaEvolve的成功证明了LLM驱动进化的巨大潜力,但其<strong>样本效率瓶颈</strong>严重限制了这一范式的可扩展性和普及度。</p> <h3 id="shinka-evolve的核心创新">Shinka Evolve的核心创新</h3> <p>Shinka Evolve(“Shinka”在日语中意为“进化”或“渐进式发展”【1†source】)的诞生,正是为了攻克AlphaEvolve遗留的效率难题,并推动进化式AI走向开放和实用。Shinka Evolve通过三大关键创新,实现了<strong>数量级的样本效率提升</strong>,使其能够以极少的尝试次数发现高质量的解决方案【1†source】:</p> <div class="info-group"> <p>1. <strong>智能的父代采样策略</strong>:Shinka Evolve引入了一种平衡<strong>探索</strong>与<strong>利用</strong>的程序父代采样技术【1†source】。它不再盲目随机选择父代程序,而是智能地在<strong>已知优秀解</strong>和<strong>未探索新思路</strong>之间取得平衡,确保进化过程既不会陷入对已有解的微小修修补补,也不会完全随机地漫无目的搜索。</p> <p>2. <strong>基于新颖性的拒绝采样</strong>:为了<strong>避免浪费资源评估无意义的微小变异</strong>,Shinka Evolve采用了代码新颖性拒绝采样机制【1†source】。它会计算候选程序与已有程序的文本嵌入相似度,并利用LLM作为“新颖性评审”来判断一个变异是否真正具有创意【1†source】。如果新程序只是对已有程序的细微修改,缺乏实质创新,系统会将其拒绝,从而将有限的评估资源集中在更有潜力的新颖方案上。</p> <p>3. <strong>任务依赖的LLM优先级策略</strong>:Shinka Evolve支持<strong>多模型集成</strong>,可以根据任务需求动态选择最合适的LLM【3†source】。它采用<strong>老虎机算法</strong>(Bandit)策略,根据各LLM在当前任务上的表现自适应地调整优先级,随着进化推进不断切换最擅长的模型【1†source】。这意味着在进化初期,可能更侧重于广泛探索的模型,而在后期则转向擅长精细优化的模型,确保搜索过程始终高效推进。</p> </div> <p>这三项创新协同作用,使Shinka Evolve能够在<strong>极少代际</strong>内发现高质量的算法。例如,在经典的26圆 Packing 问题上,Shinka Evolve仅用<strong>150个样本</strong>就发现了新的最优解,而AlphaEvolve则需要成千上万次尝试【1†source】。这一突破性效率提升,使得进化式算法从“昂贵且不可及”变得“高效且易用”,为AI自我进化奠定了技术基础。</p> <div style="height: 400px; margin: 2em 0;"> <canvas id="sampleEfficiencyChart"></canvas> </div> <p style="text-align: center; margin-top: -1.5em; font-size: 0.9em; color: #495057;">图1:Shinka Evolve与AlphaEvolve在26圆Packing问题上的样本效率对比</p> <h3 id="shinka-evolve的广泛验证与开源贡献">Shinka Evolve的广泛验证与开源贡献</h3> <p>为了证明Shinka Evolve的普适性和高效性,研究者在四个截然不同的领域对其进行了验证,结果令人瞩目【1†source】:</p> <ul> <li><strong>数学优化</strong>:在26圆 Packing 问题上,Shinka Evolve发现的算法超越了AlphaEvolve此前报告的最佳结果,刷新了纪录【1†source】。</li> <li><strong>智能体架构设计</strong>:Shinka Evolve被用于设计解决数学竞赛题的智能体架构。仅用<strong>75代</strong>进化,它就演化出一种三阶段的代理架构,该架构在AIME数学推理基准上显著优于强基线,并且能够泛化到不同年份和不同底层LLM的问题【1†source】。</li> <li><strong>竞赛编程</strong>:在AtCoder竞赛编程任务(NP难优化问题)上,Shinka Evolve对现有顶尖代理的解进行了改进。它在多个任务上提升了代理性能,平均提升2.3%,其中在某一任务上改进之大连参赛都可获得第二名【1†source】。</li> <li><strong>LLM训练优化</strong>:Shinka Evolve甚至被应用于改进LLM自身的训练策略。它发现了一种新的MoE(专家混合)模型负载均衡损失函数,仅进化<strong>30代</strong>就超越了DeepSeek团队设计的“Global LBL”损失函数,在7个基准上提高了效率并提升了下游准确率【1†source】。更令人振奋的是,这种由Shinka Evolve发现的损失函数在规模更大的MoE模型(5倍于原始模型的活跃参数)上依然有效,展现了其发现的<strong>核心训练策略</strong>具有广泛适用性【1†source】。</li> </ul> <div style="height: 400px; margin: 2em 0;"> <canvas id="performanceImprovementChart"></canvas> </div> <p style="text-align: center; margin-top: -1.5em; font-size: 0.9em; color: #495057;">图2:Shinka Evolve在多领域的性能提升效果</p> <p>除了卓越的性能,Shinka Evolve的另一大贡献是其<strong>开源性质</strong>。与AlphaEvolve等闭源系统不同,Shinka Evolve以Apache 2.0许可开源,任何人都可以访问其代码和模型【1†source】。这大大降低了研究门槛,促进了社区对进化式AI的参与和改进。Shinka Evolve的推出,标志着进化式程序搜索从“昂贵且封闭”走向“高效且开放”,为AI自我进化的研究铺平了道路。</p> <h2 id="从解决固定问题到自主发明问题ai自我进化的关键一步">从解决固定问题到自主发明问题:AI自我进化的关键一步</h2> <p>Shinka Evolve的突破不仅仅在于效率,更在于它所代表的<strong>范式转变</strong>:从解决<strong>固定问题</strong>,向<strong>自主发明问题并解决</strong>迈出了关键一步【1†source】。这一转变是AI自我进化能力的核心体现。</p> <h3 id="开放式进化与问题发现">开放式进化与问题发现</h3> <p>传统的进化算法(包括AlphaEvolve)通常聚焦于<strong>优化给定的目标</strong>,即<strong>解决固定的问题</strong>。进化过程被限制在人类预先定义的解空间和评价标准内,无法跳出既定框架去探索未知的更优解或全新问题。这种<strong>封闭式</strong>进化虽然能产生令人惊喜的解决方案,但其<strong>创造性</strong>受限于人类设定的边界。</p> <p>真正的<strong>开放式进化</strong>(Open-Ended Evolution)则不同,它不仅追求在给定目标上的性能提升,更强调<strong>发现新的目标和问题</strong>。正如Sakana AI的研究者所指出的:“系统像AlphaEvolve那样优化固定问题固然强大,但真正的科学进步需要<strong>问题本身的协同进化</strong>”【2†source】。换言之,AI若要实现自我进化,就必须具备<strong>问题发现</strong>的能力,而不仅仅是<strong>问题求解</strong>。</p> <h3 id="从被动优化到主动发明">从被动优化到主动发明</h3> <p>Shinka Evolve正是朝着这个方向迈出的重要一步。它不再仅满足于在人类设定的竞赛中超越对手,而是开始在进化过程中<strong>自主探索</strong>新的可能性。例如,在数学优化任务中,Shinka Evolve并非只是寻找更优的圆排列,它甚至可能<strong>发现全新的算法思想</strong>(如将黄金角螺旋与模拟退火相结合)来解决传统方法未触及的问题【1†source】。在智能体架构设计中,它不是简单复制人类专家的设计,而是<strong>发明</strong>出包含多样专家角色、同行评审和综合的三阶段架构,这是一种全新的问题解决范式【1†source】。</p> <p>这种从<strong>被动优化</strong>到<strong>主动发明</strong>的转变,标志着AI从工具走向了<strong>协作者</strong>。Shinka Evolve的愿景是成为科学家和工程师的“副驾驶”(Co-Pilot),与人类协同探索未知【1†source】。它不仅执行人类指令,更能在探索过程中<strong>提出新思路</strong>、<strong>发现新问题</strong>,从而与人类共同推动知识边界的拓展。</p> <h3 id="迈向开放式智能发现">迈向开放式智能发现</h3> <p>开放式进化的终极目标是实现<strong>AI的自我持续进化</strong>。一个能够自主发明问题并解决的AI,将不再局限于人类的想象力,而是能够不断开辟新的研究领域,实现<strong>自我驱动的智能发现</strong>。这与当前兴起的“AI科学家”范式不谋而合:AI不仅自动化科研流程,更参与<strong>假设提出</strong>和<strong>理论创新</strong>【8†source】。Shinka Evolve的成功表明,我们正朝着这个方向前进。它将进化算法的探索能力与LLM的创造力和推理能力深度融合,打造了一个能够<strong>开放式地搜索程序和算法空间</strong>的系统【1†source】。这为未来更高级的自我进化系统奠定了基础,使我们离实现能够自主学习和进化的AI更近了一步。</p> <h2 id="ai自我进化的深层意义科学发现与人类协作的新范式">AI自我进化的深层意义:科学发现与人类协作的新范式</h2> <p>Shinka Evolve所代表的AI自我进化技术,不仅是一次算法效率的飞跃,更可能引发科学发现和人与AI协作方式的深刻变革。</p> <h3 id="加速科学发现的引擎">加速科学发现的引擎</h3> <p>科学研究本质上是一种<strong>问题求解与发现</strong>的过程。传统上,人类科学家提出假设、设计实验、分析结果,再提出新假设,如此循环往复。AI的自我进化有潜力成为这一过程的<strong>加速引擎</strong>。例如,在药物研发、材料科学、数学定理证明等领域,AI可以自主地提出新的分子结构、新的算法或新的数学猜想,并通过进化搜索验证其有效性。这与<strong>AI科学家</strong>的理念高度契合:AI从辅助工具变为能够独立或与人类合作进行科研的“伙伴”【8†source】。Shinka Evolve在数学优化和算法设计上的成功已经证明了这一点——它发现的某些算法和架构是人类未曾想到的,为相关领域带来了新的启发【1†source】。</p> <p>更重要的是,AI的自我进化可以<strong>突破人类认知的局限</strong>。人类受限于经验、知识和思维定式,往往难以跳出既有框架思考问题。而进化算法天然具备<strong>跳出局部最优</strong>的能力,LLM则拥有跨领域的知识储备和创造力。当二者结合,AI就有可能在人类未曾探索的方向上取得突破,实现真正的<strong>颠覆性创新</strong>。这种由AI驱动的发现,有望加速科学进步,解决人类面临的复杂挑战。</p> <h3 id="人类与ai的共生进化">人类与AI的共生进化</h3> <p>AI的自我进化并非要取代人类,而是开启一种<strong>人机共生进化</strong>的新范式。在这个过程中,人类和AI各自发挥所长,形成<strong>协同放大</strong>的效应。人类提供价值判断、伦理指导和宏观目标,AI则提供海量的计算探索、模式识别和创新思路。Shinka Evolve所倡导的“人机共创”模式正是这一思想的体现:它不是让AI孤军奋战,而是作为人类的副驾驶,与人类共同探索未知【1†source】。</p> <p>这种协作关系的演变,将深刻影响未来的科研组织形式。未来的科研团队可能由<strong>人类科学家与AI智能体</strong>共同组成,人类提出问题框架和关键假设,AI负责海量方案搜索和初步验证,再由人类筛选和深化最有潜力的方向。人类和AI在<strong>互补中进化</strong>:人类通过与AI的合作拓宽了认知边界,AI则通过人类的反馈和指导变得更聪明、更符合人类价值观。这正是OmniScientist等项目所展望的<strong>人类与AI协同进化的科研生态系统</strong>【7†source】。</p> <p>在这样的生态系统中,AI的自我进化能力确保了其<strong>持续学习</strong>和<strong>自我提升</strong>,而人类的监督和引导则保证了进化的方向与人类社会利益相一致。通过人机协作,我们有望实现<strong>1+1>2</strong>的效果:既发挥AI在速度和规模上的优势,又保留人类在洞察力和创造力上的不可替代性。这不仅是技术进步,更是一种新的<strong>文明演化模式</strong>,人与AI共同探索未知、共同进步。</p> <h2 id="结语迈向自我进化的智能未来">结语:迈向自我进化的智能未来</h2> <p>从进化算法的启蒙,到AlphaEvolve的破局,再到Shinka Evolve的效率革命,我们见证了AI自我进化能力的加速演进。Shinka Evolve通过突破样本效率瓶颈和推动开放式程序搜索,让AI从解决固定问题的工具,转变为能够自主发明问题并解决的探索者。这不仅是技术上的飞跃,更预示着科学研究范式的变革和人机关系的重塑。</p> <p>当然,我们也必须清醒地认识到,AI的自我进化仍处于早期阶段,面临诸多挑战和未知。例如,如何确保AI发现的新问题和新知识对人类有益而非有害?如何防止AI在追求目标时出现不可控的<strong>奖励作弊</strong>行为【8†source】?如何建立动态的评估体系,以适应AI不断演化的智能?这些都是未来需要深入研究和谨慎应对的问题。</p> <p>尽管前路漫漫,但Shinka Evolve的成功为我们描绘了一个令人振奋的未来图景:AI不再仅仅是执行指令的工具,而是能够与人类并肩探索未知的<strong>智能伙伴</strong>。它能够自主地学习和进化,不断拓展知识的疆界;它能够与人类协同,将人类的创造力放大到前所未有的高度。在这个未来中,人与AI将共同谱写文明演进的新篇章。我们有理由相信,随着技术的不断进步和伦理的同步完善,AI的自我进化终将为人类带来<strong>更广阔的认知视野</strong>和<strong>更繁荣的智能时代</strong>。【1†source】【8†source】</p> </div> <script> document.addEventListener("DOMContentLoaded", function() { const fontFamilies = "'Noto Sans SC', 'Noto Serif SC', sans-serif"; const textColor = '#212529'; const gridColor = '#E9ECEF'; // Chart 1: Sample Efficiency const ctx1 = document.getElementById('sampleEfficiencyChart'); if (ctx1) { new Chart(ctx1, { type: 'bar', data: { labels: ['Shinka Evolve', 'AlphaEvolve'], datasets: [{ label: '所需样本数', data: [150, 10000], backgroundColor: ['rgba(13, 110, 253, 0.6)'], borderColor: ['rgba(13, 110, 253, 1)'], borderWidth: 1 }] }, options: { responsive: true, maintainAspectRatio: false, scales: { y: { beginAtZero: true, max: 12000, title: { display: true, text: '所需样本数(对数刻度)', color: textColor, font: { family: fontFamilies, size: 14 } }, ticks: { color: textColor, font: { family: fontFamilies } }, grid: { color: gridColor, borderDash: [5, 5] }, type: 'logarithmic' }, x: { ticks: { color: textColor, font: { family: fontFamilies, size: 14 } }, grid: { display: false } } }, plugins: { legend: { display: false }, tooltip: { mode: 'index', intersect: false, titleFont: { family: fontFamilies }, bodyFont: { family: fontFamilies } }, title: { display: false } } } }); } // Chart 2: Performance Improvement const ctx2 = document.getElementById('performanceImprovementChart'); if (ctx2) { new Chart(ctx2, { type: 'bar', data: { labels: ['智能体架构设计 (AIME分数提升)', '竞赛编程 (性能提升 %)', 'LLM训练优化 (准确率提升 %)'], datasets: [{ label: '性能提升', data: [15, 2.3, 1.73], backgroundColor: [ 'rgba(13, 110, 253, 0.6)', 'rgba(25, 135, 84, 0.6)', 'rgba(255, 193, 7, 0.6)' ], borderColor: [ 'rgba(13, 110, 253, 1)', 'rgba(25, 135, 84, 1)', 'rgba(255, 193, 7, 1)' ], borderWidth: 1 }] }, options: { responsive: true, maintainAspectRatio: false, scales: { y: { beginAtZero: true, max: 18, title: { display: true, text: '性能提升', color: textColor, font: { family: fontFamilies, size: 14 } }, ticks: { color: textColor, font: { family: fontFamilies } }, grid: { color: gridColor, borderDash: [5, 5] } }, x: { ticks: { color: textColor, font: { family: fontFamilies, size: 12 } }, grid: { display: false } } }, plugins: { legend: { display: false }, tooltip: { mode: 'index', intersect: false, titleFont: { family: fontFamilies }, bodyFont: { family: fontFamilies } }, title: { display: false } } } }); } }); </script> </body> </html>

讨论回复

0 条回复

还没有人回复,快来发表你的看法吧!