Files
NebulaShell/问题报告.md
Starlight-apk 1736bb5801
Some checks failed
CI / test (3.10) (push) Has been cancelled
CI / test (3.11) (push) Has been cancelled
CI / test (3.12) (push) Has been cancelled
CI / test (3.13) (push) Has been cancelled
docs: 更新项目文档至2026-05-17现状
- 问题报告.md: 重新审查代码,更新路径和问题列表
- RELEASE_v1.2.1.md: 改为路线图,标注实际完成状态
- CODE_VERIFICATION_REPORT.md: 重新验证核心功能
- FATAL_FIXES_REPORT.md: 按当前代码重写
- ai.md: 清理无关内容,更新统计和路线图
- 项目的后续计划.md: 补充详细开发计划
- README.md: 添加功能说明提示
- RELEASE_v1.1.0.md: 添加历史存档标记
2026-05-17 15:17:50 +08:00

5.6 KiB
Raw Blame History

NebulaShell 代码审查报告

审查日期2026-05-17 基于仓库最新代码commit: 5fbc5cc


一、当前代码状态概览

指标 数值
Python 文件 61
Python 代码行数 ~9,481
总文件数 117
核心模块 oss/core/(含 http_api、nbpf、repl 子模块)
官方插件 5i18n, nodejs-adapter, plugin-bridge, plugin-storage, ws-api
独立插件 1system-monitor位于根目录
测试文件 16tests/ 下 3 个 + oss/tests/ 下 13 个)

二、已知问题(按严重程度排列)

🔴 CRITICAL

# 问题 位置 说明
1 WebUI 仍为 v1.1.0 静态页面 oss/webui/index.html 显示 v1.1.0 版本号,数据硬编码("13个活跃插件"等),未对接后端 API
2 无 JWT/CSRF/输入验证中间件 oss/core/ RELEASE_v1.2.1 规划的 oss/core/security/ 目录不存在,安全中间件未实现
3 无防火墙/运维工具箱模块 oss/core/ oss/core/firewall/oss/core/ops/ 目录不存在
4 /metrics Prometheus 端点 oss/core/http_api/ 健康检查端点和监控指标未实现
5 plugin-storage 部分方法实现可疑 oss/store/NebulaShell/plugin-storage/main.py keys()delete() 等方法逻辑需要验证
6 HTTP API 路由空实现风险 oss/core/http_api/router.py 路由处理逻辑需要核验

🟠 HIGH

# 问题 位置 说明
7 测试覆盖率不足 全部 16 个测试文件覆盖主要模块,但核心 HTTP 路由、安全中间件、NBPF 加载链路缺乏端到端测试
8 无配置 Schema 验证 oss/config/config.py 写错配置 key 名静默使用默认值
9 多处 except: pass 多处 异常被静默吞掉,不利于调试
10 CORS 配置验证 oss/core/http_api/ 需要确认 CORS 头是否从配置读取而非硬编码
11 限流器线程安全问题 oss/core/http_api/rate_limiter.py 需要验证线程锁和 deque 使用是否正确
12 无 HTTPS 支持 全部 所有通信明文传输

🟡 MEDIUM

# 问题 位置 说明
13 无统一错误响应格式 多处 有时 JSON 有时纯文本
14 无日志轮转文件日志 oss/logger/logger.py 需要确认是否已实现 RotatingFileHandler
15 无 CI/CD 配置更新 .github/workflows/ 需要确认 CI 配置是否匹配当前测试结构
16 Dockerfile 缺少 .dockerignore .dockerignore 文件存在但为空
17 全局状态单例 oss/config/config.py _global_config 单例模式
18 Dashboard 鉴权缺失 oss/webui/ WebUI 无登录鉴权

🟢 LOW

# 问题 位置 说明
19 ENABLE_ASYNC 配置项未使用 oss/config/config.py 定义了但从未被引用
20 残留注释为中文 多处 限制贡献者范围
21 .env.example 根目录 环境变量无参考文档
22 配置默认值不一致 oss/config/config.py HOST 默认值与实际读取逻辑需确认

三、历史问题状态追踪

以下问题来自 2026-05-04 的审查报告,当前状态已更新:

原问题 原等级 当前状态 说明
plugin-storage 路径穿越 🔴 CRITICAL ⚠️ 已重构 当前代码已完全重写,使用内存缓存 + 文件持久化,但需要验证新实现的安全性
plugin-storage 方法实现错误 🔴 CRITICAL ⚠️ 已重构 同上,方法签名和逻辑已变更,需要重新审查
HTTP API 路由空实现 🔴 CRITICAL ⚠️ 待验证 oss/core/http_api/router.py 存在,但需要确认路由逻辑是否完整
init() 空指针 🔴 CRITICAL 已修复 对应插件不存在于当前仓库
code-reviewer 不可用 🔴 CRITICAL 已清理 该插件已从仓库移除
CORS * 🟠 HIGH ⚠️ 待验证 需要确认当前中间件实现
限流器线程安全 🟠 HIGH ⚠️ 待验证 需要确认当前 rate_limiter.py 实现
插件加载器安全检查可绕过 🟠 HIGH 已清理 旧版 plugin-loader 已不在仓库中
空方法/存根代码 🟠 HIGH ⚠️ 部分修复 engine.py 已拆分为 27 行,但部分插件仍有存根 TODO
重复中间件实现 🟡 MEDIUM 已清理 旧版 store 目录已移除
CSRF 导入缺失 🟡 MEDIUM 未修复 CSRF 防护尚未实现
静态资源缓存头 🟡 MEDIUM 未修复 WebUI 无缓存策略
配置不一致 🟢 LOW ⚠️ 部分修复 HOST 默认值已调整,但仍有不一致
异常静默吞掉 🟢 LOW ⚠️ 部分修复 部分 except: pass 已修复,但仍有残留

四、总结

等级 数量 关键项
🔴 CRITICAL 6 WebUI 未更新、安全模块未实现、防火墙/运维缺失、无 metrics、plugin-storage 待验证、路由待核验
🟠 HIGH 6 测试覆盖率、配置验证、except:pass、CORS、限流、HTTPS
🟡 MEDIUM 6 错误格式、日志轮转、CI、Docker、全局状态、鉴权
🟢 LOW 4 未使用配置、中文注释、env 文档、默认值不一致

最紧急的修复项

  1. 实现 oss/core/security/ 安全中间件JWT/CSRF/输入验证)
  2. 实现 oss/core/ops/ 运维工具箱(健康检查/备份/监控)
  3. 更新 WebUI 为可用的管理面板
  4. 完善测试覆盖
  5. 实现 HTTPS 支持