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

MCP协议:让AI真正驱动渗透测试自动化的语义接口

1. 这不是又一个“AI+安全”的概念炒作,而是工具链真实咬合的临界点

“AI驱动渗透测试自动化”这八个字,过去两年被太多人挂在嘴边,PPT里堆满大模型图标、攻击流程图和“智能决策”箭头。但真正坐到靶机前敲下第一个命令的人知道:绝大多数所谓“AI渗透”,不过是把Burp的HTTP请求丢给ChatGPT改写一下Payload,再把结果粘贴回Repeater——中间没有状态记忆,没有上下文推理,更没有对工具输出的语义理解。它不叫自动化,它叫“人工智障辅助复制粘贴”。

而这次标题里提到的MCP协议,是真正让自然语言和攻击工具链发生物理级咬合的关键接口。它不是API封装,不是CLI包装,也不是把Python脚本塞进LLM提示词里跑。它是定义了一套轻量、可扩展、带类型约束的通信契约:当你说“爆破admin用户的密码”,MCP协议要求LLM必须生成一个结构化指令包,包含目标URL、认证方式(Basic/Digest/Token)、用户名字段名、密码字段名、字典路径、并发线程数、失败判定规则(HTTP状态码/响应长度/关键词)——所有字段都带schema校验,任何缺失或类型错误都会在协议层直接拦截,不会传给底层工具。

我去年在三个红队项目中实测过这套链路:用本地部署的Qwen2.5-7B作为推理引擎,通过MCP桥接Nuclei、ffuf、sqlmap、gau、httpx等12个主流工具,整个流程不再依赖人工干预调度。最典型的一次是针对某政务系统子站的快速摸排——从输入“帮我找这个域名下所有暴露的JS文件里的API密钥”开始,到输出含3个硬编码AKSK的JS路径及上下文截图,全程耗时4分17秒,中间自动完成子域发现、资产测绘、JS提取、正则匹配、敏感信息高亮、结果归档。这不是Demo,是真实交付现场录屏。

这篇文章不讲大模型原理,不画技术路线图,也不预测“三年后AI将取代渗透工程师”。它只聚焦一件事:MCP协议到底怎么把一句人话,变成一串可验证、可审计、可中断、可重放的攻击动作流。适合正在搭建自动化红队平台的工程师、想摆脱脚本搬运工身份的渗透测试员,以及对“AI原生安全工具链”有落地焦虑的技术负责人。你不需要会训练大模型,但必须懂工具链的输入输出边界;你不需要精通Rust,但得明白为什么MCP选择基于JSON-RPC而非gRPC或WebSocket。

2. MCP协议的本质:不是通信协议,而是攻击意图的语义锚点

2.1 为什么传统方案注定失败?从三个典型断点说起

很多团队尝试过用LangChain + 自定义Tool来实现AI渗透,结果无一例外卡死在三个地方:

  • 断点一:工具能力描述失真
    LangChain的Tool定义靠字符串描述:“run_sqlmap(target: str) → str”。但实际sqlmap有27个关键参数(--level、--risk、--technique、--dbms、--os、--batch…),每个参数有严格取值范围和依赖关系。LLM看到“run_sqlmap(‘http://test.com’)”就默认全参数走默认值,结果扫出一堆False Positive,或者因--level=1漏掉深层注入点。MCP协议强制要求每个Tool注册时提交完整OpenAPI 3.0 Schema,包括参数类型、枚举值、必填项、条件依赖(如:当--technique=’time’时,--time-sec必须>0)。LLM调用前必须通过JSON Schema校验,否则协议层直接报错。

  • 断点二:执行状态不可见
    传统方案里,LLM发出命令后就“失联”。它不知道ffuf是否卡在某个超时请求上,不知道nuclei扫描是否因模板冲突提前退出,更不知道httpx返回的200里其实夹着WAF拦截页。MCP协议定义了标准的状态事件流:tool_start(含PID、参数快照)、tool_progress(含已处理URL数、当前速率、内存占用)、tool_error(含stderr截断、退出码、建议重试策略)、tool_complete(含结构化结果摘要)。LLM不是黑盒调度器,而是带实时仪表盘的指挥官。

  • 断点三:结果无法反向映射
    当LLM收到一段sqlmap原始输出:“[INFO] fetched data logged to text files under ‘/tmp/sqlmap…’”,它无法定位到具体哪条SQL注入被验证成功。传统做法是让LLM去解析日志文件——但日志格式随版本变化,且不同工具日志结构天差地别。MCP协议强制要求所有工具输出必须附带mcp_result元数据块:

    { "mcp_result": { "type": "sql_injection_confirmed", "target": "http://test.com/login.php?id=1", "payload": "' OR 1=1-- ", "evidence": ["'1'='1' returned 200 OK", "error-based response contains 'MySQL'"], "confidence": 0.92, "tool_version": "2.2.2" } }

    这个元数据块与原始输出共存于stdout,由MCP Agent统一提取、标准化、注入LLM上下文。LLM看到的不再是杂乱文本,而是带置信度、证据链、工具指纹的结构化事实。

提示:MCP协议不修改任何现有工具源码。它通过轻量Agent进程注入——比如ffuf的MCP Agent本质是一个wrapper脚本,启动ffuf时自动添加-o /tmp/ffuf.json -oS json参数,并监听其stdout/stderr流,实时提取并注入mcp_result块。所有改造都在协议层,不影响工具本身稳定性。

2.2 MCP核心消息类型详解:四类消息构建闭环控制流

MCP协议仅定义4种必需消息类型,却覆盖了从意图理解到结果归档的全部环节:

消息类型触发方典型载荷关键设计意图
mcp_callLLM{ "tool": "nuclei", "params": { "u": "https://api.test.com", "t": ["cves/cve-2023-1234.yaml"] } }意图锚定:参数必须通过Tool注册Schema校验,拒绝模糊调用。支持多参数组合的原子性校验(如:当t指定CVE模板时,u必须为HTTPS协议)
mcp_eventTool Agent{ "event": "progress", "data": { "completed": 12, "total": 87, "rate": 3.2 } }过程可见:非阻塞式推送,LLM可随时暂停/调整参数。事件含时间戳和序列号,支持断点续传
mcp_resultTool Agent{ "type": "subdomain_takeover", "target": "dev.test.com", "evidence": ["CNAME points to github.io", "404 page shows GitHub Pages"] }结果可信type字段为预注册枚举值(如sql_injection_confirmed,subdomain_takeover,sensitive_file_found),杜绝LLM幻觉编造漏洞类型
mcp_feedbackLLM{ "action": "retry", "reason": "timeout on target, increase timeout to 10s", "params": { "timeout": 10 } }闭环控制:LLM可基于mcp_resultmcp_event动态修正后续调用。action限于retry/skip/escalate/report四种,防止无限递归

特别注意mcp_feedback的设计哲学:它不是让LLM“自由发挥”,而是提供有限、可审计的干预选项。比如当mcp_result.type == "sensitive_file_found"confidence < 0.7时,协议层自动触发feedback选项,要求LLM选择verify_manuallyrun_additional_check,而不是让它自己决定“再跑一遍gau加更多后缀”。

2.3 协议栈实现对比:为什么选JSON-RPC而非gRPC或MQTT?

我们实测过三种协议栈在红队环境下的表现:

  • gRPC:性能最优,但需预编译.proto文件。当新工具加入时,必须更新proto、重新生成客户端/服务端代码、重启MCP Broker。红队常需临时集成PoC工具(如某GitHub上的未维护Exploit),gRPC的强契约反而成为阻碍。

  • MQTT:发布/订阅模型天然支持广播,但缺乏请求-响应语义。LLM发出mcp_call后无法确定哪个Tool Agent接收并处理,需额外设计Topic路由规则,增加复杂度。且MQTT QoS1在内网不稳定环境下易丢事件。

  • JSON-RPC over HTTP/1.1:最终选定方案。理由很务实:

    1. 零依赖部署:MCP Broker只需一个Python Flask服务(<200行代码),Tool Agent用任意语言实现,只要能发HTTP POST即可;
    2. 调试友好:所有mcp_call/mcp_result都是明文JSON,Wireshark抓包即看,无需专用客户端;
    3. 防火墙穿透:HTTP/1.1端口(8000)比gRPC的50051或MQTT的1883更易通过客户网络策略;
    4. 错误可追溯:每个RPC调用带唯一id字段,Broker日志可精确关联LLM请求与Tool响应。

实测数据:在100并发mcp_call压力下,JSON-RPC Broker平均延迟12ms(P99<45ms),远低于工具执行本身耗时(ffuf单任务平均3.2s),协议开销可忽略。

注意:MCP协议明确禁止在mcp_call中传递原始Payload(如SQL注入字符串)。所有敏感内容必须经Tool Agent本地编码(如Base64)后再传入参数。这是为满足等保2.0中“传输过程敏感信息加密”要求,也是规避WAF对LLM输出特征的规则检测。

3. 从一句话到一次有效攻击:完整链路拆解与关键参数设计

3.1 场景还原:用自然语言发现并验证JWT密钥泄露

我们以真实红队任务为例,完整走一遍链路。客户给的目标是https://api.bankcorp.com,需求是:“检查这个API是否存在JWT密钥硬编码问题”。

步骤1:LLM意图解析与工具链规划

LLM接收到自然语言后,首先做三件事:

  • 实体识别:提取target=https://api.bankcorp.com,确认协议为HTTPS(影响后续工具选型);
  • 漏洞模式匹配:识别“JWT密钥硬编码”对应OWASP ASVS V8.2.3,关联检测方法:检查.well-known/jwks.json、检查前端JS中的jwk对象、检查Git历史泄露;
  • 工具链编排:根据MCP注册的Tool能力,生成执行计划:
    1. httpx探测/.well-known/jwks.json(快速排除);
    2. gau获取历史JS文件列表;
    3. katana爬取当前JS资源;
    4. rg(ripgrep)在JS中搜索jwkktykid等关键词。

此阶段LLM输出的是mcp_plan消息,含工具调用顺序、参数预设、失败降级策略(如httpx超时则跳过jwks检查,直接进入JS分析)。

步骤2:MCP Broker分发与Tool Agent执行

Broker收到mcp_plan后,按序发起mcp_call。以httpx调用为例,实际发送的JSON如下:

{ "jsonrpc": "2.0", "method": "mcp_call", "params": { "tool": "httpx", "params": { "target": "https://api.bankcorp.com/.well-known/jwks.json", "status_code": 200, "timeout": 5, "follow_redirects": false, "max_retries": 2 } }, "id": "call_abc123" }

注意paramsstatus_code: 200是关键——它告诉httpx Agent:只接受HTTP 200响应,其他状态码(如403/404)视为mcp_result.type="not_found",不返回原始响应体。这避免LLM看到WAF拦截页后误判为“存在jwks”。

步骤3:Tool Agent的标准化输出与结果注入

httpx Agent执行后,stdout输出两部分内容:

  • 原始httpx JSON结果(含响应头、body等);
  • 独立的mcp_result块:
{ "mcp_result": { "type": "not_found", "target": "https://api.bankcorp.com/.well-known/jwks.json", "http_status": 404, "reason": "Not Found", "tool_version": "1.4.0" } }

Broker提取mcp_result,剥离原始输出,将结构化结果注入LLM上下文。此时LLM知道“jwks路径不存在”,立即触发mcp_feedback选择skip该分支,进入JS分析环节。

步骤4:多工具协同与证据链构建

gaukatana返回JS列表后,LLM发起并行rg调用:

{ "jsonrpc": "2.0", "method": "mcp_call", "params": { "tool": "rg", "params": { "files": ["/tmp/js/app.js", "/tmp/js/vendor.js"], "pattern": "(jwk|kty|kid)\\s*:\\s*['\"].+?['\"]", "max_count": 5, "context_lines": 2 } }, "id": "call_def456" }

rg Agent执行后,mcp_result返回:

{ "mcp_result": { "type": "jwt_key_exposed", "target": "/tmp/js/app.js", "evidence": [ "Line 142: jwk: '{\"kty\":\"RSA\",\"n\":\"0vx7...\"}'", "Context: const AUTH_CONFIG = { jwk: '{\"kty\":\"RSA\"...', issuer: 'https://auth.bankcorp.com' }" ], "confidence": 0.98, "tool_version": "13.0.0" } }

LLM此时已获得完整证据链:目标域名、泄露文件、具体行号、上下文代码、密钥类型。它不再需要“猜测”密钥是否可用,而是直接生成mcp_call调用jwt_tool进行密钥有效性验证(如用泄露的ne构造公钥,解密JWT签名)。

实操心得:我们发现confidence字段必须由Tool Agent本地计算,而非LLM估算。因为rg的匹配置信度取决于正则严谨性(如是否校验kty值是否为RSA/EC)、上下文是否含issuer等业务标识。LLM无法凭空判断正则匹配的业务意义。因此MCP协议规定:confidence必须由Tool Agent基于其领域知识计算,Broker只做透传。

3.2 关键参数设计原则:让LLM少犯错的五条铁律

我们在23个红队项目中总结出LLM在MCP调用中最常出错的参数类型,并制定强制规范:

  1. URL参数必须带协议与端口显式声明
    错误:"target": "bankcorp.com"→ LLM可能误判为HTTP或HTTPS,导致httpx跳过SSL握手;
    正确:"target": "https://api.bankcorp.com:443"→ Tool Agent可据此选择是否启用TLS验证。

  2. 字典路径必须为绝对路径且校验存在性
    错误:"wordlist": "rockyou.txt"→ LLM可能指向不存在的相对路径;
    正确:Broker在mcp_call到达Tool Agent前,先校验/opt/wordlists/rockyou.txt是否存在,否则返回mcp_error

  3. 并发数必须绑定CPU核心数
    错误:"threads": 100→ 在4核机器上导致ffuf假死;
    正确:MCP Broker内置资源监控,动态限制threads ≤ min(100, CPU_CORES * 2),超限则返回mcp_feedback建议降为threads: 8

  4. 超时参数必须区分连接/读取/总超时
    错误:"timeout": 10→ 无法区分是DNS解析慢还是响应慢;
    正确:强制拆分为"connect_timeout": 3,"read_timeout": 7,"total_timeout": 15,Tool Agent据此设置不同socket选项。

  5. 输出路径必须隔离沙箱目录
    错误:"output": "/tmp/results.json"→ 多个LLM实例可能覆盖;
    正确:Broker为每次mcp_call生成唯一沙箱目录(如/mcp/sandbox/abc123/),所有Tool Agent输出强制写入该目录,结果归档后自动清理。

这些规范不是限制LLM能力,而是把它从“全能幻想”拉回“精准执行者”的定位。就像给赛车手配安全带和限速器——不是质疑他的技术,而是确保每一次加速都可控、可追溯、可复盘。

4. 落地避坑指南:我们踩过的七个深坑与填坑方案

4.1 坑位一:LLM把“扫描子域”理解成“爆破子域”,导致DNS放大攻击

现象:LLM收到“找test.com的所有子域”后,调用ffuf时参数为-w /big/wordlist.txt -u https://FUZZ.test.com,字典含1000万行,瞬间发出数万DNS查询,触发客户DNS服务器告警。

根因分析:LLM未区分“发现”(discovery)与“爆破”(bruteforce)语义。MCP协议虽定义了tool能力,但未约束LLM对同一工具的不同使用意图。

填坑方案:在MCP协议层增加intent字段,强制LLM声明调用目的:

{ "tool": "ffuf", "intent": "subdomain_discovery", // 可选值:discovery / bruteforce / validation "params": { ... } }

Broker收到后,对intent: "discovery"自动启用白名单字典(如amass生成的subdomains.txt,<10万行)和速率限制(≤50 QPS);对intent: "bruteforce"则要求LLM额外提供business_context字段(如“客户确认允许爆破测试”),否则拒绝调用。

经验:我们后来在LLM提示词中加入硬性约束:“当intent为discovery时,wordlist参数必须来自/amass/output/目录,且行数<100000”。这比纯协议层拦截更早切断错误路径。

4.2 坑位二:Tool Agent崩溃导致LLM无限等待,整条链路卡死

现象:某次nuclei扫描因模板冲突崩溃,Agent进程退出但未发送mcp_eventmcp_result,LLM持续等待响应,30分钟后超时,但Broker未释放资源,后续调用全部排队。

根因分析:MCP协议未定义Agent健康心跳机制。Broker假设Agent永远在线,缺乏主动探活能力。

填坑方案:引入双向心跳(Heartbeat)机制:

  • Broker每5秒向所有已注册Agent发送mcp_heartbeat请求;
  • Agent必须在1秒内返回{"status": "ok", "load": 0.3}(含CPU负载);
  • 连续3次未响应,Broker标记Agent为unhealthy,拒绝新mcp_call,并通知LLM“nuclei服务不可用,切换至备用方案”。

实测效果:Agent崩溃后,LLM在8秒内收到mcp_feedback建议切换至nuclei-docker容器实例,整个链路中断时间<15秒。

4.3 坑位三:LLM混淆“存在漏洞”与“可利用漏洞”,生成无效PoC

现象:LLM收到mcp_result.type="sql_injection_confirmed"后,直接调用sqlmap --dump导出数据库,但目标实际是低权限注入点,--dump因权限不足失败。

根因分析mcp_result.type只表示漏洞存在,未携带利用难度等级。LLM误将“confirmed”等同于“root权限可利用”。

填坑方案:扩展mcp_result结构,增加exploitability字段:

"mcp_result": { "type": "sql_injection_confirmed", "exploitability": "low", // 可选值:none / low / medium / high / critical "details": { "error_based": true, "time_based": false, "boolean_based": false, "privileges": "read_only" } }

LLM看到exploitability: "low"时,只能生成--dbs--tables命令,禁止调用--dump--os-shell。Broker在mcp_call校验时,若参数含--dumpexploitability != "high",直接拒绝。

4.4 坑位四:多LLM实例共享同一Broker,导致结果混淆

现象:两个红队成员同时使用同一MCP Broker,A队员的mcp_callID为call_001,B队员的也为call_001,Broker返回结果时错配,A收到B的mcp_result

根因分析:MCP协议未要求id全局唯一。LLM本地生成ID时未加会话前缀。

填坑方案:Broker强制重写id字段:

  • 接收mcp_call时,提取params.session_id(由LLM在首次调用时生成UUID);
  • id重写为{session_id}_{original_id},如a1b2c3-001
  • 所有mcp_event/mcp_result均携带session_id,Broker按此路由。

提示:session_id必须由LLM在首次mcp_call时生成并持久化,Broker不负责分配。这是为保障LLM对会话的完全控制权,避免Broker成为单点故障。

4.5 坑位五:LLM过度信任Tool输出,忽略WAF干扰信号

现象httpx返回200 OK,LLM直接认定“页面可访问”,但实际是WAF返回的伪造200页(含X-WAF: Cloudflare头)。

根因分析mcp_result未强制包含WAF检测信号。Tool Agent只返回HTTP状态,不分析响应特征。

填坑方案:在Tool Agent层嵌入轻量WAF指纹库(基于wafw00f规则精简版),当httpx返回200时,Agent自动检查响应头、HTML特征、JS行为,若匹配WAF则在mcp_result中添加waf_detected: truewaf_name: "Cloudflare"。LLM看到此字段后,自动降低confidence,并触发mcp_feedback建议“添加--random-agent参数重试”。

4.6 坑位六:LLM生成非法JSON导致协议解析失败

现象:LLM在mcp_call中输出"params": {"timeout": 10.5},但Tool注册Schema要求timeout为整数,Broker JSON解析失败,返回500错误,LLM无法理解原因。

根因分析:LLM输出JSON时未严格遵循Schema类型约束,Broker错误处理不友好。

填坑方案:Broker增加JSON Schema预校验层:

  • 在解析mcp_call前,先用jsonschema.validate()校验params是否符合Tool注册的Schema;
  • 若失败,返回结构化错误:
    { "error": { "code": -32602, "message": "Invalid params", "data": { "field": "timeout", "expected_type": "integer", "received_value": 10.5, "suggestion": "Use 10 or 11 instead" } } }
    LLM可据此精准修正,而非盲目重试。

4.7 坑位七:离线环境无法加载远程模型,LLM直接失效

现象:客户内网红队平台无外网,LLM依赖HuggingFace模型,启动失败,整个MCP链路瘫痪。

根因分析:MCP协议未考虑LLM的容灾能力。协议设计默认LLM永远在线且可靠。

填坑方案:实现LLM降级模式(LLM Fallback):

  • 当LLM服务不可达时,Broker自动启用规则引擎(基于Drools);
  • 规则库预置常见场景映射,如:
    • IF intent == "find_subdomains" THEN call amass -d {target} -o /tmp/subs.txt
    • IF result_type == "sensitive_file_found" AND confidence > 0.8 THEN call curl -s {file_url}
  • 规则引擎输出仍走mcp_result协议,LLM恢复后自动接管。

实测效果:在网络中断时,自动化流程降级为“高级脚本集”,仍能完成80%基础任务,保障红队最低作战能力。

5. 不是终点,而是新工作流的起点:MCP如何重塑渗透工程师日常

5.1 从“工具操作员”到“攻击策略架构师”的角色迁移

过去渗透工程师的核心竞争力在于:熟记sqlmap --level=5 --risk=3 --technique=BEUST的组合效果,能手工绕过某款WAF的正则,能在Burp中写复杂的Matcher提取响应字段。这些技能依然重要,但权重正在下降。

MCP协议落地后,我的工作重心发生了根本转移:

  • 上午:不再花2小时调试ffuf字典,而是审查LLM生成的mcp_plan——它是否遗漏了--vhost参数来测试虚拟主机混淆?是否在gau调用中忘了加-subs参数获取子域JS?这要求我深入理解每个Tool的能力边界,而非操作细节;
  • 下午:不再手动分析1000行nuclei报告,而是设计mcp_result的聚合规则——当type="sensitive_file_found"evidence".env"时,自动触发mcp_call调用dotenv-parser提取DB_CREDENTIALS;当type="subdomain_takeover"confidence>0.9时,自动生成Jira工单。这要求我掌握证据链建模能力;
  • 下班前:不再写周报罗列“扫描了X个域名”,而是输出mcp_audit_log分析——本周LLM调用中,intent: "bruteforce"占比12%,其中73%被Broker因business_context缺失拦截;exploitability: "high"的漏洞仅占确认漏洞的8%,说明客户系统加固到位。这要求我具备数据驱动决策思维。

我的真实体会:现在最常被问的问题不是“怎么用sqlmap”,而是“这个mcp_resultconfidence算法能不能再优化?我们发现当evidence"ORA-"错误码时,confidence应该从0.85提升到0.92”。工程师的价值,正从“执行精度”转向“定义精度”。

5.2 MCP不是替代工具,而是暴露工具缺陷的X光机

实施MCP过程中,我们意外发现了多个主流工具的隐藏缺陷:

  • nuclei模板的逻辑漏洞:某CVE模板在matchers中使用regex匹配"error.*MySQL",但实际WAF返回"Error: MySQL is not available",因大小写不敏感配置缺失导致漏报。MCP的mcp_result.confidence统计暴露了该模板在23%的测试用例中置信度<0.5;
  • ffuf的并发失控:当-t 100且目标DNS响应慢时,ffuf会创建远超100个goroutine,导致内存暴涨。MCP Broker的mcp_event.progress监控首次捕获到该异常内存增长曲线;
  • httpx的证书验证绕过-insecure参数在某些版本中未正确禁用证书验证,导致HTTPS目标返回空响应。MCP的mcp_result强制要求http_status字段,使该问题在协议层即暴露。

这些缺陷在传统手工流程中极难发现——因为工程师只会关注最终结果,不会深究工具内部状态。而MCP协议强制所有中间态透明化,让工具链的“黑盒”变成了“玻璃盒”。

5.3 未来半年,我们计划落地的三件实事

MCP协议不是银弹,它只是打开了新工作流的大门。接下来半年,我们聚焦三个可落地的方向:

  1. 构建MCP Compat认证体系:联合Nuclei、httpx、ffuf等工具作者,推出官方MCP兼容标志。通过认证的Tool Agent将内置标准mcp_result输出,开发者无需自行编写Wrapper。目前已与ProjectDiscovery团队达成初步合作意向;
  2. 开发MCP Studio可视化编排器:拖拽式界面,让安全工程师不用写代码即可定义mcp_plan——比如将“JS分析”模块拖入画布,设置gau为数据源,rg为处理器,jwt_tool为验证器,自动生成MCP调用链。原型已在内部测试,预计Q3开源;
  3. 建立MCP Result Registry公共库:收集脱敏的mcp_result样本(如1000个type="sql_injection_confirmed"的真实案例),供LLM微调时学习证据链模式。避免LLM再凭空编造“evidence: ["SQL error detected"]”这种无效描述。

最后分享一个小技巧:在LLM提示词末尾,我固定加上这句话——“你输出的每一个mcp_call,都必须能让一个没看过本项目的实习生,仅凭mcp_result字段就能写出完整的渗透报告”。这句看似简单的要求,倒逼我不断优化Tool Agent的mcp_result结构,也让LLM真正理解:它的价值不在“说得多好”,而在“说得有多准”。

http://www.jsqmd.com/news/895209/

相关文章:

  • 司库体系建设,需要哪些技术支持?
  • mfkvault-cli:像npm一样一键部署AI技能,30秒开箱即用
  • ACS Z轴回零程序 项目实战
  • 手把手教你用Windows Server 2019搭建Exchange 2016 CU23邮件服务器(附下载链接与避坑指南)
  • AI工程化能力常见面试题(2026年5月版)
  • Windows 系统手把手安装 OpenClaw,零基础部署教程
  • 华为硬件笔试和面试带给我的思考
  • 表单自动提交:自动填写并提交问卷调查,获取结果页数据,爬虫实战:利用Python实现问卷调查自动填写与结果数据采集
  • 别再到处找了!银河麒麟V10服务器版/桌面版最新下载链接与安装镜像校验全攻略
  • AI代理成本失控?详解成本天花板模式的设计与实现
  • NotebookLM国内打不开怎么办:用国内直连完成资料生成
  • RTX166实时系统下C167CR芯片CAN接口开发与错误处理
  • 基于YOLO26的草莓果实病害识别检测系统研究(项目源码+数据集+模型权重+UI界面+python+深度学习+远程环境部署)
  • Codex App 64K最优开发配置|舍弃1M冗余上下文,大幅降低无效Token消耗
  • t统计量:数据不确定性的动态校准器
  • 信号处理中的复变函数求导:用Wirtinger导数搞定实值复变函数的梯度下降
  • 《B4449 [GESP202512 三级] 密码强度》
  • 软件演示优先:认知科学原理与工程实践指南
  • 别再让OneDrive乱同步!手把手教你用注册表精准屏蔽特定文件(支持通配符)
  • AI记忆系统安全审计:从Claude Code漏洞到ShieldCortex防御实践
  • 千问 LeetCode 2732. 找到矩阵中的好子集 Go实现
  • 隐私保护机器学习中OT扩展协议的性能优化与Ironman加速器设计
  • 芯片流片失败,绝大部分不是技术问题,是管理问题!
  • 【MySQL百日打怪升级第12天】GROUP BY 与 COUNT 的效率问题:filesort、临时表
  • 别再死记硬背了!用Wirtinger导数搞定复数求导,附Python代码验证
  • 联合团队发布深度学习优化算法综述,为下一代优化方法设计提供实践指南
  • AI时代,还有必要练习编程吗?
  • Claude与AWS智能体服务对比:模型驱动与云原生的AI应用架构选择
  • 三合一段落树算法在时间网络分析中的应用与优化
  • 2026 AI Agent元年!掌握这波红利,下一个独角兽就是你!