BruceSec 平台整合实践三工作流编排实战系列文章把自建安全平台的功能版块一期一期整理成技术博客内容全部基于本机真实运行实例附真实界面截图。第 3 期工作流编排实战 —— 用 DAG 把「信息收集 → 扫描 → 入库」串成自动化闭环。0. 声明本文是个人技术实践记录。平台基于开源项目CyberStrikeAI二次开发上游项目版权归原作者所有本文所有截图、数据均来自本人本机实例内容聚焦个人化整合与使用实践与上游官方文档、宣传材料无关不构成对上游项目的替代性描述。文中出现的真实路径、密钥、公网资产均已做脱敏处理截图中涉密列已遮挡。1. 为什么第三期写工作流编排前两期把平台的总览生态和资产信息收集闭环讲完了。但能跑通和能自动跑是两回事资产入库之后谁去持续扫描扫描结果谁来分析分析完谁把资产写回库总不能每次都手动点一遍。平台内置的工作流编排引擎解决的就是这个问题把「开始 → 工具执行 → Agent 分析 → 入库」串成一张可视化 DAG跑一次就是一条完整链路跑 N 次就是持续监控。本期基于本机真实数据把工作流版块完整拆一遍。2. 版块总览工作流画布长什么样进入侧边栏「工作流」核心是左侧工作流列表 中间节点库 右侧可视化画布的三段式布局本机真实状态2 个工作流定义IP监控、内网资产信息搜集各自带启用/禁用、编辑入口7 类编排节点开始 / 工具 / Agent / 条件 / 审批 / 输出 / 结束4 个特色入口导入本地包.csapkg.zip、用自然语言创建、试运行、生成草稿画布支持「生成草稿 → 人工复核 → 保存」的半自动建流路径。3. 真实案例一内网资产信息搜集5 节点 DAG这是平台里最有代表性的一条流从 LLM 参数解析到 nmap 扫描再到资产入库全部编排化。3.1 节点链start-1 (start) └─ 输入键message / conversationId / projectId / target / ports / timing ↓ parse_params (agent) # 从用户输入提取 target/ports/timing 的 JSON ↓ nmap_scan (tool) # 调用 nmap参数模板绑定上游 outputs 三字段 ↓ asset_extract (agent) # 解析扫描结果调 create_asset 入库 ↓ output节点类型覆盖start / agent / tool / output四类汇聚策略均为all_merge该工作流已迭代8 个版本schema_version1说明是在真实使用中逐步打磨出来的。3.2 三次真实运行从翻车到稳定数据库workflow_runs记录了 3 次完整运行全部completed版本开始时间耗时结果v108-14 16:38:35~9.7s参数解析失败0 hosts scanned空汇总兜底v208-14 16:47:36~39.8s参数解析成功nmap 识别 8080/tcp资产入库 1 条v708-14 16:55:06~50.4s全链路成功create_asset 入库成功第 1 次运行的翻车现场值得单独说parse_params没解析出 targetnmap 收到空参数Failed to resolve 。但链路没有崩asset_extract节点正确返回了空汇总——「未发现存活主机未调用 create_asset不要虚构结果」。这正是编排引擎该有的容错素养节点失败不中断整条流下游 Agent 有不虚构结果的护栏。第 2 次运行拿到真实数据{target:127.0.0.1,ports:8080,timing:}nmap 识别出8080/tcp上是 Golang net/http 服务、http-title: BruceSec随后资产入库。14 条workflow_node_runs明细显示nmap 工具节点耗时 26sagent 子图内部还会拆成 prepare → execute → finalize 三个阶段可观测性很细。4. 真实案例二IP 监控并行扇出 汇聚第二条流是典型的持续监控场景一个开始节点扇出两个并行 nmap 扫描最后all_merge汇聚。4 节点 4 边start-1→ 并行nmap-1/nmap-2固定参数-sV→output-1这条流是LLM 生成草稿出来的generated_byllm, needs_reviewtrue正好演示自然语言建流 → 人工复核的路径两个扫描目标为外网 IP已脱敏配合-sV做服务版本探测适合周期性跑。5. 编排配置侧一条完整的链路工作流不是孤岛它挂在平台的多代理编排体系上。config.yaml 里这条链路真实可查层级配置项本机值作用总开关multi_agent.enabledtrue多代理编排总开关默认模式multi_agent.robot_default_agent_modeeino_single机器人默认编排模式模式族conversations表eino_single 11 / plan_execute 2 / deep 1三种编排模式均有真实使用角色绑定roles/内网资产搜集.yamlworkflow_id: intranet-asset-discoveryworkflow_policy: auto角色与工作流自动绑定工具白名单常驻工具task、transfer_to_agent、write_todos、tool_search、TaskCreate/Get/Update/List、batch_task_*等编排期可用工具任务板plantask_rel_dir.eino/plantask13 个会话目录P0 结构化任务板持久化崩溃恢复checkpoint_dirdata/eino-checkpoints13 个会话目录ADK Resume 自动续跑大输出截断reduction_enabletrue阈值 100000 字节工具大结果落盘不撑爆上下文编排相关 API工作流 CRUD 共 17 个端点/api/workflows、/validate、/dry-run、/generate-draft、/runs/:id/replay|resume、/workflow-package-*另有/api/batch-tasks批量任务队列 13 个端点start/rerun/pause/schedule 等为批量编排预留。常用工具配方编排节点可引用的工具来自 tools 配方库96 个配方、86 个 enabled自动化相关主要有exec.yamlShell 执行、execute-python-script.yamlPython 执行、nmap.yaml扫描、query-execution-result.yaml大结果查询。平台整体工具执行记录 84 次其中 nmap 19 次、create_asset 2 次、exec 32 次、rustscan 5 次——与工作流链路高度相关。6. 本期结论编排引擎真实可用本机 2 个工作流定义、3 次完整运行、14 条节点明细全部跑通不是演示数据容错设计在实战里被验证v1 参数解析失败时下游 Agent 空汇总兜底、不虚构结果——这是自动化链路最容易被忽略的一环建流路径多样可视化拖拽、LLM 生成草稿 人工复核、导入本地包.csapkg.zip三条路都能到可观测性够用节点级运行明细、agent 子图三阶段拆分、mcp_execution_ids全程留痕排障有据可查。