news 2026/8/9 1:15:32

OpenRouter与Sensho集成:低成本构建多智能体系统的实践指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
OpenRouter与Sensho集成:低成本构建多智能体系统的实践指南

这次我们来看一个关于 OpenRouter 祝贺 Sensho 上线并支持其多智能体基建的事件。这不仅仅是两家公司的商业互动,更是一个重要的技术风向标,它揭示了当前 AI 应用开发,特别是多智能体系统构建中的一个关键趋势:如何高效、低成本地集成和使用最前沿的大语言模型。对于开发者、创业团队和 AI 应用研究者而言,理解这一事件背后的技术内涵,远比关注新闻本身更有价值。

简单来说,OpenRouter 是一个聚合了众多主流大语言模型(如 GPT-4、Claude、Llama 等)的 API 平台,开发者可以通过统一的接口调用不同模型,并享受极具竞争力的价格。而 Sensho 则是一个新兴的、专注于多智能体(Multi-Agent)系统开发与部署的“基建”平台。OpenRouter 对 Sensho 的支持,意味着开发者可以在 Sensho 上构建复杂的多智能体应用时,直接、便捷地调用 OpenRouter 上丰富的模型资源,从而大幅降低模型接入的复杂性和成本。

对于技术实践者,最关心的几个问题通常是:这跟我有什么关系?我能用它来做什么?部署门槛高吗?是否支持批量任务和 API 集成?效果到底怎么样?本文将围绕这些核心问题,结合多智能体开发的实际场景,为你拆解这一技术联动的价值,并提供一个从环境认知到实践验证的完整视角。无论你是想探索多智能体应用,还是正在寻找更优的模型调用方案,这篇文章都能提供直接的参考。

1. 核心能力速览

为了快速把握 OpenRouter 与 Sensho 结合带来的技术红利,我们可以从平台能力、集成方式和使用成本三个维度来审视。

能力项说明与解读
核心定位OpenRouter 是模型聚合与路由层,Sensho 是多智能体编排与执行层。两者结合,形成了从模型选择到智能体协作的完整技术栈。
模型支持通过 OpenRouter,可间接调用数十种主流闭源和开源模型,包括 GPT-4、Claude 3、Llama 3、Gemini 等。解决了多智能体系统中“为不同任务匹配合适模型”的难题。
主要功能在 Sensho 平台上,可进行智能体工作流设计、角色定义、任务分解、会话管理、以及智能体间的协同与竞争机制设置。OpenRouter 为其提供底层模型推理能力。
硬件门槛极低。开发与测试阶段完全基于云 API,无需本地 GPU。仅需能运行 Python 脚本和访问互联网的普通电脑。大规模生产部署时,需关注 API 调用延迟与成本。
启动方式1.OpenRouter:注册账号,获取 API Key。
2.Sensho:通常以 SaaS 服务或开源框架形式提供,通过 Web 界面或 SDK 启动智能体项目。
是否支持 API。这是核心价值。OpenRouter 提供标准化的 HTTP API,Sensho 通过集成该 API 来驱动智能体。开发者也可直接调用 OpenRouter API。
是否支持批量任务。多智能体系统天生适合处理异步、并行的批量任务。Sensho 的编排引擎可以管理任务队列,并发调用 OpenRouter API。
成本模式OpenRouter 按 Token 使用量计费,价格透明,通常低于模型官方定价。Sensho 可能涉及平台使用费。总成本 = 模型调用成本 + 平台服务成本
适合场景1. 快速原型验证多智能体应用(如自动客服、游戏 NPC、模拟社会)。
2. 需要混合使用多种模型能力的复杂任务。
3. 希望避免被单一模型供应商锁定的项目。
国内可用性OpenRouter 作为国际服务,其可用性受网络环境影响。需确保开发与部署环境具备稳定的国际网络访问能力。

2. 适用场景与使用边界

这种“OpenRouter + Sensho”的模式并非万能,理解其最适合和应避免的场景,是高效利用该技术栈的第一步。

它非常适合以下场景:

  • 复杂任务分解与执行:当你有一个宏观目标(如“撰写一份行业分析报告”),需要拆解为市场调研、数据分析、文案撰写、校对审核等子任务,并由不同特长的智能体协作完成时。
  • 模拟与仿真环境:构建模拟市场、社交网络、游戏环境等,其中包含多个具有自主决策能力的智能体,它们需要持续交互并基于环境反馈行动。
  • 对比与评估模型:在同一套多智能体工作流中,可以轻松为不同角色的智能体分配来自 OpenRouter 的不同模型(例如,让 Claude 做分析,让 GPT-4 做创意),直观对比效果。
  • 降低开发与试错成本:无需分别申请和集成各家模型的 API,一个 OpenRouter Key 打通多数模型。在 Sensho 上可视化编排工作流,极大降低了多智能体系统的开发门槛。

需要谨慎或避免的场景:

  • 超低延迟要求:API 调用必然引入网络延迟。对于需要毫秒级响应的实时交互场景(如高速交易、第一人称射击游戏),此方案可能不适用。
  • 数据绝对本地化:所有对话和任务数据会经由 OpenRouter 发送至其集成的模型供应商服务器。对数据出境有严格合规要求的企业内部系统,需评估风险。
  • 极端成本控制:虽然 OpenRouter 价格有优势,但对于超大规模、持续性的 Token 消耗,仍需仔细核算成本,并与自建开源模型集群的方案对比。
  • 功能定制化需求:如果需要对模型进行深度微调(Fine-tuning)或使用非常小众的模型,OpenRouter 的现有支持可能无法满足。

合规与安全边界:

  1. 内容安全:你通过 Sensho 和 OpenRouter 生成的内容,需遵守各模型供应商的内容政策,避免生成违法、侵权或有害信息。
  2. 数据隐私:避免上传个人敏感信息、商业秘密或未脱敏的客户数据至云端 API。
  3. 授权使用:确保你的使用场景符合 OpenRouter 和 Sensho 的服务条款,特别是商业用途。

3. 环境准备与前置条件

在开始动手之前,你需要准备好以下“软环境”。与本地部署大模型不同,这里对硬件要求极低,重点在于账户和开发环境。

  1. 网络环境:稳定的国际互联网连接。这是访问 OpenRouter 和 Sensho(若为国际版)服务的基础。建议提前测试其 API 端点的连通性和延迟。
  2. OpenRouter 账户
    • 访问 OpenRouter 官网,使用邮箱注册账号。
    • 在账户设置中,生成一个 API Key。妥善保管此 Key,它是调用所有模型的凭证。
    • 查看定价页面,了解不同模型的每百万 Token 成本,以便预算规划。
  3. Sensho 访问权限
    • 情况一(SaaS 平台):如果 Sensho 提供云端托管服务,你需要注册其平台账号,并可能创建组织或项目。
    • 情况二(开源框架):如果 Sensho 开源,你需要准备 Python 开发环境(建议 Python 3.9+),并通过 Git 克隆其代码库。
  4. 开发环境
    • Python 环境:大多数 AI 应用框架基于 Python。建议使用condavenv创建独立的虚拟环境。
    • 代码编辑器:VS Code、PyCharm 等。
    • HTTP 测试工具:如curl或 Postman,用于直接测试 OpenRouter API。
  5. 基础认知:对多智能体系统的基本概念(如 Agent、Environment、Message、Tool/Function Calling)有初步了解,将有助于更好地使用 Sensho 进行编排。

4. 接入与配置流程

我们以最通用的场景为例:假设 Sensho 是一个可通过代码 SDK 集成的多智能体框架。核心步骤是将 OpenRouter 配置为 Sensho 中智能体的语言模型后端。

第一步:获取并配置 OpenRouter API Key你的所有操作都将始于这个 Key。通常,你需要将其设置为环境变量,避免硬编码在代码中。

# 在 Linux/macOS 终端或 Windows PowerShell 中设置环境变量 export OPENROUTER_API_KEY="your-api-key-here"
# 在 Python 代码中,可以通过 os 模块读取环境变量 import os api_key = os.environ.get("OPENROUTER_API_KEY") if not api_key: raise ValueError("请设置 OPENROUTER_API_KEY 环境变量")

第二步:理解 OpenRouter API 调用格式OpenRouter 的 API 设计基本遵循 OpenAI 格式,这降低了切换成本。一个简单的对话请求如下:

import requests url = "https://openrouter.ai/api/v1/chat/completions" headers = { "Authorization": f"Bearer {api_key}", "Content-Type": "application/json" } payload = { "model": "openai/gpt-3.5-turbo", # 指定模型,格式为`提供商/模型名` "messages": [ {"role": "user", "content": "你好,请介绍一下你自己。"} ] } response = requests.post(url, headers=headers, json=payload, timeout=30) if response.status_code == 200: result = response.json() print(result['choices'][0]['message']['content']) else: print(f"请求失败: {response.status_code}, {response.text}")

第三步:在 Sensho 框架中集成 OpenRouter这里给出一个概念性的集成示例。具体实现取决于 Sensho 框架的架构。

# 假设 Sensho 框架有一个 BaseLLM 类需要继承 from sensho.agents import BaseLLM import openai # OpenRouter 兼容 OpenAI Python SDK # 配置 OpenAI 客户端指向 OpenRouter client = openai.OpenAI( base_url="https://openrouter.ai/api/v1", api_key=api_key, ) class OpenRouterLLM(BaseLLM): def __init__(self, model_name="openai/gpt-3.5-turbo"): self.client = client self.model_name = model_name def generate(self, messages): # 将 Sensho 内部的消息格式转换为 OpenRouter 格式 try: response = self.client.chat.completions.create( model=self.model_name, messages=messages, temperature=0.7, ) return response.choices[0].message.content except Exception as e: print(f"OpenRouter 调用失败: {e}") return None # 在创建 Sensho 智能体时,使用自定义的 LLM from sensho.agents import Agent writer_agent = Agent( name="文案写手", llm=OpenRouterLLM(model_name="anthropic/claude-3-haiku"), # 为这个智能体指定 Claude system_prompt="你是一名专业的文案编辑...", )

第四步:启动多智能体系统配置完成后,你就可以启动由 Sensho 编排、由 OpenRouter 提供“大脑”的多智能体系统了。

# 示例:创建一个简单的双智能体协作场景(分析师 + 写手) from sensho.environments import SequentialEnvironment analyst_agent = Agent( name="市场分析师", llm=OpenRouterLLM(model_name="openai/gpt-4"), # 分析师用 GPT-4 system_prompt="你擅长数据分析和洞察提炼...", ) # 定义任务和工作流 environment = SequentialEnvironment(agents=[analyst_agent, writer_agent]) initial_task = "请协作生成一份关于2024年AI编程助手发展趋势的简短报告,先分析,再撰写。" result = environment.run(task=initial_task) print("最终输出:", result)

5. 功能测试与效果验证

接入完成后,必须进行系统化测试,以确保整个链路畅通,智能体行为符合预期。

5.1 连通性测试

首先验证最基本的 API 调用是否成功。

# 使用 curl 测试 OpenRouter API 连通性 curl -X POST https://openrouter.ai/api/v1/chat/completions \ -H "Authorization: Bearer $OPENROUTER_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "openai/gpt-3.5-turbo", "messages": [{"role": "user", "content": "Say \'Hello, OpenRouter!\'"}] }'

成功标志:收到包含"Hello, OpenRouter!"或类似内容的 JSON 响应。

5.2 多模型切换测试

测试在 Sensho 中为不同智能体分配不同模型的能力。

# 创建三个使用不同模型的智能体 agent_gpt = Agent(name="GPT助手", llm=OpenRouterLLM("openai/gpt-3.5-turbo")) agent_claude = Agent(name="Claude助手", llm=OpenRouterLLM("anthropic/claude-3-haiku")) agent_llama = Agent(name="Llama助手", llm=OpenRouterLLM("meta-llama/llama-3-8b-instruct")) # 向它们提出同一个问题,观察回答风格差异 question = "用一句话解释什么是多智能体系统。" for agent in [agent_gpt, agent_claude, agent_llama]: response = agent.llm.generate([{"role": "user", "content": question}]) print(f"{agent.name}: {response}\n")

验证点:三个智能体均应返回合理答案,且能观察到不同模型在表达风格上的细微差别。

5.3 智能体协作流程测试

设计一个简单的多步骤任务,验证智能体间的信息传递与协作。

# 任务:规划一次团队建设活动 planner = Agent( name="活动策划", llm=OpenRouterLLM("openai/gpt-4"), system_prompt="你负责提出创意和初步方案。" ) budget_agent = Agent( name="预算专员", llm=OpenRouterLLM("openai/gpt-3.5-turbo"), system_prompt="你负责评估方案成本并给出预算建议。" ) approver = Agent( name="最终审批", llm=OpenRouterLLM("anthropic/claude-3-haiku"), system_prompt="你综合策划和预算意见,做出最终决定。" ) # 模拟一个顺序工作流 planner_output = planner.llm.generate([{"role": "user", "content": "提出一个适合20人技术团队的半日团建活动方案。"}]) print(f"策划方案: {planner_output}\n") budget_input = f"请评估以下活动的成本:{planner_output}" budget_output = budget_agent.llm.generate([{"role": "user", "content": budget_input}]) print(f"预算评估: {budget_output}\n") final_input = f"策划方案:{planner_output}\n预算评估:{budget_output}\n请给出是否批准的最终意见及理由。" final_decision = approver.llm.generate([{"role": "user", "content": final_input}]) print(f"最终审批: {final_decision}")

成功标志:三个智能体能够基于上游输出,完成各自环节的任务,最终形成一个连贯的决策链条。

6. 接口 API 与批量任务实践

OpenRouter 的 API 是服务化的核心,而 Sensho 的编排能力则让批量处理变得高效。

6.1 直接调用 OpenRouter API 进行批量处理

即使不通过 Sensho,你也可以利用 OpenRouter 的并发能力处理批量任务。

import concurrent.futures import requests def ask_openrouter(question, model="openai/gpt-3.5-turbo"): url = "https://openrouter.ai/api/v1/chat/completions" headers = {"Authorization": f"Bearer {api_key}"} data = { "model": model, "messages": [{"role": "user", "content": question}], "max_tokens": 150 } resp = requests.post(url, json=data, headers=headers, timeout=30) return resp.json().get('choices', [{}])[0].get('message', {}).get('content', 'Error') # 准备一批问题 questions = [ "解释机器学习。", "Python 的优缺点是什么?", "如何学习编程?", # ... 更多问题 ] # 使用线程池并发请求 answers = [] with concurrent.futures.ThreadPoolExecutor(max_workers=5) as executor: # 控制并发数 future_to_q = {executor.submit(ask_openrouter, q): q for q in questions} for future in concurrent.futures.as_completed(future_to_q): q = future_to_q[future] try: answer = future.result() answers.append((q, answer)) except Exception as exc: answers.append((q, f'生成异常: {exc}')) for q, a in answers: print(f"Q: {q}\nA: {a}\n{'-'*40}")

关键点:通过ThreadPoolExecutor控制并发数,避免触发 API 速率限制。OpenRouter 的速率限制策略需查阅其官方文档。

6.2 利用 Sensho 编排复杂批量工作流

Sensho 的优势在于管理有状态、有依赖的批量任务。例如,处理一批客户反馈邮件。

  1. 智能体设计
    • 分类器:判断邮件是咨询、投诉还是建议。
    • 路由器:根据分类,将邮件路由给不同的处理智能体。
    • 处理专员:多个并行的智能体,负责生成针对性的回复模板。
    • 审核员:对生成的回复进行最终润色和合规检查。
  2. 工作流编排:在 Sensho 的可视化界面或通过代码,将上述智能体连接成一个工作流。
  3. 批量输入:将一批邮件内容作为列表输入工作流。
  4. 执行与监控:Sensho 会自动调度智能体,处理邮件队列,并收集每个邮件的处理结果和日志。

这种模式将批量任务从简单的“一问一答”升级为“流水线作业”,每个环节都可以由最合适的模型(通过 OpenRouter 配置)负责,显著提升处理质量和效率。

7. 成本控制与性能观察

使用云端 API,成本和性能(主要是延迟)是必须关注的核心指标。

1. 成本监控OpenRouter 的成本取决于模型单价和你的使用量(输入+输出 Token 数)。

  • 估算单次调用成本:在发送请求前,可先用本地库(如tiktoken用于 OpenAI 模型,或估算)粗略计算输入 Token 数。结合 OpenRouter 价格表进行估算。
  • 设置预算告警:在 OpenRouter 后台设置每日或每月使用预算,防止意外超支。
  • 模型选型策略:对质量要求不高的中间环节或简单任务,使用成本更低的模型(如haiku,gpt-3.5-turbo)。仅在关键环节使用GPT-4Claude Opus等昂贵模型。

2. 性能(延迟)观察API 调用的延迟由网络延迟和模型推理时间构成。

  • 记录响应时间:在代码中记录每个请求的耗时。
    import time start = time.time() response = client.chat.completions.create(...) elapsed = time.time() - start print(f"请求耗时: {elapsed:.2f}秒")
  • 分析瓶颈:如果整体流程慢,需要区分是网络问题还是某个复杂模型调用慢。可以通过并行化独立任务来优化整体耗时。
  • 重试机制:对于因网络波动导致的偶发性失败,应实现指数退避的重试逻辑。

3. 用量分析定期查看 OpenRouter 控制台的分析面板,了解各模型的使用占比、Token 消耗趋势和成本分布。这有助于优化模型分配策略。

8. 常见问题与排查方法

在实际集成和使用过程中,你可能会遇到以下典型问题。

问题现象可能原因排查方式解决方案
API 调用返回 401 错误API Key 无效、过期或未正确传递。1. 检查环境变量名是否正确。
2. 在 OpenRouter 官网验证 Key 是否有效。
3. 检查代码中 Authorization 头格式是否为Bearer <key>
重新生成 API Key,并确保在请求头中正确设置。
返回 429 速率限制错误短时间内请求过于频繁,超过速率限制。查看响应头中的X-RateLimit-*信息,了解限制策略。1. 降低并发请求数。
2. 在代码中增加请求间隔(sleep)。
3. 考虑升级 OpenRouter 套餐。
模型响应慢或超时1. 网络连接不稳定。
2. 所选模型本身响应慢(如 GPT-4)。
3. 请求的 Token 数过多。
1. 使用pingcurl测试到openrouter.ai的网络延迟。
2. 换用轻量模型测试。
3. 检查请求中的max_tokens参数。
1. 优化网络环境。
2. 为请求设置合理的timeout参数(如 60s)。
3. 拆分长文本为多个请求。
Sensho 智能体无响应或报错1. Sensho 框架与 OpenRouter 客户端版本不兼容。
2. Sensho 中 LLM 配置错误。
3. 智能体的system_prompt导致模型行为异常。
1. 查看 Sensho 框架日志。
2. 单独测试 OpenRouterLLM 类是否能正常返回结果。
3. 简化system_prompt进行测试。
1. 确保使用兼容的库版本。
2. 检查 Sensho Agent 初始化时 LLM 参数是否正确传入。
3. 调试和优化提示词。
账单费用超出预期1. 存在程序循环错误调用 API。
2. 使用了比预期更贵的模型。
3. 输出 Token 数失控(如陷入长循环生成)。
1. 检查代码逻辑,避免死循环。
2. 核对代码中指定的模型名称。
3. 设置max_tokens参数限制输出长度。
1. 为开发环境设置极低的预算告警。
2. 在代码中固定模型名称,避免动态选择时出错。
3. 实现用量监控和告警脚本。
国内访问不稳定网络连接问题。测试其他国际服务的连通性作为参照。确保开发和生产环境具备稳定、合规的国际网络访问能力。

9. 最佳实践与使用建议

基于上述分析,为了更稳健、高效地利用“OpenRouter + Sensho”技术栈,建议遵循以下实践:

  1. 从简单到复杂:不要一开始就设计包含数十个智能体的复杂系统。从一个智能体、一个简单任务开始,逐步增加角色和交互逻辑。
  2. 提示词工程是关键:多智能体的表现极度依赖system_prompt和对话历史。为每个智能体设计清晰、无歧义的角色定义和职责描述。在 Sensho 中,可以利用消息模板功能来标准化智能体间的通信格式。
  3. 实现日志与监控:为每个智能体的输入输出、每个 API 调用的耗时和 Token 消耗添加详细日志。这不仅是调试的需要,也是成本分析和性能优化的基础。
  4. 设计容错与降级机制:当某个智能体调用 OpenRouter API 失败时,工作流不应完全崩溃。可以设计重试逻辑,或者在备用模型(如从 GPT-4 降级到 GPT-3.5)之间切换。
  5. 分离配置与代码:将 OpenRouter 的 API Key、模型选择、温度等参数放在配置文件(如config.yaml或环境变量)中,便于在不同环境(开发、测试、生产)间切换。
  6. 进行彻底的测试:除了功能测试,还需进行压力测试(模拟高并发请求)、异常测试(模拟 API 失败、网络中断)和成本测试(估算典型业务场景下的月度花费)。
  7. 严格遵守合规要求:如前所述,特别注意数据安全。避免处理个人隐私数据。对于生成的内容,建立人工审核或自动化过滤机制,确保符合法律法规和平台政策。

OpenRouter 与 Sensho 的结合,为多智能体系统的开发打开了一扇新的大门。它最大的价值在于解耦了智能体编排与模型供应,让开发者能像搭积木一样,自由组合最好的“大脑”来完成不同的任务模块。你可以让 Claude 负责严谨的分析,让 GPT-4 负责创意发散,让 Llama 处理常规问答,而这一切只需要一个统一的 API 密钥和一套编排逻辑。

对于想要入手的团队,建议的行动路径是:先注册 OpenRouter,用其 API 直接完成几个简单的单智能体任务,感受其模型选择和成本。然后,再尝试 Sensho 的基础功能,将一个复杂任务拆解给两个使用不同模型的智能体协作完成。在这个过程中,你会直观地体会到这种架构的灵活性与威力。最容易踩的坑往往是初期过度设计复杂工作流,或者忽略了提示词的质量,导致智能体行为偏离预期。记住,清晰的指令和循序渐进的验证,是构建可靠多智能体系统的基石。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/9 1:07:21

轻量化本地自动化 OpenClaw |Windows+Mac 双端解压安装实操指南

&#x1f4d6;开篇导读 当前&#xff0c;AI 自动化工具正深度优化办公流程&#xff0c;本地化运行的智能体已成为提升日常工作效率的主流趋势。OpenClaw&#xff08;小龙虾 AI&#xff09;凭借其本地闭环运行、图形化可视化操作以及全电脑权限自动化等特点&#xff0c;能够很好…

作者头像 李华
网站建设 2026/8/9 1:05:26

ThinkPHP与Laravel混合架构的企业订单系统实践

1. 项目概述&#xff1a;企业订单管理平台的框架选型思考这个名为"Thinkphp和Laravel创新型产品提前购企业订单管理平台_938re"的项目&#xff0c;本质上是一个基于PHP生态构建的企业级订单管理系统。作为一名长期深耕PHP开发的工程师&#xff0c;我理解这类平台的核…

作者头像 李华
网站建设 2026/8/9 0:46:29

游戏辅助工具技术解析:从OCR识别到自动化推理的实现与应用

这次我们来看一个名为“2.8主线任务 三个推理不会 快来抄答案”的项目。从标题来看&#xff0c;这很可能是一个针对特定游戏或任务&#xff08;例如《原神》2.8版本&#xff09;的攻略或辅助工具&#xff0c;核心功能是提供玩家在遇到困难推理任务时的“答案”或解决方案。这类…

作者头像 李华
网站建设 2026/8/9 0:05:11

比较好的国内EMBA,问了二十位校友聊透人脉价值

比较好的国内EMBA核心差异体现在哪些方面&#xff1f;比较好的国内EMBA的核心长期价值&#xff0c;很大程度上依托于校友网络的连接质量与资源生态的活跃度&#xff0c;这也是不少高管在择校时优先考量的因素。我们结合3-4个市场关注度较高的项目公开信息&#xff0c;从课程、师…

作者头像 李华
网站建设 2026/8/8 23:59:28

CentOS服务器安装Firefox与Chrome:无头浏览器配置与自动化实践

1. 项目概述&#xff1a;为什么要在服务器上装浏览器&#xff1f;你可能觉得这问题有点怪&#xff0c;服务器不就是跑服务、处理数据的吗&#xff0c;要图形界面的浏览器干嘛&#xff1f;这恰恰是很多运维和开发新手容易忽略的一个实用场景。我最早在服务器上装浏览器&#xff…

作者头像 李华