当前位置: 首页 > article >正文

快速集成A2A Agent

面我们提到可以将MCP服务也封装为一个ToolAIFunction让Agent调用这里A2A Agent也是一样的道理。这样做的好处是让MAF中的Agent像调用本地函数一样调用远程A2A Agent 或 MCP Server。下面的代码展示了在MAF中将A2A Card转换为Agent然后再将Agent转换为AIFunction...... var functionTools new ListAIFunction(); foreach (var endpoint in agentEndpoints) { var resolver new A2ACardResolver(new Uri(endpoint)); var card await resolver.GetAgentCardAsync(); var agent card.AsAIAgent(); // Convert A2A Agent to AIAgent instance functionTools.AddRange(AgentFunctionHelper.CreateFunctionTools(agent, card)); } ......下面是AgentFunctionHelper类的代码实现public class AgentFunctionHelper { public static IEnumerableAIFunction CreateFunctionTools(AIAgent a2aAgent, AgentCard agentCard) { foreach (var skill in agentCard.Skills) { AIFunctionFactoryOptions options new() { Name Sanitize(skill.Id), Description $$ { description: {{skill.Description}}, tags: [{{string.Join(, , skill.Tags ?? [])}}], examples: [{{string.Join(, , skill.Examples ?? [])}}], inputModes: [{{string.Join(, , skill.InputModes ?? [])}}], outputModes: [{{string.Join(, , skill.OutputModes ?? [])}}] } , }; yield return AIFunctionFactory.Create(RunAgentAsync, options); } async Taskstring RunAgentAsync(string input, CancellationToken cancellationToken) { var response await a2aAgent.RunAsync(input, cancellationToken: cancellationToken).ConfigureAwait(false); return response.Text; } } private static readonly Regex InvalidNameCharsRegex new Regex([^0-9A-Za-z], RegexOptions.Compiled); public staticstringSanitize(string name) { return InvalidNameCharsRegex.Replace(name, _); } }其中的CreateFunctionTools方法实现了将A2A Agent的所有公开技能转换为AIFunction工具。而Sanitize方法则实现了函数名称的规范化因为AIFunction的名称必须符合一定规范仅限字母、数字和下划线因此需要主动对技能名称进行规范化。3 完整集成示例这次我们还是使用上次文章中的案例即一个旅游助手它可以通过A2A协议调用多个Agent的技能。我们需要创建四个.NET项目其中1个.NET控制台项目主助手3个ASP.NET Web项目天气智能体、酒店智能体、路线智能体在VS中的项目结构如下本次案例我们希望实现主助手可以回答用户关于不同主题景点酒店天气的问题它可以根据问题自主选择需要调用一个或多个Agent去获取必要的信息后进行整合优化后再回复用户。3.1 天气Agent添加NuGet包后续A2A Agent项目都需要安装此包不再赘述A2A.AspNetCore创建一个 WeatherAgent类定义其能力 和 AgentCard这里我们需要公开一个AgentSkill即天气查询的能力public class WeatherAgent { public void Attach(ITaskManager taskManager) { taskManager.OnMessageReceived QueryWeatherAsync; taskManager.OnAgentCardQuery GetAgentCardAsync; } private TaskA2AResponse QueryWeatherAsync(MessageSendParams messageSendParams, CancellationToken cancellationToken) { if (cancellationToken.IsCancellationRequested) { return Task.FromCanceledA2AResponse(cancellationToken); } // Process the message var messageText messageSendParams.Message.Parts.OfTypeTextPart().First().Text; // Create and return an artifact var message new AgentMessage() { Role MessageRole.Agent, MessageId Guid.NewGuid().ToString(), ContextId messageSendParams.Message.ContextId, Parts [new TextPart() { Text $ ️ **天气查询结果** 查询时间{DateTime.Now:yyyy-MM-dd HH:mm} **北京天气** - 今日晴转多云气温 -2°C ~ 8°C - 明日多云气温 0°C ~ 10°C - 后日阴气温 2°C ~ 9°C **上海天气** - 今日多云气温 5°C ~ 12°C - 明日小雨气温 6°C ~ 10°C - 后日阴转晴气温 4°C ~ 11°C 穿衣建议北京较冷建议穿羽绒服上海温和建议穿夹克外套带好雨具。 }] }; return Task.FromResultA2AResponse(message); } private TaskAgentCard GetAgentCardAsync(string agentUrl, CancellationToken cancellationToken) { if (cancellationToken.IsCancellationRequested) { return Task.FromCanceledAgentCard(cancellationToken); } var capabilities new AgentCapabilities() { Streaming true, PushNotifications false, }; return Task.FromResult(new AgentCard() { Name weather agent, Description weather information agent, Url agentUrl, Version 1.0.0, DefaultInputModes [text], DefaultOutputModes [text], Capabilities capabilities, Skills [ new AgentSkill { Id weather-query, Name 天气查询, Description 查询指定城市的天气预报包括温度、降水概率、穿衣建议等, Tags [weather, forecast, climate], Examples [上海明天天气怎么样, 成都这周的天气预报, 杭州下雨吗], InputModes [text], OutputModes [text] }], }); } }这里说明一下这里为了方便是直接返回了一个固定的天气信息输出内容但在实际应用中往往需要进行具体的业务逻辑处理或调用大模型进行处理。下面的几个Agent也是类似的情况就不再赘述。然后在Program.cs中进行注册完成端口映射using A2A; using A2A.AspNetCore; using WeatherAgentServer; var builder WebApplication.CreateBuilder(args); var app builder.Build(); var taskManager new TaskManager(); var agent new WeatherAgent(); agent.Attach(taskManager); // Add JSON-RPC endpoint for A2A app.MapA2A(taskManager, /weather); // Add well-known agent card endpoint for A2A app.MapWellKnownAgentCard(taskManager, /weather); // Add HTTP endpoint for A2A app.MapHttpA2A(taskManager, /weather); app.Run();3.2 酒店Agent创建一个HotelAgent类定义其能力 和 AgentCardpublic class HotelAgent { public void Attach(ITaskManager taskManager) { taskManager.OnMessageReceived QueryHotelsAsync; taskManager.OnAgentCardQuery GetAgentCardAsync; } private TaskA2AResponse QueryHotelsAsync(MessageSendParams messageSendParams, CancellationToken cancellationToken) { if (cancellationToken.IsCancellationRequested) { return Task.FromCanceledA2AResponse(cancellationToken); } // Process the message var messageText messageSendParams.Message.Parts.OfTypeTextPart().First().Text; // Create and return an artifact var message new AgentMessage() { Role MessageRole.Agent, MessageId Guid.NewGuid().ToString(), ContextId messageSendParams.Message.ContextId, Parts [new TextPart() { Text $ **酒店推荐** 根据您的需求为您推荐以下酒店 **豪华型 ⭐⭐⭐⭐⭐** 1. 上海外滩华尔道夫酒店 - 外滩核心位置江景房 - ¥2,500/晚起 - ⭐ 评分 4.9/5.0 **舒适型 ⭐⭐⭐⭐** 2. 上海静安香格里拉大酒店 - 静安寺商圈交通便利 - ¥1,200/晚起 - ⭐ 评分 4.7/5.0 **经济型 ⭐⭐⭐** 3. 全季酒店上海南京路店 - 南京路步行街旁 - ¥380/晚起 - ⭐ 评分 4.5/5.0 提示建议提前预订周末和节假日价格可能上涨 20-50%。 }] }; return Task.FromResultA2AResponse(message); } private TaskAgentCard GetAgentCardAsync(string agentUrl, CancellationToken cancellationToken) { if (cancellationToken.IsCancellationRequested) { return Task.FromCanceledAgentCard(cancellationToken); } var capabilities new AgentCapabilities() { Streaming true, PushNotifications false, }; return Task.FromResult(new AgentCard() { Name hotel-a2a-agent, Description hotel information agent, Url agentUrl, Version 1.0.0, DefaultInputModes [text], DefaultOutputModes [text], Capabilities capabilities, Skills [ new AgentSkill { Id hotel-recommendation, Name 酒店推荐, Description 根据目的地和预算推荐合适的酒店包括豪华型、舒适型、经济型, Tags [hotel, accommodation, booking, travel], Examples [推荐上海的酒店, 上海外滩附近有什么好酒店, 预算500以内的北京酒店], InputModes [text], OutputModes [text] } ], }); } }同样请参考天气Agent完成Program.cs中的注册。3.3 景点Agent创建一个PlanAgent类定义其能力 和 AgentCardpublic class PlanAgent { public void Attach(ITaskManager taskManager) { taskManager.OnMessageReceived QueryPlansAsync; taskManager.OnAgentCardQuery GetAgentCardAsync; } private TaskA2AResponse QueryPlansAsync(MessageSendParams messageSendParams, CancellationToken cancellationToken) { if (cancellationToken.IsCancellationRequested) { return Task.FromCanceledA2AResponse(cancellationToken); } // Process the message var messageText messageSendParams.Message.Parts.OfTypeTextPart().First().Text; // Create and return an artifact var message new AgentMessage() { Role MessageRole.Agent, MessageId Guid.NewGuid().ToString(), ContextId messageSendParams.Message.ContextId, Parts [new TextPart() { Text $ **景点推荐** 为您推荐上海必游景点 **历史文化类** 1. ️ 外滩 - 欣赏万国建筑博览群 2. 豫园 - 江南古典园林代表 3. 城隍庙 - 品尝地道上海小吃 **现代都市类** 4. 东方明珠塔 - 上海地标俯瞰浦江两岸 5. 陆家嘴 - 金融中心上海之巅 6. ️ 南京路步行街 - 购物天堂 **文艺休闲类** 7. 田子坊 - 文艺小店聚集地 8. 武康路 - 梧桐树下的法式风情 9. 世纪公园 - 城市绿肺亲子游首选 建议游玩时间3-4 天可覆盖主要景点 }] }; return Task.FromResultA2AResponse(message); } private TaskAgentCard GetAgentCardAsync(string agentUrl, CancellationToken cancellationToken) { if (cancellationToken.IsCancellationRequested) { return Task.FromCanceledAgentCard(cancellationToken); } var capabilities new AgentCapabilities() { Streaming true, PushNotifications false, }; return Task.FromResult(new AgentCard() { Name plan agent, Description travel plan attraction agent, Url agentUrl, Version 1.0.0, DefaultInputModes [text], DefaultOutputModes [text], Capabilities capabilities, Skills [ new AgentSkill { Id attraction-recommendation, Name 景点推荐, Description 推荐目的地的热门景点和游玩路线包括历史文化、现代都市、文艺休闲等类型, Tags [attraction, sightseeing, tourism, travel], Examples [上海有什么好玩的, 北京必去的景点, 杭州西湖怎么玩], InputModes [text], OutputModes [text] } ], }); } }同样请参考天气Agent完成Program.cs中的注册。3.4 主助手这里我们暂且命名为TravelPlannerClient在该项目中我们需要用到MAF因此我们先安装一下相关NuGet包Microsoft.Extensions.AI.OpenAI Microsoft.Agents.AI.A2A Microsoft.Agents.AI.Abstractions Microsoft.Extensions.AI.Abstractions首先创建一个ChatClient供主助手使用var chatClient new OpenAIClient( new ApiKeyCredential(openAIProvider.ApiKey), new OpenAIClientOptions { Endpoint new Uri(openAIProvider.Endpoint) }) .GetChatClient(openAIProvider.ModelId) .AsIChatClient();其次将远程A2A Agents转换为AIFunction Toolsvar agentEndpoints new[] { https://localhost:7021/a2a, // hotel agent https://localhost:7011/a2a, // weather agent https://localhost:7031/a2a // plan agent }; // Collecting all AI Tools var functionTools new ListAIFunction(); foreach (var endpoint in agentEndpoints) { var resolver new A2ACardResolver(new Uri(endpoint)); var card await resolver.GetAgentCardAsync(); var agent card.AsAIAgent(); // Convert A2A Agent to AIAgent instance functionTools.AddRange(AgentFunctionHelper.CreateFunctionTools(agent, card)); }然后创建一个可以调用A2A Agents的主Agent这一步是核心所在var mainAgent new ChatClientAgent( chatClient: chatClient, instructions: 你是一个智能旅行规划助手。你可以利用可用的工具来帮助用户完成任务。 当用户询问时请使用合适的工具获取信息然后回复用户。 , tools: [.. functionTools] );最后我们可以做下测试// 用户请求 - 测试不同的技能调用 var userRequests new[] { 查询一下上海的天气情况, 推荐一下上海的酒店, 帮我规划一下今日上海的一日游景点并告诉我该如何穿衣服, }; foreach (var userRequest in userRequests) { Console.WriteLine(━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━); Console.WriteLine($ 用户请求: {userRequest}); Console.WriteLine(━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━); // 执行 Agent Console.WriteLine(⏱️ 主 Agent 处理中...); var response await mainAgent.RunAsync(userRequest); Console.WriteLine($ 回答:\n{response.Text}); Console.WriteLine(); }现在我们来看看测试结果case1查询一下上海的天气情况简单任务可以看到主助手通过调用天气Agent获取天气信息完成了回答。case2推荐上海的酒店简单任务可以看到主助手通过调用酒店Agent获取酒店信息完成了回答case3帮我规划一下今日上海的一日游景点并告诉我该如何穿衣服复杂任务

相关文章:

快速集成A2A Agent

面我们提到可以将MCP服务也封装为一个Tool(AIFunction)让Agent调用,这里A2A Agent也是一样的道理。 这样做的好处是:让MAF中的Agent像调用本地函数一样调用远程A2A Agent 或 MCP Server。 下面的代码展示了在MAF中将A2A Card转换…...

经典游戏现代化:让魔兽争霸III重获新生的适配工具

经典游戏现代化:让魔兽争霸III重获新生的适配工具 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 当你在4K显示器上启动魔兽争霸III时&…...

【独家首发】Python WASM安全白皮书:XSS绕过、WASI权限逃逸、沙箱逃逸——3类高危漏洞POC及修复代码(限前500名开发者获取)

第一章:Python WASM安全白皮书导论 WebAssembly(WASM)正迅速成为云原生、边缘计算与浏览器沙箱场景中关键的安全执行载体。随着 Python 生态对 WASM 的支持逐步成熟(如 Pyodide、WASI-SDK 与 GraalPy 的跨编译能力)&am…...

手把手教你部署DeepSeek-R1:纯CPU环境搭建逻辑推理AI全攻略

手把手教你部署DeepSeek-R1:纯CPU环境搭建逻辑推理AI全攻略 1. 从零开始:为什么你需要一个本地推理引擎 想象一下这个场景:你正在处理一份包含敏感数据的文档,需要AI帮你分析逻辑关系,但公司规定数据不能上传到云端。…...

告别盲目构筑烦恼:Path of Building带来的流放之路角色优化变革

告别盲目构筑烦恼:Path of Building带来的流放之路角色优化变革 【免费下载链接】PathOfBuilding Offline build planner for Path of Exile. 项目地址: https://gitcode.com/gh_mirrors/pat/PathOfBuilding 在《流放之路》的世界里,每一个角色构…...

SEO_新手必看的SEO优化入门教程与基础操作指南

<h2>SEO优化入门&#xff1a;为新手量身打造的指南</h2> <p>SEO优化&#xff0c;也就是搜索引擎优化&#xff0c;是一个让你的网站在搜索引擎结果中获得更高排名的过程。对于新手来说&#xff0c;SEO可能看起来有点复杂&#xff0c;但只要掌握了一些基础的操…...

如何用开源OCR突破效率瓶颈?Umi-OCR三大核心优势深度解析

如何用开源OCR突破效率瓶颈&#xff1f;Umi-OCR三大核心优势深度解析 【免费下载链接】Umi-OCR Umi-OCR: 这是一个免费、开源、可批量处理的离线OCR软件&#xff0c;适用于Windows系统&#xff0c;支持截图OCR、批量OCR、二维码识别等功能。 项目地址: https://gitcode.com/G…...

MWGA 双线编译技术方案:一份代码,双端生成

核心技术原理MWGA 的双线编译基于模块化架构与跨平台编译引擎&#xff0c;实现「一份代码&#xff0c;双向生成」。代码分层&#xff1a; 将代码划分为核心业务逻辑层与端侧 UI 适配层。核心层包含数据模型、算法、权限校验等通用功能&#xff0c;纯 C# 编写且不依赖端侧 API&a…...

ComfyUI-Manager终极指南:10个技巧助你快速掌握AI绘图插件管理

ComfyUI-Manager终极指南&#xff1a;10个技巧助你快速掌握AI绘图插件管理 【免费下载链接】ComfyUI-Manager 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-Manager ComfyUI-Manager是一款专为AI绘图工具ComfyUI设计的插件管理神器&#xff0c;能够帮助用户轻…...

OpenClaw网关配置详解:Qwen3-32B镜像的端口与安全设置

OpenClaw网关配置详解&#xff1a;Qwen3-32B镜像的端口与安全设置 1. 为什么需要关注网关配置&#xff1f; 上周我在本地部署Qwen3-32B模型时&#xff0c;遇到了一个尴尬的问题&#xff1a;凌晨3点被安全团队电话叫醒&#xff0c;原因是OpenClaw的测试端口被扫描到异常流量。…...

AXI Quad SPI IP核在多主设备环境下的三态总线设计与实现

1. AXI Quad SPI IP核的多主设备挑战 第一次接触AXI Quad SPI IP核的多主设备配置时&#xff0c;我踩过一个典型的坑&#xff1a;两个FPGA内部主模块同时向SPI总线发送数据&#xff0c;导致MOSI信号出现毛刺。这种情况在共享总线架构中非常常见&#xff0c;而三态总线设计正是解…...

CVPR2023新作DeSTSeg实战:用‘去噪学生’和‘分割网络’搞定工业缺陷检测

DeSTSeg工业缺陷检测实战&#xff1a;从顶会论文到产线落地的全链路指南 工业质检领域正经历一场静悄悄的革命——传统规则算法逐渐被基于深度学习的异常检测模型取代&#xff0c;但产线上随机出现的油渍、反光、机械划痕仍是算法工程师的噩梦。去年CVPR最佳论文提名作品DeSTSe…...

深入解析 ValueError: DataFrame 形状无法确定的三大实战解决方案

1. 从报错信息看DataFrame形状问题 第一次遇到ValueError: could not determine the shape of object type DataFrame这个错误时&#xff0c;我正急着处理一个Excel数据导入任务。当时用pd.read_excel读取文件后直接扔进PyTorch模型&#xff0c;结果程序直接罢工。这个报错字面…...

别再混着用了!Matplotlib的两种画图接口(plt.plot vs. ax.plot)到底怎么选?

Matplotlib接口选择指南&#xff1a;何时用plt.plot&#xff0c;何时用ax.plot&#xff1f; 在数据可视化领域&#xff0c;Matplotlib无疑是Python生态中最强大的工具之一。但许多用户在使用过程中常常困惑&#xff1a;为什么有的代码用plt.plot()&#xff0c;有的却用ax.plot(…...

为什么FNF PsychEngine能成为节奏游戏创作的首选工具?

为什么FNF PsychEngine能成为节奏游戏创作的首选工具&#xff1f; 【免费下载链接】FNF-PsychEngine Engine originally used on Mind Games mod 项目地址: https://gitcode.com/gh_mirrors/fn/FNF-PsychEngine 如果你对Friday Night Funkin&#xff08;FNF&#xff09;…...

MCP服务弹性伸缩失效导致预算超支?从冷启动延迟到空闲实例回收的7步精准控费法

第一章&#xff1a;MCP服务弹性伸缩失效的根本归因诊断MCP&#xff08;Microservice Control Plane&#xff09;服务在生产环境中频繁出现弹性伸缩延迟、扩缩容不触发或缩容后 Pod 持续残留等异常现象&#xff0c;其表象背后往往隐藏着多层耦合的系统性缺陷。深入诊断需穿透监控…...

AI读脸术本地运行:私有化部署人脸分析系统详细步骤

AI读脸术本地运行&#xff1a;私有化部署人脸分析系统详细步骤 1. 什么是AI读脸术&#xff1a;不联网也能识别人脸属性 你有没有想过&#xff0c;一张普通照片里藏着多少信息&#xff1f;比如这张自拍——不用上传到任何云端服务&#xff0c;也不用担心数据被谁看到&#xff…...

【2026年最新600套毕设项目分享】基于JavaWeb医院住院信息管理系统(14279)

有需要的同学&#xff0c;源代码和配套文档领取&#xff0c;加文章最下方的名片哦 一、项目演示 项目演示视频 二、资料介绍 完整源代码&#xff08;前后端源代码SQL脚本&#xff09;配套文档&#xff08;LWPPT开题报告/任务书&#xff09;远程调试控屏包运行一键启动项目&…...

DDrawCompat终极指南:让Windows 11完美运行经典DirectX老游戏

DDrawCompat终极指南&#xff1a;让Windows 11完美运行经典DirectX老游戏 【免费下载链接】DDrawCompat DirectDraw and Direct3D 1-7 compatibility, performance and visual enhancements for Windows Vista, 7, 8, 10 and 11 项目地址: https://gitcode.com/gh_mirrors/dd…...

LangFlow实战案例:如何用拖拽方式搭建智能写作助手

LangFlow实战案例&#xff1a;如何用拖拽方式搭建智能写作助手 1. 引言&#xff1a;为什么选择LangFlow 在AI技术快速发展的今天&#xff0c;大语言模型已经展现出强大的文本生成能力。然而&#xff0c;对于大多数非技术背景的内容创作者来说&#xff0c;直接调用API或编写复…...

ModelScope与Hugging Face中文API调用全攻略:从安装到实战代码解析

ModelScope与Hugging Face中文API调用全攻略&#xff1a;从安装到实战代码解析 如果你正在寻找一个能够快速上手ModelScope和Hugging Face API的指南&#xff0c;特别是针对中文开发者的实用教程&#xff0c;那么你来对地方了。这两个平台作为当前最受欢迎的AI模型开源社区&…...

IE浏览器已成过去式?Win10用户必看的IE性能优化与安全设置

IE浏览器性能优化与安全设置指南&#xff1a;告别卡顿与劫持困扰 微软宣布放弃IE浏览器已经过去多年&#xff0c;但这款"古董级"浏览器依然顽固地存在于我们的Windows系统中。对于许多企业用户和特定行业从业者来说&#xff0c;完全卸载IE并非可行选项——某些老旧的…...

Java面试题精讲:Qwen-Image-Edit-F2P集成开发常见问题

Java面试题精讲&#xff1a;Qwen-Image-Edit-F2P集成开发常见问题 1. 引言 最近在Java技术面试中&#xff0c;我发现很多候选人在AI模型集成方面存在不少困惑。特别是像Qwen-Image-Edit-F2P这样的人脸驱动图像生成模型&#xff0c;虽然功能强大&#xff0c;但在实际Java项目集…...

本地数据库工具革新:浏览器应用如何3分钟解决SQLite查看难题

本地数据库工具革新&#xff1a;浏览器应用如何3分钟解决SQLite查看难题 【免费下载链接】sqlite-viewer View SQLite file online 项目地址: https://gitcode.com/gh_mirrors/sq/sqlite-viewer 在数字化开发的日常工作流中&#xff0c;SQLite数据库文件查看往往成为效率…...

攻克Atlas OS中Xbox应用登录错误0x89235107的完整方案

攻克Atlas OS中Xbox应用登录错误0x89235107的完整方案 【免费下载链接】Atlas &#x1f680; An open and lightweight modification to Windows, designed to optimize performance, privacy and security. 项目地址: https://gitcode.com/GitHub_Trending/atlas1/Atlas …...

UEFITool终极指南:掌握UEFI固件解析与编辑的核心技术

UEFITool终极指南&#xff1a;掌握UEFI固件解析与编辑的核心技术 【免费下载链接】UEFITool UEFI firmware image viewer and editor 项目地址: https://gitcode.com/gh_mirrors/ue/UEFITool UEFITool是一款功能强大的开源UEFI固件分析工具&#xff0c;能够深入解析和编…...

C#的readonly struct:不可变值类型的性能优势

在C#开发中&#xff0c;值类型的性能优化一直是开发者关注的焦点。readonly struct作为不可变值类型&#xff0c;不仅能够保证线程安全&#xff0c;还能带来显著的性能优势。本文将深入探讨readonly struct的设计原理及其在性能优化中的独特价值&#xff0c;帮助开发者更好地利…...

OpenClaw本地搜索引擎:GLM-4.7-Flash优化个人文件检索

OpenClaw本地搜索引擎&#xff1a;GLM-4.7-Flash优化个人文件检索 1. 为什么需要智能化的本地文件搜索 作为一个长期被文件管理困扰的技术写作者&#xff0c;我的MacBook里堆积着超过2万份文档——技术笔记、项目草稿、参考资料、会议记录杂乱地分布在各个角落。传统的文件名…...

技术深度:Windows任务栏透明化引擎TranslucentTB架构原理与高级配置指南

技术深度&#xff1a;Windows任务栏透明化引擎TranslucentTB架构原理与高级配置指南 【免费下载链接】TranslucentTB A lightweight utility that makes the Windows taskbar translucent/transparent. 项目地址: https://gitcode.com/gh_mirrors/tr/TranslucentTB Tran…...

别再只盯着top命令了!用sysdig揪出Linux服务器上伪装成log、ntools的xmrig挖矿木马

深度追踪&#xff1a;用sysdig揪出Linux服务器上伪装成log、ntools的xmrig挖矿木马 当服务器CPU突然飙高&#xff0c;而top命令却显示一切正常时&#xff0c;作为运维工程师的你一定知道事情没那么简单。最近&#xff0c;一种新型的xmrig挖矿木马正在Linux服务器上肆虐&#xf…...