构建AI智能体行为分析平台:无服务器架构与协同检测算法实战

news2026/5/7 6:35:00
1. 项目概述一个为AI智能体经济而生的行为智能平台最近在捣鼓一个挺有意思的项目叫Clawstrate。简单来说它就像是一个为AI智能体世界打造的“行为情报中心”。想象一下未来可能是一个由无数个自主运行的AI智能体AI Agents构成的经济生态它们在不同的去中心化平台、论坛甚至区块链上活动、交易、协作。这时候一个核心问题就出现了你怎么知道哪些智能体是真正有影响力的它们在干什么它们之间有没有在“搞小动作”或者形成某种协作网络Clawstrate就是为了回答这些问题而生的。这个平台的核心工作流非常清晰它从多个源头比如论坛、市场API、区块链上的智能体注册表抓取AI智能体的原始活动数据然后通过大语言模型LLM对这些行为进行深度分析和分类再运用图分析算法计算每个智能体的行为影响力分数并检测它们之间潜在的协同模式。最后它会自动生成一份份执行简报把所有关键洞察提炼出来。整个系统以无服务器Serverless管道的方式运行在Vercel上每6小时更新一次确保你看到的总是最新的动态。我自己在构建这个系统的过程中深刻体会到监控和分析AI智能体的行为和传统的人类用户行为分析完全是两码事。AI智能体的行为模式更复杂、更隐蔽协作信号可能隐藏在文本相似性、时间同步性甚至是回复网络的结构里。Clawstrate的设计就是试图把这些散落在各处的“数字足迹”串联起来形成一幅可理解、可行动的智能体生态图谱。2. 核心架构与设计哲学2.1 整体架构一个模块化的无服务器数据管道Clawstrate的架构可以看作一个精心设计的、基于事件驱动的数据处理流水线。它的设计遵循了几个核心原则模块化、容错性、成本可控和实时性。整个流程从数据源开始经过多个处理阶段最终流向一个交互式的仪表盘。数据源 - 数据摄取 - 数据丰富 - 数据分析 - 数据聚合 - 协同检测 - 简报生成 - 仪表盘/API这个流水线是“无服务器”的意味着每个处理阶段我们称之为“阶段”或“Stage”都是一个独立的、可以按需伸缩的函数。这样做的好处是你不需要维护一个24小时运行的服务器只需要为实际消耗的计算资源付费。这对于处理这种间歇性、但计算量可能突然增大的数据流来说非常经济。为什么选择无服务器架构在项目初期我评估过自建Kubernetes集群或使用传统的常驻服务器。但对于一个监控类项目数据流入是周期性的比如每6小时抓取一次计算负载是脉冲式的抓取后需要集中处理。无服务器架构完美匹配了这种“闲时零成本忙时弹性扩容”的需求。Vercel的函数超时限制是300秒这反过来促使我把每个处理阶段都设计得足够轻量和高效确保能在时限内完成。这是一种“约束驱动设计”迫使你写出更健壮、更可预测的代码。2.2 关键组件深度解析数据源适配层这是系统的“眼睛”。Clawstrate目前接入了三类数据源论坛与平台API如Moltbook、RentAHuman。这些是AI智能体公开活动的主要场所通过它们的官方API我们可以获取发帖、回复、点赞等交互数据。区块链注册表这是最具特色的部分。我们直接读取以太坊等区块链上符合ERC-4337账户抽象和ERC-8004智能体注册标准的合约。这意味着我们能发现那些完全在链上注册、身份和交互记录不可篡改的AI智能体。使用Viem这个优秀的以太坊库我们可以以类型安全的方式与这些合约交互。内部数据流未来可以扩展接入消息队列、Webhook等实时数据源。数据处理管道这是系统的“大脑和消化系统”。它由一系列顺序或可并行执行的阶段构成摄取Ingest从各个数据源拉取原始数据并进行初步清洗和标准化统一成内部数据模型。丰富Enrich这是LLM大显身手的地方。我们使用Claude Haiku模型因为它速度快、成本低对每一条智能体行为如一篇帖子进行分析提取情感倾向积极/消极/中立、原创性指数是独特观点还是简单重复、独立性信号是否在引用或呼应其他智能体以及初步的协同线索例如是否在号召其他智能体采取一致行动。分析Analyze基于“丰富”阶段产生的数据构建一个以智能体为节点、以交互回复、提及、共同参与话题为边的时序图。然后在这个图上运行改进版的PageRank算法来计算每个智能体的影响力分数。这里的“改进”在于边的权重不是均等的它会乘上“质量因子”——来自丰富阶段的情感、原创性等分数。这样一个频繁发布高质量、原创内容的智能体其出链影响他人的权重就更高。聚合Aggregate与协同检测Coordination这两个阶段是联动的。“聚合”阶段会按天统计话题热度、智能体共现频率等。“协同检测”则是一个更复杂的模式识别过程它从三个维度寻找可疑的协同行为时间聚类超过3个智能体在2小时内密集讨论同一话题。内容相似性使用Jaccard距离计算不同智能体发布内容的主题向量相似度过高则可能是有组织的宣传。结构聚类回复小圈子分析回复网络如果发现一个小群体内部互动比例超过80%而与外部互动很少这可能是一个封闭的协作团体。简报生成Briefing最后使用能力更强的Claude Sonnet模型将前面所有阶段产生的洞察——高分智能体、热门话题、新发现的协同网络——整合成一份结构化的、带引用和数据的自然语言简报。这个过程每6小时自动执行一次。状态管理与容错机制这是管道稳定运行的“神经系统”。我们采用了基于游标Cursor的水位线设计。每个处理阶段完成后都会在数据库里记录一个时间戳或最后处理ID作为“游标”。下次运行时只会处理这个游标之后的新数据。这保证了整个管道的幂等性——无论因为网络问题或部署需要重新运行多少次都不会产生重复数据或丢失数据。同时我们使用Redis分布式锁SET NX EX命令来确保同一时间只有一个服务器函数实例在执行某个关键阶段防止并发冲突。3. 技术栈选型与实战心得3.1 前端与全栈框架Next.js 14 App Router我们选择了Next.js 14并全面采用App Router模式。对于这样一个数据密集、兼具实时仪表盘和复杂后台任务的项目Next.js提供了绝佳的全栈解决方案。为什么是App RouterApp Router的服务器组件Server Components让我们能在服务端直接查询数据库并渲染初始HTML大大提升了仪表盘页面的加载速度。对于不常变的数据如智能体档案这几乎是即时的。而需要交互的部分如图表、搜索则用客户端组件处理。API路由的便利性所有的数据处理管道阶段都被实现为app/api/cron/下的API路由。Vercel可以很方便地将其设置为定时触发的Cron Job管理起来比独立的服务器或复杂的任务队列要简单得多。实操心得在Server Component中直接使用async/await获取数据非常直观。但要注意如果查询复杂可能会阻塞页面渲染。我们的策略是对核心数据用Server Component快速渲染对附属数据或用户交互触发的数据用React的useEffect或TanStack Query在客户端获取。使用react-wrap-balancer这样的库来处理仪表盘中标题文字的换行能让UI看起来更专业。对于需要频繁更新的数据视图如实时网络图我们采用了Server-Sent Events (SSE)或WebSocket通过单独的服务器函数实现进行推送但这部分超出了基础管道的范畴。3.2 数据库与ORMPostgreSQL (Neon) Drizzle数据存储是核心。我们选择了PostgreSQL因为它对JSON数据的良好支持、强大的聚合查询能力以及事务可靠性。为了匹配无服务器架构我们使用了Neon这是一个真正的Serverless PostgreSQL服务它按计算和存储用量计费并且支持分支等强大功能。ORM选型Drizzle我们没有选择更流行的Prisma而是用了Drizzle ORM。原因有三1)类型安全极致Drizzle的查询构建器能推导出极其精确的TypeScript类型。2)性能Drizzle生成的SQL更接近手写没有Prisma有时会产生的冗余查询。3)轻量级对于复杂的数据聚合操作我们有时需要直接写原生SQLDrizzle对此的支持更友好sql模板字面量。数据模型设计我们设计了超过30张表核心包括agents智能体、actions行为记录、topics话题、interactions交互边、pipeline_cursors流水线游标等。其中interactions表存储了用于PageRank计算的图边数据包含源智能体、目标智能体、交互类型、权重和质量分数。踩坑记录连接池管理在Serverless环境中每次函数调用都可能新建数据库连接。必须使用连接池Neon自带或通过pg库配置并设置合理的超时和最大连接数否则极易耗尽数据库连接。索引优化对于actions按时间、智能体ID查询、interactions按源/目标智能体查询这类海量表必须在相关字段上建立索引。我们使用了Drizzle的迁移工具来管理索引的创建和变更。3.3 AI集成Anthropic Claude APILLM是系统的“智能核心”。我们根据任务特点选择了Anthropic的Claude模型家族。任务分配Claude Haiku (enrichment)用于行为数据的实时分类和打标。Haiku速度极快、成本最低适合处理海量的、相对简单的文本分析任务。我们设计了一套清晰的提示词Prompt引导模型输出结构化的JSON包含情感、原创性等分数。Claude Sonnet (briefing)用于生成最终的叙事性简报。Sonnet在理解复杂上下文、进行归纳总结和创造性写作方面更强。我们提供给Sonnet一个包含智能体分数、话题趋势、协同警报的结构化数据摘要让它生成一份给人类管理者看的、带重点标记的简报。成本与性能优化批量处理在enrich阶段我们不会一条一条调用API而是将30条行为数据打包成一个批次发送显著减少了API调用开销和延迟。缓存对于频繁出现的、相似的话题名称或智能体描述我们会将LLM的解析结果缓存在Redis中一段时间避免重复计算。提示词工程这是保证输出质量稳定的关键。我们为每类任务都编写了详细的系统提示词System Prompt明确角色、输出格式和评分标准并进行了大量的测试和迭代。例如在判断“协同信号”时我们会让模型寻找“呼吁行动”、“使用相同标签”、“重复特定口号”等具体模式而不是一个模糊的感觉。3.4 任务调度与分布式锁QStash Upstash Redis如何可靠地驱动这个每6小时运行一次的复杂管道我们选择了QStash作为任务调度器Upstash Redis实现分布式锁。QStash它是Upstash提供的无服务器消息队列和调度服务。你可以通过一个简单的HTTP调用或Cron表达式来触发一个API端点即我们的管道阶段。它的优势是完全无服务器、高可靠并且内置重试机制。我们将每个管道阶段都暴露为一个API端点然后用QStash设置定时任务链先触发ingest成功后再触发enrich依此类推。分布式锁的实现这是防止管道阶段并发执行导致数据混乱的关键。我们使用Redis的SET key value NX EX seconds命令实现了一个简单的锁。// 伪代码示例获取锁 const lockKey pipeline:lock:${stageName}; const lockValue ${Date.now()}:${randomId}; // 唯一标识 const acquired await redis.set(lockKey, lockValue, NX, EX, 30); // 锁30秒 if (acquired) { try { // 执行阶段任务... } finally { // 释放锁只有锁的持有者才能删除防止误删 const currentVal await redis.get(lockKey); if (currentVal lockValue) { await redis.del(lockKey); } } } else { console.log(Stage ${stageName} is already running, skipping.); }实操心得锁的粒度我们为每个独立的管道阶段ingest,enrich,analyze等设置了不同的锁。这样ingest和enrich理论上可以并行如果设计允许但同一个enrich不能同时运行两个实例。锁的超时时间TTL必须设置一个合理的、略大于阶段平均执行时间的超时时间。太短可能导致任务未完成锁就释放引发并发太长则可能导致阶段失败后锁迟迟不释放阻塞后续执行。我们根据Vercel函数的300秒超时限制通常设置为200-250秒并为每个阶段增加了“看门狗”机制在任务完成时主动续期锁。4. 核心算法与数据处理实战4.1 基于质量权重的PageRank影响力计算传统的PageRank算法假设所有出链链接是平等的。但在AI智能体的交互中一个高质量内容产生的引用其权重应该远高于一个简单回复。因此我们实现了带质量权重的PageRank。计算过程简述构建图节点是智能体边是智能体A对智能体B的交互如回复、提及。每条边有一个初始权重W_initial例如回复1提及2。应用质量乘数从enrich阶段获取该交互所在原内容的“质量分”Q一个0到1的值综合了原创性、情感积极性等。边的最终权重W_final W_initial * (0.7 0.3 * Q)。这里0.7是基础权重保证即使质量分低也有一定影响0.3是质量调整幅度。运行迭代计算我们使用标准的幂迭代法计算PageRank。每个节点的分数会在其出链节点间按边的权重比例进行分配。公式简化如下PR(A) (1-d) d * Σ (PR(Tn) * W(Tn-A) / ΣW(Tn-Out))其中d是阻尼系数通常0.85Tn是所有链接到A的节点W(Tn-A)是边权重ΣW(Tn-Out)是Tn所有出链权重之和。归一化计算出的原始PageRank值范围不确定。我们将其除以当前网络中所有节点中的最大值将所有分数归一化到[0, 1]区间便于理解和比较。注意事项这个计算是周期性的每天一次因为构建全图的计算量较大。我们将其放在analyze阶段作为批处理任务。对于新加入的智能体其初始PageRank分数会有一个“冷启动”过程通常需要几个周期才能稳定。在UI中我们会给新智能体打上“新晋”标签并说明其分数可能尚未充分反映影响力。4.2 语义话题去重与合并引擎AI智能体讨论的话题名称千奇百怪“AI Governance”、“Governance of AI”、“人工智能治理”可能指的是同一件事。简单的字符串匹配会失效。我们构建了一个多层次的语义去重引擎。处理流程标准化将所有话题名称转为小写去除标点进行词干化stemming或词形还原lemmatization。关键令牌提取移除“the”“and”“for”等停用词剩下的单词作为关键令牌。例如“The Future of AI in Healthcare” - [“future”, “ai”, “healthcare”]。生成哈希签名对令牌集合进行排序保证顺序无关然后生成一个哈希值如MD5。拥有相同令牌集合的话题会得到相同的哈希初步归为一组。LLM辅助合并决策对于哈希相同或高度相似通过Jaccard相似度判断的话题候选组我们将它们打包发送给Claude Haiku模型。提示词是“以下是可能指代同一概念的话题列表请判断它们是否应合并并推荐一个最合适的合并后名称同时给出合并置信度0-1。”输入[“AI Safety Research”, “Research on AI Safety”, “Safety in AI studies”]期望输出{“shouldMerge”: true, “canonicalName”: “AI Safety Research”, “confidence”: 0.95}执行合并对于高置信度如0.8的合并建议系统会自动在数据库中将所有相关action记录的话题ID更新为规范话题的ID。低置信度的建议会进入一个审核队列供人工最终确认。这个设计的精妙之处在于它结合了高效的算法哈希和模糊的智能判断LLM既保证了处理海量话题时的性能又具备了理解语义细微差别的能力。4.3 三层协同行为检测模型检测AI智能体间的可疑协同是平台的核心价值之一。我们建立了三道检测防线第一层时间聚类分析方法扫描特定时间窗口如24小时内所有围绕同一话题经过上述去重后的行为。如果发现超过N个如3个不同的智能体在非常短的时间间隔如2小时内集中发布了相关内容则触发一个“时间协同”警报。原理自然、有机的讨论通常有时间上的分散性。高度同步的行为可能暗示有组织的发布计划。实现细节我们使用滑动窗口算法按话题分组行为计算每组行为时间的标准差。标准差极小且参与智能体数超过阈值则标记。第二层内容相似性分析方法对于同一时间段内、不同智能体发布的内容我们提取其关键词向量TF-IDF或简单的词袋模型然后计算两两之间的Jaccard相似系数。J(A,B) |A ∩ B| / |A ∪ B|如果一组智能体3两两之间的平均Jaccard相似度超过一个阈值如0.6则触发“内容协同”警报。原理即使讨论不同子话题如果用词、句式结构高度雷同也可能存在模板化或协同创作的痕迹。优化为了提高性能我们只对在时间聚类中已被标记的智能体组进行全量的内容相似性计算。第三层结构聚类回复小圈子分析方法在特定话题的讨论线程中构建一个以智能体为节点的回复关系有向图。使用社区发现算法如Louvain算法或简单的聚类分析寻找内部连接紧密、外部连接稀疏的子图。指标计算潜在小圈子的内部互动比例。内部边数 / (内部边数 指向外部的边数)。如果这个比例超过一个很高的阈值如80%并且圈子成员数大于2则触发“结构协同”警报。原理一个健康的讨论社区应该有广泛的交叉对话。如果一个小组只内部互相回复、点赞几乎不与其他参与者交流这可能是一个封闭的、有特定议程的团体。警报聚合一个协同事件可能同时触发多层警报。最终在前端我们会展示一个综合的“协同风险评分”并详细列出触发了哪几层检测规则以及相关的证据链时间线、相似内容片段、回复网络图。5. 部署、监控与运维实战5.1 Vercel无服务器部署配置将这样一个包含前端、API和定时后台任务的Next.js应用部署到Vercel需要一些特定的配置。vercel.json配置要点{ “functions”: { “app/api/cron/*”: { “memory”: 3008, // 为消耗资源的分析任务分配更多内存 “maxDuration”: 300 // Vercel最大超时时间秒 }, “app/api/v1/*”: { “memory”: 1024, “maxDuration”: 30 // API响应应该更快 } }, “crons”: [ { “path”: “/api/cron/orchestrate”, // 总调度入口 “schedule”: “0 */6 * * *” // 每6小时运行一次UTC时间 } ] }环境变量管理所有敏感信息API密钥、数据库连接字符串都必须通过Vercel项目的环境变量界面设置。在本地开发时我们使用.env.local文件。切记不要将任何密钥提交到版本控制系统。实操踩坑冷启动延迟Serverless函数在闲置一段时间后首次调用会有“冷启动”延迟几百毫秒到几秒。对于定时任务这不是问题但对于用户请求的API我们通过设置Vercel的“Serverless Function Prewarming”功能如果有或保持一定的最低并发实例来缓解。输出大小限制Vercel函数响应体有大小限制约4.5MB。在analyze阶段生成大型图数据JSON时我们曾触发此限制。解决方案是进行分页输出或只传输计算后的摘要数据原始数据让前端按需查询。5.2 管道可观测性与错误处理一个自动化管道最怕的就是在后台默默失败。我们建立了多层监控。结构化日志每个管道阶段都使用像pino或winston这样的日志库以JSON格式输出结构化日志包含stage、runId、status、processedCount、error等字段。这些日志被自动发送到Vercel的日志流并可以转发到像Logtail或Datadog这样的外部监控服务。数据库状态表核心的pipeline_runs表记录了每次管道执行的元数据开始时间、结束时间、状态成功、失败、进行中、每个阶段的输入/输出计数、错误信息如果有。仪表盘上有一个“系统健康”页面直接展示这张表的最新记录。错误警报我们集成了Cronitor或Updown.io这样的外部监控服务。每个关键阶段orchestrate,briefing的API端点都被添加为一个监控器。如果端点返回非2xx状态码或者执行时间异常长监控服务会立即通过邮件、Slack或短信告警。优雅降级与重试如果某个数据源API暂时不可用ingest阶段会记录错误但跳过该源继续处理其他源而不是让整个管道失败。对于LLM API调用失败网络超时、速率限制我们实现了指数退避重试机制。QStash本身也支持失败重试我们可以配置重试次数和间隔。5.3 性能优化与成本控制在无服务器架构下性能和成本紧密相关。性能优化策略数据库查询优化这是最大的瓶颈。我们为所有常用的查询字段如agent_id,created_at,topic_id建立了索引。对于复杂的聚合查询如计算过去7天的互动图我们考虑使用物化视图Materialized View定期刷新或者将计算结果缓存在Redis中。计算任务分片analyze阶段的PageRank计算如果针对整个网络进行可能超时。我们的策略是只对过去7天内有活动的“活跃子图”进行计算大大减少了节点和边的数量。流式处理与批处理结合对于enrich阶段我们使用LLM的批处理API一次发送30-50条文本而不是逐条调用减少了网络往返开销。成本控制措施LLM API成本这是主要成本。我们严格选择模型快而便宜的Haiku用于大量分类任务强而较贵的Sonnet仅用于最终的简报生成。同时通过缓存Redis和去重避免对相同或极度相似的内容重复调用。数据库操作成本Neon按计算单元CU计费。我们优化查询避免SELECT *使用分页LIMIT/OFFSET或游标分页并设置合理的连接池大小防止空闲连接浪费。函数执行成本Vercel Pro计划有足够的免费额度覆盖中小规模使用。我们监控函数的执行时间和内存使用确保没有意外的内存泄漏或无限循环导致费用激增。监控成本本身我们甚至用Clawstrate监控自己的管道执行成本和性能形成了一个有趣的“自指”循环。构建Clawstrate的过程是一个将前沿的AI能力、分布式系统思想和务实的前后端工程紧密结合的旅程。它不仅仅是一个监控工具更是一种理解未来人机混合、智能体驱动的复杂社会经济系统的尝试。每一个技术选型和架构决策背后都是对可靠性、可扩展性和成本的反复权衡。希望这份详尽的拆解能为那些同样在探索AI智能体生态、或正在构建复杂数据管道的开发者们提供一些切实可行的参考和启发。

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