mirror of
https://github.com/Ed1s0nZ/CyberStrikeAI.git
synced 2026-10-19 14:07:36 +02:00
4.6 KiB
4.6 KiB
Bug 表核对与修复
范围:2026-10-06 用户提供的 Bug记录表.xlsx。只修复当前仓库已有功能的已确认缺陷。表内命令和建议只作为待核实证据。
工作流与维护门禁
- 阶段:P10 缺陷修复。既有代码、接口、测试为上游依据。
- 分支:codex/bug-sheet-fixes;完成验证后合入 main。
- 维护策略:narrow_fix。对大文件仅做局部修复,新增测试放独立文件,不做广泛重构。
- 验收:复现/代码证据确认问题;针对性回归通过;相关包和全仓检查;提交仅包含修复、测试、文档,不包含真实配置或凭据。
- 生命周期记录合并到本文,避免针对同一缺陷制造无关阶段提交。
已确认待修复
| 表内条目 | 证据 | 修复计划 |
|---|---|---|
| C2 wait/cancel 资源权限 | handler 直接按 ID 查询和取消,缺少 c2ResourceAllowed | 与同模块接口一致,先校验任务访问权限,再执行 |
| 32 纯文本批量/机器人任务缺少执行证据 | batch_queue_executor 和 finalizeRobotAgentSuccess 显式传 true | 与普通对话的默认策略一致,允许无工具文本回复,保留 pending/HITL 检查 |
| 30、31 角色名路径字符/长度 | 名称未校验,文件名会转换,存在碰撞 | 拒绝路径和控制字符、首尾空格、超过 64 字符及文件名碰撞 |
| 工作流悬空引用 | 角色保存与工作流删除均未检查引用 | 保存时验证存在;删除引用中的工作流返回冲突 |
| 4 登录用户名为空 | 前端无 required,后端空用户名默认 admin | 登录接口及页面拒绝空白/超过 64 字符用户名 |
| Profile UA/响应头/Jitter 保存丢失 | 前端 snake_case 与后端 camelCase 不一致 | 对齐 JSON 字段;保留 0;拒绝负值/倒置范围 |
| 22 取消后显示成功 | 回传结果无条件更新任务终态 | 终态保持不变;取消和结果写入使用状态条件检查 |
| 同 UUID 旧连接断开误判离线 | WS defer 无条件删当前连接及标记 dead | 仅当前登记连接可以删除并退役会话,结束心跳 goroutine |
| 23 WebShell 目录路径及假条目 | normalizeWebshellPath 删除根斜杠;权限兜底正则接受 ls 错误行 | 保留 Unix 绝对路径;树/面包屑/父级保持绝对路径;只接受权限格式目录项 |
| 6 查看通知未清计数 | 查看回调只跳转 | 查看普通事件后标记已读并刷新;待审批通知仍保留待处理状态 |
| 13 配置接口明文返回 API Key | GetConfig 序列化真实配置 | 返回掩码;保存时按原配置路径还原;模型测试在服务端解析指定通道凭据 |
| 19 WebShell 口令明文回显 | 列表和创建/更新响应返回 Password | 响应掩码;保存时保留/替换/清空;执行按有权限的 connection_id 取服务端凭据 |
| Markdown 智能体字段与重复 ID | 保存缺少关键字段和 ID 唯一性检查 | 创建/更新统一校验 name、ID、指令;ID 不允许文件间重复;创建使用排他文件写入 |
| 辅助文件编辑描述丢失 | 辅助文件保存接口不更新 SKILL.md 元数据 | 辅助文件禁用描述编辑;描述未保存时阻止切换文件,提示先保存 SKILL.md |
不适用
当前仓库未实现的用户容器并发配额、容器生命周期和容器释放后重新调度,不添加对应实现。
验证
go test ./internal/handler ./internal/app ./internal/agentfinalizer通过。- 新增 C2 跨用户禁止等待/取消、所有者正常操作、机器人纯文本交付、角色名称边界、工作流引用、登录用户名测试。
- 前端已有测试存在 HITL 断言失败,正在核实基线;未修改 HITL 脚本。
- 当前尚未完成全部表内条目核对,也尚未合入 main。
go test ./internal/c2 ./internal/database通过;新终态保护及连接替换测试通过。- Profile API 持久化/无效 Jitter 测试和前端实际提交字段测试通过。
- 前端 HITL 断言问题在原始提交
82b0af1的隔离导出目录也可复现,属于基线问题。 go test ./...全仓通过。- WebShell 路径、错误输出、目录树测试与通知查看/待审批区分测试通过。
- 配置凭据处理保留既有字段与空字符串清除语义;掩码标记只用于已保存的同路径凭据,新通道不能直接保存掩码。通道探活新增可选
channel_id,模型列表/审查测试支持可选凭据范围,避免同 URL 多密钥选择错误。 - 新增 GET 配置不泄漏/不变更内存、掩码保留/替换/清空、歧义拒绝、WebShell 回显及执行凭据、Markdown 创建/更新唯一性、技能描述切换测试。