基于Continue的AI代码审查自动化:从原理到CI/CD集成实践

news2026/5/14 20:22:27
1. 项目概述与核心价值最近在琢磨怎么把AI代码审查这事儿给整得更自动化、更靠谱一点正好深度体验了一把Continue这个开源项目。简单来说Continue是一个能让你把AI智能体Agent直接集成到代码仓库和CI/CD流程里的工具。它的核心玩法是“源码控制的AI检查”听起来有点抽象但用起来你就会发现这玩意儿能把那些模糊的代码审查标准比如“代码要安全”、“风格要统一”变成可执行、可验证的自动化检查点。想象一下这个场景每次团队有Pull RequestPR提交不用再全靠人工火眼金睛去逐行Review或者依赖那些规则固定、有时过于死板的静态分析工具。Instead一个由你自定义的AI Agent会自动跑一遍像一位不知疲倦的资深同事根据你设定的自然语言规则比如“检查有没有硬编码的密钥”、“确保新增的API都有输入验证”对代码变更进行智能审查。检查通过就亮绿灯发现问题就直接在PR里给你一个具体的代码修改建议Diff点一下就能应用。这不仅仅是“又一个AI代码助手”它是把AI的能力工程化了变成了团队研发流程里一个可配置、可追踪、可强制执行的环节。我自己试下来感觉它特别适合解决那些“灰度地带”的代码质量问题。传统的Linter和Formatter管格式和简单bug很在行但对于代码意图、安全漏洞的上下文判断、架构一致性这些需要“动脑子”的判断就力不从心了。Continue用大语言模型LLM来补这个缺而且最关键的是它把AI的“建议”变成了和单元测试、集成测试一样的“检查项”失败了CI就过不了这从根本上提升了代码准入的门槛和质量把控的力度。2. 核心设计思路与架构解析2.1 “源码即配置”的设计哲学Continue最让我欣赏的一点是它的极简配置哲学。它没有复杂的YAML配置文件堆砌也没有独立的管理后台。所有的AI检查规则都直接以Markdown文件的形式存放在你代码仓库的.continue/checks/目录下。每个.md文件就代表一个独立的AI Agent。这种设计带来了几个巨大的好处版本控制与协作透明化检查规则的任何修改都像修改源代码一样需要通过PR流程有完整的Git历史记录。团队成员可以一起讨论、评审某个检查规则的合理性避免了“黑盒”配置。环境一致性规则跟着代码走。克隆仓库后检查环境就天然就绪了不需要额外同步一套复杂的CI配置。可读性极高规则是用近乎自然语言写的虽然包裹在YAML Front Matter里任何开发者无论是否熟悉Continue看一眼都能明白这个检查是干嘛的。比如一个“安全检查”Agent其内容可能就是几条简单的陈述句。这种“配置即代码”的进阶版——“AI智能体即代码”极大地降低了使用和维护的心智负担。2.2 工作流程与组件交互理解了它的设计理念我们再拆解一下它实际是怎么运转的。整个体系主要包含三个部分本地CLI工具cn、仓库中的检查定义文件、以及CI/CD集成主要是GitHub。本地开发阶段开发者安装了Continue CLI (cn) 后可以在本地运行检查。当你执行cn check针对某个改动时CLI会读取.continue/checks/下的所有Agent定义文件。将当前的代码变更Diff和Agent的指令Instructions一起发送给配置的LLM例如OpenAI GPT、Anthropic Claude等需要自行配置API Key。接收LLM的分析结果。如果LLM认为代码符合要求则检查通过如果发现问题LLM会生成一个具体的代码修改建议Git Diff格式。将结果反馈给开发者。在CI环境中这个结果会体现为GitHub的Status Check。CI/CD集成阶段这是Continue发挥威力的主战场。它通常通过GitHub Actions来集成。当有PR创建或更新时GitHub Actions会触发一个工作流这个工作流会调用cn命令来运行所有相关的检查。每个检查都会作为一个独立的Status Check出现在PR页面上。所有检查必须通过PR才能被合并这就实现了“可强制执行的AI检查”。这里有个关键点Continue本身不提供“AI大脑”它是个“调度和框架”。你需要自己配置LLM的API比如OpenAI。这虽然增加了一点设置成本但给了你极大的灵活性可以根据成本、响应速度、模型能力选择最适合的后端。2.3 与传统工具的定位差异很多朋友可能会问这跟SonarQube、CodeClimate或者传统的ESLint、RuboCop有什么区别与传统Linter/Formatter后者是基于固定规则正则、AST的擅长发现语法错误、风格不一致。Continue是基于LLM理解代码语义和意图的擅长处理规则无法定义的复杂场景例如“这段错误处理是否足够健壮”、“这个函数名是否真实反映了其功能”与SonarQube等平台SonarQube也有一定的智能检测能力但规则扩展通常需要编写特定插件的代码如Java。Continue的规则扩展成本极低写几句自然语言描述即可。而且Continue的检查结果可以直接生成修复代码交互性更强。与GitHub CopilotCopilot是“生成式”的辅助你写新代码。Continue是“审查式”的辅助你判断已有代码特别是他人提交的代码的质量。它们俩是完美的互补关系。简单总结Continue的定位是“基于LLM的、可编程的、轻量级代码审查自动化层”它填补了固定规则工具与完全人工审查之间的空白。3. 从零开始上手与核心配置3.1 CLI工具的安装与初始化上手第一步就是把Continue的命令行工具cn装到本地。官方提供了几种方式最通用的是通过npm安装需要Node.js 20npm i -g continuedev/cli安装完成后直接在终端输入cn它会启动一个交互式配置向导。这个向导会引导你完成几件关键事情选择LLM提供商目前主流支持OpenAI、Anthropic、Groq用于本地模型如Llama等。你需要准备好对应平台的API Key。配置API密钥向导会安全地提示你输入API Key它会将其存储在本地的配置文件中通常是~/.continue/config.json不会上传到任何地方。选择默认模型比如gpt-4-turbo-preview、claude-3-sonnet等。模型的选择直接影响检查的效果和成本后面我们会详细讨论。关联Git仓库可选向导可以帮你快速在本地仓库中创建.continue目录结构。完成初始化后你的~/.continue/config.json文件大概长这样{ models: [ { title: GPT-4, provider: openai, model: gpt-4-turbo-preview, apiKey: sk-...你的密钥 } ], defaultModel: GPT-4 }注意API Key是高度敏感信息。确保你的config.json文件权限设置正确如600并且绝对不要将其提交到Git仓库中。在CI环境中如GitHub Actions应使用 Secrets 来注入API Key。3.2 创建你的第一个AI检查Agent配置好LLM后就可以在项目里创建检查了。在你的项目根目录下创建.continue/checks/文件夹。然后在这个文件夹里新建一个Markdown文件例如security_review.md。一个最基础的检查文件结构如下--- name: Security Review description: 对PR进行基础安全检查防止常见漏洞。 model: GPT-4 # 可选指定使用哪个已配置的模型 --- 请审查本次代码变更确保 - 没有硬编码的密码、API密钥、令牌等秘密信息。 - 所有新创建的对外API接口如REST端点都包含了输入验证例如检查参数类型、范围、长度。 - 新增的数据库查询语句不存在明显的SQL注入风险如使用了参数化查询或ORM的安全方法。 - 错误响应没有泄露内部堆栈信息或敏感系统细节。文件顶部的---之间是YAML格式的Front Matter用于定义检查的元数据。---之后的部分就是给AI Agent的指令Prompt。指令写得越清晰、越具体AI的审查效果就越好。写好之后你可以在本地测试这个检查。在项目目录下运行cn check --staged # 检查已暂存git add的更改 # 或 cn check HEAD~3..HEAD # 检查最近3个提交的更改CLI会调用你配置的LLM运行.continue/checks/下的所有Agent并输出结果。如果AI发现了问题它会展示一个diff询问你是否要应用这个修复。3.3 集成到GitHub Actions实现自动化本地测试没问题后就该让它自动化了。在项目的.github/workflows/目录下创建一个新的YAML文件比如continue-checks.yml。name: Continue AI Checks on: [pull_request] jobs: continue-checks: runs-on: ubuntu-latest permissions: contents: read pull-requests: write # 需要此权限以发布Status Check和评论 steps: - name: Checkout code uses: actions/checkoutv4 with: fetch-depth: 0 # 获取完整历史有助于AI理解上下文 - name: Setup Node.js uses: actions/setup-nodev4 with: node-version: 20 - name: Install Continue CLI run: npm install -g continuedev/cli - name: Run Continue Checks env: OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} # 将你的API Key配置到GitHub仓库的Secrets中 run: | cn check origin/${{ github.base_ref }}..${{ github.sha }} --github-token ${{ secrets.GITHUB_TOKEN }}这个工作流会在每个PR上触发。关键步骤是最后一步的cn check命令origin/${{ github.base_ref }}..${{ github.sha }}指定了要检查的代码范围即PR的目标分支与当前提交之间的差异。--github-token参数让CLI有权限将检查结果以Status Check的形式回传到PR页面。配置完成后提交并推送这个工作流文件。当下次有新的PR时GitHub Actions就会自动运行你会在PR的Checks区域看到名为“Security Review”等检查项绿色对勾表示通过红色叉号则表示发现问题点开可以看到AI给出的具体修改建议。4. 编写高效AI检查指令的实战技巧指令Prompt的质量直接决定了AI检查的准确性和实用性。经过一段时间的摸索我总结出一些编写高效指令的套路和避坑指南。4.1 指令结构优化角色、上下文、任务、输出一个结构清晰的指令能极大提升LLM的表现。可以遵循以下框架--- name: Code Style Clarity Review description: 确保代码符合团队约定清晰易懂。 --- # 角色设定 你是一位经验丰富、严谨的软件工程师负责审查代码风格和清晰度。 # 审查上下文 本次审查针对一个 [这里可以简要说明项目类型如Python Web后端] 项目。我们遵循 [PEP 8 / Google Java Style等] 代码规范。特别关注代码的可读性和可维护性。 # 具体审查任务 请仔细审查代码变更并着重检查以下方面 1. **命名** - 变量、函数、类名是否清晰描述了其目的 - 是否避免了模糊的缩写如 tmp, data - 布尔变量/函数是否以 is_, has_, can_ 等开头 2. **函数设计** - 单个函数是否过于冗长建议不超过30行或职责过多 - 函数参数是否过多建议不超过5个考虑是否可用对象封装。 - 函数是否有明显的副作用如果有是否在命名或注释中明确 3. **注释与文档** - 复杂的业务逻辑或算法是否有清晰的注释解释“为什么”这么做 - 公共API函数、类是否有准确的文档字符串docstring - 是否存在注释掉的废代码如有建议删除。 4. **复杂度** - 是否存在过深的嵌套if/for嵌套超过3层建议提取为辅助函数。 - 循环体内的逻辑是否过于复杂考虑能否简化或提取。 # 输出格式要求 - 如果代码完全符合要求请输出“**CHECK_PASSED**”且不附加任何其他内容。 - 如果发现问题请以列表形式指出**并为每个问题提供一个具体的代码修改建议Unified Diff格式**。Diff应基于原代码变更并确保是可直接应用的。 - 请避免使用“可能”、“也许”等模糊词汇直接给出肯定或否定的判断。这个框架明确了AI的角色给了它项目背景列出了具体的、可操作的检查清单并严格规定了输出格式。特别是要求输出“CHECK_PASSED”和具体的Diff这能让CI流程稳定地解析结果。4.2 针对不同场景的指令范例场景一新依赖引入审查--- name: Dependency Review description: 审查新引入的第三方库评估其安全性、许可和维护性。 --- 审查本次PR中 package.json、requirements.txt 或类似依赖管理文件的变更。 对于每一个**新增**的依赖库请评估 1. **许可证**是否为宽松的开源许可证如MIT, Apache 2.0是否与项目现有许可证兼容警惕GPL、AGPL等传染性许可证。 2. **安全性与活跃度**检查库的GitHub stars数量、最近提交时间是否6个月内无更新、issue和PR的活跃度。警惕维护停滞的库。 3. **体积与影响**这个库是否过于庞大是否引入了不必要的间接依赖 4. **功能必要性**新增的功能是否真的需要引入一个新库是否有更轻量级的替代方案或者现有库已具备此功能 如果发现任何潜在风险的依赖请在输出中明确指出并说明理由。对于高风险依赖建议拒绝引入。场景二数据库迁移脚本审查--- name: Database Migration Review description: 审查数据库Schema变更确保其安全、可逆且高效。 --- 你是一位数据库管理员。请审查本次PR中所有的数据库迁移脚本如 *.sql 或ORM迁移文件。 请检查 1. **破坏性变更**是否有DROP TABLE/COLUMN操作如果有请确认 - 是否已有数据备份或下线方案 - 是否在非高峰时段执行 - 变更是否真的必要 2. **数据安全** - 是否在迁移中明文存储了敏感信息 - 新增的列是否有适当的默认值以避免现有数据出现NULL 3. **性能** - 新增的索引是否必要是否在频繁查询的列上 - 对大数据表执行的ALTER TABLE操作是否考虑了锁表时间建议使用在线DDL工具如pt-online-schema-change for MySQL的策略。 4. **可逆性**是否提供了对应的down迁移回滚脚本回滚脚本是否经过测试 5. **一致性**迁移脚本的命名、注释格式是否符合团队约定 对于发现的问题提供具体的修改建议或行动项。4.3 避坑指南与经验心得指令要具体避免模糊不要说“代码要高效”要说“检查是否有时间复杂度超过O(n^2)的嵌套循环在遍历大数据集”。LLM对模糊指令的理解容易产生偏差。利用“少样本学习”如果有一些特别典型的“好代码”或“坏代码”例子可以直接放在指令里。例如“好的错误处理应该像这样try {...} catch (SpecificException e) { log.error(“Context info”, e); throw new BusinessException(“User-friendly message”, e); }请检查本次变更中的错误处理是否符合此模式。”控制审查范围对于大型PR一次性让AI审查所有文件可能效果不佳也昂贵。可以在指令开头限定范围如“请只审查src/services/目录下的Python文件变更”。成本与速度权衡gpt-4效果最好但贵且慢gpt-3.5-turbo快且便宜但深度稍欠。可以根据检查的严格程度混合使用。在model字段指定即可。对于风格检查等简单任务3.5足够对于安全、架构审查建议用4。处理“误报”与“漏报”AI不是神会有误判。如果某个检查规则频繁误报你需要优化指令增加更多限制条件或反面例子。如果漏报则需强化指令的措辞和检查项。这是一个迭代调优的过程。5. 高级用法与集成实践5.1 多模型策略与路由在.continue/config.json中你可以配置多个模型。然后在不同的检查Agent里通过model字段指定使用哪一个。这让你可以实现精细化的成本与效果控制。{ models: [ { title: GPT-4-Deep, provider: openai, model: gpt-4-turbo-preview, apiKey: ... }, { title: Claude-Fast, provider: anthropic, model: claude-3-haiku, apiKey: ... }, { title: Local-Llama, provider: groq, // 使用Groq等高速API调用本地模型 model: llama3-70b-8192, apiKey: ... } ] }在检查文件中--- name: Critical Security Review description: 深度安全审查使用最强模型。 model: GPT-4-Deep # 使用GPT-4进行深度分析 --- ...--- name: Quick Syntax Glance description: 快速语法和格式检查。 model: Claude-Fast # 使用快速且便宜的模型 --- ...5.2 基于上下文的动态检查有时检查规则需要根据被改动的文件类型或路径动态调整。Continue的指令本身是静态的但我们可以通过一些“巧思”来实现动态性。例如创建一个“智能路由”检查它本身不执行具体审查而是根据文件变更输出接下来应该运行哪些其他检查。或者更简单的办法是创建多个检查然后在GitHub Actions工作流中使用paths过滤器来条件触发。# .github/workflows/continue-checks.yml jobs: continue-checks: ... steps: ... - name: Run Backend Checks if: contains(github.event.pull_request.head.ref, backend) || contains(join(github.event.pull_request.files.*.filename), .py) || contains(join(github.event.pull_request.files.*.filename), .java) run: | cn check ... --only-check backend-security-review.md,backend-style-review.md - name: Run Frontend Checks if: contains(github.event.pull_request.head.ref, frontend) || contains(join(github.event.pull_request.files.*.filename), .tsx) || contains(join(github.event.pull_request.files.*.filename), .vue) run: | cn check ... --only-check frontend-bundle-review.md,frontend-accessibility-review.md5.3 与现有CI流水线结合Continue不是用来替代现有CI的而是增强它。一个健壮的CI流水线应该是这样的静态检查Linter (ESLint, Pylint), Formatter (Prettier, Black), 静态安全扫描 (Semgrep, Bandit)。AI智能检查Continue 运行处理语义和意图层面的问题。构建与测试编译、单元测试、集成测试。动态检查/部署E2E测试、性能测试、安全动态扫描等。在GitHub Actions中你可以把这些步骤放在同一个Job的不同Step里或者拆分成多个Job利用needs关键字控制执行顺序。确保AI检查在构建和测试之前可以尽早发现设计层面的问题节省后续环节的时间。6. 常见问题排查与效能优化在实际使用中你肯定会遇到各种问题。下面是我踩过的一些坑和解决方案。6.1 检查结果不稳定或不符合预期症状同一个检查有时通过有时不通过AI给出的建议飘忽不定。排查检查指令清晰度这是最常见的原因。回顾你的指令是否足够具体、无歧义尝试加入更多约束条件和例子。调整“温度”Temperature在config.json的模型配置中可以添加temperature: 0.1。温度值越低接近0LLM的输出越确定、可重复越高接近1则越有创造性。对于审查任务建议设置为0.1-0.3。审查上下文是否充足AI可能因为看不到足够的代码上下文而误判。确保在CI中配置了fetch-depth: 0并且检查指令没有过度限制文件范围。对于理解一个函数有时需要看到它所在的整个类或模块。模型能力如果使用gpt-3.5-turbo处理复杂逻辑不稳定是常态。升级到gpt-4系列模型会有质的提升。6.2 CI环境中运行超时或失败症状GitHub Actions Job因为超时默认6小时或网络问题失败。排查拆分大型PR这是根本解决办法。如果一个PR改动文件上百个AI审查耗时极长成本也高。督促团队保持PR小型化、原子化。设置超时和重试在GitHub Actions Job中设置timeout-minutes并为cn check命令设置更短的超时如果CLI支持。对于偶发的网络错误可以添加重试逻辑。使用更快的模型/提供商claude-3-haiku或通过Groq提供的llama3模型通常响应速度远快于GPT-4。对于非关键检查可以换用它们。检查API配额和限流确保你的OpenAI/Anthropic账户有足够的配额并且没有触发速率限制。在CI中大量调用时容易触发。6.3 成本控制AI检查虽好但API调用是实打实的开销。策略一分层检查如前所述用便宜快速的模型做初步筛选如语法、简单风格只有这些检查通过后再用昂贵模型做深度审查安全、架构。可以在GitHub Actions中通过Job的needs条件来实现。策略二缓存与差分检查Continue目前没有内置缓存但你可以自己实现思路。例如只对PR中新增的、修改的行运行AI检查或者对未通过检查的代码块在下次PR中如果未修改则跳过。这需要一些自定义脚本复杂度较高。策略三设置预算告警在OpenAI等平台后台设置每月预算和告警防止意外超额。最有效的策略精准触发只在对关键目录如src/,lib/或特定类型文件如*.py,*.ts的修改时才触发AI检查。利用GitHub Actions的paths过滤器能省下大量无效开销。6.4 处理“Diff应用冲突”症状AI给出了一个修复Diff但当你尝试应用时Git报告冲突。原因与解决这通常是因为在AI生成Diff到你应用Diff的这段时间内代码库又发生了变化尤其是在团队协作中。Continue生成的Diff是基于它审查时的代码版本的。手动处理将AI的Diff建议视为“修改意见”手动将它的逻辑合并到最新的代码中。重新运行检查在应用AI建议前先拉取最新的目标分支代码然后重新运行Continue检查。这样AI会基于最新代码给出新的建议冲突概率大大降低。可以在团队中约定在准备合并前才运行或应用AI检查。经过一段时间的实践Continue已经成了我们团队代码质量门禁中不可或缺的一环。它并没有消除人工Code Review而是把我们从繁琐的、模式化的检查中解放出来让我们能更专注于算法逻辑、架构设计和业务实现的讨论。刚开始配置和调试指令会花些时间但一旦这套规则稳定下来它带来的效率提升和风险降低是非常可观的。如果你也在寻找提升代码审查效率和一致性的方法强烈建议你花一个下午试试Continue从一两个简单的检查开始你会很快感受到它的威力。

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