自托管AI助手Moltis:基于Rust的持久化个人AI代理服务器部署与实战

news2026/5/10 14:08:45
1. 项目概述为什么我们需要一个“持久化”的个人AI代理服务器如果你和我一样在过去一年里深度体验过各种AI助手从ChatGPT到Claude再到各种开源的Agent框架你可能会发现一个共同的痛点它们大多是“瞬时”的。每一次对话都像是一次性的咨询即使有上下文记忆也仅限于当前会话。当你关闭网页或重启服务上一次对话中你精心调教的指令、它为你总结的会议纪要、或者你让它记住的某个项目细节都烟消云散了。更别提跨平台、跨会话的连续协作了。这就是我最初被Moltis这个项目吸引的原因。它不是一个简单的聊天机器人而是一个持久化的个人AI代理服务器。你可以把它想象成你自己的、永远在线的AI管家。它运行在你自己的硬件上——无论是角落里的树莓派、一台闲置的Mac Mini还是你自己的云服务器。它只有一个用Rust编写的二进制文件没有Node.js的臃肿也没有Python虚拟环境的依赖地狱。最关键的是它拥有记忆。它能记住你记住你的项目记住你与它交互的每一个上下文并在未来的任何会话中调用这些记忆。想象一下这样的场景你在Telegram上让Moltis帮你查一下明天的天气并添加到日历半小时后你在电脑的Web界面上问它“我下午有什么安排”它能立刻告诉你天气和日程晚上你通过语音让它“播放今天早上我们讨论的那个播客”它也能准确理解并执行。所有的状态、记忆、工具调用历史都持久化地保存在你本地的SQLite数据库里。这才是真正意义上的“个人”AI助手。Moltis的核心设计哲学是“安全、自托管、功能完备”。它用Rust实现了从AI网关、工具执行沙箱到各种通信协议集成的全套功能代码库模块化程度极高59个独立的Crate但交付物却简洁到只有一个二进制文件。对于追求数据隐私、希望完全掌控自己AI工作流的开发者和技术爱好者来说这无疑是一个极具吸引力的方案。接下来我将带你深入拆解它的架构、手把手部署配置并分享我在实际使用中积累的经验和踩过的坑。2. 架构深度解析一个Rust二进制文件如何承载完整的AI Agent生态初次看到Moltis的仓库你可能会被它近30万行的Rust代码量震撼。但它的精妙之处在于如此庞大的功能集被完美地封装在了一个单一的、静态链接的二进制文件中。这背后是高度模块化的Cargo Workspace设计和清晰的分层架构。理解这个架构是后续灵活使用和定制它的基础。2.1 核心运行时层坚固的基石Moltis的架构可以类比为一个微内核操作系统。最核心的“内核”由几个关键Crate组成它们共同提供了AI代理服务最基础的能力。moltis-gateway(37.4K LoC)这是整个系统的入口和交通枢纽。它基于高性能的Axum Web框架构建了HTTP/WebSocket服务器处理所有来自外部的RPC请求。你通过Web UI、Telegram Bot发送的每一条消息最终都会汇聚到这里。它负责身份认证密码、Passkey、API Key、请求路由、速率限制以及服务的启动引导。你可以把它看作是Moltis的“前台”和“调度中心”。moltis-agents(14.5K LoC) 与moltis-chat(14.2K LoC)这是AI大脑的“思维循环”所在。moltis-agents实现了核心的Agent运行循环包括流式响应处理、子代理Sub-agent的委派机制。而moltis-chat则在此基础上构建了聊天引擎和复杂的多代理编排逻辑。例如你可以配置一个“编码专家”代理和一个“文案助手”代理让它们协作完成一个任务这个协作的调度就由这一层管理。moltis-tools(37.0K LoC)这是我认为最精彩的部分之一——工具执行与沙箱系统。所有AI代理对外的操作比如执行一个Shell命令、读写文件、调用一个API都被抽象为“工具Tool”。这个Crate管理着一个工具注册表并负责以最安全的方式执行它们。它支持三种后端Docker全功能、Apple ContainermacOS原生、轻量和WASM极致安全、跨平台。这意味着任何不受信任的工具代码都会在一个隔离的容器或WASM沙箱中运行从根本上杜绝了AI“胡作非为”破坏宿主机的风险。moltis-providers(18.9K LoC)LLM提供商抽象层。它统一了与不同AI模型后端的交互接口目前内置支持OpenAI API、GitHub Copilot以及本地模型通过Ollama或类似服务。这种设计使得增加一个新的模型提供商比如Claude API或DeepSeek变得非常清晰和模块化。实操心得理解“工具”与“技能”的区别在Moltis的语境里“工具Tool”是一个原子操作比如execute_shell、http_request。“技能Skill”则是由一系列工具调用和LLM推理组成的、能完成复杂任务的流程或插件。Moltis内置了许多技能如文件管理、网页搜索并且支持从OpenClaw项目导入技能。这种分层让系统既灵活又安全。2.2 功能与集成层丰富的生态扩展围绕核心运行时Moltis通过一系列功能Crate构建了其强大的生态系统。这些Crate像插件一样可以通过Cargo的Feature标志选择性编译这也是它能保持核心二进制精简的秘诀。通信渠道Channels这是Moltis实现“随处可达”的关键。它提供了moltis-telegram,moltis-signal,moltis-discord,moltis-slack等近十个Crate分别对接不同的即时通讯平台。每个渠道的实现都遵循统一的接口将不同平台的消息格式转化为内部统一的协议。这意味着你的AI助手可以同时监听Telegram群组、Discord频道和Web界面并保持对话状态同步。记忆与上下文Memory Contextmoltis-memory等Crate实现了基于SQLite的持久化存储结合全文搜索FTS和向量检索为AI代理提供了长期记忆和跨会话召回能力。moltis-projects则专门管理项目上下文能够与Cursor编辑器兼容自动为AI提供当前代码库的精准信息。安全与认证Auth Security这一组Cratemoltis-auth,moltis-vault等构建了企业级的安全防线。数据静态加密XChaCha20-Poly1305算法、密钥管理使用secrecy::Secret并在丢弃时清零、PasskeyWebAuthn支持、以及防御SSRF服务端请求伪造和CSWSH跨站WebSocket劫持的机制都体现了其“安全优先”的设计理念。可扩展性Extensibility通过moltis-mcpModel Context Protocol支持Moltis可以无缝集成外部数据源和工具比如连接你的数据库、Notion或Jira。MCP是一种新兴的、由Anthropic等公司推动的开放协议旨在标准化AI与工具的交互方式。Moltis对其的早期支持显示了项目的前瞻性。2.3 安全架构从代码到运行的全面防护安全是Moltis的立身之本。它的安全设计是多层次的代码安全核心的Agent循环和网关代码完全使用Safe Rust编写。所有不安全的操作如与Swift的FFI交互、本地模型封装、预编译WASM运行时边界都被严格隔离在少数几个特定的Crate中极大减少了内存安全漏洞的风险。沙箱隔离如前所述所有工具执行默认在Docker或Apple Container中进行。即使AI模型被诱导输出恶意命令这些命令也只在容器内生效无法触及宿主机文件系统或网络。秘密管理API密钥、密码等敏感信息在内存中使用secrecy::Secret类型包裹确保它们不会被意外打印到日志或泄露并在使用后立即从内存中清零。供应链安全官方发布的二进制文件均通过Sigstore进行无密钥签名和GPG支持YubiKey签名并提供SHA-256/512校验和。你可以使用gh attestation verify命令来验证下载的镜像是否由可信构建流程产生有效抵御中间人攻击和恶意篡改。运行时防护内置了请求速率限制、IP throttling限制、Origin验证防止跨域WebSocket升级以及一个强大的“钩子Hook”系统。你可以在BeforeToolCall钩子中编写自定义逻辑审查甚至阻断任何即将被调用的工具实现细粒度的安全策略。这种深度防御的策略使得将Moltis部署在公网上例如通过云服务器提供家庭助手服务也变得相对安心。3. 从零开始部署与配置打造你的专属AI服务器理论说得再多不如亲手搭建一个。Moltis提供了多种部署方式从本地开发到云上生产我们可以根据自身需求选择。我将以最常见的本地Docker部署和树莓派原生部署为例详细走通整个流程。3.1 方案一使用Docker快速启动推荐新手这是最快捷、环境最干净的方式尤其适合在个人电脑macOS/Linux上尝鲜。步骤1环境准备确保你的系统已经安装了Docker或兼容的容器运行时如Podman、OrbStack。打开终端运行docker --version确认安装成功。步骤2一键运行Moltis的Docker镜像已经集成了所有依赖。复制并执行以下命令docker run -d \ --name my-moltis \ -p 13131:13131 \ -p 13132:13132 \ -p 1455:1455 \ -v moltis-config:/home/moltis/.config/moltis \ -v moltis-data:/home/moltis/.moltis \ -v /var/run/docker.sock:/var/run/docker.sock \ ghcr.io/moltis-org/moltis:latest命令参数解析-p 13131:13131将容器的HTTPS Web UI端口映射到主机。-p 13132:13132将容器的HTTP用于健康检查等端口映射到主机。-p 1455:1455用于内部调试或特定服务的端口。-v moltis-config:/home/moltis/.config/moltis创建一个名为moltis-config的Docker卷用于持久化配置文件。即使容器删除你的设置也不会丢失。-v moltis-data:/home/moltis/.moltis创建moltis-data卷持久化核心数据会话、记忆、数据库。-v /var/run/docker.sock:/var/run/docker.sock这是关键一步。它将宿主机的Docker守护进程套接字挂载到容器内使得Moltis能够在容器内部启动新的“子容器”作为工具沙箱。这是实现安全隔离的前提。步骤3初始设置容器启动后在浏览器中打开https://localhost:13131。由于使用的是自签名证书浏览器会显示安全警告选择“高级”-“继续前往”即可。 首次访问Web界面会提示你输入“设置代码”。这个代码打印在容器的日志中。获取它docker logs my-moltis在输出的开头部分寻找类似Setup code: ABCD-EFGH的一行。将这个代码填入Web界面。接下来你会被引导完成以下步骤设置认证方式选择密码或更安全的Passkey需要硬件安全密钥或平台认证器。配置AI提供商这是核心步骤。你需要至少配置一个LLM提供商。OpenAI最简单。你需要一个OpenAI API Key。在界面选择OpenAI填入你的Key并选择模型如gpt-4o-mini, gpt-4-turbo。本地模型如果你本地运行了Ollama可以选择“Local”类型并填入Ollama服务器的地址如http://host.docker.internal:11434。注意从Docker容器内访问主机服务通常使用host.docker.internal这个特殊域名。完成设置完成后你就会进入Moltis的主聊天界面。注意事项Docker.sock挂载的安全考量挂载/var/run/docker.sock本质上赋予了容器内进程与宿主机Docker守护进程同等的权限。虽然Moltis自身是安全的但这确实扩大了攻击面。在生产环境或对安全有极高要求的场景下可以考虑使用Rootless Docker。为Moltis容器创建一个专用的Docker用户组并精细控制其权限。或者使用Podman的Rootless模式其安全性更高。3.2 方案二在树莓派ARM设备上原生运行对于希望将Moltis作为24小时运行的家庭助手树莓派是绝佳选择。由于Moltis是纯Rust编译的单一二进制在ARM架构上运行毫无压力。步骤1安装Rust工具链通过SSH登录到你的树莓派假设是Raspberry Pi OS。# 安装Rust如果尚未安装 curl --proto https --tlsv1.2 -sSf https://sh.rustup.rs | sh source $HOME/.cargo/env rustup target add armv7-unknown-linux-gnueabihf # 针对树莓派3/432位系统 # 如果是64位系统如Pi OS 64-bit则添加 aarch64-unknown-linux-gnu # rustup target add aarch64-unknown-linux-gnu步骤2安装系统依赖Moltis需要一些本地库特别是用于TTS/STT语音功能。sudo apt update sudo apt install -y pkg-config libssl-dev libsqlite3-dev # 如果需要音频功能安装音频相关库如portaudio # sudo apt install -y portaudio19-dev步骤3编译并安装Moltis为了获得最佳性能并减少依赖我们使用--release模式编译并启用lightweight特性来禁用一些对资源要求较高的功能如部分语音提供商。cargo install moltis --git https://github.com/moltis-org/moltis --features lightweight --locked这个过程在树莓派4上可能需要20-30分钟请耐心等待。步骤4配置与运行编译完成后Moltis二进制位于~/.cargo/bin/moltis。首次运行前建议创建一个简单的配置文件~/.config/moltis/config.toml[server] host 0.0.0.0 # 监听所有网络接口方便内网其他设备访问 port 13131 [auth] # 你可以在这里预置密码哈希值但更安全的方式是通过首次运行的设置流程 # initial_password_hash $argon2id$v19$... [providers.openai] api_key sk-... # 你的OpenAI API Key model gpt-4o-mini # 选择更轻量的模型以节省成本/延迟然后运行~/.cargo/bin/moltis --config-dir ~/.config/moltis --data-dir ~/.moltis同样首次运行会生成设置代码通过树莓派的IP地址如https://192.168.1.100:13131在浏览器中访问并完成设置。步骤5配置为系统服务可选为了让Moltis在树莓派启动时自动运行可以创建一个systemd服务。sudo nano /etc/systemd/system/moltis.service写入以下内容根据你的路径调整[Unit] DescriptionMoltis Personal AI Agent Server Afternetwork.target docker.service # 如果用到Docker沙箱需要等待docker服务 [Service] Typesimple Userpi # 替换为你的用户名 ExecStart/home/pi/.cargo/bin/moltis --config-dir /home/pi/.config/moltis --data-dir /home/pi/.moltis Restarton-failure RestartSec5 [Install] WantedBymulti-user.target保存后启用并启动服务sudo systemctl daemon-reload sudo systemctl enable moltis.service sudo systemctl start moltis.service sudo systemctl status moltis.service # 检查运行状态实操心得树莓派上的性能调优模型选择在树莓派上优先使用推理速度快的模型如OpenAI的gpt-4o-mini或本地运行的phi-3-mini,qwen2.5-coder。避免使用gpt-4等重型模型延迟会很高。关闭非核心功能编译时使用--features lightweight已经禁用了一些功能。在Web UI的“设置”中也可以关闭不需要的渠道如Discord、Slack和工具减少内存占用。使用交换文件如果内存不足尤其是4GB版本可以适当增加交换空间以避免OOM内存溢出崩溃。存储建议使用高速MicroSD卡或外接SSD因为SQLite数据库的读写性能会影响记忆和会话操作的流畅度。4. 核心功能实战将Moltis融入你的日常工作流部署完成只是开始让Moltis真正为你创造价值关键在于如何配置和使用它的核心功能。我将分享几个我最常用的场景配置。4.1 连接Telegram打造随身AI助手将Moltis接入Telegram意味着你可以在手机上随时随地与你的AI助手对话。步骤1创建Telegram Bot在Telegram中搜索BotFather。发送/newbot指令按照提示设置机器人的名字和用户名必须以bot结尾。创建成功后BotFather会提供一个HTTP API Token形如1234567890:ABCdefGHIjklMnOprSTUvWxyZ-abc123。妥善保存。步骤2在Moltis中配置Telegram渠道登录Moltis的Web UI (https://your-server:13131)。进入Settings-Channels。找到Telegram部分将刚才获取的Token粘贴到Bot Token字段。可选设置Webhook URL。如果你将Moltis部署在公网且有域名可以配置Webhook以获得更快的响应。格式为https://your-domain.com/api/channels/telegram/webhook。如果只是内网使用保持为空Moltis会使用长轮询Long Polling模式也完全可行。点击“Save Test”。如果配置正确Moltis会尝试向你的Bot发送一条测试消息。步骤3与你的Bot对话在Telegram中搜索你刚刚创建的Bot用户名。发送/start命令。Bot会回复一个链接或验证码。你需要将这个验证码在Moltis的Web UI中进行绑定通常在Settings-Channels-Telegram下方会有“Pending Connections”列表。这是为了确保只有你授权的用户你自己才能通过这个Bot与你的Moltis实例对话防止他人滥用。绑定成功后你就可以在Telegram中直接与你的AI助手聊天了。所有对话历史、记忆都会与Web UI同步。4.2 配置长期记忆与项目上下文Moltis的记忆系统是其作为“持久化代理”的核心。1. 启用并配置向量记忆在Settings-Memory中确保“Vector Memory”是启用状态。你需要配置一个“嵌入模型Embedding Model”来将文本转换为向量。Moltis支持OpenAI的text-embedding-3-small等模型。如果你使用本地模型可能需要通过Ollama运行一个嵌入模型如nomic-embed-text并在设置中填入本地API地址。设置记忆的保留策略和自动摘要频率。我通常设置为保留所有会话并让AI在会话结束时自动生成一个摘要存入长期记忆。2. 为代码项目添加上下文这是对程序员极其有用的功能。Moltis可以索引你的代码库并在你提问时自动引用相关代码。在Web UI中进入Projects页面。点击“Add Project”输入项目名称和本地路径或Git仓库URL。如果是本地路径确保Moltis进程有读取权限。Moltis会开始索引项目文件。它支持通过.gitignore和.moltisignore文件来排除不需要索引的目录如node_modules,target。索引完成后当你在这个项目的聊天会话中提问比如“/project这个登录函数是怎么实现的”Moltis会自动从索引中检索相关的代码片段并作为上下文提供给AI模型从而获得极其精准的回答。3. 实践利用记忆进行连续创作假设你正在规划一个周末徒步旅行。会话1Web UI你问“帮我规划一个深圳梧桐山的一日徒步路线要轻松一点的。” Moltis生成路线并自动将“梧桐山”、“一日徒步”、“轻松”等关键信息存入向量记忆。会话2Telegram第二天你忘了带装备清单于是问“根据我们昨天的徒步计划我需要带什么装备” Moltis会从记忆中找到昨天的会话结合“梧桐山”、“一日”这些上下文生成一份合适的装备清单如登山杖、防晒衣、足够的水和零食。会话3语音出发前你用手机语音问“今天的天气适合爬山吗” Moltis可以调用天气工具并结合记忆中的“梧桐山”地点给出答复。整个过程中你无需重复任何信息AI助手就像一个真正的伙伴记住了对话的脉络。4.3 技能Skills与工具Tools的运用Moltis内置了数十个工具和技能并允许你自定义。查看与管理工具在Settings-Tools页面你可以看到一个实时更新的工具清单。这里列出了所有已注册的工具它们的描述、所需参数以及当前状态启用/禁用。你可以禁用任何你认为不需要或不安全的工具。使用内置技能技能是预配置的工具组合。例如web_search在对话中你可以直接说“搜索一下Rust 2024 edition的新特性”Moltis会自动调用浏览器工具进行搜索并总结。schedule_event你可以说“明天下午3点提醒我开会”Moltis会调用日历工具创建事件。execute_shell慎用你可以让它执行简单的Shell命令如“列出当前目录文件”。由于有沙箱保护这个操作是相对安全的。自定义技能高级你可以通过编写简单的YAML或Rust代码来创建自定义技能。例如创建一个每天早上下载特定RSS源并摘要的技能在Moltis的数据目录下默认~/.moltis创建skills/custom文件夹。创建一个morning_digest.yaml文件定义技能的名称、描述和一系列工具调用步骤如下载RSS、解析、调用LLM总结。重启Moltis或通过API重新加载技能你就可以在对话中触发这个自定义技能了。注意事项工具调用的安全边界尽管有沙箱但赋予AI执行命令和访问网络的能力始终存在风险。务必遵循最小权限原则在生产环境中考虑禁用execute_shell或严格限制其可执行的命令列表。利用BeforeToolCall钩子对敏感工具如文件写入、网络请求进行二次确认。你可以配置规则例如任何尝试删除文件或访问特定外部API的请求都需要在Web UI上弹窗由你手动批准。定期审查Moltis的日志了解AI都执行了哪些操作。5. 高级配置与故障排除实录即使按照指南操作在实际部署和运行中也可能遇到各种问题。这里我整理了一些常见的情况和解决方法。5.1 网络与连接问题问题1Web UI无法访问ERR_CONNECTION_REFUSED检查服务是否运行docker ps或systemctl status moltis。检查端口映射确保Docker命令的-p参数正确且主机端口没有被其他程序占用。netstat -tulpn | grep 13131。检查防火墙如果是在云服务器上确保安全组/防火墙放行了13131和13132端口。检查日志docker logs my-moltis查看是否有启动错误。常见错误是绑定地址冲突或SSL证书生成失败。问题2AI模型提供商连接超时或报错OpenAI API连接失败确认API Key正确且未过期。检查网络是否能访问api.openai.com某些地区可能需要配置网络环境。注意此处仅讨论技术连通性不涉及任何其他方面。在Moltis配置中尝试设置base_url为可用的代理地址如果你有合法合规的代理配置。本地Ollama连接失败确认Ollama服务正在运行curl http://localhost:11434/api/tags。从Docker容器内访问主机服务需使用host.docker.internalMac/Windows Docker Desktop或主机实际IPLinux。在Moltis的Local Provider配置中正确设置地址。检查Ollama的CORS设置确保允许Moltis的域名/IP进行访问。问题3Telegram Bot不回复消息Token错误确认Bot Token无误且来自正确的BotFather。网络问题如果Moltis部署在内网且未配置Webhook需要能访问Telegram的API。确保服务器网络通畅。未绑定用户检查Telegram Channel设置界面下的“Pending Connections”完成用户绑定步骤。查看日志Moltis的日志中会有详细的渠道连接和消息处理信息是排查的第一手资料。5.2 性能与资源优化问题响应缓慢尤其是使用本地模型时模型层面选择更小、更快的模型如Qwen2.5-Coder-1.5B-Instruct,Phi-3-mini-4k-instruct。在Ollama中使用ollama pull拉取模型。调整推理参数在Moltis的Provider设置中降低temperature如0.2减少max_tokens可以加快生成速度。硬件层面树莓派确保散热良好避免因过热降频。考虑使用SSD作为存储介质。内存不足如果使用Docker可以适当增加容器内存限制。如果使用本地模型确保系统有足够的空闲内存通常模型大小的1.5倍以上。Moltis配置禁用不需要的渠道和功能如某些语音提供商。减少向量记忆的检索深度memory.vector_search_limit。5.3 数据备份与迁移你的所有记忆、会话、配置都存储在~/.moltis和~/.config/moltis或你指定的数据目录中。定期备份这些目录至关重要。备份# 假设使用Docker卷 docker run --rm -v moltis-data:/source -v $(pwd):/backup alpine tar czf /backup/moltis-data-backup-$(date %Y%m%d).tar.gz -C /source . docker run --rm -v moltis-config:/source -v $(pwd):/backup alpine tar czf /backup/moltis-config-backup-$(date %Y%m%d).tar.gz -C /source .迁移到新服务器在新服务器上以相同的方式部署Moltis但先不要启动。将备份的data和config目录解压到新服务器对应的Docker卷或本地路径。确保文件权限正确Moltis进程用户可读写。启动Moltis服务。它应该能直接读取所有历史数据和配置。5.4 常见错误与解决速查表错误现象可能原因解决方案启动失败Address already in use端口被占用更改config.toml中的port或停止占用端口的进程。Web UI提示“Invalid setup code”设置代码错误或已过期查看容器/服务日志获取最新的设置代码。代码每次启动可能变化。AI回复“我没有这个功能”对应的工具或技能被禁用前往Settings - Tools启用相关工具。执行Shell命令失败Docker沙箱未正确配置确保运行Moltis的容器有/var/run/docker.sock挂载且用户有权限。记忆检索返回无关内容嵌入模型不适合或未训练尝试更换嵌入模型如从text-embedding-ada-002换到text-embedding-3-small。对于中文可尝试本地部署的bge系列模型。语音输入/输出无声音缺少音频驱动或权限确保宿主机有声卡设备且Docker容器以--device /dev/snd方式挂载了音频设备仅Linux。检查Moltis日志中的音频提供商初始化信息。经过几个月的深度使用Moltis已经从一个新奇的项目变成了我数字生活中不可或缺的一部分。它安静地运行在书房角落的迷你服务器上通过Telegram接收我的杂事吩咐在Web界面上帮我梳理复杂的项目代码其持久的记忆能力让每一次对话都建立在之前的基础上省去了大量重复解释的精力。它的模块化设计和安全至上的理念让我有信心将它长期部署在家庭网络中。如果你也厌倦了每次与AI对话都从零开始渴望一个真正属于自己、可定制、能成长的数字伙伴那么投入一些时间部署和调教Moltis绝对是值得的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2600692.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;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…