CyberStrikeAI新增四项长跑能力

admin 2026-06-18 05:15:35 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: CyberStrikeAI新增四项长跑能力以解决跨小时授权测试中的状态丢失问题,包括结构化任务板将计划从聊天记录分离为JSON文件、Runner断点续跑恢复执行进度、单次模型重试避免重复扫描、结论锚点明确最终交付字段。这些功能通过分离流程状态、进程状态、调用状态和语义状态,提升长时间渗透测试的稳定性和效率。 综合评分: 85 文章分类: 渗透测试,红队,安全工具,安全运营,内网渗透


cover_image

CyberStrikeAI 新增四项长跑能力

原创

低调学安全 低调学安全

低调学安全

2026年6月11日 02:20 北京

在小说阅读器读本章

去阅读

解决跨小时授权测试中的状态丢失问题 · 任务板 · 断点续跑 · 单次模型重试 · 结论锚点


凌晨两点,nmap 扫完、httpx 跑完、子代理把 SQL 注入面也摸了一遍。消息列表滚了三百条,进度条还在走——你关页面去睡。

早上回来,后端昨晚滚动发布了一轮。对话还在,但 Agent 重新列了一份测试计划,从「信息收集」第一步开始。昨晚已经确认的开放端口、已经派出去还没收口的子任务,全当没发生过。

这不是模型变笨了。是把「给人看的聊天记录」当成了「给机器用的执行状态」。

CyberStrikeAI 面向的是跨小时、甚至跨天的授权渗透与业务逻辑审计。一轮 Deep 编排里,主代理派 task、子代理连打十几轮 MCP、扫描结果动辄几十 KB 灌进 context——流程状态、进程状态、调用状态、语义状态是四件不同的事,混在一份 SSE 流里迟早要崩。

这一版把四项长跑能力写进默认配置(config.yaml → multi_agent.eino_middleware),不新增 MCP、不改聊天 UI,改的是底层假设:上下文会满、进程会死、网关会抖、流式 token 不等于可机器读取的最终交付。


一、结构化任务板:计划不能和 nmap 输出抢 token

问题背景

Deep 的真实节奏:

主代理拆计划 → task 派子代理 → 子代理 10+ 轮工具 → 结果回灌主代理历史 → 下一步

测试步骤若只写在 assistant 回复里,就和 nmap、dirsearch、Burp 插件输出挤在同一份 context。max_total_tokens 到八成,summarization 一触发——摘要擅长记住「发现了什么 SQL 注入点」,对「第 7 项越权测试还没做、第 3 项子代理结果待汇总」却容易糊成一句「继续推进中」。

发现可以压缩,待办不能丢。

实现说明

任务板把计划从聊天正文里拆出去,存成按会话隔离的 JSON 文件:

skills/.eino/plantask/<会话ID>/

主代理通过 TaskCreate / TaskGet / TaskUpdate / TaskList 维护结构化待办——状态、优先级、依赖关系写在文件里,不占用对话 token。

只挂在主编排(Deep / Supervisor 主代理、单代理、plan_execute Executor),不挂子代理。全局待办只能有一个记账的;子代理专心打穿一个攻击面,回来交差,不各自维护一份互相打架的计划。

中间件链里有两处实现细节,影响长跑场景下的稳定性:

  1. reduction 清超大 tool 输出时,刻意排除 Task* 四个工具。 nmap 全端口扫描结果可以截断落盘,任务状态不能被当垃圾清掉。
  2. plantask 排在 summarization 前面,不进 token 计数。 压缩历史时,任务板读的是磁盘,不是被摘要过的二手描述。

删对话会同步清该目录,不留孤儿任务文件。

plantask_enable:&nbsp;true&nbsp; &nbsp;&nbsp;# 需 eino_skills + 可写 skills_dir

二、Runner 断点续跑:救的是调度栈,不是聊天记录

与「中断并继续」的区别

| | 中断并继续 | Runner 断点续跑 | | — | — | — | | 触发 | 你主动暂停、改工具白名单后再发 | 进程 OOM、滚动发布、机器重启 | | 存什么 | last_react_* :上一轮送进模型的消息快照 | checkpoint:Runner 图执行到哪一步 | | 接什么 | 从上次模型入参接着聊 | 从挂起的子代理 / 未完成的节点接着跑 |

名称相近,机制不同:前者是「对话续写」,后者是「执行续跑」。

问题背景

进程崩溃后,内存里的调度栈没了。聊天记录能告诉你「之前聊过什么」,但接不回:

  • 子代理挂起在哪个 tool call
  • 主代理的 ReAct 循环停在第几轮
  • plan_execute 的 execute 节点是否已返回

同会话再进来,如果只能 Run 不能 Resume,等于把已经跑过的 nmap、已经入库的 tool_result 全部作废,从头再来。

实现说明

checkpoint 落盘路径:

data/eino-checkpoints/<会话ID>/runner-<编排模式>.ckpt

同会话进来,Runner 先 Resume,失败才全新 Run。前端会明确提示「断点恢复失败,已回退为全新执行」——不静默重头跑,便于判断状态是否丢失。

  • Deep 和 Supervisor 各用各的 ckpt,不能混。
  • 写入走 .tmp 再 rename,防半写损坏;正常结束删文件,异常才留

使用边界: 断点续跑恢复的是 Runner 进度,不恢复 summarization 已压缩的历史正文。三者分工如下——任务板管「还要做什么」,checkpoint 管「执行器卡在哪」,summarization 管「旧对话怎么变短」。

checkpoint_dir: data/eino-checkpoints

三、单次模型重试:502 不该让 nmap 再扫一遍

问题背景

一轮 user 消息,Deep 里常常对应 十几次 ChatModel.Generate,中间夹着真工具调用。网关某次 502、读超时,多半打在其中某一次——前面的 nmap 已经跑完,tool_result 也在库里了。

若在整轮 user 消息上重试,等于扫描再扫一遍。授权测试里,重复发包可能触发 WAF 封禁、污染测试窗口、浪费配额。

实现说明

deep_model_retry_max_retries: 3 挂在单次 Generate:同一套 messages,重试 HTTP,不重放整轮 ReAct

三层重试,各管各的粒度:

| 层级 | 配置 | 作用 | | — | — | — | | 单次 API 调用 | deep_model_retry_max_retries: 3 | 某次 Generate 502/超时,同 messages 重打 | | 整轮 Run | run_retry_max_attempts (默认 10) | 429/5xx 时段性故障,指数退避续跑 | | 用户主动停止 | context.Canceled | 任何重试都不触发 |

子代理未配置单次重试。 若子代理静默重试成功,主代理会误判任务已完成,授权测试场景下可能造成漏报。子代理失败后由主编排决定重派或上报。

deep_model_retry_max_retries: 3

四、结论锚点:流式输出 ≠ 框架里的交付字段

问题背景

界面上是 SSE 流式 token,逐段输出。框架里还有 Session——summarization 压历史、子代理结果回传、轨迹写库,都需要明确:

本轮最终结论,写在哪个键上?

不设锚点,只能从一长串 assistant 里猜。多代理下很容易:

  • 把中间分析(「疑似存在越权,待进一步验证」)当成最终结论
  • 把没收束的推理(「接下来应该测试…」)当成交付
  • 后面十几轮 tool call 在错误前提下继续跑,报告和实际执行分叉

实现说明

deep_output_key: final_answer 把 Deep / Supervisor 主代理和单代理的最终结论钉在 session 的 final_answer

  • 前端不因此多一个框——这是编排层内部约定,给 summarization、子代理回传、后续轮次一个唯一可信的语义锚点
  • plan_execute 走自己的 ExecutedStepSessionKey,和 Deep 的 task 子代理不是一套状态机,不硬共用。
deep_output_key: final_answer

能力对照

长跑 Agent 的状态可以拆成四块,以前混在聊天记录里,现在各有归宿:

┌─────────────────────────────────────────────────────────┐
│ &nbsp;流程状态:待办执行到哪 &nbsp; &nbsp; &nbsp; &nbsp;→ &nbsp;结构化任务板(磁盘 JSON) │
│ &nbsp;进程状态:Runner 卡在哪一步 &nbsp; &nbsp; → &nbsp;checkpoint(.ckpt) &nbsp; &nbsp;│
│ &nbsp;调用状态:某次 API 是否可重试 &nbsp; → &nbsp;单次模型重试(Generate)│
│ &nbsp;语义状态:哪句话算最终交付 &nbsp; &nbsp; &nbsp;→ &nbsp;结论锚点(final_answer)│
└─────────────────────────────────────────────────────────┘

| 问题场景 | 能力 | 配置项 | | — | — | — | | 计划在压缩后变模糊 | 结构化任务板 | plantask_enable | | 重启后 Runner 接不上 | Runner 断点续跑 | checkpoint_dir | | 一次 API 失败拖垮整轮 | 单次模型重试 | deep_model_retry_max_retries | | 压缩时不知道哪句算交付 | 结论锚点 | deep_output_key |


默认配置

四项能力在仓库 config.yaml 的 multi_agent.eino_middleware 下默认已启用,升级或使用默认配置时无需额外操作

| 配置项 | 默认值 | | — | — | | plantask_enable | true | | checkpoint_dir | data/eino-checkpoints | | deep_model_retry_max_retries | 3 | | deep_output_key | final_answer |

仅在你曾手动关闭上述项,或沿用较旧配置文件时,需要对照检查。任务板另需 eino_skills 可用且 skills_dir 可写,否则 plantask_enable 会被跳过。

跨会话的目标、端口、凭据等信息由项目黑板维护;本文四项针对同一条对话内的计划、进程、调用与结论状态。对跨小时授权测试而言,这四项比单纯扩大上下文窗口,更能缓解「计划变粗、进程中断接不上、502 导致重扫、结论字段不准」等结构性问题。


CyberStrikeAI · 仅用于授权安全测试与研究

地址:https://github.com/Ed1s0nZ/CyberStrikeAI


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:低调学安全 低调学安全 低调学安全《CyberStrikeAI 新增四项长跑能力》

暗网快讯【20260611】139期 网络安全文章

暗网快讯【20260611】139期

文章总结: 本期暗网快讯汇总了2026年6月11日前后暗网及泄露论坛中出现的多起数据泄露事件,涉及美国海军高级军官PII及位置数据、意大利娱乐场所、尼日利亚与多
评论:0   参与:  0