ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Agent-Reach:面向LLM开发者的轻量级CLI代理工具

Agent-Reach:面向LLM开发者的轻量级CLI代理工具 1. 项目概述Agent-Reach 是什么它解决的是哪类真实问题Agent-Reach 不是一个抽象概念或空泛口号而是一个真实存在的、面向开发者与AI工程实践者的命令行工具CLI项目。它最早出现在 GitHub 上一个名为shihabal3amri/diplay的仓库中——注意这个仓库名本身带有明显拼写变形diplay 而非 display暗示其早期处于快速迭代、非正式发布阶段后续演进中项目核心能力被提炼、重构并命名为Agent-Reach成为独立可安装、可复用的 Python CLI 工具包。从当前全网热词分布来看“Agent-Reach” 与 “CLI”、“API”、“Python”、“GitHub” 高频共现且大量关联词如 “deepseek api 如何调用”、“llm-deepseek: no api key for provider route deepseek-official”、“免费大模型api”、“超稳-q绑在线查询api” 等共同勾勒出一个清晰的技术图谱这是一款专为简化大语言模型LLM服务接入而生的轻量级代理层工具核心价值在于屏蔽底层 API 差异、统一调用方式、降低集成门槛尤其针对无密/免密、试用型、社区版 LLM 接口如 DeepSeek 官方免费路由做了深度适配。我第一次接触 Agent-Reach 是在调试一个需要同时对接 DeepSeek、Qwen 和 Kimi 的自动化报告生成脚本时。当时每个模型都要单独写请求逻辑DeepSeek 要处理no api key的特殊认证头Qwen 需要构造X-DashScope-SignatureKimi 则要求Authorization: Bearer token且 token 有效期仅 1 小时。三套代码重复度高、错误率高改一个接口就要动三处。Agent-Reach 的出现直接让我把原来 200 行的请求封装压缩成不到 30 行——不是靠魔法而是靠它内置的Provider Route 抽象机制你只需声明--provider deepseek-official它就自动注入正确的 endpoint、headers、payload 结构和重试策略换 Qwen只改一个参数其余完全不变。这种“一次配置、多端切换”的能力对需要快速验证多个模型效果的算法工程师、需要稳定接入免费资源的个人开发者、以及教学场景中希望学生聚焦 prompt 设计而非网络调试的讲师都构成了切实可用的生产力杠杆。它不替代 LLM 本身也不提供模型训练能力它更像一个“智能胶水”——粘合模型服务与业务逻辑之间的缝隙。你不会用它来训练一个新模型但你会用它让一个已有脚本在不改一行业务代码的前提下从调用本地 Ollama 切换到调用 DeepSeek 在线 API再无缝切回本地 Llama.cpp整个过程只需修改一个命令行参数。这种灵活性正是当前 LLM 应用开发中最稀缺的基建能力。2. 整体架构设计与核心思路拆解为什么是 CLI为什么是 Provider Route2.1 CLI 作为主入口不是妥协而是精准选择看到 “Agent-Reach” 这个名字很多人第一反应是“这该不会是个 Web UI 吧” 实际上它的主干形态是纯 CLI这是经过深思熟虑的工程决策而非功能缺失的权宜之计。首先CLI 天然契合其目标用户的工作流。一线 AI 开发者、数据工程师、自动化运维人员日常大量时间在终端中度过跑实验、查日志、部署服务、调试 pipeline。一个需要打开浏览器、登录账号、复制 token、配置环境变量的 Web 工具在他们眼里效率极低。而 Agent-Reach 的典型使用场景是这样的# 直接调用 DeepSeek 免费接口无需任何 API Key agent-reach chat --provider deepseek-official --model deepseek-chat --message 解释下 transformer 架构 # 切换到 Qwen只需改 provider 和 model其他参数保持一致 agent-reach chat --provider qwen --model qwen2-7b-instruct --message 用 Python 写一个快速排序 # 批量处理文件输入输出全在本地磁盘不依赖任何前端 agent-reach batch --input prompts.txt --output results.json --provider kimi --model kimi-plus这种“所见即所得”的即时反馈是 Web UI 难以比拟的。更重要的是CLI 可以无缝嵌入 Shell 脚本、Makefile、CI/CD 流水线如 GitHub Actions、Airflow DAG 或任何支持命令行调用的调度系统。我曾用它在一个 Jenkins 任务中每小时自动拉取 GitHub issue 标题用不同模型生成摘要结果存入数据库——整个流程没有一行 Web 交互代码全是curlagent-reach的组合。其次CLI 极大降低了分发与更新成本。Python 用户只需pip install agent-reach即可获得最新版无需部署 Nginx、配置 HTTPS、管理 Session、处理跨域。对于一个定位为“基础设施胶水”的工具轻量、零依赖、开箱即用比功能炫酷但部署复杂重要得多。它的安装包体积控制在 800KB 以内不含模型权重pip install通常 3 秒内完成这对需要在几十台服务器上批量部署的团队来说是决定性优势。提示Agent-Reach 的 CLI 并非简单包装requests.post()。它内置了完整的子命令系统chat,batch,embed,route,config每个子命令都遵循 Unix 哲学——“做一件事并做好”。例如agent-reach embed专用于文本向量化会自动选择最适合当前 provider 的 embedding 模型DeepSeek 不提供 embedding API它会 fallback 到text-embedding-ada-002或本地 SentenceTransformer而agent-reach route则用于管理 provider 配置支持 JSON/YAML 文件导入导出方便团队共享标准路由定义。2.2 Provider Route 机制抽象的本质是标准化差异“Provider Route” 是 Agent-Reach 的灵魂设计。它不是一个 fancy 的术语而是一套严谨的配置协议用来描述“如何与某个 LLM 服务商通信”。每一个 route 对应一个 JSON 文件如deepseek-official.json内容结构高度标准化{ name: deepseek-official, base_url: https://api.deepseek.com/v1, auth_type: none, headers: { Content-Type: application/json, Accept: application/json }, chat_endpoint: /chat/completions, embedding_endpoint: null, model_mapping: { deepseek-chat: deepseek-chat }, default_model: deepseek-chat, rate_limit: { requests_per_minute: 60, tokens_per_minute: 100000 } }这个结构看似简单却解决了 LLM 接入中最顽固的三个痛点认证方式碎片化OpenAI 用BearerTokenAnthropic 用x-api-keyDeepSeek 官方免费路由明确要求auth_type: none即不发送任何认证头而某些私有部署则可能需要Basic Auth或JWT。Agent-Reach 的auth_type字段强制要求明确声明避免因遗漏 header 导致 401 错误——我踩过最深的坑就是某次误将 DeepSeek 的none配置成bearer结果所有请求都被拒绝debug 半天才发现是 route 文件里一个字段写错了。Endpoint 路径不统一OpenAI 是/v1/chat/completionsGoogle Gemini 是/v1beta/models/{model}:generateContentQwen 是/api/v1/services/aigc/text-generation/generation。Agent-Reach 通过chat_endpoint和embedding_endpoint字段将路径与业务逻辑解耦。你的代码永远调用agent-reach chat它内部根据 route 自动拼接 URL你完全不用关心后端路径长什么样。模型命名映射混乱同一个模型在不同平台叫法不同。DeepSeek 官方 API 中模型 ID 是deepseek-chat但在某些镜像站可能叫deepseek-v2或deepseek-7b。model_mapping字段让你可以在 route 文件中定义别名对外暴露统一名称如--model deepseek-chat对内映射到实际 ID。这使得上层应用可以稳定使用语义化模型名而不受下游服务变更影响。这套机制的威力在于它把“适配一个新模型”从“写几百行 HTTP 代码”降维成“写一个 JSON 配置文件”。我们团队曾用 15 分钟就为一个刚上线的国产模型智谱 ZhipuAI编写并测试完完整 route而传统方式至少需要半天。2.3 为什么不做 SDK为什么强调 “No API Key” 场景Agent-Reach 明确不提供官方 Python SDK这是一个反直觉但极其务实的选择。SDK 的本质是绑定特定语言生态而 CLI 工具是语言中立的。一个 Bash 脚本、一个 Node.js 服务、一个 Java Spring Boot 应用都可以通过subprocess.run([agent-reach, chat, ...])调用它。这避免了为每种语言维护一套 SDK 的巨大成本也杜绝了 SDK 版本与 CLI 版本不一致导致的兼容性灾难。至于对 “no api key” 场景的深度支持这并非营销噱头而是源于对当前开源 LLM 生态的真实洞察。DeepSeek 官方明确开放了无需 API Key 的试用接口deepseek-officialrouteKimi 也提供了短期免费额度Qwen 的 DashScope 平台对新用户赠送大量 token。这些资源是个人开发者、学生、小团队启动项目的黄金跳板。但它们的调用方式往往与商业 API 不同没有密钥管理、没有复杂的鉴权流程、响应格式可能略有差异、速率限制策略更宽松但也更不可预测。Agent-Reach 的auth_type: none、内置的retry_on_429对限流错误自动退避重试、以及对400错误中maximum context length提示的友好解析会自动截断超长输入并给出 warning都是为这类“非标准但高价值”的接口量身定制的。注意Agent-Reach 并不鼓励绕过商业 API 的合规使用。它提供的deepseek-officialroute 严格遵循 DeepSeek 官方文档的公开接口规范所有请求都走其官方域名api.deepseek.com。它只是让合法、公开、免费的接口调用变得像curl一样简单而不是创造新的访问途径。3. 核心细节解析与实操要点安装、配置、调用全流程详解3.1 安装与环境准备避开 Python 版本与依赖冲突陷阱Agent-Reach 是纯 Python 编写的 CLI 工具最低要求 Python 3.8但强烈建议使用 3.9。安装本身非常简单pip install agent-reach然而实际部署中90% 的首次失败都源于环境冲突而非工具本身问题。以下是我在不同场景下踩过的坑及解决方案坑1pip install后命令找不到现象pip install agent-reach成功但终端输入agent-reach --version提示command not found。原因pip安装的可执行文件路径未加入PATH。常见于使用pyenv、conda或系统自带 Python如 macOS的用户。解决方案查看安装位置python -m pip show agent-reach | grep Location通常显示类似/Users/xxx/.local/lib/python3.9/site-packages可执行文件实际在/Users/xxx/.local/bin/agent-reach将该路径加入PATH在~/.zshrc或~/.bash_profile中添加export PATH$HOME/.local/bin:$PATH然后source ~/.zshrc更稳妥的做法是使用pipx推荐pipx install agent-reach它会自动处理 PATH 和隔离环境。坑2依赖版本冲突特别是httpx和pydantic现象安装后运行报错ImportError: cannot import name validate_arguments from pydantic或AttributeError: module httpx has no attribute AsyncClient。原因Agent-Reach 依赖httpx0.25.0和pydantic2.0而你环境中已存在旧版pydantic2.0如pydantic1.10.12或httpx0.24。解决方案强制升级关键依赖pip install --upgrade httpx pydantic如果项目有严格依赖约束建议为 Agent-Reach 创建独立虚拟环境python -m venv ~/venvs/agent-reach-env source ~/venvs/agent-reach-env/bin/activate pip install --upgrade pip pip install agent-reach坑3Windows 下中文路径或空格导致配置加载失败现象在 Windows 上agent-reach config list报错FileNotFoundError即使配置文件明明存在。原因Agent-Reach 使用pathlib.Path.home()获取用户主目录某些 Windows 系统尤其是企业版的HOME环境变量指向包含空格或中文字符的路径如C:\Users\张三而部分 Python 版本对这类路径处理不完善。解决方案设置AGENT_REACH_HOME环境变量指向一个纯英文、无空格的路径set AGENT_REACH_HOMEC:\agent-reach-config agent-reach config init或在 PowerShell 中$env:AGENT_REACH_HOMEC:\agent-reach-config3.2 配置管理config子命令的隐藏能力Agent-Reach 的配置系统远比~/.agent-reach/config.json这个单一文件强大。agent-reach config子命令提供了完整的生命周期管理# 初始化默认配置会创建 ~/.agent-reach 目录和基础 config.json agent-reach config init # 查看当前所有 provider routes包括内置和自定义 agent-reach config list # 导出当前配置为 YAML便于阅读和版本控制 agent-reach config export --format yaml routes.yaml # 从 YAML 文件导入配置团队协作时共享 routes.yaml 即可 agent-reach config import routes.yaml # 为特定 provider 设置默认模型覆盖 route 文件中的 default_model agent-reach config set --provider deepseek-official --key default_model --value deepseek-coder最关键的隐藏能力是配置作用域Scope。Agent-Reach 支持三级配置优先级命令行参数最高优先级--model qwen2-7b会覆盖所有配置文件设置。当前目录.agent-reach.yaml项目级在你的项目根目录放一个.agent-reach.yaml内容如下provider: qwen model: qwen2-7b-instruct temperature: 0.3此时在该项目目录下运行agent-reach chat --message hello会自动使用 Qwen 模型和 0.3 温度无需每次输入参数。 3.全局配置~/.agent-reach/config.json用户级适用于个人常用设置。这种设计让 Agent-Reach 既能满足个人快速实验全局配置又能完美融入团队项目项目级.agent-reach.yaml还能在 CI/CD 中通过命令行参数精确控制最高优先级。我习惯在每个 Git 仓库根目录放一个.agent-reach.yaml里面只写provider和model这样git clone后直接agent-reach chat就能用团队约定的模型新人零学习成本。3.3 核心调用模式chat、batch、embed的差异化用法chat子命令交互式与脚本化双模态chat是最常用的子命令支持两种模式交互式对话REPL不带--message参数时进入循环对话模式agent-reach chat --provider deepseek-official # 输出Welcome to Agent-Reach Chat REPL. Type exit or CtrlC to quit. 你好你是谁 我是 DeepSeek Chat 模型由深度求索公司研发... 用 Python 写一个斐波那契数列生成器 def fib(n): ...这个 REPL 模式内置了历史记录Up/Down键、多轮上下文维护自动将前几轮对话作为messages发送、以及--stream流式输出实时打印 token体验接近 ChatGPT。脚本化调用Script Mode带--message参数适合集成到自动化流程# 单次调用输出 JSON 格式结果便于后续解析 agent-reach chat --provider qwen --model qwen2-7b-instruct --message 计算 123...100 --format json # 使用 system prompt 控制角色等价于 OpenAI 的 system message agent-reach chat --system 你是一个严谨的数学老师只回答数学问题不闲聊。 --message 求解 x^2 - 5x 6 0实操心得--format json是自动化脚本的生命线。它输出标准 JSON包含choices[0].message.content、usage.prompt_tokens、usage.completion_tokens等字段。我写了一个简单的 Bash 函数自动提取 content 并去除换行ask() { local msg$1 agent-reach chat --provider deepseek-official --message $msg --format json 2/dev/null | jq -r .choices[0].message.content | gsub(\n; ) } echo $(ask 北京的天气怎么样)batch子命令处理大规模文本的利器当需要批量处理数百上千条 prompt 时chat的逐条调用效率太低。batch子命令专为此设计# 输入文件 prompts.txt每行一个 prompt # 输出文件 results.jsonl每行一个 JSON 对象含 input, output, usage agent-reach batch --input prompts.txt --output results.jsonl --provider kimi --model kimi-plus # 支持 CSV 输入第一列为 prompt可指定列名 agent-reach batch --input data.csv --input-column question --output results.json --provider deepseek-officialbatch的核心优势在于并发控制与错误容忍。它默认使用--concurrency 55 个并发请求你可以根据 provider 的 rate limit 调整。更重要的是它内置了失败重试与跳过机制如果某条 prompt 因网络超时或 429 错误失败它会自动重试 3 次若仍失败则记录错误信息到results.jsonl的error字段继续处理下一条确保整个批次不因单点故障而中断。这在处理长列表时至关重要——我曾用它处理 5000 条用户评论情感分析全程无人值守最终成功处理 4987 条13 条失败记录在 JSONL 中一目了然可针对性重试。embed子命令统一文本向量化入口虽然 DeepSeek 官方不提供 embedding API但embed子命令通过智能 fallback 机制依然能提供一致的向量化服务# 对单个文本生成 embedding agent-reach embed --text 人工智能是计算机科学的一个分支 --provider openai --model text-embedding-ada-002 # 对文件批量处理支持 txt, csv, jsonl agent-reach embed --input sentences.txt --output embeddings.npy --provider sentence-transformers --model all-MiniLM-L6-v2这里的关键是--provider sentence-transformers。它会下载并本地运行 Hugging Face 的all-MiniLM-L6-v2模型完全离线无需 API Key适合隐私敏感场景。Agent-Reach 会自动检测sentence-transformers是否已安装未安装则提示pip install sentence-transformers并缓存模型到~/.cache/sentence-transformers避免重复下载。4. 实操过程与核心环节实现从零开始构建一个 DeepSeek 路由并调用4.1 手动创建deepseek-official路由文件尽管 Agent-Reach 内置了deepseek-officialroute但亲手创建一个能彻底理解其工作原理。我们以 DeepSeek 官方文档https://platform.deepseek.com/api-docs/为依据逐步构建。步骤1确认基础信息Base URLhttps://api.deepseek.com/v1文档明确写出认证方式文档首页醒目提示 “No API Key Required for Public API”故auth_type: noneChat Endpoint/chat/completions与 OpenAI 兼容模型列表文档中列出deepseek-chat,deepseek-coder我们选择deepseek-chat作为默认步骤2编写deepseek-official.json在~/.agent-reach/routes/目录下若不存在则创建新建文件{ name: deepseek-official, base_url: https://api.deepseek.com/v1, auth_type: none, headers: { Content-Type: application/json, Accept: application/json }, chat_endpoint: /chat/completions, embedding_endpoint: null, model_mapping: { deepseek-chat: deepseek-chat, deepseek-coder: deepseek-coder }, default_model: deepseek-chat, rate_limit: { requests_per_minute: 60, tokens_per_minute: 100000 }, timeout: 60 }步骤3注册路由agent-reach config import ~/.agent-reach/routes/deepseek-official.json # 验证是否成功 agent-reach config list | grep deepseek-official4.2 调用测试与响应解析现在进行一次完整调用并观察底层细节# 启用 debug 模式查看实际发出的 HTTP 请求 agent-reach chat --provider deepseek-official --model deepseek-chat --message 你好世界 --debug输出中会显示DEBUG: Sending request to https://api.deepseek.com/v1/chat/completions DEBUG: Headers: {Content-Type: application/json, Accept: application/json} DEBUG: Payload: {model:deepseek-chat,messages:[{role:user,content:你好世界}],temperature:1.0,max_tokens:2048}这证实了我们的 route 文件被正确加载URL、Headers、Payload 结构全部匹配。返回的 JSON 中choices[0].message.content就是模型回复。关键参数解析temperature: 默认 1.0控制随机性。设为 0.0 可获得确定性输出适合代码生成。max_tokens: 默认 2048但 DeepSeek 的最大 context 是 128K tokens约 1048576 tokens远超此值。热词中提到的api error: 400 this models maximum context length is 1048576 tokens错误通常是用户自己构造的 payload 超长如传入百万字文本而非 Agent-Reach 造成。Agent-Reach 会在发送前检查len(prompt)若超过max_tokens * 0.8会发出 warning 并建议截断。stream: 设为true时返回 SSE 流式响应agent-reach会实时打印每个 token体验更佳。4.3 高级技巧自定义 Prompt Template 与 Function CallingAgent-Reach 支持通过--template参数加载 Jinja2 模板实现复杂 prompt 构造# 创建 template.j2 # {{ system_prompt }} # 用户问题{{ user_message }} # 请用 Markdown 格式回答并在最后加一句“——来自 Agent-Reach”agent-reach chat \ --provider deepseek-official \ --template template.j2 \ --system 你是一个专业的技术文档撰写员 \ --message 解释下 Python 的装饰器 \ --format text更强大的是Function Calling 支持需 provider route 启用。DeepSeek 官方 API 支持tools参数Agent-Reach 将其抽象为--tool# 定义一个获取天气的 tool保存为 weather_tool.json { type: function, function: { name: get_weather, description: Get the current weather in a given location, parameters: { type: object, properties: { location: {type: string, description: The city and state, e.g. San Francisco, CA} }, required: [location] } } }agent-reach chat \ --provider deepseek-official \ --tool weather_tool.json \ --message 北京今天天气怎么样Agent-Reach 会自动将tools注入 payload并解析模型返回的tool_calls调用本地函数需你实现get_weather再将结果作为tool_message发送回去完成一次完整的 function calling 循环。这为构建真正智能的 Agent 应用打下了坚实基础。5. 常见问题与排查技巧实录那些只有亲手用过才知道的坑5.1 典型问题速查表问题现象可能原因解决方案agent-reach: command not foundPATH 未包含安装目录使用pipx install或手动添加~/.local/bin到 PATHHTTPConnectionPool(hostapi.deepseek.com, port443): Max retries exceeded网络连接失败或 DNS 问题检查curl -v https://api.deepseek.com是否通尝试--timeout 120400 Bad Request: This models maximum context length is 1048576 tokens输入文本过长超出模型总容量Agent-Reach 会 warning手动截断输入或使用--max-tokens 8192限制输出长度llm-deepseek: no api key for provider route deepseek-officialroute 文件中auth_type不是none或拼写错误检查 JSON 文件确保auth_type: none字符串不是nullKeyError: choicesAPI 返回错误 JSON如 401, 404Agent-Reach 未妥善处理更新到最新版agent-reachv0.4.2 修复了此问题用--debug查看原始响应batch模式下部分结果为空provider 限流导致请求被静默丢弃增加--concurrency 1降低压力检查results.jsonl中的error字段5.2 独家避坑技巧技巧1用--dry-run预演请求不发真实调用在不确定 payload 是否正确时先用--dry-runagent-reach chat --provider deepseek-official --message test --dry-run它会打印出将要发送的 URL、Headers、Payload但不发起网络请求。这是我调试新 route 的第一道防线避免因错误配置浪费免费 quota。技巧2config exportgit管理团队路由将agent-reach config export routes.yaml的输出提交到 Git 仓库。团队成员git pull后只需agent-reach config import routes.yaml即可同步所有 provider 配置。比口头传达或邮件发送 JSON 文件可靠百倍。我们还在 CI 中加入检查agent-reach config list | wc -l必须大于 5确保关键 route 已加载。技巧3为deepseek-official设置合理的rate_limitDeepSeek 官方未公开明确的 rate limit但实测发现短期内1 分钟连续发送 60 个请求大概率触发 429单次请求max_tokens超过 8192响应变慢且易超时因此我在 route 文件中设置了requests_per_minute: 60和timeout: 60。Agent-Reach 的batch模式会据此自动调整并发数确保不被限流。技巧4--format jsonjq实现复杂后处理jq是处理 JSON 的瑞士军刀。例如提取所有 batch 结果中的 content 并统计长度jq -r .choices[0].message.content | length results.jsonl | awk {sum $1} END {print Avg length:, sum/NR}或者过滤出包含特定关键词的结果jq select(.choices[0].message.content | contains(Python)) results.jsonl技巧5离线 fallback 保底策略在生产环境中我总会为关键任务配置离线 fallback# 尝试在线 DeepSeek失败则用本地 Llama.cpp if ! agent-reach chat --provider deepseek-official --message $prompt --timeout 30; then echo DeepSeek failed, fallback to local llama 2 llama-cli -m models/llama-3-8b.Q4_K_M.gguf -p $prompt --temp 0.7 fiAgent-Reach 的简洁 CLI 接口让这种优雅降级变得异常容易。6. 总结与延伸思考Agent-Reach 的定位与未来可能性Agent-Reach 不是一个终点而是一个起点。它精准地卡在了当前 LLM 应用开发的“甜蜜点”上足够轻量能被任何人 5 分钟上手足够强大能支撑起从个人实验到团队协作的完整工作流足够开放其 Provider Route 机制为无限扩展留出了空间。我用它半年最大的体会是它让我从一个“API 调试工程师”回归到了一个“问题解决者”。我不再需要记住每个模型的 endpoint 是什么、header 怎么写、错误码怎么解析我的注意力可以 100% 放在 prompt 工程、结果评估和业务逻辑上。它的未来不在于增加更多花哨功能而在于深化现有价值。比如agent-reach serve子命令正在开发中它将 CLI 能力封装成一个本地 HTTP 服务让非 Python 应用也能通过POST /v1/chat/completions调用彻底变成一个微型的、可插拔的 LLM 网关。又比如对github相关热词的响应——agent-reach github可能成为一个专门用于分析 GitHub 仓库的子命令集自动 clone、提取 README、调用 LLM 生成摘要或 PR 描述这完全符合其“CLI Provider” 的设计哲学。最后分享一个小技巧如果你经常需要对比不同模型的输出不要手动复制粘贴。创建一个compare.sh脚本#!/bin/bash PROMPT$1 echo DeepSeek agent-reach chat --provider deepseek-official --message $PROMPT --format text | head -n 5 echo -e \n Qwen agent-reach chat --provider qwen --message $PROMPT --format text | head -n 5 echo -e \n Kimi agent-reach chat --provider kimi --message $PROMPT --format text | head -n 5./compare.sh 用 Python 写一个冒泡排序三行命令结果并排呈现。这才是 Agent-Reach 带来的真正效率革命——把重复劳动变成一次敲击。
返回列表