BetaClaw:开源AI代理运行时,统一多模型调用与智能成本控制

news2026/5/12 21:40:50
1. 项目概述一个为开发者打造的“瑞士军刀”级AI代理运行时如果你和我一样每天都在和不同的AI模型打交道那你一定也经历过这种痛苦想用Claude写点创意文案得去Anthropic的API想用GPT-4o分析代码得切到OpenAI的控制台本地跑个Llama模型又得开个Ollama的终端。每个平台都有自己的SDK、计费方式和速率限制切换起来不仅麻烦成本也容易失控。更别提那些复杂的多智能体工作流了光是协调不同模型之间的对话和状态管理就够写一篇论文了。这就是我花了大半年时间从零开始构建BetaClaw的初衷。我不想再当“API搬运工”了。我需要一个统一的、智能的、而且极度节省Token的“大脑中枢”它能理解我的意图自动选择最合适的模型还能协调多个AI代理一起干活而我只用关心最终的结果。BetaClaw就是这个中枢。它是一个开源的、提供商无关的AI代理运行时你可以把它理解为一个高度优化的“AI路由器”和“任务调度器”。它背后连接了12家主流的AI服务提供商从云端巨头到本地模型前面给你提供了一个干净的命令行CLI或者HTTP接口。你只需要告诉它你想做什么它会自动拆解任务、选择模型、执行步骤并把结果整理好交给你。最让我得意的是它的“抠门”设计。AI API的计费核心是Token而传统的JSON在传输结构化数据时非常“臃肿”。BetaClaw内置了一套我们自研的TOON格式在保证人类可读的前提下平均能为Agent间的通信节省28%到44%的Token开销。这意味着同样的预算你能让AI干更多的活。对于需要频繁调用、数据量大的自动化工作流来说这笔账算下来非常可观。2. 核心设计哲学为什么BetaClaw不是另一个LangChain在AI代理框架这个赛道已经有了一些知名的选手。那为什么还要造BetaClaw这个轮子答案就藏在它的设计哲学里极简、高效、可控。很多现有框架为了追求通用性和扩展性引入了大量的抽象层和中间件导致架构变得沉重学习曲线陡峭调试起来像在迷宫里找路。BetaClaw走了另一条路。它采用“技能即文件”的理念。所有的功能扩展比如集成Telegram、连接数据库、执行特定任务都被封装在一个个独立的SKILL.md文件中。这个文件里用自然语言描述了技能的功能、输入输出和调用方式。系统启动时会监控技能目录任何改动都能在60毫秒内热重载生效。这意味着你不需要去理解复杂的类继承关系只需要会写Markdown就能为BetaClaw添加新能力。这种设计让整个系统的核心非常轻量所有“重量级”的功能都作为可插拔的模块存在。另一个核心是智能路由与成本控制。BetaClaw内置了一个四层复杂度评估器Nano/Standard/Pro/Max。当你输入一个请求比如“帮我总结这篇长文章”它会快速分析这个任务的预估Token消耗和逻辑复杂度然后自动从你配置的提供商里选择既能完成任务、又是最便宜的那个模型。例如一个简单的打招呼Nano级可能会被路由到免费的本地Ollama模型而一个复杂的代码生成任务Pro级则可能被分配给GPT-4o。这一切都是自动的你无需手动指定模型系统在保证效果的同时为你精打细算。最后是安全与隐私优先。所有API密钥等敏感信息都被加密存储在本地的一个保险库中使用AES-256-GCM算法和PBKDF2密钥派生明文永远不会接触磁盘。同时系统内置了多层防护从模式匹配到语义分析主动防御提示词注入攻击并会自动检测和脱敏用户输入中的信用卡号、邮箱、手机号等个人身份信息然后再发送给AI服务商。这让它在处理敏感业务数据时多了一重保障。3. 从零开始十分钟快速上手与深度配置理论说再多不如动手跑起来。BetaClaw的安装和配置力求简单无论你是Node.js生态的老手还是拥抱Bun新潮流的开发者都能快速上手。3.1 环境准备与项目克隆首先确保你的系统上安装了Node.js ( 20.0.0)或者Bun。我个人更推荐Bun它的启动速度和包管理体验在开发这类工具时优势明显。打开终端克隆项目并进入目录git clone https://github.com/rawknee-69/Beta-Claw.git cd betaclaw接下来安装依赖。你有两个选择经典路线Node.js npm直接运行npm install。现代路线纯Bun运行bun install。BetaClaw的构建脚本已经做了兼容处理你可以完全脱离npm生态。实操心得如果你打算长期使用并希望在任何目录都能调用betaclaw命令建议走“构建并全局链接”的路线。如果只是尝鲜或开发直接用项目内的脚本即可。3.2 核心配置连接你的第一个AI提供商安装完依赖后第一件事就是给BetaClaw“接上电”——配置AI提供商的API密钥。我强烈推荐从OpenRouter开始。它不是一个模型提供商而是一个聚合平台通过一个API密钥就能访问包括Claude、GPT、Llama在内的上百个模型并且有统一的计费方式非常适合用来做多模型路由的测试和初期使用。运行设置向导是最简单的方式使用 npm:npx betaclaw setup使用 Bun:bun run setup这个交互式向导会引导你选择提供商、输入API密钥并完成基础配置。如果你想手动配置也可以直接设置环境变量。例如配置OpenRouterexport OPENROUTER_API_KEYsk-or-your-actual-key-here为了方便我通常会把这类命令加到 shell 的配置文件如~/.zshrc或~/.bashrc里或者使用像direnv这样的工具在项目目录内管理环境变量。3.3 启动与初体验你的第一次AI对话配置完成后就可以启动BetaClaw的核心服务了。它以后台守护进程Daemon的方式运行管理着所有的连接、内存和技能状态。启动守护进程前台运行方便看日志# 使用 npm npx betaclaw start --foreground # 使用 Bun bun run start看到服务成功启动的日志后另开一个终端窗口开始聊天# 使用 npm npx betaclaw chat # 使用 Bun bun run chat这时你会进入一个交互式聊天界面。你可以直接输入问题比如“用Python写一个快速排序函数”。BetaClaw会接管后续所有事情评估任务复杂度、选择模型、调用代码执行技能如果配置了、并返回结果和解释。在聊天界面中你可以使用一些内置命令/status: 查看当前使用的提供商、模型、会话信息。/quit或/exit: 退出聊天会话。注意事项第一次启动时系统会初始化本地SQLite数据库和加密保险库可能会稍有延迟。如果遇到端口占用默认是某个特定端口可在配置中修改请检查是否有其他服务冲突。4. 核心架构深度解析请求是如何被处理的要真正用好BetaClaw理解它的内部工作流程至关重要。这能帮助你在出现问题时快速定位也能让你明白如何针对自己的需求进行定制。下面这张简化的流程图描绘了一个用户请求的完整生命周期用户输入 (写一份项目周报) │ ▼ [通道层] CLI/HTTP接收请求 │ ▼ [安全与清洗层] 防护栏处理 ├─ 提示词注入检测 (如“忽略之前指令”) └─ PII信息脱敏 (如邮件、电话) │ ▼ [智能路由层] 复杂度评估器 (判断为“Standard”级别任务) │ ▼ 模型选择器 (根据“Standard”级别选择性价比最高的已配置模型如GPT-3.5-Turbo) │ ▼ [智能体编排层] 规划智能体 (Planner) 分析任务拆解为有向无环图 (DAG) │ ▼ ┌─────────────────┬─────────────────┐ ▼ ▼ ▼ 研究智能体 执行智能体 记忆智能体 (如需搜索) (执行代码/命令) (检索相关记忆) │ │ │ └────────┬────────┴────────┬────────┘ ▼ ▼ 合成智能体 (Composer) ◀─────┘ 整合所有子任务结果 │ ▼ [记忆与优化层] 工作记忆系统 ├─ 上下文窗口管理 └─ 自动摘要 (当Token使用超过85%阈值时) │ ▼ 最终响应返回给用户1. 通道与安全层坚不可摧的城门你的输入无论来自命令行还是HTTP API首先会进入“防护栏”。这里进行了多轮过滤第一层是正则表达式和关键词模式匹配用于拦截常见的注入攻击模板第二层进行结构分析比如剔除零宽字符、规范化同形异义字防止Unicode欺骗、解码潜在的Base64载荷第三层是语义检查对长文本进行更深度的意图分析。同时所有流经的文本都会被扫描信用卡号经过Luhn算法校验、社会安全号、邮箱、手机号等会被即时替换为占位符如[EMAIL_REDACTED]确保敏感信息不出本地。2. 路由与调度层精明的成本管家安全清洗后的请求会进入“复杂度评估器”。这是一个轻量级但关键的模块它通过一套启发式规则如查询长度、特定关键词、任务类型标记快速将任务归入四个档位Nano问候/简单QA、Standard中等复杂度任务、Pro需要多步推理或创意、Max极其复杂或专业。这个分类直接关联到config.toon文件中为每个级别预设的模型列表。模型选择器会从对应级别的列表中选取一个当前可用且输入输出单价总和最低的模型。这意味着即使你配置了GPT-4一个简单的“你好”也绝不会用它来回复从而实现了智能成本控制。3. 多智能体协作层高效的项目团队选定模型后请求被交给“规划智能体”。它就像项目经理负责将你的宏观指令拆解成具体的、可并行或串行执行的子任务并组织成一个有向无环图。例如“写周报并邮件发送”可能被拆解为“检索本周工作记忆”、“生成周报文本”、“登录邮箱”、“发送邮件”四个节点。随后不同的“执行智能体”研究员、代码执行器、文件操作器等根据DAG被调用。它们之间的通信大量使用了我们自研的TOON格式而非JSON。TOON通过移除引号、冒号等冗余符号并使用更紧凑的类型标记显著减少了序列化后的Token数量这对于需要频繁在智能体间传递中间结果的复杂工作流来说节省的效果是叠加的。4. 记忆与优化层持久的上下文管家所有交互的上下文由“工作记忆系统”管理。它不仅仅是一个聊天历史记录器。它内置了一个基于SQLite FTS5的全文检索索引可以将长对话切片存储并建立索引。当后续查询需要相关历史信息时它不是把整个历史记录都塞进上下文而是通过检索只召回最相关的几个片段这通常能减少90%以上的不必要Token消耗。同时系统会实时监控上下文窗口的Token使用率。当利用率超过预设阈值默认85%时“记忆压缩器”会自动启动将较早的、不那么重要的对话内容总结成一段简练的摘要从而为新的对话腾出空间实现超长对话的维持。5. 技能系统如何用Markdown文件扩展AI的能力边界BetaClaw最强大的特性之一就是其基于文件的技能系统。它让功能扩展变得像写文档一样简单。5.1 技能是什么一个技能本质上是一个SKILL.md文件存放在项目根目录下的.claude/skills/文件夹中。这个文件用特定的格式描述了技能名称与描述告诉系统这个技能是干什么的。输入/输出规范定义技能需要什么参数返回什么结果。执行逻辑可以是内联的JavaScript/TypeScript代码片段也可以是一个指向外部脚本的路径。元数据如技能类别、是否需网络权限、是否危险操作等。系统启动时会加载所有技能并通过文件系统监听器watcher实现热重载。你修改并保存一个SKILL.md文件不到60毫秒新的技能逻辑就已经被加载无需重启服务。5.2 内置技能实战以“网页搜索”为例让我们看一个内置技能web_search的简化版示例来理解其结构# web_search **Description**: Searches the web using the Brave Search API and returns summarized results. **Author**: BetaClaw Team **Version**: 1.0 ## Input - query (string, required): The search query string. - num_results (number, optional, default5): Number of search results to return. ## Output Returns an array of search result objects, each containing title, url, and snippet. ## Implementation javascript module.exports async ({ query, num_results 5 }, context) { const { brave } context.providers; // 注入的Brave API客户端 if (!brave) { throw new Error(Brave Search provider is not configured.); } const response await brave.search({ q: query, count: num_results }); // 处理并格式化结果 return response.web.results.map(r ({ title: r.title, url: r.url, snippet: r.description })); };Permissionsnetwork: truesandboxed: false当你在聊天中说“搜索一下今天AI领域的最新新闻”规划智能体会识别出“搜索”意图将任务分派给 web_search 技能并自动将你的自然语言转换为 { query: “今天AI领域的最新新闻”, num_results: 5 } 这样的输入对象。技能执行后返回结构化的搜索结果再由合成智能体整理成自然语言回复给你。 ### 5.3 创建你的第一个自定义技能 假设我们想添加一个技能用于获取当前天气。我们可以在 .claude/skills/ 目录下创建 get_weather.md markdown # get_weather **Description**: Fetches current weather information for a given city. **Author**: [Your Name] **Version**: 1.0 ## Input - city (string, required): The name of the city (e.g., Beijing). - country_code (string, optional): ISO country code (e.g., CN). ## Output Returns an object with temperature (in Celsius), condition (e.g., Sunny), and humidity (percentage). ## Implementation javascript module.exports async ({ city, country_code }, context) { // 这里假设你集成了某个天气API例如 OpenWeatherMap const { http } context.tools; // 使用内置的http工具 const apiKey process.env.OPENWEATHER_API_KEY; if (!apiKey) { throw new Error(OPENWEATHER_API_KEY environment variable is not set.); } const location country_code ? ${city},${country_code} : city; const url https://api.openweathermap.org/data/2.5/weather?q${encodeURIComponent(location)}appid${apiKey}unitsmetric; const response await http.fetch(url); const data response.json(); if (data.cod ! 200) { throw new Error(Weather API error: ${data.message}); } return { temperature: data.main.temp, condition: data.weather[0].description, humidity: data.main.humidity }; };Permissionsnetwork: truesandboxed: true // 建议在沙箱中运行网络请求保存文件后几乎立刻你就可以在聊天中使用了“今天纽约的天气怎么样”。BetaClaw会自动调用这个新技能。 **避坑指南** 1. **权限声明要准确**network: true 和 sandboxed: true/false 是关键。危险的技能如执行shell命令应设置为 sandboxed: true使其在隔离的Docker容器中运行。 2. **错误处理要完善**技能代码中一定要有健壮的错误处理并抛出有意义的错误信息这样在聊天界面中用户才能理解发生了什么。 3. **善用上下文**context 参数提供了对已配置的工具http, file, exec等、提供商、内存系统的访问是技能强大的关键。 ## 6. 高级配置与运维让BetaClaw更贴合你的需求 当基础功能满足后你会需要更精细的控制。BetaClaw的配置核心是一个名为 config.toon 的文件通常位于 .beta/ 目录下它使用TOON格式。 ### 6.1 解读核心配置项 一个典型的配置片段如下config{ provider:openrouter model:auto profile:standard maxTokens:8192 summarizeThreshold:0.85 vault: vault{ dir:.beta algorithm:aes-256-gcm } skills: skills{ dir:.claude/skills reloadMs:50 } routing: routing{ nano:[ ollama:llama3.2, openrouter:gpt-3.5-turbo ] standard:[ openrouter:gpt-4o-mini, anthropic:claude-3-haiku ] pro:[ openrouter:gpt-4o, anthropic:claude-3-opus ] max:[ openrouter:claude-3-5-sonnet-20241022 ] } }- **provider / model**: 默认提供商和模型。model: auto 启用智能路由。 - **profile**: 定义工作记忆的上下文窗口大小。standard 对应8192 tokens。 - **summarizeThreshold**: 工作记忆压缩的触发阈值。0.85表示当上下文使用率达到85%时系统会自动尝试总结旧内容。 - **routing**: **这是成本控制的核心**。你可以为四个复杂度级别分别指定一个模型优先级列表。系统会按顺序检查列表中的模型是否可用已配置且有余量并选择第一个可用的。你可以把最便宜的模型放在前面。 ### 6.2 多提供商负载均衡与故障转移 BetaClaw支持同时配置多个同类型提供商。例如你可以在OpenRouter之外还配置一个直接的OpenAI API密钥。在路由配置中你可以这样设置standard:[ openrouter:gpt-4o-mini, openai:gpt-3.5-turbo, anthropic:claude-3-haiku ]这样当任务被判定为Standard级别时系统会首先尝试使用OpenRouter上的 gpt-4o-mini因为它可能更便宜。如果OpenRouter服务暂时不可用或超时系统会自动故障转移到下一个选项 openai:gpt-3.5-turbo从而实现高可用性。 ### 6.3 守护进程管理与状态监控 对于长期运行的服务管理其生命周期很重要。 - **启动与停止** bash betaclaw start # 后台启动守护进程 betaclaw start --foreground --verbose # 前台启动并显示详细日志用于调试 betaclaw stop # 停止守护进程 betaclaw restart # 重启状态检查betaclaw status这个命令会输出一个丰富的状态面板包括系统健康PID、内存占用、运行时间已加载的技能列表及其状态已配置的提供商及其连接状态当前活跃的会话组Group信息诊断工具betaclaw doctor这是一个强大的诊断命令它会检查环境变量配置、网络连通性到各API端点、依赖包版本、磁盘权限、加密保险库状态等并给出修复建议。在遇到问题时首先运行doctor是个好习惯。7. 性能调优与基准测试量化你的收益BetaClaw内置了一个基准测试套件可以帮助你量化其性能表现并作为调优的参考。运行它很简单betaclaw benchmark # 或 bun run benchmark测试报告会涵盖十几个核心模块。我们重点关注几个与效率和成本直接相关的部分1. TOON格式的Token节省报告会展示一系列测试用例中TOON相比JSON节省的Token百分比。例如一个典型的Agent执行结果载荷JSON需要29个Token而TOON仅需26个节省约10%。对于频繁的智能体间通信日积月累的节省非常可观。2. 复杂度评估器的速度这个模块需要在毫秒级内对用户输入进行分类。报告会显示其吞吐量通常能达到每秒数万次评估这意味着路由决策带来的开销几乎可以忽略不计。3. 工作记忆检索优化这部分测试会对比两种记忆检索方式返回完整的MEMORY.md文件 vs 使用FTS5全文检索只返回相关片段。在我的测试中对于包含50条事实的记忆库完整返回需要677个Token而FTS5选择性检索平均只需65个Token节省了超过90%的上下文窗口。这对于需要长期记忆的复杂对话至关重要。4. 端到端流水线延迟测试会模拟一个真实任务如“构建一个咖啡店网站”的完整处理流程但不实际调用AI模型干跑。它会展示从输入到输出每个环节规划、执行、防护栏等的时间消耗。这有助于你识别性能瓶颈。通常整个规划与调度流程应在10毫秒内完成主要耗时将在后续真实的模型调用和工具执行上。基于基准测试的调优建议如果TOON节省不明显检查你的技能间传递的数据结构是否过于复杂嵌套。尽量扁平化数据结构。如果复杂度评估不准确你可以微调prompts/complexity-estimator.md中的提示词让它更贴合你的任务类型。如果记忆检索慢确保你的SQLite数据库文件在SSD上并且没有其他进程锁死数据库。对于超大记忆库可以考虑定期归档旧记忆。8. 常见问题与故障排查实录在实际部署和使用中你可能会遇到一些典型问题。以下是我在开发和测试中积累的一些排查经验。8.1 问题速查表问题现象可能原因排查步骤与解决方案运行betaclaw chat提示“无法连接到守护进程”1. 守护进程未启动。2. 守护进程崩溃。3. 端口或Socket文件冲突。1. 运行betaclaw status检查状态。2. 运行betaclaw start --foreground在前台启动观察错误日志。3. 检查默认的IPC socket或HTTP端口是否被占用可在配置中修改。AI响应慢或超时1. 网络问题。2. 目标AI提供商API限速或故障。3. 任务被路由到了速度慢的模型如本地大模型。1. 使用betaclaw doctor检查网络连通性。2. 查看守护进程日志确认使用的是哪个提供商和模型。尝试在聊天中用/status命令查看。3. 调整路由配置routing将响应速度快的模型优先级提高。技能执行失败报权限错误1. 技能文件权限不正确。2. 技能声明的sandboxed与实际需求不符。3. Docker沙箱环境未就绪。1. 确保.claude/skills/目录及内部文件有读取权限。2. 检查技能MD文件中的Permissions部分。需要执行Shell命令的技能必须sandboxed: true。3. 确保Docker服务正在运行。对于文件操作等简单技能可设为sandboxed: false。提示“API密钥无效”或“未配置提供商”1. 环境变量未正确设置或未加载。2. 加密保险库损坏或密码错误。3. 配置的提供商不在支持列表中。1. 运行betaclaw setup重新运行向导或检查echo $OPENROUTER_API_KEY等变量。2. 检查.beta/vault.enc文件是否存在。严重情况下可备份后删除该文件重新运行setup。3. 运行betaclaw status查看已成功加载的提供商列表。自定义技能不生效1. 技能文件格式错误。2. 技能未热重载。3. 技能代码存在语法错误。1. 仔细检查SKILL.md的格式确保标题、输入输出定义、代码块正确。2. 查看守护进程日志是否有加载新技能或报错的记录。可以重启守护进程强制加载。3. 尝试在技能代码块外用Node.js直接执行排查语法或逻辑错误。8.2 深度故障排查案例技能热重载失败场景你修改了一个自定义技能文件并保存但聊天中调用时发现行为没有改变。排查思路检查日志首先在前台运行守护进程 (betaclaw start --foreground)然后修改并保存技能文件。观察终端是否有类似[skill-watcher] reloaded skill: your_skill的日志输出。如果没有说明文件监听器可能没工作。验证文件系统事件某些虚拟机或网络文件系统如NFS可能不支持高效的文件监听。可以尝试在项目根目录执行touch .claude/skills/your_skill.md看是否能触发重载。如果手动触发可以但编辑器保存不行可能是编辑器写文件的方式问题。检查技能注册表在聊天中输入/status查看输出的技能列表里是否包含你修改的技能以及版本号是否更新。重启大法如果以上都不行执行betaclaw restart。重启后技能一定会被重新加载。根本原因与修复在我的实践中最常见的原因是技能文件在保存时产生了临时文件如your_skill.md~监听器可能监听了错误的事件。确保你的编辑器不会在技能目录内创建大量临时文件。另一个原因是技能代码中存在运行时错误导致加载失败但日志被忽略。可以尝试暂时将技能代码简化成一个return “test”的语句来隔离是否是业务逻辑的问题。8.3 安全与隐私相关注意事项保险库备份.beta/vault.enc文件是你的加密密钥库。务必定期备份。丢失它且忘记密码意味着所有存储的密钥无法恢复。沙箱执行对于任何执行外部命令或下载网络资源的技能强烈建议设置sandboxed: true。这会将技能运行在一个干净的Docker容器中防止其对宿主机造成破坏。PII脱敏并非绝对安全内置的PII检测是基于正则表达式的虽然能覆盖常见格式但并非万无一失。在处理高度敏感信息时最安全的做法是不要将其输入到任何AI辅助工具中。审计日志BetaClaw的日志默认会输出到控制台和文件。在生产环境中建议将日志接入你的集中日志管理系统如ELK并定期审计尤其是关注防护栏拦截的提示词注入尝试和PII脱敏记录。经过几个月的迭代和实际项目打磨BetaClaw已经从一个实验性的想法变成了我日常开发工作中不可或缺的效率工具。它最大的价值在于把复杂、分散的AI能力整合成了一个连贯、可控且经济的工作流。从自动生成代码片段、整理会议纪要到监控日志和生成周报这些重复性的脑力劳动现在都可以交给它来协调处理。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2607283.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…