id: a2c16ca3b2f749f8a31bb025af0c13df
parent_id: 
item_type: 1
item_id: 545e77b0bf454b669a1f5a7f52b43fa2
item_updated_time: 1764345639412
title_diff: "[{\"diffs\":[[1,\"60K星！最近爆火的 Gemini CLI，如何让它支持运行任意大模型？\"]],\"start1\":0,\"start2\":0,\"length1\":0,\"length2\":36}]"
body_diff: "[{\"diffs\":[[1,\"<html>\\\r\\\n<head>\\\r\\\n  <title>60K星！最近爆火的 Gemini CLI，如何让它支持运行任意大模型？</title>\\\r\\\n  <basefont face=\\\"微软雅黑\\\" size=\\\"2\\\" />\\\r\\\n  <meta http-equiv=\\\"Content-Type\\\" content=\\\"text/html;charset=utf-8\\\" />\\\r\\\n  <meta name=\\\"exporter-version\\\" content=\\\"YXBJ Windows/608924 (zh-CN, DDL); Windows/10.0.0 (Win64); EDAMVersion=V2;\\\"/>\\\r\\\n  <meta name=\\\"content-class\\\" content=\\\"yinxiang.peso.superNote\\\"/>\\\r\\\n  <meta name=\\\"application-data:yinxiang.noteLayout\\\" content=\\\"{\\\"lineSpace\\\":\\\"recommend\\\",\\\"paragraphSpace\\\":\\\"recommend\\\"}\\\"/>\\\r\\\n  <style>\\\r\\\n\\tbody, td {\\\r\\\n\\t  font-family: 微软雅黑;\\\r\\\n\\t  font-size: 12pt;\\\r\\\n\\t}\\\r\\\n  </style>\\\r\\\n</head>\\\r\\\n<body>\\\r\\\n<a name=\\\"45321\\\"></a>\\\r\\\n<h1>60K星！最近爆火的 Gemini CLI，如何让它支持运行任意大模型？</h1>\\\r\\\n\\\r\\\n<div><span><div><br/></div><p><br/></p><div style=\\\"--en-blockquote:true;box-sizing: border-box; padding-left: 19px; padding-top: 6px; padding-bottom: 6px; border-left: 3px solid #b4c0cc; background-position: initial initial; background-repeat: initial initial; margin-top: 6px\\\"><div>原文链接: <a href=\\\"https://mp.weixin.qq.com/s?__biz=Mzk0MDMwMzQyOA==&amp;mid=2247504347&amp;idx=1&amp;sn=821c65decb0be8b4f008e2f8150edd0b&amp;chksm=c38fdfdd743aa73c204e7d902466ba20d5471204814992cdd64c2abe30816514610dc6f3dc7c&amp;mpshare=1&amp;scene=1&amp;srcid=0729F6Usw47BJBtiQoqoniFr&amp;sharer_shareinfo=b4d3de09c81994dabaaea37f861952db&amp;sharer_shareinfo_first=b4d3de09c81994dabaaea37f861952db#rd\\\" rev=\\\"en_rl_none\\\">https://mp.weixin.qq.com/s?__biz=Mzk0MDMwMzQyOA==&amp;mid=224750...</a></div></div><p><br/></p><div><br/></div><h1 style=\\\"other-props:eyJibG9ja0lkIjoiQ2lVYVNpTGNRbnIifQ==;\\\"> 60K星！最近爆火的 Gemini CLI，如何让它支持运行任意大模型？</h1><div>原创 ConardLi  code秘密花园 </div><p style=\\\"color:rgb(0, 0, 0);\\\"><span style=\\\"font-size: 14px;\\\"><span style=\\\"font-family: Optima, 'Microsoft YaHei', PingFangSC-regular, serif;\\\"><span style=\\\"color: rgb(0,0,0);\\\">大家好，欢迎来到 code秘密花园，我是花园老师（ConardLi）。</span></span></span></p><p style=\\\"color:rgb(0, 0, 0);\\\"><span style=\\\"font-size: 14px;\\\"><span style=\\\"color: rgb(0,0,0);\\\">今天跟大家聊一下最近爆火的 Gemini CLI，谷歌开发的开源 AI Agent 命令行工具，目前在 Github 上已经斩获了 60K Star，是目前同类开源产品中最热门的工具。最近我对它基于现有的代码进行了一个二次开发，可以支持运行任意大模型，包括本地模型， 还支持直接在我们自己的代码中直接引入使用。</span></span></p><p style=\\\"color:rgb(0, 0, 0);\\\"><span style=\\\"font-size: 14px;\\\"><span style=\\\"color: rgb(0,0,0);\\\">可能有一些同学对这个工具本身还不是太了解，所以在开始介绍之前，我们先来简单学习一下这个工具。</span></span></p><img src=\\\":/814d8f054fec4b63911e53d445b4c3ec\\\" type=\\\"image/png\\\" data-filename=\\\"640.png\\\" style=\\\"--en-marks:%7B%22align%22%3A%22center%22%7D;--en-uploadstate:uploaded;\\\"/><p style=\\\"color:rgb(0, 0, 0);\\\"><span style=\\\"font-size: 14px;\\\"><span style=\\\"font-family: Optima, 'Microsoft YaHei', PingFangSC-regular, serif;\\\"><span style=\\\"color: rgb(0,0,0);\\\">Gemini CLI 在设计上，基本上是就为了对标最近风头正盛的 Claude Code，它们的主要功能设计都基本一致，区别就是它默认集成了 Google 自家的 Gemini 2.5 Pro 模型，但是代码开源、而且提供了非常多的模型免费调用额度，在当下 Claude Code 对中国用户无端封禁的情况下，Gemini CLI 是一个非常不错的平替。它的核心特点包括：</span></span></span></p><ul><li><div style=\\\"color:rgb(1, 1, 1);\\\"><span style=\\\"font-size: 14px;\\\"><span style=\\\"color: rgb(1, 1, 1);\\\">出色的编码能力，百万级 token 上下文，自定义用户记忆，能够覆盖代码编写全生命周期管理；</span></span></div></li><li><div style=\\\"color:rgb(1, 1, 1);\\\"><span style=\\\"font-size: 14px;\\\"><span style=\\\"color: rgb(1, 1, 1);\\\">支持图像、视频、音频的多模态文件处理；</span></span></div></li><li><div style=\\\"color:rgb(1, 1, 1);\\\"><span style=\\\"font-size: 14px;\\\"><span style=\\\"color: rgb(1, 1, 1);\\\">内置一套智能工作流引擎和出色的上下文管理机制，支持安全沙盒环境和无限循环保护；</span></span></div></li><li><div style=\\\"color:rgb(1, 1, 1);\\\"><span style=\\\"font-size: 14px;\\\"><span style=\\\"color: rgb(1, 1, 1);\\\">另外它还能通过 MCP 协议接入自定义 API 或第三方工具。</span></span></div></li></ul><hr/><h2 style=\\\"background-color:unset;other-props:eyJibG9ja0lkIjoiNWdITVRTOVZ4Y3EifQ==;\\\"><span style=\\\"font-size: 18px;\\\"><span style=\\\"color: rgb(34, 34, 34);\\\"><span style=\\\"font-weight: bold;\\\">Gemini CLI 的使用场景</span></span></span></h2><h3 style=\\\"background-color:transparent;other-props:eyJibG9ja0lkIjoiOVNRSVItOHdNOXQifQ==;\\\"><span style=\\\"font-size: 17px;\\\"><span style=\\\"color: rgb(0, 0, 0);\\\"><span style=\\\"font-weight: bold;\\\">写代码</span></span></span></h3><p style=\\\"color:rgb(0, 0, 0);\\\"><span style=\\\"font-size: 14px;\\\"><span style=\\\"color: rgb(0,0,0);\\\">我们可以用它来做非常多的事情，在传统的编码任务上，由于它内置的 Gemini 2.5 Pro 本身编码能力还不错，而且具备百万级上下文窗口，另外它内置了一套非常优秀的工作流引擎以及上下文管理机制，支持安全沙盒环境和无限循环保护机制，可以完成比较复杂的编码任务（基本可以做到和 Claude Code 相近的水准）。</span></span></p><div style=\\\"background-color:rgb(40, 44, 52);\\\"><br/></div><div style=\\\"--en-codeblock:true;--en-blockId:NvvwQ23SwXP;--en-meta:{&quot;title&quot;:&quot;&quot;,&quot;lang&quot;:&quot;Plain Text&quot;,&quot;theme&quot;:&quot;default&quot;,&quot;showLine&quot;:true,&quot;lineWrap&quot;:true};box-sizing: border-box; padding: 8px; font-family: Monaco, Menlo, Consolas, &quot;Courier New&quot;, monospace; font-size: 12px; color: rgb(51, 51, 51); border-top-left-radius: 4px; border-top-right-radius: 4px; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px; background-color: rgb(251, 250, 248); border: 1px solid rgba(0, 0, 0, 0.14902); background-position: initial initial; background-repeat: initial initial; margin-top: 6px;\\\">帮我查一下最近 1 个月内最热门的 5 篇关于 AI 的论文，然后根据每个论文里的核心内容、原文链接、作者等信息总结成一份详细的分析报告，然后帮我编写一个精美的网页，来展示这些报告。\\\n</div><p style=\\\"color:rgb(0, 0, 0);\\\"><span style=\\\"font-size: 14px;\\\"><span style=\\\"color: rgb(0,0,0);\\\">Gemini CLI 默认内置了 Google Search 工具，可以根据我们的需求智能检索相关内容：</span></span></p><img src=\\\":/02715b4d54934c79805dbc9d55f6621f\\\" type=\\\"image/jpeg\\\" data-filename=\\\"640.jpg\\\" style=\\\"--en-marks:%7B%22align%22%3A%22center%22%7D;--en-uploadstate:uploaded;\\\"/><p style=\\\"color:rgb(0, 0, 0);\\\"><span style=\\\"font-size: 14px;\\\"><span style=\\\"font-family: Optima, 'Microsoft YaHei', PingFangSC-regular, serif;\\\"><span style=\\\"color: rgb(0,0,0);\\\">然后开始编写代码：</span></span></span></p><img src=\\\":/3bc8652ad7cd45cca715da2183153523\\\" type=\\\"image/jpeg\\\" data-filename=\\\"640.jpg\\\" style=\\\"--en-marks:%7B%22align%22%3A%22center%22%7D;--en-uploadstate:uploaded;\\\"/><p style=\\\"color:rgb(0, 0, 0);\\\"><span style=\\\"font-size: 14px;\\\"><span style=\\\"font-family: Optima, 'Microsoft YaHei', PingFangSC-regular, serif;\\\"><span style=\\\"color: rgb(0,0,0);\\\">这是最后的一个效果，当中间又经过了我的几轮指导和细节上的优化，不过编码体验还真的挺不错的：</span></span></span></p><img src=\\\":/6545537bb2274bd6af733d76e5dc1acb\\\" type=\\\"image/png\\\" data-filename=\\\"640.png\\\" style=\\\"--en-marks:%7B%22align%22%3A%22center%22%7D;--en-uploadstate:uploaded;\\\"/><hr/><h3 style=\\\"background-color:transparent;other-props:eyJibG9ja0lkIjoiZXpXaVNlRTVlTTgifQ==;\\\"><span style=\\\"font-size: 17px;\\\"><span style=\\\"font-family: Optima, 'Microsoft YaHei', PingFangSC-regular, serif;\\\"><span style=\\\"color: rgb(0, 0, 0);\\\"><span style=\\\"font-weight: bold;\\\">多模态</span></span></span></span></h3><p style=\\\"color:rgb(0, 0, 0);\\\"><span style=\\\"font-size: 14px;\\\"><span style=\\\"color: rgb(0,0,0);\\\">另外，Gemini CLI 还具备非常强大的多模态处理能力，可以轻松处理各种图片、音频、视频文件，比如，我们可以让它直接帮我们处理和分析视频文件，下面我们让它直接分析一下最新的 ChatGPT Agent 发布会视频：</span></span></p><div style=\\\"background-color:rgb(40, 44, 52);\\\"><br/></div><div style=\\\"--en-codeblock:true;--en-blockId:CeQXSCBKNHy;--en-meta:{&quot;title&quot;:&quot;&quot;,&quot;lang&quot;:&quot;Plain Text&quot;,&quot;theme&quot;:&quot;default&quot;,&quot;showLine&quot;:true,&quot;lineWrap&quot;:true};box-sizing: border-box; padding: 8px; font-family: Monaco, Menlo, Consolas, &quot;Courier New&quot;, monospace; font-size: 12px; color: rgb(51, 51, 51); border-top-left-radius: 4px; border-top-right-radius: 4px; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px; background-color: rgb(251, 250, 248); border: 1px solid rgba(0, 0, 0, 0.14902); background-position: initial initial; background-repeat: initial initial; margin-top: 6px;\\\">@gpt.mp4  分析此视频中的音频内容，然后帮我编写一篇详细的中文文章，使用 Markdown 语法，直接保存为本地文件。\\\n</div><img src=\\\":/fe5760021f70496aa27ce446c59a326c\\\" type=\\\"image/jpeg\\\" data-filename=\\\"640.jpg\\\" style=\\\"--en-marks:%7B%22align%22%3A%22center%22%7D;--en-uploadstate:uploaded;\\\"/><p style=\\\"color:rgb(0, 0, 0);\\\"><span style=\\\"font-size: 14px;\\\"><span style=\\\"font-family: Optima, 'Microsoft YaHei', PingFangSC-regular, serif;\\\"><span style=\\\"color: rgb(0,0,0);\\\">运行完成后，帮我们生成了一篇非常详细的中文文章：</span></span></span></p><img src=\\\":/ab652c9f80ff4d61ad504c8f23bc1c5f\\\" type=\\\"image/png\\\" data-filename=\\\"640.png\\\" style=\\\"--en-marks:%7B%22align%22%3A%22center%22%7D;--en-uploadstate:uploaded;\\\"/><hr/><h3 style=\\\"background-color:transparent;other-props:eyJibG9ja0lkIjoiSklIZVR1VHpzWWIifQ==;\\\"><span style=\\\"font-size: 17px;\\\"><span style=\\\"font-family: Optima, 'Microsoft YaHei', PingFangSC-regular, serif;\\\"><span style=\\\"color: rgb(0, 0, 0);\\\"><span style=\\\"font-weight: bold;\\\">MCP 调用</span></span></span></span></h3><p style=\\\"color:rgb(0, 0, 0);\\\"><span style=\\\"font-size: 14px;\\\"><span style=\\\"color: rgb(0,0,0);\\\">Gemini CLI 内置了一套丰富的工具系统，而且还能通过 MCP 协议接入各种自定义第三方工具，非常方便，比如我们可以尝试给它配置一个我们介绍过的绘图 MCP：</span></span></p><div style=\\\"background-color:rgb(40, 44, 52);\\\"><br/></div><div style=\\\"--en-codeblock:true;--en-blockId:oObjQaY3D5l;--en-meta:{&quot;title&quot;:&quot;&quot;,&quot;lang&quot;:&quot;Plain Text&quot;,&quot;theme&quot;:&quot;default&quot;,&quot;showLine&quot;:true,&quot;lineWrap&quot;:true};box-sizing: border-box; padding: 8px; font-family: Monaco, Menlo, Consolas, &quot;Courier New&quot;, monospace; font-size: 12px; color: rgb(51, 51, 51); border-top-left-radius: 4px; border-top-right-radius: 4px; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px; background-color: rgb(251, 250, 248); border: 1px solid rgba(0, 0, 0, 0.14902); background-position: initial initial; background-repeat: initial initial; margin-top: 6px;\\\">帮我详细分析这个项目的技术架构，然后选择几种合适的绘图工具帮我绘制几张技术架构图。\\\n</div><p style=\\\"color:rgb(0, 0, 0);\\\"><span style=\\\"font-size: 14px;\\\"><span style=\\\"color: rgb(0,0,0);\\\">Gemini CLI 首先帮我们详细分析了系统架构：</span></span></p><img src=\\\":/6b58117906de40998eec908f600de729\\\" type=\\\"image/jpeg\\\" data-filename=\\\"640.jpg\\\" style=\\\"--en-marks:%7B%22align%22%3A%22center%22%7D;--en-uploadstate:uploaded;\\\"/><p style=\\\"color:rgb(0, 0, 0);\\\"><span style=\\\"font-size: 14px;\\\"><span style=\\\"font-family: Optima, 'Microsoft YaHei', PingFangSC-regular, serif;\\\"><span style=\\\"color: rgb(0,0,0);\\\">然后开始调用 MCP 帮我们绘制架构图：</span></span></span></p><img src=\\\":/dd93e029d64540e088ae6e2792dbab9c\\\" type=\\\"image/png\\\" data-filename=\\\"640.png\\\" style=\\\"--en-marks:%7B%22align%22%3A%22center%22%7D;--en-uploadstate:uploaded;\\\"/><p style=\\\"color:rgb(0, 0, 0);\\\"><span style=\\\"font-size: 14px;\\\"><span style=\\\"font-family: Optima, 'Microsoft YaHei', PingFangSC-regular, serif;\\\"><span style=\\\"color: rgb(0,0,0);\\\">绘制效果：</span></span></span></p><img src=\\\":/0b90c1bcbe764adfac0253c6e3435993\\\" type=\\\"image/png\\\" data-filename=\\\"640.png\\\" style=\\\"--en-marks:%7B%22align%22%3A%22center%22%7D;--en-uploadstate:uploaded;\\\"/><hr/><h2 style=\\\"background-color:unset;other-props:eyJibG9ja0lkIjoiMjVnVVQyZEFUaHcifQ==;\\\"><span style=\\\"font-size: 18px;\\\"><span style=\\\"font-family: Optima, 'Microsoft YaHei', PingFangSC-regular, serif;\\\"><span style=\\\"color: rgb(34, 34, 34);\\\"><span style=\\\"font-weight: bold;\\\">为什么要做改造</span></span></span></span></h2><p style=\\\"color:rgb(0, 0, 0);\\\"><span style=\\\"font-size: 14px;\\\"><span style=\\\"color: rgb(0,0,0);\\\">我觉得这个工具做的非常不错，而且代码是开源的，所以我对 Gemini CLI 的代码进行了详细的分析：</span></span></p><img src=\\\":/02db8d35ce2b4511b465a251fae18940\\\" type=\\\"image/png\\\" data-filename=\\\"640.png\\\" style=\\\"--en-marks:%7B%22align%22%3A%22center%22%7D;--en-uploadstate:uploaded;\\\"/><p style=\\\"color:rgb(0, 0, 0);\\\"><span style=\\\"font-size: 14px;\\\"><span style=\\\"font-family: Optima, 'Microsoft YaHei', PingFangSC-regular, serif;\\\"><span style=\\\"color: rgb(0,0,0);\\\">我发现 Gemini CLI 的架构设计非常优秀，他能承担的任务远不止这些，这也是为什么 Gemini CLI 一经开源，在这么短的时间内就收获了 60K Star。</span></span></span></p><img src=\\\":/4cf10be9271f438aafd0d6c652554b2b\\\" type=\\\"image/png\\\" data-filename=\\\"640.png\\\" style=\\\"--en-marks:%7B%22align%22%3A%22center%22%7D;--en-uploadstate:uploaded;\\\"/><p style=\\\"color:rgb(0, 0, 0);\\\"><span style=\\\"font-size: 14px;\\\"><span style=\\\"font-family: Optima, 'Microsoft YaHei', PingFangSC-regular, serif;\\\"><span style=\\\"color: rgb(0,0,0);\\\">那么，我为什么要对它进行改造呢，主要是基于以下几个原因：</span></span></span></p><ul><li><div style=\\\"color:rgb(1, 1, 1);\\\"><span style=\\\"font-size: 14px;\\\"><span style=\\\"color: rgb(1, 1, 1);\\\">第一点：首先就是账号注册的问题，这一步其实就劝退了很多人啊，首先需要注册一个 Google 账号，然后使用 Google 账号登录的话，在启动 CLI 前还需要配置一个 PROJECT ID 环境变量才能使用。</span></span></div></li></ul><img src=\\\":/ad0fca3efe6a4bcc8e7ed5e81945ba48\\\" type=\\\"image/png\\\" data-filename=\\\"640.png\\\" style=\\\"--en-marks:%7B%22align%22%3A%22center%22%7D;--en-uploadstate:uploaded;\\\"/><ul><li><div style=\\\"color:rgb(1, 1, 1);\\\"><span style=\\\"font-size: 14px;\\\"><span style=\\\"font-family: Optima, 'Microsoft YaHei', PingFangSC-regular, serif;\\\"><span style=\\\"color: rgb(1, 1, 1);\\\">第二点：Gemini CLI 内置的 Geimini 2.5 Pro 虽然很强，但并不一定适用于所有任务，而且它还有一定的降级策略，很多情况下你的任务其实是由降级后的 Geimini 2.5 Flash 完成的，这也是为什么，有的时候明明任务完成的挺好的，有的时候却感觉降智了一样。</span></span></span></div></li></ul><img src=\\\":/150faec710f94827923a4800737e3139\\\" type=\\\"image/png\\\" data-filename=\\\"640.png\\\" style=\\\"--en-marks:%7B%22align%22%3A%22center%22%7D;--en-uploadstate:uploaded;\\\"/><ul><li><div style=\\\"color:rgb(1, 1, 1);\\\"><span style=\\\"font-size: 14px;\\\"><span style=\\\"font-family: Optima, 'Microsoft YaHei', PingFangSC-regular, serif;\\\"><span style=\\\"color: rgb(1, 1, 1);\\\">第三点：前期免费，后期收割，这是老套路了，如果我们可以使用自定义模型版本，就不用怕它后续狮子大开口了，另外有些任务，Gemini CLI 并不一定处理的很好，我们可以根据特定的需求场景来切换模型。</span></span></span></div></li><li><div style=\\\"color:rgb(1, 1, 1);\\\"><span style=\\\"font-size: 14px;\\\"><span style=\\\"color: rgb(1, 1, 1);\\\">第四点：就是如果我们想让它处理一些涉及企业内部的代码或者文件，就有一定的数据泄露的风险了，毕竟还是一个海外的模型。所以 Claude Code 、Gemini CLI 这样的工具虽然很优秀，但有些任务我们还是没办法让它来完成的，但是如果可以自定义模型，这个问题就迎刃而解了。</span></span></div></li><li><div style=\\\"color:rgb(1, 1, 1);\\\"><span style=\\\"font-size: 14px;\\\"><span style=\\\"color: rgb(1, 1, 1);\\\">最后一点，如此优秀的开源工具，我也把它通过代码集成至我自己的项目中，但是官方只提供了 CLI 交互的方式，所以我通过对它的核心 API 进行抽取，实现了直接在代码中轻松引入。</span></span></div></li></ul><hr/><h2 style=\\\"background-color:unset;other-props:eyJibG9ja0lkIjoibW0xdlN1djQwYm8ifQ==;\\\"><span style=\\\"font-size: 18px;\\\"><span style=\\\"color: rgb(34, 34, 34);\\\"><span style=\\\"font-weight: bold;\\\">Easy LLM CLI</span></span></span></h2><p style=\\\"color:rgb(0, 0, 0);\\\"><span style=\\\"font-size: 14px;\\\"><span style=\\\"color: rgb(0,0,0);\\\">下面我们直接来看我对 Gemini CLI 的改造版本：Easy LLM CLI ，简称 ELC，目前我也把改造后的代码直接开源了（https://github.com/ConardLi/easy-llm-cli）</span></span></p><img src=\\\":/148893f3183d4e3885be78d442d0b8e8\\\" type=\\\"image/png\\\" data-filename=\\\"640.png\\\" style=\\\"--en-marks:%7B%22align%22%3A%22center%22%7D;--en-uploadstate:uploaded;\\\"/><p style=\\\"color:rgb(0, 0, 0);\\\"><span style=\\\"font-size: 14px;\\\"><span style=\\\"font-family: Optima, 'Microsoft YaHei', PingFangSC-regular, serif;\\\"><span style=\\\"color: rgb(0,0,0);\\\">使用它，我们可以自定义任意模型，包括本地模型，同时可以拥有 Gemini CLI 提供的强大能力。</span></span></span></p><img src=\\\":/2a21354d149c42ab8ab845ce569df0e5\\\" type=\\\"image/png\\\" data-filename=\\\"640.png\\\" style=\\\"--en-marks:%7B%22align%22%3A%22center%22%7D;--en-uploadstate:uploaded;\\\"/><p style=\\\"color:rgb(0, 0, 0);\\\"><span style=\\\"font-size: 14px;\\\"><span style=\\\"font-family: Optima, 'Microsoft YaHei', PingFangSC-regular, serif;\\\"><span style=\\\"color: rgb(0,0,0);\\\">这是我在这个改造版本上，使用多种不同提供商的模型以及本地部署的模型进行了以下几个维度的测试：</span></span></span></p><ul><li><div style=\\\"color:rgb(1, 1, 1);\\\"><span style=\\\"font-size: 14px;\\\"><span style=\\\"color: rgb(1, 1, 1);\\\">思考过程：是否具备推理能力（可以输出思考过程）；</span></span></div></li><li><div style=\\\"color:rgb(1, 1, 1);\\\"><span style=\\\"font-size: 14px;\\\"><span style=\\\"color: rgb(1, 1, 1);\\\">基础对话：向模型发送 “ Hello ”，可以收到回复；</span></span></div></li><li><div style=\\\"color:rgb(1, 1, 1);\\\"><span style=\\\"font-size: 14px;\\\"><span style=\\\"color: rgb(1, 1, 1);\\\">工具调用：调用简单工具（例如读取文件）；</span></span></div></li><li><div style=\\\"color:rgb(1, 1, 1);\\\"><span style=\\\"font-size: 14px;\\\"><span style=\\\"color: rgb(1, 1, 1);\\\">多模态：分析理解图片内容；</span></span></div></li><li><div style=\\\"color:rgb(1, 1, 1);\\\"><span style=\\\"font-size: 14px;\\\"><span style=\\\"color: rgb(1, 1, 1);\\\">MCP：可调用自定义配置的 MCP Server；</span></span></div></li><li><div style=\\\"color:rgb(1, 1, 1);\\\"><span style=\\\"font-size: 14px;\\\"><span style=\\\"color: rgb(1, 1, 1);\\\">复杂任务：执行复杂任务（通常需要多次调用多个工具）；</span></span></div></li></ul><img src=\\\":/47498e6c1f7b4a84b896b95207a33280\\\" type=\\\"image/png\\\" data-filename=\\\"640.png\\\" style=\\\"--en-marks:%7B%22align%22%3A%22center%22%7D;--en-uploadstate:uploaded;\\\"/><p style=\\\"color:rgb(0, 0, 0);\\\"><span style=\\\"font-size: 14px;\\\"><span style=\\\"font-family: Optima, 'Microsoft YaHei', PingFangSC-regular, serif;\\\"><span style=\\\"color: rgb(0,0,0);\\\">根据测试结果，目前最热门的几个模型，基本上都能完成较为复杂的任务，达到和原本的 Gemini 2.5 Pro 一样的效果，甚至有些模型的完成效果要比 Gemini 还要更好。</span></span></span></p><p style=\\\"color:rgb(0, 0, 0);\\\"><span style=\\\"font-size: 14px;\\\"><span style=\\\"color: rgb(0,0,0);\\\">使用方式非常简单，我们可以直接使用 npx 运行，或者使用 npm 将它安装到我们的全局，然后使用 elc 命令（注意，运行的前提是我们本地要有 Node.js version 20 以上的环境）：</span></span></p><div style=\\\"background-color:rgb(40, 44, 52);\\\"><br/></div><div style=\\\"--en-codeblock:true;--en-blockId:0EoaSCQ05aK;--en-meta:{&quot;title&quot;:&quot;&quot;,&quot;lang&quot;:&quot;Plain Text&quot;,&quot;theme&quot;:&quot;default&quot;,&quot;showLine&quot;:true,&quot;lineWrap&quot;:true};box-sizing: border-box; padding: 8px; font-family: Monaco, Menlo, Consolas, &quot;Courier New&quot;, monospace; font-size: 12px; color: rgb(51, 51, 51); border-top-left-radius: 4px; border-top-right-radius: 4px; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px; background-color: rgb(251, 250, 248); border: 1px solid rgba(0, 0, 0, 0.14902); background-position: initial initial; background-repeat: initial initial; margin-top: 6px;\\\">npx easy-llm-cli\\\n\\\nnpm install -g easy-llm-cli\\\nelc\\\n</div><p style=\\\"color:rgb(0, 0, 0);\\\"><span style=\\\"font-size: 14px;\\\"><span style=\\\"color: rgb(0,0,0);\\\">在默认不指定任何环境变量的情况下， 我们还是可以选择 Google 提供的几种登陆方式：</span></span></p><img src=\\\":/cc2c871c6c2546ca8b10da513f35eaac\\\" type=\\\"image/jpeg\\\" data-filename=\\\"640.jpg\\\" style=\\\"--en-marks:%7B%22align%22%3A%22center%22%7D;--en-uploadstate:uploaded;\\\"/><p style=\\\"color:rgb(0, 0, 0);\\\"><span style=\\\"font-size: 14px;\\\"><span style=\\\"font-family: Optima, 'Microsoft YaHei', PingFangSC-regular, serif;\\\"><span style=\\\"color: rgb(0,0,0);\\\">我们可以通过以下几个环境变量来自定义我们的模型配置：</span></span></span></p><div style=\\\"background-color:rgb(40, 44, 52);\\\"><br/></div><div style=\\\"--en-codeblock:true;--en-blockId:fn9eRyJyJNQ;--en-meta:{&quot;title&quot;:&quot;&quot;,&quot;lang&quot;:&quot;Plain Text&quot;,&quot;theme&quot;:&quot;default&quot;,&quot;showLine&quot;:true,&quot;lineWrap&quot;:true};box-sizing: border-box; padding: 8px; font-family: Monaco, Menlo, Consolas, &quot;Courier New&quot;, monospace; font-size: 12px; color: rgb(51, 51, 51); border-top-left-radius: 4px; border-top-right-radius: 4px; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px; background-color: rgb(251, 250, 248); border: 1px solid rgba(0, 0, 0, 0.14902); background-position: initial initial; background-repeat: initial initial; margin-top: 6px;\\\"><span style=\\\"color: #5c6370;\\\"><i># 启用自定义 LLM 支持</i></span>\\\nUSE_CUSTOM_LLM=<span style=\\\"color: #56b6c2;\\\">true</span>\\\nCUSTOM_LLM_API_KEY=<span style=\\\"color: #98c379;\\\">&quot;your-api-key&quot;</span>     <span style=\\\"color: #5c6370;\\\"><i># 你的 LLM 提供商 API 密钥</i></span>\\\nCUSTOM_LLM_ENDPOINT=<span style=\\\"color: #98c379;\\\">&quot;https://api.your-llm-provider.com/v1&quot;</span>  <span style=\\\"color: #5c6370;\\\"><i># API 端点</i></span>\\\nCUSTOM_LLM_MODEL_NAME=<span style=\\\"color: #98c379;\\\">&quot;your-model-name&quot;</span>  <span style=\\\"color: #5c6370;\\\"><i># 模型名称</i></span>\\\n\\\n<span style=\\\"color: #5c6370;\\\"><i># 可选参数</i></span>\\\nCUSTOM_LLM_TEMPERATURE=0.7  <span style=\\\"color: #5c6370;\\\"><i># 温度参数（默认值：0）</i></span>\\\nCUSTOM_LLM_MAX_TOKENS=8192  <span style=\\\"color: #5c6370;\\\"><i># 最大令牌数（默认值：8192）</i></span>\\\nCUSTOM_LLM_TOP_P=1          <span style=\\\"color: #5c6370;\\\"><i># Top P 参数（默认值：1）</i></span>\\\n</div><hr/><h3 style=\\\"background-color:transparent;other-props:eyJibG9ja0lkIjoiOVIyN1F5VjBSRzAifQ==;\\\"><span style=\\\"font-size: 17px;\\\"><span style=\\\"color: rgb(0, 0, 0);\\\"><span style=\\\"font-weight: bold;\\\">测试 Kimi K2</span></span></span></h3><p style=\\\"color:rgb(0, 0, 0);\\\"><span style=\\\"font-size: 14px;\\\"><span style=\\\"color: rgb(0,0,0);\\\">比如，我们选择最新非常火热的 Kimi K2 来测试一下，注入环境变量有很多种方式，我们可以在当前目录下编写一个 .env 文件，也可以直接通过 export 直接在命令行注入：</span></span></p><img src=\\\":/fb0237ce1a4f47cf8ef411cb29a1890d\\\" type=\\\"image/jpeg\\\" data-filename=\\\"640.jpg\\\" style=\\\"--en-marks:%7B%22align%22%3A%22center%22%7D;--en-uploadstate:uploaded;\\\"/><p style=\\\"color:rgb(0, 0, 0);\\\"><span style=\\\"font-size: 14px;\\\"><span style=\\\"font-family: Optima, 'Microsoft YaHei', PingFangSC-regular, serif;\\\"><span style=\\\"color: rgb(0,0,0);\\\">启动成功后，我们可以看到右下角的模型提供商和模型名称已经切换为我们的自定义配置，我们来尝试问一个问题：</span></span></span></p><div style=\\\"background-color:rgb(40, 44, 52);\\\"><br/></div><div style=\\\"--en-codeblock:true;--en-blockId:3NG4ROBcvPv;--en-meta:{&quot;title&quot;:&quot;&quot;,&quot;lang&quot;:&quot;Plain Text&quot;,&quot;theme&quot;:&quot;default&quot;,&quot;showLine&quot;:true,&quot;lineWrap&quot;:true};box-sizing: border-box; padding: 8px; font-family: Monaco, Menlo, Consolas, &quot;Courier New&quot;, monospace; font-size: 12px; color: rgb(51, 51, 51); border-top-left-radius: 4px; border-top-right-radius: 4px; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px; background-color: rgb(251, 250, 248); border: 1px solid rgba(0, 0, 0, 0.14902); background-position: initial initial; background-repeat: initial initial; margin-top: 6px;\\\">帮我详细分析当前项目的技术架构，然后帮我编写一个精美的网站来展示介绍这个项目。\\\n</div><p style=\\\"color:rgb(0, 0, 0);\\\"><span style=\\\"font-size: 14px;\\\"><span style=\\\"color: rgb(0,0,0);\\\">分析过程：</span></span></p><img src=\\\":/9054b77f39794217ad4053ea5b8e2729\\\" type=\\\"image/jpeg\\\" data-filename=\\\"640.jpg\\\" style=\\\"--en-marks:%7B%22align%22%3A%22center%22%7D;--en-uploadstate:uploaded;\\\"/><p style=\\\"color:rgb(0, 0, 0);\\\"><span style=\\\"font-size: 14px;\\\"><span style=\\\"font-family: Optima, 'Microsoft YaHei', PingFangSC-regular, serif;\\\"><span style=\\\"color: rgb(0,0,0);\\\">生成效果非常不错：</span></span></span></p><img src=\\\":/47cb16202da84420912f10fa11580463\\\" type=\\\"image/jpeg\\\" data-filename=\\\"640.jpg\\\" style=\\\"--en-marks:%7B%22align%22%3A%22center%22%7D;--en-uploadstate:uploaded;\\\"/><img src=\\\":/fbb05c60b0ec41d6aa0c818a5441caa5\\\" type=\\\"image/png\\\" data-filename=\\\"640.png\\\" style=\\\"--en-marks:%7B%22align%22%3A%22center%22%7D;--en-uploadstate:uploaded;\\\"/><hr/><h3 style=\\\"background-color:transparent;other-props:eyJibG9ja0lkIjoiMlFGNVFHdmcyUm4ifQ==;\\\"><span style=\\\"font-size: 17px;\\\"><span style=\\\"font-family: Optima, 'Microsoft YaHei', PingFangSC-regular, serif;\\\"><span style=\\\"color: rgb(0, 0, 0);\\\"><span style=\\\"font-weight: bold;\\\">测试 Doubao</span></span></span></span></h3><p style=\\\"color:rgb(0, 0, 0);\\\"><span style=\\\"font-size: 14px;\\\"><span style=\\\"color: rgb(0,0,0);\\\">如果我们切换一个具备多模态能力的模型（比如 Doubao-Seed-1.6），同样可以完成丰富的多模态分析任务：</span></span></p><div style=\\\"background-color:rgb(40, 44, 52);\\\"><br/></div><div style=\\\"--en-codeblock:true;--en-blockId:7lKyQ6_cEEa;--en-meta:{&quot;title&quot;:&quot;&quot;,&quot;lang&quot;:&quot;Plain Text&quot;,&quot;theme&quot;:&quot;default&quot;,&quot;showLine&quot;:true,&quot;lineWrap&quot;:true};box-sizing: border-box; padding: 8px; font-family: Monaco, Menlo, Consolas, &quot;Courier New&quot;, monospace; font-size: 12px; color: rgb(51, 51, 51); border-top-left-radius: 4px; border-top-right-radius: 4px; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px; background-color: rgb(251, 250, 248); border: 1px solid rgba(0, 0, 0, 0.14902); background-position: initial initial; background-repeat: initial initial; margin-top: 6px;\\\">帮我找一下这个项目有哪些图片？然后查看一下第 6 张图片里面是什么内容？\\\n</div><p style=\\\"color:rgb(0, 0, 0);\\\"><span style=\\\"font-size: 14px;\\\"><span style=\\\"color: rgb(0,0,0);\\\">分析结果：</span></span></p><img src=\\\":/33a4a47d47e04e7fbfd08968a9ed0780\\\" type=\\\"image/jpeg\\\" data-filename=\\\"640.jpg\\\" style=\\\"--en-marks:%7B%22align%22%3A%22center%22%7D;--en-uploadstate:uploaded;\\\"/><hr/><h2 style=\\\"background-color:unset;other-props:eyJibG9ja0lkIjoiZ255UFQtdnM0WlgifQ==;\\\"><span style=\\\"font-size: 18px;\\\"><span style=\\\"font-family: Optima, 'Microsoft YaHei', PingFangSC-regular, serif;\\\"><span style=\\\"color: rgb(34, 34, 34);\\\"><span style=\\\"font-weight: bold;\\\">在代码中集成</span></span></span></span></h2><p style=\\\"color:rgb(0, 0, 0);\\\"><span style=\\\"font-size: 14px;\\\"><span style=\\\"color: rgb(0,0,0);\\\">在刚使用上 Gemini CLI 时我就在想，如此强大的 Agent，要是不仅局限于完成日常个人任务，也能集成到我们自己的项目代码、业务流程里就更好了。但受限于两个问题：</span></span></p><p style=\\\"color:rgb(0, 0, 0);\\\"><span style=\\\"font-size: 14px;\\\"><span style=\\\"color: rgb(0,0,0);\\\">第一是只能用 Google 的 Geimini 模型，很多公司内部都智只能用本地部署的模型，现在这个问题已经解决了，我们可以自定义任意模型 API。</span></span></p><p style=\\\"color:rgb(0, 0, 0);\\\"><span style=\\\"font-size: 14px;\\\"><span style=\\\"color: rgb(0,0,0);\\\">第二个问题是 Gemini CLI 在设计时并没有考虑直接被代码调用，所以很多核心功能只能和 CLI 界面进行交互。好在代码是开源的，我在分析完代码后，将 Geimini Agent 的核心逻辑进行了抽离，和 CLI 界面进行解耦，能够直接被代码调用：</span></span></p><img src=\\\":/89c523903a6448b2a87e86da53ad916e\\\" type=\\\"image/png\\\" data-filename=\\\"640.png\\\" style=\\\"--en-marks:%7B%22align%22%3A%22center%22%7D;--en-uploadstate:uploaded;\\\"/><p style=\\\"color:rgb(0, 0, 0);\\\"><span style=\\\"font-size: 14px;\\\"><span style=\\\"font-family: Optima, 'Microsoft YaHei', PingFangSC-regular, serif;\\\"><span style=\\\"color: rgb(0,0,0);\\\">改造后，在 Easy LLM CLI 提供一个了 </span></span><code style=\\\"-en-code: true\\\"><span style=\\\"font-family: 'Operator Mono', Consolas, Monaco, Menlo, monospace;\\\"><span style=\\\"color: rgb(145, 109, 213);\\\">ElcAgent</span></span></code></span> 类，允许开发者在自己的 Node.js 应用程序中集成 AI Agent 功能。这个 API 支持多种 LLM 提供商，包括自定义端点、工具调用、扩展系统等。</p><div style=\\\"background-color:rgb(40, 44, 52);\\\"><br/></div><div style=\\\"--en-codeblock:true;--en-blockId:rZw9Qez1Rvl;--en-meta:{&quot;title&quot;:&quot;&quot;,&quot;lang&quot;:&quot;Plain Text&quot;,&quot;theme&quot;:&quot;default&quot;,&quot;showLine&quot;:true,&quot;lineWrap&quot;:true};box-sizing: border-box; padding: 8px; font-family: Monaco, Menlo, Consolas, &quot;Courier New&quot;, monospace; font-size: 12px; color: rgb(51, 51, 51); border-top-left-radius: 4px; border-top-right-radius: 4px; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px; background-color: rgb(251, 250, 248); border: 1px solid rgba(0, 0, 0, 0.14902); background-position: initial initial; background-repeat: initial initial; margin-top: 6px;\\\">import { ElcAgent, AuthType } from <span style=\\\"color: #98c379;\\\">'easy-llm-cli'</span>;\\\n\\\n// 创建 Agent 实例\\\nconst agent = new ElcAgent({\\\n  model: <span style=\\\"color: #98c379;\\\">'your-model-name'</span>,\\\n  apiKey: <span style=\\\"color: #98c379;\\\">'your-api-key'</span>,\\\n  endpoint: <span style=\\\"color: #98c379;\\\">'https://your-llm-endpoint.com/api/v3'</span>,\\\n<span style=\\\"color: #e6c07b;\\\">log</span>: <span style=\\\"color: #56b6c2;\\\">true</span>,\\\n<span style=\\\"color: #e6c07b;\\\">readonly</span>: <span style=\\\"color: #56b6c2;\\\">false</span>\\\n});\\\n\\\n// 运行对话\\\nconst response = await agent.run(<span style=\\\"color: #98c379;\\\">'你好，请帮我分析这个项目的结构'</span>);\\\nconsole.log(response);\\\n</div><p style=\\\"color:rgb(0, 0, 0);\\\"><span style=\\\"font-size: 14px;\\\"><code style=\\\"-en-code: true\\\"><span style=\\\"font-family: 'Operator Mono', Consolas, Monaco, Menlo, monospace;\\\"><span style=\\\"color: rgb(145, 109, 213);\\\">ElcAgent</span></span></code></span> 构造函数接受一个 <span style=\\\"font-size: 14px;\\\"><code style=\\\"-en-code: true\\\"><span style=\\\"font-family: 'Operator Mono', Consolas, Monaco, Menlo, monospace;\\\"><span style=\\\"color: rgb(145, 109, 213);\\\">AgentConfig</span></span></code></span> 对象，包含以下配置选项：</p><h3 style=\\\"background-color:transparent;other-props:eyJibG9ja0lkIjoiNUU2TVQ2R0ZGSDMifQ==;\\\"><span style=\\\"font-size: 17px;\\\"><span style=\\\"color: rgb(0, 0, 0);\\\"><span style=\\\"font-weight: bold;\\\">必需配置</span></span></span></h3><table style=\\\"--en-fitwindow:false;border-left:1px solid #d9d9d9;border-top:1px solid #d9d9d9;border-collapse:collapse;width:570px;\\\" width=\\\"570px\\\"><colgroup><col style=\\\"width: 190px;\\\"></col><col style=\\\"width: 190px;\\\"></col><col style=\\\"width: 190px;\\\"></col></colgroup><tbody><tr><th style=\\\"--en-typeInfo:{&quot;type&quot;:&quot;text&quot;,&quot;data&quot;:{}};background-color:initial;border-right:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;padding:10px;text-align:left;\\\"><div><span style=\\\"font-size: 14px;\\\"><span style=\\\"color: rgb(0, 0, 0);\\\"><span style=\\\"font-weight: bold;\\\">参数</span></span></span></div></th><th style=\\\"--en-typeInfo:{&quot;type&quot;:&quot;text&quot;,&quot;data&quot;:{}};background-color:initial;border-right:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;padding:10px;text-align:left;\\\"><div><span style=\\\"font-size: 14px;\\\"><span style=\\\"color: rgb(0, 0, 0);\\\"><span style=\\\"font-weight: bold;\\\">类型</span></span></span></div></th><th style=\\\"--en-typeInfo:{&quot;type&quot;:&quot;text&quot;,&quot;data&quot;:{}};background-color:initial;border-right:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;padding:10px;text-align:left;\\\"><div><span style=\\\"font-size: 14px;\\\"><span style=\\\"color: rgb(0, 0, 0);\\\"><span style=\\\"font-weight: bold;\\\">描述</span></span></span></div></th></tr><tr style=\\\"background-attachment:scroll; background-clip:border-box; background-image:none; background-origin:padding-box; background-position-x:0%; background-position-y:0%; background-repeat-x:no-repeat; background-repeat-y:no-repeat; background-size:auto; width:auto; height:auto;\\\"><td style=\\\"--en-typeInfo:{&quot;type&quot;:&quot;text&quot;,&quot;data&quot;:{}};border-right:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;padding:10px;\\\"><div><span style=\\\"color: rgb(0, 0, 0);\\\">model</span></div></td><td style=\\\"--en-typeInfo:{&quot;type&quot;:&quot;text&quot;,&quot;data&quot;:{}};border-right:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;padding:10px;\\\"><div>string</div></td><td style=\\\"--en-typeInfo:{&quot;type&quot;:&quot;text&quot;,&quot;data&quot;:{}};border-right:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;padding:10px;\\\"><div>自定义 LLM 名称</div></td></tr><tr style=\\\"background-attachment:scroll; background-clip:border-box; background-image:none; background-origin:padding-box; background-position-x:0%; background-position-y:0%; background-repeat-x:no-repeat; background-repeat-y:no-repeat; background-size:auto; width:auto; height:auto;\\\"><td style=\\\"--en-typeInfo:{&quot;type&quot;:&quot;text&quot;,&quot;data&quot;:{}};border-right:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;padding:10px;\\\"><div><span style=\\\"color: rgb(0, 0, 0);\\\">apiKey</span></div></td><td style=\\\"--en-typeInfo:{&quot;type&quot;:&quot;text&quot;,&quot;data&quot;:{}};border-right:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;padding:10px;\\\"><div>string</div></td><td style=\\\"--en-typeInfo:{&quot;type&quot;:&quot;text&quot;,&quot;data&quot;:{}};border-right:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;padding:10px;\\\"><div>自定义 LLM API 密钥</div></td></tr><tr style=\\\"background-attachment:scroll; background-clip:border-box; background-image:none; background-origin:padding-box; background-position-x:0%; background-position-y:0%; background-repeat-x:no-repeat; background-repeat-y:no-repeat; background-size:auto; width:auto; height:auto;\\\"><td style=\\\"--en-typeInfo:{&quot;type&quot;:&quot;text&quot;,&quot;data&quot;:{}};border-right:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;padding:10px;\\\"><div><span style=\\\"color: rgb(0, 0, 0);\\\">endpoint</span></div></td><td style=\\\"--en-typeInfo:{&quot;type&quot;:&quot;text&quot;,&quot;data&quot;:{}};border-right:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;padding:10px;\\\"><div>string</div></td><td style=\\\"--en-typeInfo:{&quot;type&quot;:&quot;text&quot;,&quot;data&quot;:{}};border-right:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;padding:10px;\\\"><div>自定义 LLM 服务 API 地址</div></td></tr></tbody></table><h3 style=\\\"background-color:transparent;other-props:eyJibG9ja0lkIjoicGdEa1JtOEFZY18ifQ==;\\\"><span style=\\\"font-size: 17px;\\\"><span style=\\\"color: rgb(0, 0, 0);\\\"><span style=\\\"font-weight: bold;\\\">可选配置</span></span></span></h3><table style=\\\"--en-fitwindow:false;border-left:1px solid #d9d9d9;border-top:1px solid #d9d9d9;border-collapse:collapse;width:760px;\\\" width=\\\"760px\\\"><colgroup><col style=\\\"width: 190px;\\\"></col><col style=\\\"width: 190px;\\\"></col><col style=\\\"width: 190px;\\\"></col><col style=\\\"width: 190px;\\\"></col></colgroup><tbody><tr><th style=\\\"--en-typeInfo:{&quot;type&quot;:&quot;text&quot;,&quot;data&quot;:{}};background-color:initial;border-right:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;padding:10px;text-align:left;\\\"><div><span style=\\\"font-size: 14px;\\\"><span style=\\\"color: rgb(0, 0, 0);\\\"><span style=\\\"font-weight: bold;\\\">参数</span></span></span></div></th><th style=\\\"--en-typeInfo:{&quot;type&quot;:&quot;text&quot;,&quot;data&quot;:{}};background-color:initial;border-right:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;padding:10px;text-align:left;\\\"><div><span style=\\\"font-size: 14px;\\\"><span style=\\\"color: rgb(0, 0, 0);\\\"><span style=\\\"font-weight: bold;\\\">类型</span></span></span></div></th><th style=\\\"--en-typeInfo:{&quot;type&quot;:&quot;text&quot;,&quot;data&quot;:{}};background-color:initial;border-right:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;padding:10px;text-align:left;\\\"><div><span style=\\\"font-size: 14px;\\\"><span style=\\\"color: rgb(0, 0, 0);\\\"><span style=\\\"font-weight: bold;\\\">默认值</span></span></span></div></th><th style=\\\"--en-typeInfo:{&quot;type&quot;:&quot;text&quot;,&quot;data&quot;:{}};background-color:initial;border-right:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;padding:10px;text-align:left;\\\"><div><span style=\\\"font-size: 14px;\\\"><span style=\\\"color: rgb(0, 0, 0);\\\"><span style=\\\"font-weight: bold;\\\">描述</span></span></span></div></th></tr><tr style=\\\"background-attachment:scroll; background-clip:border-box; background-image:none; background-origin:padding-box; background-position-x:0%; background-position-y:0%; background-repeat-x:no-repeat; background-repeat-y:no-repeat; background-size:auto; width:auto; height:auto;\\\"><td style=\\\"--en-typeInfo:{&quot;type&quot;:&quot;text&quot;,&quot;data&quot;:{}};border-right:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;padding:10px;\\\"><div><span style=\\\"color: rgb(0, 0, 0);\\\">authType</span></div></td><td style=\\\"--en-typeInfo:{&quot;type&quot;:&quot;text&quot;,&quot;data&quot;:{}};border-right:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;padding:10px;\\\"><div>AuthType</div></td><td style=\\\"--en-typeInfo:{&quot;type&quot;:&quot;text&quot;,&quot;data&quot;:{}};border-right:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;padding:10px;\\\"><div>AuthType.CUSTOM_LLM_API</div></td><td style=\\\"--en-typeInfo:{&quot;type&quot;:&quot;text&quot;,&quot;data&quot;:{}};border-right:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;padding:10px;\\\"><div>认证类型</div></td></tr><tr style=\\\"background-attachment:scroll; background-clip:border-box; background-image:none; background-origin:padding-box; background-position-x:0%; background-position-y:0%; background-repeat-x:no-repeat; background-repeat-y:no-repeat; background-size:auto; width:auto; height:auto;\\\"><td style=\\\"--en-typeInfo:{&quot;type&quot;:&quot;text&quot;,&quot;data&quot;:{}};border-right:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;padding:10px;\\\"><div><span style=\\\"color: rgb(0, 0, 0);\\\">provider</span></div></td><td style=\\\"--en-typeInfo:{&quot;type&quot;:&quot;text&quot;,&quot;data&quot;:{}};border-right:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;padding:10px;\\\"><div>string</div></td><td style=\\\"--en-typeInfo:{&quot;type&quot;:&quot;text&quot;,&quot;data&quot;:{}};border-right:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;padding:10px;\\\"><div>-</div></td><td style=\\\"--en-typeInfo:{&quot;type&quot;:&quot;text&quot;,&quot;data&quot;:{}};border-right:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;padding:10px;\\\"><div>LLM 提供商名称</div></td></tr><tr style=\\\"background-attachment:scroll; background-clip:border-box; background-image:none; background-origin:padding-box; background-position-x:0%; background-position-y:0%; background-repeat-x:no-repeat; background-repeat-y:no-repeat; background-size:auto; width:auto; height:auto;\\\"><td style=\\\"--en-typeInfo:{&quot;type&quot;:&quot;text&quot;,&quot;data&quot;:{}};border-right:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;padding:10px;\\\"><div><span style=\\\"color: rgb(0, 0, 0);\\\">temperature</span></div></td><td style=\\\"--en-typeInfo:{&quot;type&quot;:&quot;text&quot;,&quot;data&quot;:{}};border-right:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;padding:10px;\\\"><div>number</div></td><td style=\\\"--en-typeInfo:{&quot;type&quot;:&quot;text&quot;,&quot;data&quot;:{}};border-right:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;padding:10px;\\\"><div>0</div></td><td style=\\\"--en-typeInfo:{&quot;type&quot;:&quot;text&quot;,&quot;data&quot;:{}};border-right:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;padding:10px;\\\"><div>生成温度 (0-1)</div></td></tr><tr style=\\\"background-attachment:scroll; background-clip:border-box; background-image:none; background-origin:padding-box; background-position-x:0%; background-position-y:0%; background-repeat-x:no-repeat; background-repeat-y:no-repeat; background-size:auto; width:auto; height:auto;\\\"><td style=\\\"--en-typeInfo:{&quot;type&quot;:&quot;text&quot;,&quot;data&quot;:{}};border-right:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;padding:10px;\\\"><div><span style=\\\"color: rgb(0, 0, 0);\\\">topP</span></div></td><td style=\\\"--en-typeInfo:{&quot;type&quot;:&quot;text&quot;,&quot;data&quot;:{}};border-right:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;padding:10px;\\\"><div>number</div></td><td style=\\\"--en-typeInfo:{&quot;type&quot;:&quot;text&quot;,&quot;data&quot;:{}};border-right:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;padding:10px;\\\"><div>1</div></td><td style=\\\"--en-typeInfo:{&quot;type&quot;:&quot;text&quot;,&quot;data&quot;:{}};border-right:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;padding:10px;\\\"><div>Top-p 采样参数</div></td></tr><tr style=\\\"background-attachment:scroll; background-clip:border-box; background-image:none; background-origin:padding-box; background-position-x:0%; background-position-y:0%; background-repeat-x:no-repeat; background-repeat-y:no-repeat; background-size:auto; width:auto; height:auto;\\\"><td style=\\\"--en-typeInfo:{&quot;type&quot;:&quot;text&quot;,&quot;data&quot;:{}};border-right:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;padding:10px;\\\"><div><span style=\\\"color: rgb(0, 0, 0);\\\">maxTokens</span></div></td><td style=\\\"--en-typeInfo:{&quot;type&quot;:&quot;text&quot;,&quot;data&quot;:{}};border-right:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;padding:10px;\\\"><div>number</div></td><td style=\\\"--en-typeInfo:{&quot;type&quot;:&quot;text&quot;,&quot;data&quot;:{}};border-right:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;padding:10px;\\\"><div>8096</div></td><td style=\\\"--en-typeInfo:{&quot;type&quot;:&quot;text&quot;,&quot;data&quot;:{}};border-right:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;padding:10px;\\\"><div>最大生成 token 数</div></td></tr><tr style=\\\"background-attachment:scroll; background-clip:border-box; background-image:none; background-origin:padding-box; background-position-x:0%; background-position-y:0%; background-repeat-x:no-repeat; background-repeat-y:no-repeat; background-size:auto; width:auto; height:auto;\\\"><td style=\\\"--en-typeInfo:{&quot;type&quot;:&quot;text&quot;,&quot;data&quot;:{}};border-right:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;padding:10px;\\\"><div><span style=\\\"color: rgb(0, 0, 0);\\\">log</span></div></td><td style=\\\"--en-typeInfo:{&quot;type&quot;:&quot;text&quot;,&quot;data&quot;:{}};border-right:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;padding:10px;\\\"><div>boolean</div></td><td style=\\\"--en-typeInfo:{&quot;type&quot;:&quot;text&quot;,&quot;data&quot;:{}};border-right:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;padding:10px;\\\"><div>FALSE</div></td><td style=\\\"--en-typeInfo:{&quot;type&quot;:&quot;text&quot;,&quot;data&quot;:{}};border-right:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;padding:10px;\\\"><div>是否显示详细日志</div></td></tr><tr style=\\\"background-attachment:scroll; background-clip:border-box; background-image:none; background-origin:padding-box; background-position-x:0%; background-position-y:0%; background-repeat-x:no-repeat; background-repeat-y:no-repeat; background-size:auto; width:auto; height:auto;\\\"><td style=\\\"--en-typeInfo:{&quot;type&quot;:&quot;text&quot;,&quot;data&quot;:{}};border-right:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;padding:10px;\\\"><div><span style=\\\"color: rgb(0, 0, 0);\\\">readonly</span></div></td><td style=\\\"--en-typeInfo:{&quot;type&quot;:&quot;text&quot;,&quot;data&quot;:{}};border-right:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;padding:10px;\\\"><div>boolean</div></td><td style=\\\"--en-typeInfo:{&quot;type&quot;:&quot;text&quot;,&quot;data&quot;:{}};border-right:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;padding:10px;\\\"><div>FALSE</div></td><td style=\\\"--en-typeInfo:{&quot;type&quot;:&quot;text&quot;,&quot;data&quot;:{}};border-right:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;padding:10px;\\\"><div>只读模式，禁用文件修改操作</div></td></tr><tr style=\\\"background-attachment:scroll; background-clip:border-box; background-image:none; background-origin:padding-box; background-position-x:0%; background-position-y:0%; background-repeat-x:no-repeat; background-repeat-y:no-repeat; background-size:auto; width:auto; height:auto;\\\"><td style=\\\"--en-typeInfo:{&quot;type&quot;:&quot;text&quot;,&quot;data&quot;:{}};border-right:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;padding:10px;\\\"><div><span style=\\\"color: rgb(0, 0, 0);\\\">systemPrompt</span></div></td><td style=\\\"--en-typeInfo:{&quot;type&quot;:&quot;text&quot;,&quot;data&quot;:{}};border-right:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;padding:10px;\\\"><div>string</div></td><td style=\\\"--en-typeInfo:{&quot;type&quot;:&quot;text&quot;,&quot;data&quot;:{}};border-right:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;padding:10px;\\\"><div>-</div></td><td style=\\\"--en-typeInfo:{&quot;type&quot;:&quot;text&quot;,&quot;data&quot;:{}};border-right:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;padding:10px;\\\"><div>系统提示词</div></td></tr><tr style=\\\"background-attachment:scroll; background-clip:border-box; background-image:none; background-origin:padding-box; background-position-x:0%; background-position-y:0%; background-repeat-x:no-repeat; background-repeat-y:no-repeat; background-size:auto; width:auto; height:auto;\\\"><td style=\\\"--en-typeInfo:{&quot;type&quot;:&quot;text&quot;,&quot;data&quot;:{}};border-right:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;padding:10px;\\\"><div><span style=\\\"color: rgb(0, 0, 0);\\\">rootPath</span></div></td><td style=\\\"--en-typeInfo:{&quot;type&quot;:&quot;text&quot;,&quot;data&quot;:{}};border-right:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;padding:10px;\\\"><div>string</div></td><td style=\\\"--en-typeInfo:{&quot;type&quot;:&quot;text&quot;,&quot;data&quot;:{}};border-right:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;padding:10px;\\\"><div>process.pwd()</div></td><td style=\\\"--en-typeInfo:{&quot;type&quot;:&quot;text&quot;,&quot;data&quot;:{}};border-right:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;padding:10px;\\\"><div>工作目录路径</div></td></tr><tr style=\\\"background-attachment:scroll; background-clip:border-box; background-image:none; background-origin:padding-box; background-position-x:0%; background-position-y:0%; background-repeat-x:no-repeat; background-repeat-y:no-repeat; background-size:auto; width:auto; height:auto;\\\"><td style=\\\"--en-typeInfo:{&quot;type&quot;:&quot;text&quot;,&quot;data&quot;:{}};border-right:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;padding:10px;\\\"><div><span style=\\\"color: rgb(0, 0, 0);\\\">extension</span></div></td><td style=\\\"--en-typeInfo:{&quot;type&quot;:&quot;text&quot;,&quot;data&quot;:{}};border-right:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;padding:10px;\\\"><div>object</div></td><td style=\\\"--en-typeInfo:{&quot;type&quot;:&quot;text&quot;,&quot;data&quot;:{}};border-right:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;padding:10px;\\\"><div>-</div></td><td style=\\\"--en-typeInfo:{&quot;type&quot;:&quot;text&quot;,&quot;data&quot;:{}};border-right:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;padding:10px;\\\"><div>扩展配置</div></td></tr></tbody></table><h3 style=\\\"background-color:transparent;other-props:eyJibG9ja0lkIjoiaGhxRFRTZHluZHoifQ==;\\\"><span style=\\\"font-size: 17px;\\\"><span style=\\\"color: rgb(0, 0, 0);\\\"><span style=\\\"font-weight: bold;\\\">使用示例</span></span></span></h3><p style=\\\"color:rgb(0, 0, 0);\\\"><span style=\\\"font-size: 14px;\\\"><span style=\\\"color: rgb(0,0,0);\\\">示例 1: 基本对话</span></span></p><div style=\\\"background-color:rgb(40, 44, 52);\\\"><br/></div><div style=\\\"--en-codeblock:true;--en-blockId:YVwSSOHTcMO;--en-meta:{&quot;title&quot;:&quot;&quot;,&quot;lang&quot;:&quot;Plain Text&quot;,&quot;theme&quot;:&quot;default&quot;,&quot;showLine&quot;:true,&quot;lineWrap&quot;:true};box-sizing: border-box; padding: 8px; font-family: Monaco, Menlo, Consolas, &quot;Courier New&quot;, monospace; font-size: 12px; color: rgb(51, 51, 51); border-top-left-radius: 4px; border-top-right-radius: 4px; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px; background-color: rgb(251, 250, 248); border: 1px solid rgba(0, 0, 0, 0.14902); background-position: initial initial; background-repeat: initial initial; margin-top: 6px;\\\">import { ElcAgent } from <span style=\\\"color: #98c379;\\\">'easy-llm-cli'</span>;\\\n\\\nasync <span style=\\\"color: #c678dd;\\\">function</span> <span style=\\\"color: #61aeee;\\\">basicChat</span>() {\\\n  const agent = new ElcAgent({\\\n    model: <span style=\\\"color: #98c379;\\\">'gpt-4'</span>,\\\n    apiKey: <span style=\\\"color: #98c379;\\\">'your-openai-api-key'</span>,\\\n    endpoint: <span style=\\\"color: #98c379;\\\">'https://api.openai.com/v1'</span>,\\\n    <span style=\\\"color: #e6c07b;\\\">log</span>: <span style=\\\"color: #56b6c2;\\\">true</span>\\\n  });\\\n\\\n  const response = await agent.run(<span style=\\\"color: #98c379;\\\">'解释一下什么是递归'</span>);\\\n  console.log(<span style=\\\"color: #98c379;\\\">'AI 回复:'</span>, response);\\\n}\\\n</div><p style=\\\"color:rgb(0, 0, 0);\\\"><span style=\\\"font-size: 14px;\\\"><span style=\\\"color: rgb(0,0,0);\\\">示例 2: 文件操作（非只读模式）</span></span></p><div style=\\\"background-color:rgb(40, 44, 52);\\\"><br/></div><div style=\\\"--en-codeblock:true;--en-blockId:5u48Q202Vy1;--en-meta:{&quot;title&quot;:&quot;&quot;,&quot;lang&quot;:&quot;Plain Text&quot;,&quot;theme&quot;:&quot;default&quot;,&quot;showLine&quot;:true,&quot;lineWrap&quot;:true};box-sizing: border-box; padding: 8px; font-family: Monaco, Menlo, Consolas, &quot;Courier New&quot;, monospace; font-size: 12px; color: rgb(51, 51, 51); border-top-left-radius: 4px; border-top-right-radius: 4px; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px; background-color: rgb(251, 250, 248); border: 1px solid rgba(0, 0, 0, 0.14902); background-position: initial initial; background-repeat: initial initial; margin-top: 6px;\\\">async <span style=\\\"color: #c678dd;\\\">function</span> <span style=\\\"color: #61aeee;\\\">fileOperations</span>() {\\\n  const agent = new ElcAgent({\\\n    model: <span style=\\\"color: #98c379;\\\">'claude-3-sonnet'</span>,\\\n    apiKey: <span style=\\\"color: #98c379;\\\">'your-anthropic-api-key'</span>,\\\n    endpoint: <span style=\\\"color: #98c379;\\\">'https://api.anthropic.com/v1'</span>,\\\n    <span style=\\\"color: #e6c07b;\\\">readonly</span>: <span style=\\\"color: #56b6c2;\\\">false</span>, // 允许文件修改\\\n    rootPath: <span style=\\\"color: #98c379;\\\">'/path/to/your/project'</span>\\\n  });\\\n\\\n  const response = await agent.run(\\\n    <span style=\\\"color: #98c379;\\\">'请帮我创建一个简单的 README.md 文件，包含项目介绍'</span>\\\n  );\\\n  console.log(response);\\\n}\\\n</div><p style=\\\"color:rgb(0, 0, 0);\\\"><span style=\\\"font-size: 14px;\\\"><span style=\\\"color: rgb(0,0,0);\\\">示例 3: 使用扩展和 MCP 服务器</span></span></p><div style=\\\"background-color:rgb(40, 44, 52);\\\"><br/></div><div style=\\\"--en-codeblock:true;--en-blockId:S_ZVSuQv4rg;--en-meta:{&quot;title&quot;:&quot;&quot;,&quot;lang&quot;:&quot;Plain Text&quot;,&quot;theme&quot;:&quot;default&quot;,&quot;showLine&quot;:true,&quot;lineWrap&quot;:true};box-sizing: border-box; padding: 8px; font-family: Monaco, Menlo, Consolas, &quot;Courier New&quot;, monospace; font-size: 12px; color: rgb(51, 51, 51); border-top-left-radius: 4px; border-top-right-radius: 4px; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px; background-color: rgb(251, 250, 248); border: 1px solid rgba(0, 0, 0, 0.14902); background-position: initial initial; background-repeat: initial initial; margin-top: 6px;\\\">async <span style=\\\"color: #c678dd;\\\">function</span> <span style=\\\"color: #61aeee;\\\">withExtensions</span>() {\\\n  const agent = new ElcAgent({\\\n    model: <span style=\\\"color: #98c379;\\\">'claude-3-sonnet'</span>,\\\n    apiKey: <span style=\\\"color: #98c379;\\\">'your-anthropic-api-key'</span>,\\\n    endpoint: <span style=\\\"color: #98c379;\\\">'https://api.anthropic.com/v1'</span>,\\\n    <span style=\\\"color: #e6c07b;\\\">log</span>: <span style=\\\"color: #56b6c2;\\\">true</span>,\\\n    extension: {\\\n      mcpServers: {\\\n        chart: {\\\n          <span style=\\\"color: #e6c07b;\\\">command</span>: <span style=\\\"color: #98c379;\\\">'npx'</span>,\\\n          args: [<span style=\\\"color: #98c379;\\\">'-y'</span>, <span style=\\\"color: #98c379;\\\">'@antv/mcp-server-chart'</span>],\\\n          trust: <span style=\\\"color: #56b6c2;\\\">false</span>\\\n        }\\\n      },\\\n      excludeTools: [<span style=\\\"color: #98c379;\\\">'run_shell_command'</span>]\\\n    }\\\n  });\\\n\\\n  const response = await agent.run(\\\n    <span style=\\\"color: #98c379;\\\">'请帮我生成一个销售数据的柱状图'</span>\\\n  );\\\n  console.log(response);\\\n}\\\n</div><p style=\\\"color:rgb(0, 0, 0);\\\"><span style=\\\"font-size: 14px;\\\"><span style=\\\"color: rgb(0,0,0);\\\">示例 4: 自定义系统提示词</span></span></p><div style=\\\"background-color:rgb(40, 44, 52);\\\"><br/></div><div style=\\\"--en-codeblock:true;--en-blockId:_WOhRWI58RC;--en-meta:{&quot;title&quot;:&quot;&quot;,&quot;lang&quot;:&quot;Plain Text&quot;,&quot;theme&quot;:&quot;default&quot;,&quot;showLine&quot;:true,&quot;lineWrap&quot;:true};box-sizing: border-box; padding: 8px; font-family: Monaco, Menlo, Consolas, &quot;Courier New&quot;, monospace; font-size: 12px; color: rgb(51, 51, 51); border-top-left-radius: 4px; border-top-right-radius: 4px; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px; background-color: rgb(251, 250, 248); border: 1px solid rgba(0, 0, 0, 0.14902); background-position: initial initial; background-repeat: initial initial; margin-top: 6px;\\\">async <span style=\\\"color: #c678dd;\\\">function</span> <span style=\\\"color: #61aeee;\\\">customSystemPrompt</span>() {\\\n  const agent = new ElcAgent({\\\n    model: <span style=\\\"color: #98c379;\\\">'your-model'</span>,\\\n    apiKey: <span style=\\\"color: #98c379;\\\">'your-api-key'</span>,\\\n    endpoint: <span style=\\\"color: #98c379;\\\">'your-endpoint'</span>,\\\n    systemPrompt: `你是一个专业的代码审查助手。请遵循以下规则：\\\n1. 总是关注代码质量和最佳实践\\\n2. 提供具体的改进建议\\\n3. 解释为什么某些做法更好\\\n4. 保持友好和建设性的语调`,\\\n    <span style=\\\"color: #e6c07b;\\\">log</span>: <span style=\\\"color: #56b6c2;\\\">true</span>\\\n  });\\\n\\\n  const response = await agent.run(\\\n    <span style=\\\"color: #98c379;\\\">'请审查这个 JavaScript 函数的代码质量'</span>\\\n  );\\\n  console.log(response);\\\n}\\\n</div><h2 style=\\\"background-color:unset;other-props:eyJibG9ja0lkIjoiVFJtZlJDZE5zMFEifQ==;\\\"><span style=\\\"font-size: 18px;\\\"><span style=\\\"color: rgb(34, 34, 34);\\\"><span style=\\\"font-weight: bold;\\\">最后</span></span></span></h2><p style=\\\"color:rgb(0, 0, 0);\\\"><span style=\\\"font-size: 14px;\\\"><span style=\\\"color: rgb(0,0,0);\\\">Easy LLM CLI 仅为满足我的个人需求所诞生，代码开源，仅供大家学习使用，不会用做任何商业用途。</span></span></p><p style=\\\"color:rgb(0, 0, 0);\\\"><span style=\\\"font-size: 14px;\\\"><span style=\\\"color: rgb(0,0,0);\\\">大家感兴趣可以给项目点个 Star 🌟：</span></span></p><ul><li><div style=\\\"color:rgb(1, 1, 1);\\\"><span style=\\\"font-size: 14px;\\\"><span style=\\\"color: rgb(1, 1, 1);\\\">https://github.com/ConardLi/easy-llm-cli 。</span></span></div></li></ul><p style=\\\"color:rgb(0, 0, 0);\\\"><span style=\\\"font-size: 14px;\\\"><span style=\\\"color: rgb(0,0,0);\\\">关注《code秘密花园》从此学习 AI 不迷路，code秘密花园 AI 教程完整的学习资料汇总在这个文档：https://ai.mmh1.top/#/ai-tutorial</span></span></p><p style=\\\"color:rgb(0, 0, 0);\\\"><span style=\\\"font-size: 14px;\\\"><span style=\\\"color: rgb(0,0,0);\\\">如果本期对你有所帮助，希望得到一个免费的三连，感谢大家支持！</span></span></p><div>阅读原文</div></span>\\\n</div></body></html>\\u0000\"]],\"start1\":0,\"start2\":0,\"length1\":0,\"length2\":51363}]"
metadata_diff: {"new":{"id":"545e77b0bf454b669a1f5a7f52b43fa2","parent_id":"f67288c3a0be4374b5d532b5dcc3aabc","latitude":"0.00000000","longitude":"0.00000000","altitude":"0.0000","author":"","source_url":"","is_todo":0,"todo_due":0,"todo_completed":0,"source":"joplin-desktop","source_application":"net.cozic.joplin-desktop","application_data":"","order":1764348815397,"markup_language":2,"is_shared":0,"share_id":"","conflict_original_id":"","master_key_id":"","user_data":"","deleted_time":0},"deleted":[]}
encryption_cipher_text: 
encryption_applied: 0
updated_time: 2025-11-28T21:03:14.217Z
created_time: 2025-11-28T21:03:14.217Z
type_: 13