自主编码框架解析:从AI编程助手到闭环开发系统

news2026/4/29 20:31:39
1. 项目概述一个面向自主编码的智能开发框架最近在开源社区里一个名为GantisStorm/autonomous-coding-harness的项目引起了我的注意。乍一看这个标题它像是一个工具集或框架核心关键词是“自主编码”。对于开发者而言这听起来像是一个能够辅助甚至驱动代码生成、测试、部署等开发流程自动化的系统。简单来说它可能是一个旨在将人工智能特别是大型语言模型深度集成到软件开发工作流中的“智能副驾”或“自动化引擎”。这个项目名本身就很有深意。“Harness”在英文里有“驾驭”、“利用”的意思暗示着它不是一个简单的代码生成器而是一个更全面的、用于“驾驭”自主编码能力的“缰绳”或“工具套件”。它要解决的正是当前AI辅助编程中普遍存在的痛点生成的代码片段如何融入现有项目如何保证代码质量如何自动化执行测试和集成它瞄准的是希望提升开发效率、探索AI编程边界、或构建下一代智能开发工具的个人开发者、技术团队乃至企业研发部门。在深入研究了其架构和设计后我发现autonomous-coding-harness的野心不小。它试图构建一个闭环的自主编码系统不仅负责生成代码还涵盖了从任务解析、代码执行、错误诊断到迭代优化的全过程。接下来我将拆解这个框架的核心设计、实现细节并分享在尝试构建类似系统或使用此类工具时的实战经验和避坑指南。2. 核心架构与设计哲学解析2.1 为何是“Harness”而非“Agent”市面上已经有很多“AI编程助手”或“自主编码智能体”那为什么这个项目要强调“Harness”这体现了其核心设计哲学的不同。一个典型的“智能体”往往被设计成一个主动的、端到端的黑盒它接收指令然后尝试输出最终结果。而“Harness”更像是一个框架和基础设施它提供了一套标准化的接口、流程和工具让开发者能够以一种可控、可观察、可干预的方式将AI模型的能力“套”到具体的开发任务上。这种设计的优势在于可控性和可扩展性。开发者不是完全将控制权交给AI而是通过Harness定义的流程在关键节点进行审核、引导或修正。例如Harness可能会将“开发一个用户登录API”的任务分解为“设计数据库表”、“编写模型层代码”、“创建控制器”、“编写单元测试”等多个子任务并允许开发者在每个子任务完成后审查生成的代码。同时由于它是一个框架你可以轻松替换底层的AI模型如从GPT-4换成Claude 3或本地部署的模型或者集成自定义的工具如连接特定的代码库、调用独有的代码质量扫描服务。2.2 核心组件拆解一个闭环工作流引擎根据对项目代码和文档的分析autonomous-coding-harness的核心通常包含以下几个关键组件它们共同构成了一个闭环的工作流任务规划与分解模块这是系统的“大脑”。它接收一个自然语言描述的高级任务如“为我们的电商系统添加一个优惠券功能”并利用AI模型将其分解成一系列具体的、可执行的开发子任务。这个过程可能包括识别需要修改的文件、确定依赖关系、规划实现步骤等。优秀的分解能力是成功的一半它直接决定了后续步骤的顺畅程度。代码生成与操作模块这是系统的“双手”。它根据子任务的具体要求在指定的代码库中执行操作。这不仅仅是生成一段新的代码更包括文件读取获取现有代码的上下文。代码补全/生成在正确的位置插入或创建新的代码。代码修改根据要求重构或修复现有代码。文件写入将改动安全地写回项目。 这个模块需要与版本控制系统如Git深度集成以确保操作的可追溯性和回滚能力。验证与执行模块这是系统的“质检员”。生成的代码不能直接信任必须经过验证。这个模块负责静态检查调用linter如ESLint、Pylint进行语法和风格检查。动态验证在安全的沙箱环境中执行生成的代码片段或运行相关的单元测试确保其基本功能正确且不会导致运行时错误。集成测试在可能的情况下运行更广泛的测试套件检查新代码是否破坏了现有功能。反馈与迭代循环这是系统实现“自主”和“进化”的关键。如果验证失败该模块会收集错误信息如测试失败日志、lint错误、运行时异常将其作为反馈重新输入给AI模型让模型分析错误原因并生成修正方案。这个过程可以循环多次直到任务成功完成或达到迭代上限。工具集成层这是系统的“武器库”。为了让AI能执行具体操作Harness需要为其提供一系列“工具”的调用能力。这些工具可能包括执行Shell命令、调用特定API、查询数据库、操作Git、发送HTTP请求等。工具集成层定义了这些工具的接口并安全地管理它们的调用。注意这个架构描述的是一个理想化的、功能完备的自主编码框架。实际的开源项目可能处于不同成熟阶段可能优先实现了其中几个核心组件。评估这类项目时关键看其架构设计是否清晰以及各个模块之间的接口是否定义良好这决定了它的扩展潜力和长期维护性。2.3 技术栈选型背后的考量这类项目通常采用Python作为主要开发语言这几乎是必然的选择。原因如下丰富的AI生态Python是机器学习、深度学习以及与大语言模型交互通过OpenAI API、LangChain、LlamaIndex等库的事实标准。强大的脚本能力易于执行系统命令、操作文件、处理JSON/YAML等配置非常适合构建自动化工具链。异步编程支持对于需要同时处理多个任务或进行网络IO的操作Python的asyncio库提供了很好的支持。在AI模型集成上项目可能会支持多种后端OpenAI GPT系列提供最强大的能力但涉及API调用成本和网络依赖。开源模型如Llama 2/3, CodeLlama, DeepSeek-Coder通过本地部署或兼容API如Ollama、vLLM调用保障数据隐私降低长期成本。多模型路由更先进的框架可能会设计一个路由层根据任务类型、复杂度或成本预算自动选择最合适的模型。项目管理和依赖管理通常会使用poetry或uv以确保环境的一致性和可复现性。配置管理则倾向于使用pydanticdotenv既能享受类型提示和验证的好处又能灵活地通过环境变量覆盖配置。3. 关键实现细节与实操要点3.1 任务分解的Prompt工程实战任务分解是自主编码的“阿喀琉斯之踵”。一个模糊的指令会导致后续全盘皆输。在Harness中任务分解通常由一个精心设计的Prompt驱动。这个Prompt需要引导AI模型以结构化的方式思考。一个有效的任务分解Prompt模板可能包含以下要素你是一个资深的软件开发架构师。请将以下用户需求分解为具体的、可顺序执行的开发任务。 **需求** {用户输入的需求描述} **当前项目上下文** - 项目语言{如Python/JavaScript} - 主要框架{如Django/React} - 代码库结构摘要{简要描述关键目录如src/, tests/, models/, views/} **请按以下格式输出一个JSON数组每个元素代表一个子任务** [ { “id”: 1, “description”: “清晰、原子性的任务描述例如在src/models/coupon.py中创建Coupon模型类”, “type”: “任务类型如create_file, modify_file, run_test, install_dependency”, “file_path”: “涉及的文件路径如适用”, “depends_on”: [依赖的子任务ID列表], “validation_criteria”: “如何验证此任务成功例如文件存在且通过Pylint检查或运行python manage.py makemigrations无报错” }, ... ] **分解原则** 1. 任务必须原子化一个任务最好只做一件事。 2. 考虑任务间的依赖关系例如需要先创建模型才能编写使用该模型的API。 3. 每个任务必须包含可验证的成功标准。 4. 优先修改现有文件而非盲目创建新文件。在实际操作中你需要根据自己项目的技术栈和规范反复调整和优化这个Prompt。例如为Java项目分解时可能需要强调包名和类名的规范为前端项目分解时可能需要考虑组件树和状态管理。3.2 安全的代码操作与沙箱执行让AI直接读写生产代码库是危险的。因此Harness必须实现安全的操作策略。1. 工作副本策略 Harness不应直接在原始代码库上操作。标准的做法是为每个任务或会话创建一个独立的Git工作目录副本通过git clone或git worktree。所有代码生成和修改都在这个副本中进行。验证通过后再通过创建Pull Request或经过人工审核后将更改合并回主分支。2. 沙箱代码执行 对于需要验证代码逻辑如一个算法函数或运行单元测试的任务必须在沙箱环境中进行。对于简单脚本可以使用Docker快速启动一个干净的、包含项目依赖的容器在容器内执行代码片段并捕获输出。对于复杂项目可能需要配置一个完整的测试运行环境。Harness可以调用项目的测试命令如pytest、jest但必须在隔离的环境中进行。资源限制务必对沙箱的执行时间、内存和CPU使用进行限制防止无限循环或恶意代码耗尽资源。3. 操作回滚 每一个文件写入操作都应该有对应的逆操作记录或者整个任务在一个事务性的上下文中执行。如果任务链中的某一步失败应能自动回滚到之前的状态保持工作副本的干净。3.3 工具调用与权限管理为了让AI能“动手”你需要赋予它工具。但“赋予工具”不等于“赋予所有权限”。精细化的权限管理至关重要。工具分类与权限只读工具read_file,list_directory,search_code。这些工具风险较低可以较宽松地授权。写文件工具write_file,create_file,delete_file。必须严格限制其可操作的目录范围如仅限于src/和tests/排除.git,node_modules等。系统命令工具run_shell_command。这是最高风险的。必须使用白名单机制只允许运行预定义的、安全的命令如npm install,python -m pytest,git add。绝对禁止执行任意命令。Git操作工具git_commit,git_branch。这些工具应封装起来确保操作在正确的工作副本上执行并且提交信息格式规范。实现方式 工具通常被实现为Python函数并使用装饰器或基类来声明其描述和参数。当AI模型决定使用某个工具时Harness会解析其参数并安全地调用对应的函数。调用前后可以加入日志记录和审计便于追踪AI的决策过程。4. 从零开始构建一个最小可行原型理解了原理后我们可以尝试构建一个极简的自主编码Harness原型来亲身体验其核心流程。这个原型将使用OpenAI API和简单的文件操作。4.1 环境准备与基础配置首先创建一个新的项目目录并初始化环境。mkdir mini-autonomous-harness cd mini-autonomous-harness python -m venv venv source venv/bin/activate # Windows: venv\Scripts\activate pip install openai python-dotenv创建.env文件存放你的OpenAI API密钥OPENAI_API_KEYsk-your-api-key-here创建config.py来读取配置import os from dotenv import load_dotenv load_dotenv() class Config: OPENAI_API_KEY os.getenv(“OPENAI_API_KEY”) MODEL “gpt-4-turbo-preview” # 或 “gpt-3.5-turbo” WORKSPACE_DIR “./workspace” # 工作副本目录4.2 实现核心Harness类创建harness.py实现核心循环。import os import json import shutil from typing import List, Dict, Any from openai import OpenAI from config import Config class MiniCodingHarness: def __init__(self, base_repo_path: str): self.client OpenAI(api_keyConfig.OPENAI_API_KEY) self.base_repo base_repo_path self.workspace Config.WORKSPACE_DIR # 初始化工作空间 self._init_workspace() def _init_workspace(self): 清理并初始化工作空间副本 if os.path.exists(self.workspace): shutil.rmtree(self.workspace) shutil.copytree(self.base_repo, self.workspace) print(f“工作空间已初始化在{self.workspace}”) def _call_llm(self, prompt: str, system_message: str None) - str: 调用LLM并返回文本结果 messages [] if system_message: messages.append({“role”: “system”, “content”: system_message}) messages.append({“role”: “user”, “content”: prompt}) try: response self.client.chat.completions.create( modelConfig.MODEL, messagesmessages, temperature0.1, # 低温度保证输出稳定 ) return response.choices[0].message.content except Exception as e: print(f“调用LLM失败{e}”) return “” def plan_tasks(self, user_request: str) - List[Dict[str, Any]]: 任务规划与分解 system_msg “你是一个软件工程师负责将开发需求分解为具体的编码任务。” planning_prompt f“”” 请将以下开发需求分解为具体的编码任务。以JSON数组格式回复每个任务包含 ‘description‘, ‘file_path‘, 和 ‘action‘ (可选值: ‘create‘, ‘modify‘, ‘review‘)。 需求{user_request} 当前项目是一个简单的Python Flask应用主要文件在 ‘app.py‘ 和 ‘templates/‘ 目录下。 只返回JSON不要有其他解释。 “”” result self._call_llm(planning_prompt, system_msg) try: tasks json.loads(result.strip()) return tasks except json.JSONDecodeError: print(“LLM返回的任务规划不是有效JSON。”) return [] def execute_task(self, task: Dict[str, Any]): 执行单个任务目前仅实现简单的文件创建/修改 action task.get(“action”, “review”) file_path task.get(“file_path”) desc task.get(“description”, “”) full_path os.path.join(self.workspace, file_path) if file_path else None if action in [“create”, “modify”] and file_path: # 向LLM请求生成或修改代码 code_prompt f“”” 任务描述{desc} 文件路径{file_path} 操作类型{action} 请生成或修改此文件的完整代码内容。 如果文件已存在请基于其现有功能进行修改。 只返回代码本身不要有额外的解释。 “”” new_content self._call_llm(code_prompt) if new_content: os.makedirs(os.path.dirname(full_path), exist_okTrue) with open(full_path, ‘w’, encoding‘utf-8’) as f: f.write(new_content) print(f“✅ 已处理文件{file_path}”) else: print(f“❌ 未能为 {file_path} 生成内容。”) elif action “review”: print(f“ 待审查任务{desc}”) else: print(f“⏭️ 跳过不支持的任务{desc}”) def run(self, user_request: str): 主运行循环 print(f“开始处理需求{user_request}”) tasks self.plan_tasks(user_request) if not tasks: print(“无法生成有效任务列表。”) return print(f“生成了 {len(tasks)} 个任务”) for i, task in enumerate(tasks, 1): print(f“[{i}/{len(tasks)}] {task.get(‘description’)}”) self.execute_task(task) print(“所有任务处理完成。请检查 ‘workspace‘ 目录下的结果。”) # 使用示例 if __name__ “__main__”: # 假设你的基础项目在 ‘./base_project‘ 目录下 harness MiniCodingHarness(“./base_project”) harness.run(“在Flask应用中添加一个/about页面显示‘Hello from About Page’。”)4.3 创建基础项目并运行测试创建一个简单的基础Flask项目base_projectmkdir -p base_project/templatesbase_project/app.py:from flask import Flask, render_template app Flask(__name__) app.route(“/”) def home(): return “Welcome to the Home Page!” if __name__ “__main__”: app.run(debugTrue)现在运行我们的Harness原型python harness.py如果一切正常你会看到控制台输出任务分解和执行过程并在workspace目录下找到被修改或创建的app.py和可能的templates/about.html文件。这个原型虽然简陋但它清晰地演示了“规划-执行”的核心闭环。5. 生产级考量与进阶挑战将原型发展为可用的生产工具需要解决一系列复杂问题。5.1 状态管理与上下文保持AI模型本身是无状态的。但在一个复杂的编码任务中后续步骤严重依赖于之前步骤的结果例如创建了模型类后控制器需要知道这个类的名字。因此Harness必须有效地管理并传递上下文。会话上下文维护一个持续的“会话”其中包含任务历史记录已执行的所有任务及其结果成功/失败产出物。代码变更摘要跟踪哪些文件被修改、创建或删除。错误历史记录执行过程中遇到的错误和解决方案。上下文窗口优化LLM有token限制。不能每次都把整个项目代码喂给它。需要智能的上下文检索策略相关文件检索根据当前任务描述使用代码嵌入向量进行语义搜索只加载最相关的几个文件。摘要生成对于大型文件可以生成摘要如函数/类列表而非完整内容。分层加载先加载目录结构再按需加载文件内容。5.2 复杂任务的验证与测试集成简单的静态检查远远不够。真正的挑战在于集成自动化测试。单元测试生成与运行Harness可以尝试为生成的代码自动编写单元测试并立即运行它们。这不仅能验证功能还能生成一套可回归的测试资产。集成测试触发在任务链的最后可以触发项目的CI/CD流水线如运行GitHub Actions执行完整的集成测试套件。Harness需要解析测试结果并将失败信息反馈给AI进行修复。端到端测试E2E对于前端或全栈任务可以集成像Playwright或Cypress这样的工具自动运行E2E测试来验证用户交互流程。5.3 成本控制与性能优化频繁调用GPT-4等高级模型成本会迅速攀升。优化策略包括模型路由将任务分类。简单的代码补全、格式化用便宜模型如GPT-3.5-Turbo复杂的架构设计、错误调试用强大模型如GPT-4。缓存对常见的、确定性的任务如“为这个函数添加文档字符串”可以将输入和输出缓存起来避免重复调用。任务批处理将多个小的、独立的代码生成请求合并为一个大的Prompt一次性发送给模型减少请求次数。本地模型优先对于内部部署且对数据安全要求高的场景优先使用微调过的CodeLlama等开源模型虽然单次生成质量可能略低但长期成本可控且数据不出域。6. 常见陷阱与实战调试心得在开发和测试这类系统的过程中我踩过不少坑这里分享一些关键的教训。6.1 Prompt设计不严谨导致“幻觉”这是最常见的问题。AI可能会“幻觉”出不存在的方法、库或文件结构。症状生成的代码引用了project.utils.awesome_helper()但这个函数根本不存在。根因Prompt没有提供足够的项目上下文约束或者AI基于其训练数据中的常见模式进行了“脑补”。解决方案在Prompt中强化约束明确说明“只使用项目中已存在的模块和函数”“不要引入未声明的依赖”。提供准确的上下文在生成代码前将相关文件的真实内容提供给AI。后置验证生成代码后运行一个快速的静态分析或导入检查确保所有引用都是有效的。6.2 无限循环与任务“卡住”自主循环有时会陷入死胡同反复生成相似的错误代码。症状同一个错误如语法错误、导入错误反复出现AI的修正方案换汤不换药。根因反馈信息不够具体或者AI无法从当前错误中学习到根本原因。解决方案设置迭代上限任何子任务的修复尝试不应超过3-5次。丰富错误反馈不要只给AI错误信息。同时提供导致错误的代码片段、完整的错误堆栈、相关的项目文件内容。甚至可以提示可能的修复方向。引入人工审核点在多次失败后自动暂停并请求人工介入由开发者提供指导。6.3 代码风格与项目规范不一致AI生成的代码可能在缩进、命名、注释风格上与项目原有代码格格不入。解决方案将代码格式化作为强制步骤在每个文件写入操作后自动运行项目的格式化工具如blackfor Python,prettierfor JS/TS。在上下文中提供风格指南将项目的.eslintrc.js、.pylintrc或自述的风格指南片段加入到Prompt的System Message中。使用更细粒度的操作与其让AI生成整个文件不如让它生成一个代码“补丁”或“差异”然后应用这个补丁到现有文件上这样能更好地保留原有格式。6.4 安全风险提示注入与命令执行这是最危险的陷阱。如果用户输入或AI的输出中包含了恶意指令可能会被误执行为系统命令。真实案例用户需求是“清理日志文件”AI分解出的任务可能是run_shell_command: “rm -rf /var/log/*”如果没有路径限制这将是一场灾难。防御措施严格的输入净化对用户输入和AI输出的“操作指令”进行严格的解析和验证只允许预定义的安全命令和参数。最小权限原则运行Harness的进程应该具有尽可能低的系统权限。绝对不要用root或管理员账户运行。沙箱化所有执行无论是代码验证还是命令执行都必须发生在Docker容器或类似的安全隔离环境中。6.5 评估与度量如何知道它真的有用引入自主编码工具后如何衡量其价值量化指标任务完成率派发给AI的任务中有多少比例能在无需人工修正的情况下通过所有验证人工干预率平均每个任务需要人工介入提供额外信息、修正错误的次数。代码接受率AI生成的代码在经过人工审查后被直接合并的比例无需重写。时间节省对比完成同类任务使用Harness前后所花费的净时间需减去设置、调试工具的时间。定性反馈开发者是觉得它减轻了负担还是增加了认知负荷它是否帮助团队完成了以前不愿做的琐碎任务如编写样板代码、生成测试数据代码的可维护性和质量是提高了还是降低了构建和使用autonomous-coding-harness这类工具与其说是寻找一个“自动程序员”不如说是在构建一个高度智能化的“开发流程增强系统”。它的成功极大地依赖于精心的设计、严格的约束和持续的调优。它不会取代开发者但会重新定义开发者的工作方式将创造力从重复性劳动中解放出来聚焦于更核心的架构设计和复杂问题解决。对于技术团队来说投资于此的回报不仅仅是效率的提升更是团队能力边界的一次重要拓展。

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