第 4 篇(07-08 章):规划设计模式与多代理设计模式
第 4 篇07-08 章规划设计模式与多代理设计模式文章目录第 4 篇07-08 章规划设计模式与多代理设计模式一、第 07 章规划设计1. 定义整体目标及拆解任务2. 多代理编排的规划代理3. 迭代规划二、第 08 章多智能体设计模式1. 多智能体适用的场景2. 使用多智能体相比单一智能体的优势3. 实现多智能体设计模式的构建模块4. 多智能体交互的可视性5. 多代理模式6. 场景退款流程三、代码示例讲解规划如何真正落地示例一规划器-执行器第 07 章① 定义计划的数据结构Pydantic 模型② 规划器把目标变成结构化 JSON③ 实际运行结果规划器输出译为中文④ 执行器按依赖顺序调度子任务⑤ 实际运行结果执行器输出译为中文⑥ 机制总结规划器-执行器如何把目标变成结果完整代码示例一示例二多代理工作流第 08 章① 用 WorkflowBuilder 串联专职代理② 实际运行结果TravelPlanner 输出译为中文节选③ 实际运行结果TravelConcierge 审查输出译为中文节选④ 扩展工作流追加 BudgetReviewer⑤ 实际运行结果扩展工作流译为中文节选⑥ 机制总结顺序流水线如何实现迭代提质完整代码示例二示例一与示例二的区别本系列「微软《AI Agents for Beginners》实战解读」基于微软官方课程逐章讲解并结合实践扩展。本篇覆盖第 07 章《规划设计》与第 08 章《多智能体设计模式》。文中子标题沿用官方课程原文示例基于 Microsoft Agent FrameworkMAF模型后端为 DeepSeekOpenAI 兼容协议。本篇代码讲解结合真实运行结果结果已译为中文每个示例末尾附完整可运行代码。一、第 07 章规划设计复杂任务无法一步完成。规划设计模式的核心是明确定义整体目标、将复杂任务拆解为可管理的子任务、利用结构化输出实现机器可读响应并以事件驱动方式处理动态任务与意外输入。1. 定义整体目标及拆解任务现实任务大多过于复杂代理需要一个简明的目标来指导规划与行动。以生成一份三天的旅行行程为例该目标仍需细化——目标越明确代理与人类协作者越能聚焦于正确结果航班选项、酒店推荐、活动建议等。任务拆解。将大型任务拆成有目标的小任务后更易管理。旅行行程可拆为机票预订、酒店预订、租车、个性化定制。每个子任务可由专门代理或流程处理一个代理专查最佳机票另一个负责酒店协调/下游代理将结果汇总为完整行程。模块化方法也便于渐进增强——随时间添加美食推荐或本地活动代理。结构化输出。LLM 能生成结构化输出如 JSON使下游代理或服务更易解析处理在多代理上下文中尤为重要。理论扩展任务分解Task Decomposition。这是复杂问题求解的通用策略——将目标分解为可独立求解的子问题分别求解后合并。工程实现的关键是明确子任务的依赖与归属谁做、依赖什么、优先级这为结构化输出提供语义基础。2. 多代理编排的规划代理一个规划代理接收用户请求后将其分解为子任务并生成结构化计划随后路由给相应专职代理。执行流程接收请求规划代理处理用户消息生成结构化旅行计划。列出代理及其工具代理注册表包含专职代理机票、酒店、租车、活动及其能力。路由计划单任务场景直接发给专门代理多任务场景通过群聊管理器协调多代理协作。总结结果汇总各代理结果向用户呈现。理论扩展规划器-执行器分工Planner-Executor。该模式将想与做分离规划代理负责任务分解与分配输出机器可读 JSON专职代理负责执行。此架构降低单个代理的认知负担且规划与执行可独立迭代与替换。3. 迭代规划部分任务需要来回调整或重新规划——一个子任务的结果会影响下一个。例如代理订票时发现意外数据格式需先调整策略再进行后续预订用户反馈如更改航班时间也会触发部分重新规划。这种动态迭代保证最终方案符合现实约束与变化的用户偏好。理论扩展规划-执行-再规划循环。迭代规划本质是Plan-Execute-Replan 循环执行中发现新约束或失败时将历史结果与当前计划回传规划代理触发重新规划。这是代理系统应对不确定性的核心机制与第 05 章 Agentic RAG 的评估-优化循环同构。二、第 08 章多智能体设计模式多智能体是一种设计模式允许多个智能体协同工作以实现共同目标广泛应用于机器人技术、自动系统与分布式计算等领域。本章回答何时用多智能体、相对单智能体的优势、构建模块与交互可视性。1. 多智能体适用的场景三种场景下多智能体更有益大工作负载可细分为更小任务分配给不同智能体实现并行处理与更快完成如大型数据处理。复杂任务拆分为子任务每个智能体专注特定方面如自动驾驶中分别管理导航、障碍检测、通信。多样的专长不同智能体具备不同专长如医疗中分别管理诊断、治疗方案、病人监测。2. 使用多智能体相比单一智能体的优势单一智能体适合简单任务复杂任务下多智能体具备三类优势专业化每个智能体专注特定任务避免单一智能体面对复杂任务时的混淆。可扩展性增加智能体比让单一智能体承担更多任务更易扩展。容错性单个智能体失败时其他智能体可继续运行保障系统可靠性。以旅游预订为例单一智能体需负责航班、酒店、租车全流程工具混杂导致系统复杂难维护多智能体系统将各环节分离更加模块化、易维护、可扩展——类似普通旅游局与特许经营旅游局的对比。3. 实现多智能体设计模式的构建模块以旅游预订为例构建模块包括智能体通信专职代理需要交流并共享用户偏好与限制需决定哪些智能体共享信息、如何共享。协调机制代理需协调行动以满足偏好与约束如酒店与租车代理协调机场位置约束。智能体架构代理需具备内部结构以决策与学习如航班代理根据用户历史偏好推荐航班。多智能体交互可视性需工具与技术跟踪代理活动与交互包括日志监控、可视化与性能指标。多代理模式可采用集中式、分散式与混合式架构。人机交互人类在环中指导代理何时请求人工介入。4. 多智能体交互的可视性理解智能体间交互对调试、优化与保障系统有效性至关重要。三类工具日志和监控工具记录每个代理执行的动作谁、做什么、何时、结果。可视化工具绘制智能体间信息流识别瓶颈与低效。性能指标跟踪完成任务时间、吞吐量与推荐准确率等。5. 多代理模式课程介绍三种具体模式群聊Group Chat。支持多个智能体通过消息协议交换信息每个代理代表群聊中的一个参与者可发送、接收并回应消息。典型用例团队协作、客户支持、社交网络。工作交接Hand-off。支持智能体间交接任务每个代理代表任务或工作流的一个步骤按预定规则将任务交接给下一代理。典型用例客户支持、任务管理、工作流自动化。协同过滤Collaboration / Recommendation。多个具备不同专长的智能体协作向用户推荐内容。以股票建议为例行业专家代理、技术分析代理、基本面分析代理各自贡献汇总为更全面的建议。理论扩展编排模式的抽象。群聊、交接、协同过滤分别对应多智能体编排的并行协作、顺序接力、专家聚合三类拓扑。MAF 的WorkflowBuilder以有向图统一表达这些拓扑节点为代理边为数据流使编排声明化、可审计。6. 场景退款流程以客户申请产品退款为例可拆分为专门处理退款流程的代理与可复用于业务其他部分的通用代理退款流程专属代理客户代理发起、卖家代理处理、支付代理退款、解决方案代理解决问题、合规代理遵守政策。通用代理运输、反馈、升级、通知、分析、审计、报告、知识、安全、质量等——可用于退款及其他业务流程。理论扩展角色建模与复用。该场景演示了多智能体系统的角色建模Role Modeling——将业务流程分解为职责单元并区分流程专属角色与可复用横切角色后者在其他流程中直接复用提升系统构建效率。三、代码示例讲解规划如何真正落地以下代码取自课程code_samples已适配 DeepSeek 后端并附实际运行结果译为中文。重点回答规划器如何把一个目标变成一份可执行计划执行器又如何按计划调度示例一规划器-执行器第 07 章① 定义计划的数据结构Pydantic 模型规划的核心前提是结构化输出——先定义计划长什么样再用模型约束输出。Pydantic 模型声明了计划的字段主任务、子任务列表每个子任务含描述、分配对象classTravelSubTask(BaseModel):task_details:strassigned_agent:str# 分配给哪个专职代理classTravelPlan(BaseModel):main_task:strsubtasks:list[TravelSubTask]② 规划器把目标变成结构化 JSON规划代理只负责想。系统提示要求它按指定 JSON 结构拆解任务由于 DeepSeek 不支持response_formatPydantic模型改用json_object模式并用model_validate_json校验解析PLANNER_PROMPTYou are a planner agent. Break the users travel request into subtasks and assign each to an agent. Reply with JSON only: {main_task:...,subtasks:[{assigned_agent:flight_booking,task_details:...}]}rawawaitplanner.run(帮一家四口规划新加坡到墨尔本的旅行。,options{response_format:{type:json_object}})planTravelPlan.model_validate_json(str(raw))③ 实际运行结果规划器输出译为中文输入请求“为两人规划一次 7 天巴黎之旅主题是艺术、美食与历史预算约 5000 美元”。规划器输出如下结构化计划目的地巴黎法国 时长7 天 预算5000 美元 子任务按优先级 [高] 1. 为两人预订往返巴黎CDG经济舱机票 → flight_agent [高] 2. 在预算内预订市中心酒店 7 晚 → hotel_agent [中] 3. 安排机场接送并推荐当地交通 → logistics_agent [高] 4. 预订主要艺术博物馆免排队门票 卢浮宫、奥赛、橘园 → activity_agent [中] 5. 预订历史遗迹导览 凡尔赛宫、圣礼拜堂、圣母院区 → activity_agent [中] 6. 预订美食体验 法式晚餐、美食市场导览、烹饪课 → activity_agent [低] 7. 制定逐日行程并评估巴黎博物馆通票 → logistics_agent观察要点规划器输出的 JSON 携带三层信息——优先级high/medium/low决定处理权重、分配对象assigned_agent决定路由目标、依赖关系隐含在步骤顺序中如博物馆通票依赖第 4、5、6 步。这三层信息正是可执行计划区别于一段描述文字的关键。④ 执行器按依赖顺序调度子任务执行器Concierge 代理读取计划后按依赖顺序逐项调用专职工具订票、订酒店、订活动并输出执行摘要# 执行器将 plan.subtasks 按依赖顺序调度逐个调用对应工具forsubinplan.subtasks:resultawaitexecute_subtask(sub)# 根据 assigned_agent 路由到对应工具⑤ 实际运行结果执行器输出译为中文我将逐步执行该旅行计划并遵守依赖关系。先从无依赖的机票预订开始。 第1步预订往返巴黎机票 → 确认号 FLT-4907 ✓ 机票已确认。现在可并行处理酒店第2步与仅依赖机票的活动预订第4、5、6步。 酒店与所有活动预订已确认。第1、2、4、5、6 步完成。 现在并行处理第3步机场接送依赖 1、2 已满足与第7步博物馆通票依赖 4、5、6 已满足。 所有子任务完成。完整执行摘要 ✅ 航班高→ flight_agent往返巴黎经济舱确认号 FLT-4907 ✅ 酒店高→ hotel_agent市中心 7 晚确认号 HTL-4907 ✅ 机场接送中→ logistics_agentACT-0370 / ACT-0542 交通建议RER B、Métro、Navigo 周票、Vélib 单车 ✅ 博物馆免排队门票高→ activity_agent 卢浮宫 6/2 ACT-8457 · 奥赛 6/3 ACT-1209 · 橘园 6/4 ACT-7640 ✅ 历史导览中→ activity_agent 凡尔赛宫 6/5 ACT-7332 · 圣礼拜堂 6/6 ACT-5989 · 圣母院区 6/6 ACT-5300 ✅ 美食体验中→ activity_agent 法式晚餐 6/7 ACT-4238 · 美食市场导览 6/2 ACT-7344 · 烹饪课 6/7 ACT-2359 ✅ 博物馆通票 逐日行程低→ logistics_agentACT-0600 通票覆盖卢浮宫/奥赛/凡尔赛等节省约 30-50 欧元/人 预算说明所有预订机票、7 晚酒店、9 项活动 2 次接送 2 张通票均在 5000 美元内。⑥ 机制总结规划器-执行器如何把目标变成结果结合代码与运行结果规划落地的完整链路为用户目标 → 规划器输出结构化 JSON子任务优先级分配依赖 → 执行器读取 JSON → 按依赖解析执行顺序 → 无依赖任务先执行互不依赖任务并行执行 → 依赖满足后触发后续任务 → 汇总确认号与行程 → 交付用户三个关键机制结构化输出是桥TravelPlanPydantic让规划结果从自然语言段落变成机器可解析的数据执行器才能编程式遍历、路由、调度。依赖驱动调度运行结果显示执行器先机票无依赖→ 再并行酒店与活动仅依赖机票→ 最后接送与通票依赖已满足——这是dependencies字段驱动的拓扑排序避免子任务在前提未满足时执行。优先级影响权重[高]的机票、酒店、博物馆门票被优先处理[低]的行程与通票在其余完成后收尾。完整代码示例一importasynciofromtypingimportAnnotatedfrompydanticimportBaseModelfromagent_frameworkimporttoolfrom_deepseekimportmake_clientclassTravelSubTask(BaseModel):task_id:intdescription:strassigned_agent:str# 分配给哪个专职代理priority:str# high / medium / lowdependencies:list[int][]classTravelPlan(BaseModel):destination:strtrip_duration_days:intsubtasks:list[TravelSubTask]total_estimated_budget_usd:intnotes:strPLANNER_PROMPTYou are a travel planning agent. When given a travel request: 1. Break it into specific subtasks (flights, hotels, activities, logistics) 2. Assign each subtask to the appropriate specialist agent 3. Set priorities and identify dependencies between tasks 4. Estimate the total budget Reply with JSON only matching: {destination:...,trip_duration_days:7, subtasks:[{task_id:1,description:...,assigned_agent:flight_agent, priority:high,dependencies:[]}], total_estimated_budget_usd:5000,notes:...}tooldefbook_flight(destination:Annotated[str,The destination city],departure_date:Annotated[str,Departure date (YYYY-MM-DD)],return_date:Annotated[str,Return date (YYYY-MM-DD)],)-str:Search and book flights for the trip.returnfFlight booked to{destination}:{departure_date}→{return_date}, confirmation #FLT-{hash(destination)%10000:04d}tooldefreserve_hotel(city:Annotated[str,The city for the hotel],check_in:Annotated[str,Check-in date (YYYY-MM-DD)],check_out:Annotated[str,Check-out date (YYYY-MM-DD)],guests:Annotated[int,Number of guests],)-str:Reserve a hotel room in the destination city.returnfHotel reserved in{city}:{check_in}to{check_out}for{guests}guests, confirmation #HTL-{hash(city)%10000:04d}tooldefbook_activity(activity_name:Annotated[str,Name of the activity or tour],date:Annotated[str,Date of the activity (YYYY-MM-DD)],participants:Annotated[int,Number of participants],)-str:Book a tour, museum visit, or other activity.returnfActivity booked:{activity_name}on{date}for{participants}people, confirmation #ACT-{hash(activity_name)%10000:04d}asyncdefmain():clientmake_client()planning_agentclient.as_agent(nameTravelPlanner,instructionsPLANNER_PROMPT)resultawaitplanning_agent.run(Plan a 7-day trip to Paris for a couple interested in art, cuisine, and history. Budget around $5000.,options{response_format:{type:json_object}},)planTravelPlan.model_validate_json(str(result))print(fDestination:{plan.destination})print(fDuration:{plan.trip_duration_days}days)print(fBudget: ${plan.total_estimated_budget_usd}\nSubtasks:)fortinplan.subtasks:print(f [{t.priority}]{t.task_id}.{t.description}→{t.assigned_agent})concierge_agentclient.as_agent(nameConcierge,instructionsYou are a travel concierge executing a structured travel plan. Use the available tools to fulfil each subtask. Work through the subtasks in order, respecting dependencies. Summarise the results when finished.,tools[book_flight,reserve_hotel,book_activity],)execution_prompt(fExecute the following travel plan for{plan.destination}f({plan.trip_duration_days}days, ${plan.total_estimated_budget_usd}budget):\n\n.join(f- [{t.priority}]{t.task_id}.{t.description}(agent:{t.assigned_agent}, deps:{t.dependencies})fortinplan.subtasks))print(awaitconcierge_agent.run(execution_prompt))if__name____main__:asyncio.run(main())示例二多代理工作流第 08 章① 用 WorkflowBuilder 串联专职代理不同于规划器输出 JSON 后由单个执行器调度多代理工作流将多个专职代理直接串成流水线前一代理的输出自动成为后一代理的输入fromagent_frameworkimportAgentResponseUpdate,WorkflowBuilder planner_agentmake_client().as_agent(nameTravelPlanner,instructions制定详细行程。)concierge_agentmake_client().as_agent(nameTravelConcierge,instructions审查并增强行程。)workflow(WorkflowBuilder(start_executorplanner_agent).add_edge(planner_agent,concierge_agent).build())asyncforeventinworkflow.run(为喜欢美食的夫妇规划5天巴黎之行预算3000美元。,streamTrue):ifevent.typeoutputandisinstance(event.data,AgentResponseUpdate):print(f【{event.data.author_name}】{event.data.text})② 实际运行结果TravelPlanner 输出译为中文节选【TravelPlanner】 为热爱美食的夫妇制定 5 天巴黎行程预算 3000 美元含双人机票、住宿、餐饮、景点与交通。 预算快照双人 机票 $1200 · 住宿 $9505晚≈$190/晚· 餐饮 $550 · 景点 $200 · 交通 $100 · 总计 $3000 居住建议玛黑区3/4区、拉丁区5区、圣马丁运河10区 逐日行程节选 Day 1 到达 拉丁区RER B 进城Rue Mouffetard 美食街野餐巴黎圣母院外观Bouillon Chartier 晚餐特罗卡德罗广场看埃菲尔铁塔夜景 Day 2 卢浮宫 蒙托尔盖伊街卢浮宫Mona Lisa 等生蚝午餐协和广场凯旋门日落 Day 3 蒙马特 玛黑区圣心大教堂红磨坊街LAs du Fallafel 鹰嘴豆泥卷饼天然葡萄酒吧 Le Verre Volé Day 4 市场 奥赛美术馆 卢森堡公园野餐 塞纳河游船 Day 5 埃菲尔铁塔爬楼梯省票 Rue Cler 最后野餐 返程 美食必吃清单羊角包、最佳法棍、生蚝、蜗牛、鹰嘴豆泥卷饼、牛排薯条、奶酪拼盘、马卡龙 实用提示机场坐 RER B 而非出租车买 10 次票车票本餐厅预订注意事项防扒手提醒③ 实际运行结果TravelConcierge 审查输出译为中文节选【TravelConcierge】—— 旅行礼宾审查 总体评价结构扎实、研究充分预算分配现实8.5/10。 1. 预算与后勤审查 - 机票 $1200合理但旺季可达 $1400建议用 Google Flights 提醒并考虑替代机场 - 住宿 $190/晚适合玛黑区 Airbnb注意隐藏费用清洁费、旅游税 - 餐饮 $110/天偏紧晚餐配酒可能超支建议一次餐馆晚餐换市场野餐 - 交通 $100现实两张 RER 两个车票本 2. 逐日增强建议 - Day 1Bouillon Chartier 排队 30-45 分钟建议 18:30 到或去 Bouillon Racine - Day 2生蚝店 Huitrerie Régis 中午开档即到凯旋门可换老佛爷天台免费看塔 - Day 3圣心堂后去蒙马特秘密葡萄园Le Verre Volé 满座可去 La Cave des Papilles - Day 4奥赛美术馆建议 9:30 预约入场市场奶酪在 Fromagerie Beaufils 购买 - Day 5埃菲尔铁塔爬 2 楼楼梯需提前在线订时段 3. 潜在问题与修复 - 预订必需Le Relais de lEntrecôte、Le Verre Volé、埃菲尔铁塔需预订 - 闭馆日卢浮宫周二闭、奥赛周一闭、Aligre 市场周一下午关 - 交通罢工备选 Uber 或步行 - 预算超支防御一次晚餐换野餐、酒只从酒铺买、自带水壶④ 扩展工作流追加 BudgetReviewer工作流的可扩展性在于加一个代理只需加一条边不改已有逻辑budget_agentmake_client().as_agent(nameBudgetReviewer,instructions核对预算并给出修订。)extended_workflow(WorkflowBuilder(start_executorplanner_agent).add_edge(planner_agent,concierge_agent).add_edge(concierge_agent,budget_agent)# 新增审查后交给预算评审.build())⑤ 实际运行结果扩展工作流译为中文节选【TravelPlanner】第二次规划修订版行程预算拆分为 住宿$1000 · 餐饮$1200 · 活动$450 · 交通$150 · 购物$200总计约 $3000 【TravelConcierge】再审查基本批准但 Day 4 过满、Day 3 凡尔赛香榭丽舍太赶建议放慢节奏、替换难订餐厅Septime → Clamato 【BudgetReviewer】输出修订版 修订后 5 天行程更宽松的节奏Day 4 缩短烹饪课为 1.5 小时马卡龙课、更易预订的餐厅Le Verre à Pied 替代 Le Verre Volé 修订后预算住宿 $1000 · 餐饮 $1100 · 活动 $350 · 交通 $150 · 购物 $200 · 总计约 $2800预留 $200 缓冲 关键调整更放松的节奏、预订压力降低、更聪明的开销马卡龙课替代全课、野餐替代部分餐馆⑥ 机制总结顺序流水线如何实现迭代提质多代理工作流的本质是顺序接力 迭代审查TravelPlanner初稿→ TravelConcierge审查指出预算/节奏/预订问题 → BudgetReviewer综合审查意见输出修订预算与行程为什么比单个代理效果更好专业化隔离规划代理专注生成礼宾代理专注挑错预算代理专注控本——各代理指令聚焦输出质量高于一个全能代理。迭代反馈链运行结果显示第三次BudgetReviewer的输出吸收了前两轮的审查意见放慢节奏、替换难订餐厅、压缩预算——这正对应第 09 章的反思-修正思想只是通过代理链而非单一代理实现。可扩展追加代理仅需add_edge工作流拓扑从 2 节点扩为 3 节点已有节点逻辑零改动。完整代码示例二importasynciofromagent_frameworkimportAgentResponseUpdate,WorkflowBuilderfrom_deepseekimportmake_clientasyncdefmain():planner_agentmake_client().as_agent(nameTravelPlanner,instructions你是旅行规划专家根据偏好制定详细行程包含每日安排与预算。,)concierge_agentmake_client().as_agent(nameTravelConcierge,instructions你是旅行礼宾审查并增强行程补充本地建议、发现潜在问题、给出建设性反馈。,)budget_agentmake_client().as_agent(nameBudgetReviewer,instructions你是预算顾问核对行程是否超预算并给出省钱建议。,)# 两代理工作流规划 → 礼宾workflow(WorkflowBuilder(start_executorplanner_agent).add_edge(planner_agent,concierge_agent).build())print( 两代理工作流 )awaitstream_workflow(workflow,为喜欢美食的夫妇规划5天巴黎之行预算3000美元。)# 三代理工作流规划 → 礼宾 → 预算extended_workflow(WorkflowBuilder(start_executorplanner_agent).add_edge(planner_agent,concierge_agent).add_edge(concierge_agent,budget_agent).build())print(\n 三代理工作流 )awaitstream_workflow(extended_workflow,为喜欢美食的夫妇规划5天巴黎之行预算3000美元。)asyncdefstream_workflow(workflow,prompt:str):last_authorNoneasyncforeventinworkflow.run(prompt,streamTrue):ifevent.typeoutputandisinstance(event.data,AgentResponseUpdate):updateevent.dataifupdate.author_name!last_author:print(f\n{update.author_name})last_authorupdate.author_nameprint(update.text,end,flushTrue)print()if__name____main__:asyncio.run(main())示例一与示例二的区别维度示例一规划器-执行器示例二多代理工作流结构一个规划器 一个执行器带工具多个专职代理串联成图分工方式规划器输出 JSON执行器按依赖调度各代理依次接力前一输出喂给后一关键机制结构化输出 依赖解析有向图编排 信息传递适用场景单目标多步骤任务的编排需要多视角迭代生成→审查→修订

相关新闻

运输倾角监测技术解析:MEMS传感器如何实现设备姿态测量

运输倾角监测技术解析:MEMS传感器如何实现设备姿态测量

前言在大型工业设备、精密仪器、高价值货物运输过程中,运输环境的变化可能导致设备产生不同程度的倾斜、偏移甚至姿态异常。倾角监测技术通过传感器持续采集物体相对于重力方向的姿态变化,将运输过程中的倾斜状态转化为可分析的数据。本文将从倾角监测的…

2026/10/7 5:38:28 阅读更多 →
Playwright工具的codegen用法

Playwright工具的codegen用法

Playwright工具的codegen用法完整指南 一、引言 在自动化测试领域,编写测试脚本往往是最耗时、最枯燥的环节。开发者需要手动定位元素、编写选择器、构造操作序列,这个过程不仅效率低下,还容易出错。Playwright 提供的 codegen(代码生成器)功能,彻底改变了这一现状——它…

2026/10/4 20:28:01 阅读更多 →
深度探索Android-AlarmManagerClock:AlarmManagerUtil工具类的高效用法与源码解析

深度探索Android-AlarmManagerClock:AlarmManagerUtil工具类的高效用法与源码解析

深度探索Android-AlarmManagerClock:AlarmManagerUtil工具类的高效用法与源码解析 【免费下载链接】Android-AlarmManagerClock 设置闹钟的一个封装的比较全面的demo 项目地址: https://gitcode.com/gh_mirrors/an/Android-AlarmManagerClock Android-AlarmM…

2026/9/25 20:21:15 阅读更多 →

最新新闻

VS Code 中直接使用 Codex 教程及连接失败解决方案:TaoToken 统一 Key 接入与排错实录

VS Code 中直接使用 Codex 教程及连接失败解决方案:TaoToken 统一 Key 接入与排错实录

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 0:50:24 阅读更多 →
企业 Agent 提示词注入防御实战:双重护栏与对抗语义检测

企业 Agent 提示词注入防御实战:双重护栏与对抗语义检测

在企业将多智能体(Multi-Agent)系统接入客服咨询、内部知识检索或自动化办公流后,安全攻防的对抗维度发生了一场根本性范式转移:传统的 SQL 注入或跨站脚本攻击(XSS)正在退居二线,而以自然语言为…

2026/10/12 0:47:23 阅读更多 →
Cursor怎么使用:3分钟上手Cursor键盘快捷键速查,用TaoToken统一Key接入GPT4与Claude 3.5辅助编程

Cursor怎么使用:3分钟上手Cursor键盘快捷键速查,用TaoToken统一Key接入GPT4与Claude 3.5辅助编程

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 0:46:23 阅读更多 →
我喜欢的 VSCode 插件:用 TaoToken 统一管理 AI 编码助手的 Key 与 Base URL

我喜欢的 VSCode 插件:用 TaoToken 统一管理 AI 编码助手的 Key 与 Base URL

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 0:46:23 阅读更多 →
基于SVDD算法的数据分类MATLAB仿真:原理、代码与避坑指南

基于SVDD算法的数据分类MATLAB仿真:原理、代码与避坑指南

简介:本资源为基于SVDD算法的数据分类MATLAB仿真程序包,面向机器学习初学者、模式识别课程学习者及需要复现单类分类实验的科研人员,帮助理解支持向量数据描述在异常检测与数据分类中的建模流程。包内共16个文件,以12个m脚本为核心…

2026/10/12 0:45:23 阅读更多 →
【厦门大学主办、IEEE出版】第六届人工智能、机器人和通信国际会议(ICAIRC 2026)

【厦门大学主办、IEEE出版】第六届人工智能、机器人和通信国际会议(ICAIRC 2026)

第六届人工智能、机器人与通信国际会议(ICAIRC 2026)将于2026年11月13日至15日在中国厦门举办。本次会议旨在搭建一个高水平学术交流平台,汇聚全球人工智能、机器人及通信领域的专家学者、工程技术人员与研发人员,分享前沿研究成果…

2026/10/12 0:45:23 阅读更多 →

日新闻

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

在数码相机、高清显示屏与现代矢量图形技术高度发达的今天,画面可以做到绝对的锐利、平滑与无瑕。然而,当一张秋日手账插画或拍立得照片过于“平整无瑕”时,往往会散发出一种冰冷生硬的“数码塑料感(Digital Plasticity&#xff0…

2026/10/12 0:00:59 阅读更多 →
活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

在现代网页与移动端设计中,横排(Horizontal Layout)早已经成为了绝对的主流。然而,当我们翻开泛黄的线装古籍、宋版木刻诗集,或是欣赏一张茶道雅集的手写便签时,那种**自上而下纵向书写、自右向左逐列铺展&…

2026/10/12 0:00:59 阅读更多 →
周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

每到周日的晚上八点到十点,很多人心里都会悄悄亮起一盏警示灯。 在心理学上,这种现象有一个专门的称谓——“周日夜晚焦虑症(Sunday Scaries)”。明天又是周一,闹钟又要重新在七点响彻卧房;脑海里仿佛有一个…

2026/10/12 0:00:59 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/12 0:16:30 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/12 0:16:43 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 10:45:37 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:53 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:54 阅读更多 →