PenGym 单智能体 izumi 当前现状报告:规则基线已完成,深度强化学习分支已建立但尚未并回主线

一、这篇文章要说明什么

这份记录不再描述“理想路线”,只说明当前仓库和当前进度的真实状态

当前事实可以归纳为三点:

  1. PenGym 单智能体规则基线 izumi 已完成并可运行。
  2. 仓库中已经存在深度强化学习训练与评估脚本,且已经产出 PPO / MaskablePPO 模型文件。
  3. 当前 DRL 分支还没有真正并回 run.py -a izumi 主线,因此 izumi 目前仍然是规则型 agent,而不是学习型 agent。

因此,现阶段最准确的判断是:

  • 规则型单智能体阶段:已完成
  • 深度强化学习单智能体阶段:已开始,已建立独立实验线,但尚未完成与 izumi 主线合并

二、实验环境

1. 宿主与虚拟机

  • 宿主机:Windows
  • 虚拟机:Ubuntu
  • 虚拟化软件:VMware

2. 本阶段实际使用的软件栈

  • PenGym
  • NASim simulation
  • Python 虚拟环境 venv
  • 自定义规则型单智能体:izumi
  • Stable-Baselines3 PPO
  • SB3-Contrib MaskablePPO

3. 当前尚未并入主线的内容

以下内容目前还不在 run.py -a izumi 主线里

  • LSTM / RecurrentPPO
  • LangGraph
  • 多智能体协同
  • LLM 语义通信
  • 零信任 / 半信任通信机制
  • 真实网络 / 蜜罐执行后端

也就是说,当前工作的真实定位仍然是:

先把 PenGym 中的单智能体基线和单智能体 DRL 实验线分别建立起来。


三、当前项目结构的真实情况

当前仓库里实际存在三条线:

1. run.py 主线

这是当前最稳定、最可复现的一条线,直接对应 PenGym 的 agent 入口。

目前已确认存在:

  • deterministic
  • random
  • izumi

其中:

  • deterministic:官方固定动作序列基线
  • random:官方随机动作基线
  • izumi:自定义规则型单智能体基线

2. PPO / MaskablePPO 实验线

仓库中已经存在以下 DRL 相关脚本:

  • prototype/rl/train_ppo.py
  • prototype/rl/eval_ppo.py
  • prototype/rl/train_maskable_ppo.py
  • prototype/rl/eval_maskable_ppo.py

这条线的特点是:

  • 不走 run.py -a izumi
  • 直接在 prototype/rl/ 下训练与评估
  • 已经生成模型文件

3. BC / 模型评估实验线

还存在一条独立评估脚本线:

  • prototype/rl/eval_bc_env.py

这条线用于加载模型并在 PenGym / NASim 环境中做动作推理,但它也不是 run.py 主线中的 izumi


四、izumi 当前到底是什么

izumi 目前并不是 PPO agent,也不是 LSTM agent。

它当前的准确定位是:

规则型单智能体 baseline

也就是说,它当前依赖的是:

  • build_izumi_path() 生成规则路径
  • run_deterministic_agent(env, izumi_path) 负责执行动作

run.py 当前结构可以确认:

1
2
izumi_path = build_izumi_path()
done, truncated, step_count = run_deterministic_agent(env, izumi_path)

这说明当前 izumi 的本质仍然是:

  • 预先写好动作路径
  • 由稳定的 deterministic 执行器顺序执行

因此,当前 izumi规则 agent,不是学习 agent


五、规则基线 izumi 已完成到哪一步

1. 已完成的核心函数

当前 run.py 中已经有:

  • run_deterministic_agent(env, deterministic_path)
  • build_izumi_path()

2. build_izumi_path() 当前实际逻辑

当前 izumi 的规则路径是:

  • 先打 HOST5_1
  • 再打 HOST2_0
  • 再打 HOST3_1
  • 最后打 HOST6_1

对每个目标的动作顺序是:

  • OS_SCAN
  • SERVICE_SCAN
  • 根据规则选择 exploit
  • 部分节点执行 SUBNET_SCAN

对应 exploit 规则为:

  • HOST5_1 -> EXPLOIT_HTTP
  • HOST2_0 -> EXPLOIT_SMTP
  • HOST3_1 -> EXPLOIT_HTTP
  • HOST6_1 -> EXPLOIT_SAMBA

3. 当前 izumi 的实际运行结果

通过这条规则路径,izumi 已成功实现:

  1. HOST5_1 -> e_http 成功,拿到 USER
  2. HOST2_0 -> e_smtp 成功,拿到 ROOT
  3. HOST3_1 -> e_http 成功,拿到 USER
  4. HOST6_1 -> e_samba 成功,拿到 ROOT

因此,当前 izumi 已具备:

  • OS 扫描
  • 服务扫描
  • 子网扫描
  • 根据规则选 exploit
  • 获取 USER / ROOT
  • 完成一条有效攻击路径

4. 当前状态的准确表述

当前 izumi 已经是一个可运行、可复现、可演示的规则型单智能体基线

但它还不是:

  • 动态决策 agent
  • DRL 单智能体
  • 多智能体 worker
  • LLM 驱动 agent

六、深度强化学习这条线当前做到哪里了

1. 当前仓库中已有的 DRL 脚本

PPO 训练

1
prototype/rl/train_ppo.py

该脚本的实际作用是:

  • 读取 prototype/configs/system_config.yaml
  • 创建 PenGym / NASim 环境
  • 使用 stable_baselines3.PPO(policy="MlpPolicy")
  • 在环境中训练 20000
  • 保存模型到 prototype/models/

PPO 评估

1
prototype/rl/eval_ppo.py

该脚本会:

  • 加载训练好的 PPO 模型
  • 运行环境推理
  • 打印 action_id / action / reward

MaskablePPO 训练

1
prototype/rl/train_maskable_ppo.py

该脚本相比普通 PPO,多了一层:

1
env = ActionMasker(env, mask_fn)

其中 mask_fn(env) 调用了:

1
env.get_action_mask()

这意味着该训练线支持:

  • 屏蔽非法动作
  • 减少无效 exploit / scan
  • 更贴合渗透任务的动作空间约束

MaskablePPO 评估

1
prototype/rl/eval_maskable_ppo.py

用于加载 MaskablePPO 模型并做推理评估。


七、当前已经生成的模型文件

仓库中已确认存在以下模型文件:

  • prototype/models/ppo_izumi_smoke.zip
  • prototype/models/ppo_izumi_tiny_20k.zip
  • prototype/models/ppo_izumi_20k.zip
  • prototype/models/maskable_ppo_izumi_tiny_20k.zip

这说明当前 DRL 线不是“只有脚本,没有结果”,而是已经至少完成了:

  1. 模型训练脚本可运行
  2. 模型文件已被保存
  3. PPO / MaskablePPO 训练至少执行过一轮

因此,当前 DRL 线的真实状态应描述为:

PPO / MaskablePPO 的独立实验线已建立,并已产出模型文件。


八、当前 DRL 线没有完成的部分

虽然已经有训练脚本、评估脚本和模型文件,但当前还存在一个关键问题:

izumi 主线和 DRL 分支没有真正合并

也就是说,当前事实是:

已完成

  • run.py -a izumi 可以运行规则型 izumi
  • prototype/rl/train_ppo.py 可以训练 PPO
  • prototype/rl/train_maskable_ppo.py 可以训练 MaskablePPO
  • prototype/rl/eval_ppo.py 可以做 PPO 评估
  • prototype/rl/eval_maskable_ppo.py 可以做 MaskablePPO 评估

尚未完成

  • 没有把 run.py -a izumi 改成直接调用 PPO / MaskablePPO policy
  • 当前 izumi 还没有真正从规则 agent 替换成 DRL agent
  • 当前 DRL 还属于独立实验线,而不是主线 agent 身份

因此,现在不能说:

izumi 已经变成深度强化学习智能体

更准确的说法是:

izumi 的 DRL 替代方案已经开始构建,且已有训练和评估脚本,但当前主线中的 izumi 仍然是规则型 agent。


九、当前完成情况总结

到目前为止,已经真实完成了以下内容:

1. 环境层

  • Ubuntu 虚拟机可用
  • PenGym 已部署完成
  • NASim simulation 模式可运行
  • 配置文件路径已修正

2. 基线层

  • 官方 deterministic 可运行
  • 官方 random 可运行
  • 自定义规则型单智能体 izumi 可运行

3. DRL 层

  • PPO 训练脚本已存在并可运行
  • PPO 评估脚本已存在并可运行
  • MaskablePPO 训练脚本已存在并可运行
  • MaskablePPO 评估脚本已存在并可运行
  • 已产出若干 PPO / MaskablePPO 模型文件

4. 当前最准确的阶段判断

当前项目已经进入:

规则型单智能体已完成,深度强化学习单智能体实验线已建立,但尚未完成与 izumi 主线融合。


十、现场复现怎么做

1. 规则基线复现

1
2
3
4
5
6
cd ~/lab/pengym_lab/PenGym-main
source .venv/bin/activate

python3 run.py -n -d -a deterministic ./pengym/CONFIG.yml
python3 run.py -n -d -a random ./pengym/CONFIG.yml
python3 run.py -n -d -a izumi ./pengym/CONFIG.yml

2. PPO 训练与评估复现

1
2
3
4
5
cd ~/lab/pengym_lab/PenGym-main
source .venv/bin/activate

python3 -m prototype.rl.train_ppo
python3 -m prototype.rl.eval_ppo

3. MaskablePPO 训练与评估复现

1
2
3
4
5
cd ~/lab/pengym_lab/PenGym-main
source .venv/bin/activate

python3 -m prototype.rl.train_maskable_ppo
python3 -m prototype.rl.eval_maskable_ppo

4. 查看当前已有模型

1
2
3
4
cd ~/lab/pengym_lab/PenGym-main
source .venv/bin/activate

ls -lh prototype/models/

十一、这一阶段到底完成到了哪一步

如果现在要准确描述当前阶段,最合适的表述是:

已完成 PenGym 仿真环境部署,跑通官方 deterministicrandom 基线,并实现自定义规则型单智能体 izumi。同时,仓库中已建立基于 PPO 与 MaskablePPO 的独立深度强化学习实验线,包含训练脚本、评估脚本与已保存模型文件。但当前 izumi 主线尚未替换为 DRL policy,因此主线 agent 仍为规则型实现。

这个表述是当前最准确的。


十二、下一步最合理的推进方向

当前最合理的下一步,不是继续扩展规则路径,而是做一件明确的事:

izumi 从规则 agent 正式切换为 DRL agent

也就是:

  1. 保留旧规则版 izumi 作为对照基线
  2. 选定当前优先使用的 DRL 线(优先建议 MaskablePPO
  3. run.py -a izumi 的执行逻辑从:
1
build_izumi_path() + run_deterministic_agent(...)

切换到:

1
load policy model + model.predict(...) + env.step(...)
  1. 之后再评估是否需要引入:
    • LSTM / RecurrentPPO
    • 多智能体协同
    • LangGraph
    • 语义通信
    • 真实网络 / 蜜罐后端

十三、未来展望

在当前基础上,后续可以自然扩展为以下路线:

1. 规则型单智能体

已完成。

2. 深度强化学习单智能体

已开始,当前处于独立实验线阶段。

3. DRL 版 izumi

下一步应完成与主线 agent 的真正融合。

4. 多智能体协同

在单智能体 DRL 稳定后再拆分为多个 worker。

5. LangGraph / LLM 编排层

作为上层规划与通信解释器引入,而不是替代底层策略网络。

6. 真实网络 / 蜜罐迁移

在仿真环境中完成策略验证后,再逐步替换环境 backend。


十四、总结

当前最重要的成果不是“概念已经全部提出”,而是:

  • PenGym 环境已经跑通
  • 单智能体规则基线已经建立
  • 自定义 agent izumi 已经能够执行有效攻击路径
  • PPO / MaskablePPO 实验线已经建立
  • 已经有 DRL 训练脚本、评估脚本和模型文件

当前最关键的现实情况是:

规则型 izumi 已完成,DRL 分支已存在,但二者尚未正式合并。

这意味着当前项目已经不再停留在“空想深度强化学习渗透测试”,而是已经有:

  • 可运行规则基线
  • 可运行 DRL 实验脚本
  • 可保存的训练结果

接下来的关键节点,就是把现有 DRL 实验线真正落到 izumi 主线上。