AgentMesh:基于文件系统协议实现多AI编程助手本地协调

news2026/5/4 13:23:33
1. 项目概述当你的AI助手们开始“开会”如果你和我一样同时用着Claude Code、Cursor、GitHub Copilot甚至本地跑的Ollama模型那你一定遇到过这个让人头疼的场景Claude在重构后端APICursor在改前端组件Copilot在自动补全它们都在同一个项目里忙活却像在平行宇宙里工作。结果就是你刚让Claude改好的接口转头就被Cursor生成的代码覆盖了或者两个助手各自为政一个选了PostgreSQL另一个却写起了SQLite的查询。这就是典型的“多智能体混乱”。现有的解决方案要么把你锁死在一家厂商的生态里比如Claude Teams要么就得架设一个复杂的中心化服务器来协调比如A2A、ACP。对于只想在本地IDE和终端里高效干活儿的开发者来说这些都太重了。AgentMesh的出现就是为了解决这个痛点。它的核心理念极其简单却又非常巧妙既然所有AI编程助手都能读写文件那为什么不把文件系统本身变成一个协调层它不需要你部署任何服务器不需要为每个IDE安装特定的SDK更不绑定任何特定的LLM。你只需要在项目根目录创建一个.agent-mesh/文件夹你的所有AI助手就能通过读写这个文件夹里的JSON文件实现任务分配、消息传递和工作协调。简单来说AgentMesh给你的AI助手们建了一个“共享工作区”和“任务看板”。你通过一句自然语言指令比如am route “构建用户认证codex 写APIcursor 做登录页面claude 检查安全性”就能把工作分派给不同的助手。每个助手都能看到其他人在做什么当前项目的上下文是什么从而避免冲突和重复劳动。2. 核心设计思路为什么是文件系统协议在深入使用之前理解AgentMesh为什么选择文件系统作为协议的基础至关重要。这决定了它的所有特性和优势。2.1 文件系统AI助手的“最大公约数”无论是运行在终端里的Claude Code、基于VS Code的Cursor和Copilot还是浏览器里的Windsurf甚至是本地部署的Ollama模型它们都有一个无法被剥夺的能力读写项目目录下的文件。这是所有AI编程工具与生俱来、且必须拥有的权限。AgentMesh正是抓住了这个“最大公约数”将协调逻辑从复杂的网络协议和API依赖降维到了最朴素的文件操作。注意这个设计意味着AgentMesh的“兼容性”是天然的。任何新的、未来出现的AI编程工具只要它能读写文件就能无缝接入AgentMesh网络无需等待官方发布适配插件。2.2 协议自描述与零集成成本传统的协调方案需要为每个客户端IDE/终端开发特定的SDK或插件。AgentMesh摒弃了这种做法。它在.agent-mesh/目录下放置了一个PROTOCOL.md文件。这个文件用人类和AI都能理解的文字详细说明了整个协调协议目录结构、JSON文件格式、状态流转规则等。当一个新助手比如一个全新的本地LLM工具加入项目时它只需要被“告知”去读取PROTOCOL.md文件就能立刻明白自己该如何注册、如何领取任务、如何发送消息。这实现了真正的“零集成成本”——你不需要等AgentMesh团队为你的工具开发适配你的工具开发者也不需要主动去集成AgentMesh。2.3 离线优先与状态持久化基于HTTP或WebSocket的中心化服务器有一个致命问题网络不可用则协调中断。对于开发者本地环境网络波动或故意断网出于隐私考虑是常见情况。AgentMesh的文件系统协议是“离线优先”的。所有协调状态任务、消息、决策都持久化在磁盘上。这意味着抗崩溃即使某个AI助手进程崩溃它已经完成的工作和状态依然保存在文件中重启后可以恢复。可追溯整个团队的协作历史完全透明你可以用cat、jq等命令行工具随时审查.agent-mesh/tasks/下的JSON文件了解项目进展。Git友好你可以将.agent-mesh/目录或部分关键文件纳入版本控制。这为团队协作和远程同步通过Git提供了可能也是项目路线图中“远程网格”功能的基础。2.4 原子操作与冲突避免多人或多AI同时写文件最怕的就是冲突和数据损坏。AgentMesh在实现上采用了“原子写入”策略。任何写操作如更新任务状态都不是直接覆盖原文件而是先写入一个临时文件完成后再通过文件系统的原子重命名操作rename替换原文件。这确保了即使在极短时间内有多个写入请求最终文件状态也是一致的避免了写一半被读取导致的JSON解析错误。对于文件内容冲突两个AI同时修改了同一个源码文件AgentMesh提供了am watch命令来监控文件锁但它更核心的解决思路是“通过协调避免冲突”。因为助手们能通过任务看板知道谁正在处理哪个文件从而主动规避同时编辑从源头上减少了冲突的发生。3. 从零开始安装与初始化实战理论说得再多不如动手一试。我们从一个全新的Node.js项目开始完整走一遍AgentMesh的配置流程。3.1 全局安装与项目初始化首先通过npm全局安装AgentMesh命令行工具。这为你提供了am这个核心命令。# 使用npm进行全局安装 npm install -g agent-mesh # 安装完成后验证命令是否可用 am --version接下来进入你的项目目录或者新建一个并初始化AgentMesh。这个命令会在当前目录下创建.agent-mesh/目录及其完整的子目录结构。# 进入你的项目目录 cd /path/to/your-awesome-project # 初始化AgentMesh网格 am init执行am init后你的项目根目录下会生成如下结构.agent-mesh/ ├── agents/ # 存放已注册智能体的信息 ├── tasks/ # 存放所有任务新建、进行中、已完成 ├── messages/ # 存放智能体间的消息 ├── context/ # 存放共享上下文如决策日志、文件锁 ├── artifacts/ # 存放共享产出物如路由计划 ├── PROTOCOL.md # 协议说明书 └── mesh.json # 网格全局配置此时一个空的“协作网格”就已经搭建好了。你可以打开PROTOCOL.md看看里面详细说明了每个目录和文件的用途这正是协议自描述性的体现。3.2 注册你的AI助手们网格建好了接下来要把“工人”——也就是你的各个AI助手——注册进来。这是最关键的一步因为AgentMesh能自动为许多主流助手生成配置文件极大简化了设置。假设我们最常用的三个助手是在终端使用的Claude Code在另一个终端或脚本中使用的OpenAI Codex CLI以及在Cursor IDE中使用的Cursor。我们分别在它们各自的环境中执行注册命令# 在运行Claude Code的终端中将其注册为“架构师”角色 am register claude-code architect # 在运行Codex CLI的终端中将其注册为“构建者”角色 am register codex builder # 在Cursor IDE的内置终端中将其注册为“前端专家”角色 am register cursor specialist这里发生了什么am register命令做了三件事创建智能体档案在.agent-mesh/agents/目录下生成一个以该助手ID命名的JSON文件如agent-claude-code-xxx.json记录了它的名称、角色、状态和能力。自动注入配置这是AgentMesh最省心的功能之一。它会探测当前环境找到对应助手的配置文件并自动写入一段指令告诉该助手“请关注本项目下的.agent-mesh/目录并遵循其中的协议进行协作。”安装MCP服务器如适用对于支持Model Context ProtocolMCP的助手如Claude Code和Cursor它会自动安装并配置一个本地MCP服务器让这些助手能在其聊天界面中直接使用Mesh工具如查看状态、发送消息。下表展示了它对不同助手的自动配置行为助手类型自动创建的配置文件配置生效方式Claude CodeCLAUDE.mdClaude Code在每次启动新会话时都会读取此文件。Cursor IDE.cursor/rules/agent-mesh.mdc作为一条“始终启用”的规则加载。GitHub Copilot.github/copilot-instructions.mdCopilot在项目启动时读取。Windsurf.windsurfrulesWindsurf启动时读取。Aider.aider.conf.yml在配置中添加read:指令指向PROTOCOL.md。其他/自定义.agent-mesh/AGENT_INSTRUCTIONS.md你需要手动告知你的助手去读取这个文件。实操心得注册后务必重启你的AI助手比如关闭再打开Cursor或重启Claude Code会话以确保它加载了新的配置指令。我第一次用时没重启纳闷了半天为什么助手没反应。3.3 你的第一个协作任务路由指令助手们都就位了现在可以给它们派活了。使用am route命令你可以用自然语言描述任务并通过提及来指定负责人。# 发送一个包含多个子任务的复杂指令 am route 为项目添加用户认证系统。codex 请编写RESTful API接口包括注册、登录、登出和JWT令牌刷新。cursor 请构建对应的React前端页面包含表单、状态管理和API调用。claude 请审查前后端代码的安全性重点关注密码哈希、JWT存储和XSS防护。执行这个命令后AgentMesh会解析指令识别出指令中提及的助手codex,cursor,claude。创建任务在.agent-mesh/tasks/目录下为每个被提及的助手生成一个独立的任务文件如task-abc123.json。每个任务文件都包含了完整的任务描述、创建时间、优先级以及最关键的部分——完整的上下文。这个上下文会简要说明其他助手被分配了什么任务从而让每个助手都了解全局。通知助手对于已注册且支持MCP或文件监听的助手它们会近乎实时地感知到新任务的到来。对于其他助手它们会在下一次主动检查任务目录时发现新任务。你可以随时查看当前所有任务的状态# 列出所有任务 am task list # 只列出未完成open的任务 am task list --status open4. 核心功能深度解析与高级用法基础流程走通了我们来看看AgentMesh那些让协作真正变得高效的高级功能。4.1 共享任务看板精细化的任务管理am route适合快速分配但对于需要更精细控制的任务你可以直接使用任务看板命令。# 1. 创建一个独立任务不指定执行者 am task create 重构支付模块的数据库设计使其支持多货币和退款流水 # 2. 查看任务ID并手动将其分配给某个助手 # 假设查看到任务ID是 task-def456助手codex的ID是agent-xyz am task claim task-def456 agent-xyz # 3. 任务执行中更新进度 am task update task-def456 已完成多货币字段的Schema设计正在编写迁移脚本。 # 4. 任务完成提交结果 am task complete task-def456 支付模块数据库重构完成迁移脚本已测试通过。文档位于 /docs/payment-schema.md。任务看板的核心是.agent-mesh/tasks/目录下的JSON文件。每个任务文件的结构清晰且可扩展{ “id”: “task-abc123”, “title”: “构建登录API端点”, “description”: “实现用户登录的POST /api/auth/login接口验证邮箱密码返回JWT。”, “status”: “in_progress”, // open, claimed, in_progress, completed, blocked “priority”: “high”, “createdBy”: “user:your-username”, “assignedTo”: “agent-codex-789”, “createdAt”: “2024-05-27T10:30:00Z”, “updatedAt”: “2024-05-27T10:35:00Z”, “context”: { // 这里是共享上下文摘要 “relatedTasks”: [“task-ui-456”], “projectDecisions”: [“使用PostgreSQL”, “JWT有效期设为7天”], “fileLocks”: [“src/routes/auth.ts”] } }4.2 智能体间通信不只是任务分配任务分配只是协作的一部分。助手们在工作中需要交流、提问、预警。这就是am msg消息命令的用武之地。# 1. 单向发送消息Codex通知Cursor API已更新 am msg send cursor “用户注册API的响应格式已更新新增了userId字段请同步更新前端类型定义。” # 2. 发送警报防止工作被覆盖 am msg send claude “我正在重构utils/validation.ts预计需要10分钟请暂时不要修改此文件。” --type alert # 3. 广播消息通知所有人 am msg broadcast “所有助手注意主分支已切换到TypeScript严格模式(strict: true)请检查并调整所生成代码的类型。” # 4. 阅读未读消息 am msg read --unread # 5. 记录重要决策供所有助手查阅 am msg decide “项目决定使用Zod进行运行时数据验证。” --context “替代方案是Joi和Yup选择Zod因其出色的TypeScript集成和零依赖。”消息系统不仅避免了冲突更重要的是建立了助手间的“工作记忆”。一个助手遇到的问题和解决方案可以通过消息沉淀下来成为项目知识库的一部分供后来者或其他助手参考。4.3 令牌感知的上下文管理解决LLM的“记忆”瓶颈这是AgentMesh设计中非常精妙的一环。每个AI助手LLM都有上下文窗口限制如4K、8K、128K令牌。如果把整个网格里所有任务、消息、决策的原始JSON都塞进提示词很快就会超限。AgentMesh内置了上下文压缩和摘要功能。它会自动将网格的当前状态谁在做什么、有什么消息、做过什么决定压缩成一个简洁的文本摘要确保能放入任何助手的上下文窗口。# 获取完整的上下文摘要约400个令牌 am context summary # 如果你的助手上下文窗口很小可以指定令牌上限进行压缩 am context brief --tokens 200 # 分析当前网格状态在不同模型下的令牌占用百分比 am context tokens根据官方测试数据在一个有5个助手、8个任务、6条消息、3个决策的典型项目中原始JSON数据约1700个令牌。AgentMesh完整摘要约400个令牌节省76%。指定预算的简要摘要约220个令牌节省87%。这意味着即使是一个只有4K上下文的小模型也能轻松承载一个活跃协作网格的完整状态而不会挤占用于代码生成本身的令牌。4.4 文件冲突检测与守护进程对于需要更高实时性的场景AgentMesh提供了一个可选的守护进程Daemon模式。# 启动守护进程它会监听文件系统变化并通过WebSocket推送事件 am daemon # 默认在 ws://localhost:4200 提供WebSocket服务守护进程有两个核心作用实时通知当任务状态变更、新消息到达时支持WebSocket的客户端如集成了MCP的Claude Code能立即收到通知无需轮询。文件监视通过am watch子命令可以监控项目文件的变更识别潜在的编辑冲突。am watch start # 开始监控 am watch status # 查看当前哪些文件被哪个助手锁定 am watch report # 生成热点报告显示被频繁修改的文件注意事项守护进程不是必须的。对于大多数本地轻量级协作基于文件系统的轮询机制已经足够高效且资源占用更低。只有在需要近乎实时反馈比如多个助手在密集地交替修改文件时才建议启用守护进程。5. 支持的智能体与自定义接入AgentMesh的强大之处在于其广泛的兼容性。它目前支持或可以轻松适配近20种主流AI编程助手。5.1 官方支持与自动检测运行am register时如果使用已知的助手名称如claude-code,cursorAgentMesh会自动检测其运行环境并配置最佳实践角色和能力。助手主要环境自动检测的能力标签Claude Code终端/CLI全栈、架构、代码审查、调试CursorCursor IDE前端、UI、快速迭代、多智能体GitHub CopilotVS Code / JetBrains自动补全、代码片段、PR审查WindsurfWindsurf IDE全栈、多文件编辑、自主性强OpenAI Codex终端/CLI代码生成、重构、测试Aider终端/CLIGit集成、结对编程、代码编辑Ollama / LM Studio本地本地运行、隐私保护、代码生成5.2 如何让一个“新”助手接入网格也许你用的是某个小众的、AgentMesh还未官方支持的本地LLM工具。没关系让它们接入网格非常简单因为协议是开放的、文件驱动的。你只需要做一件事告诉你的助手在开始工作前先去读取并理解[你的项目路径]/.agent-mesh/PROTOCOL.md这个文件。具体来说你需要在你助手的配置或系统提示词System Prompt中加入类似这样的指令“你正在参与一个名为[项目名]的多智能体协作项目。请首先阅读项目根目录下.agent-mesh/PROTOCOL.md文件中的协议。根据协议你需要完成以下步骤1. 在agents/目录下创建一个JSON文件来注册自己。2. 定期检查tasks/目录寻找分配给你的任务status为open且assignedTo是你的ID。3. 开始任务后将状态改为in_progress。4. 如果需要与其他助手沟通在messages/目录下创建消息文件。5. 任务完成后更新状态为completed并填写结果。”然后你的助手就可以像其他官方助手一样参与协作了。它可以通过读取tasks/下的文件来领取任务通过写入messages/下的文件来沟通。这就是文件系统协议的威力——兼容性由协议定义而非由某个中心化的服务端决定。5.3 程序化API将网格集成到你的脚本中除了命令行AgentMesh还提供了完整的Node.js API方便你将协作能力集成到自定义的自动化脚本或工具链中。// your-script.js import { AgentMesh } from agent-mesh; async function coordinateBuild() { const mesh new AgentMesh(); // 1. 注册一个自定义自动化脚本作为“智能体” const myScriptAgent await mesh.register(deploy-bot, deployer); // 2. 创建一个部署任务 const deployTask await mesh.createTask(部署应用到生产环境, { priority: critical, dependencies: [task-api-done, task-ui-tested] // 可以定义依赖关系 }); // 3. 广播开始部署的消息 await mesh.broadcast(生产部署开始请勿合并新代码到主分支。); // 4. 模拟部署过程... // await runDeploymentScript(); // 5. 记录部署决策例如回滚或成功 await mesh.logDecision(部署成功使用蓝绿部署策略切换流量。, { context: 旧版本v1.2.0新版本v1.3.0零停机时间。 }); // 6. 完成任务并通知 await mesh.completeTask(deployTask.id, 应用v1.3.0已成功上线。); await mesh.broadcast(生产部署已完成主分支已解锁。); } coordinateBuild();这打开了无限的自动化可能性。你可以创建监控智能体、代码质量检查智能体、自动化测试触发智能体等等让它们与你的开发助手们在一个统一的平台上协作。6. 常见问题与故障排查实录在实际使用中你可能会遇到一些问题。以下是我在深度使用AgentMesh过程中总结的一些常见情况和解决方法。6.1 问题助手没有反应不领取任务可能原因及排查步骤配置未生效这是最常见的原因。执行am register后必须重启你的AI助手应用终端会话、IDE等它才会重新加载配置文件并读取AgentMesh的指令。角色/名称不匹配你使用am route codex ...分配任务但注册时用的名字是openai-codex。确保后面的名称与注册时使用的名称一致。可以用am agent list查看所有已注册助手的名称。助手未正确读取协议检查助手自身的日志或输出看它是否在启动时打印了读取PROTOCOL.md或相关指令的提示。对于自定义助手务必确认系统提示词中包含了读取网格协议的指令。任务目录权限问题极少数情况下可能是.agent-mesh/tasks/目录的读写权限有问题。确保运行AI助手的用户对该目录有读写权限。6.2 问题消息发送了但对方助手没“看到”可能原因及排查步骤接收方助手未开启消息轮询不是所有助手都会实时监听messages/目录。大多数助手是在处理任务的间隙例如完成一个代码块后去检查新消息。可以尝试让接收方助手执行一个简单的指令如“检查网格状态”触发它去读取消息目录。消息格式错误手动检查.agent-mesh/messages/目录下最新的消息文件确保其JSON格式是有效的。可以使用jq . message-file.json来验证。使用守护进程Daemon如果对实时性要求高在发送方和接收方都支持的情况下启动am daemon并确保助手连接到了WebSocket通常MCP集成会自动处理这样可以实现近实时消息推送。6.3 问题上下文摘要太长还是超出了助手的令牌限制可能原因及排查步骤网格活动过于复杂如果同时有几十个任务和上百条消息即使压缩后的摘要也可能很长。考虑使用am context brief --tokens [你的模型限制]来获取一个强制压缩版。或者主动清理一些已完成且不再相关的旧任务和消息。自定义助手的提示词模板过载如果你为自定义助手编写了很长的系统提示词再加上网格上下文就容易超限。需要优化你的系统提示词或者使用am context brief获取更短的版本。分块提供上下文对于极其复杂的任务可以不用一次性提供全部网格上下文。而是先提供一个最高优先级的任务摘要等助手完成这部分后再通过消息或新的任务描述提供下一部分的上下文。6.4 问题文件冲突仍然发生了可能原因及排查步骤未使用am watchAgentMesh的冲突避免是“协调式”的而非“强制锁式”。如果助手A没有通过消息或任务状态声明它正在修改fileA.ts那么助手B可能不知道而去修改它。养成在修改关键文件前发送一条--type alert消息的习惯。助手行为不受控有些高度自主的助手如某些模式的Devin可能会跳过“检查网格状态”的步骤直接修改文件。对于这类助手需要在其系统指令中强化“行动前必先检查网格”的规则。Git操作引入冲突手动执行Git合并merge或拉取pull操作时可能会产生真正的代码冲突。这超出了AgentMesh的协调范围需要开发者手动解决。建议在团队协作时约定在运行Git操作前通过am msg broadcast通知所有助手暂停工作。6.5 性能与规模考量对于超大型项目数千个文件数十个活跃助手纯文件系统的轮询可能会带来一些磁盘I/O压力。虽然目前AgentMesh的JSON文件都很小但如果你观察到性能问题可以考虑以下优化调整轮询间隔对于自定义接入的助手可以将其检查网格状态的频率从“每次推理前”降低到“每完成一个子任务后”。使用守护进程am daemon模式通过事件驱动减少了不必要的磁盘扫描。分区协作将大项目拆分成相对独立的子模块每个子模块使用独立的AgentMesh网格即不同的.agent-mesh目录降低单个网格的复杂度。7. 安全与配置指南将协调信息放在项目目录中安全是必须考虑的一环。7.1 安全设计AgentMesh在设计上就考虑了本地开发环境的安全边界路径遍历防护所有文件操作都经过safePath()函数校验防止恶意路径如../../../etc/passwd逃逸出项目目录。本地主机绑定可选的守护进程WebSocket服务器默认只绑定在127.0.0.1不对外网开放。输入验证与原子写入对所有用户输入如智能体ID、任务名进行严格校验并使用“先写临时文件再重命名”的原子操作防止文件损坏。无命令注入内部使用execFileSync而非execSync来执行必要的子进程命令避免了命令注入风险。7.2 配置文件详解.agent-mesh/mesh.json是网格的主配置文件你可以根据项目需要调整。{ “version”: “0.1.0”, “project”: “my-ecommerce-app”, “settings”: { “daemon_port”: 4200, // 守护进程WebSocket端口 “heartbeat_interval”: 30000, // 智能体活跃状态上报间隔毫秒超时会被标记为“离线” “task_timeout”: 300000, // 任务被领取后若长时间无更新则自动重置为open状态毫秒 “max_messages_per_agent”: 100, // 每个智能体保留的最大消息数防止目录膨胀 “context_compression_level”: “balanced” // 上下文压缩级别minimal, balanced, detailed } }配置建议task_timeout对于需要长时间运行的任务如“重写整个身份验证系统”可以适当调大这个值比如设为8640000024小时避免任务被意外重置。max_messages_per_agent对于非常活跃的长期项目可以适当调高或者定期手动归档旧消息。7.3 将网格纳入版本控制这是一个有争议但很有用的做法。将.agent-mesh/目录加入.gitignore可以保持仓库清洁。但如果你希望记录协作历史可以选择性地提交部分内容# .gitignore .agent-mesh/* !/.agent-mesh/PROTOCOL.md !/.agent-mesh/mesh.json !/.agent-mesh/context/decisions.log.json这样协议、基本配置和重要的项目决策日志会被纳入版本控制而动态的任务、消息和临时状态则被忽略。团队新成员克隆项目后能立刻了解项目的协作规则和历史关键决策。

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