【S3W3 交叉评测】InvestEd Lab:学生数据脱敏、多租户 AI 隔离与高影响动作治理建议 #6

Open
opened 2026-08-06 12:08:47 +08:00 by Michael · 0 comments

1. 项目理解

我理解“智研星河 InvestEd Lab”是一套面向学校、财经素养课程和投教机构的 AI 仿真投资教育平台。

它通过可配置的虚拟市场、新闻和宏观事件,为学生提供模拟交易、风险体验、知识问答、预测、投资日记和比赛;教师可以控制市场节奏、风险事件、教学难度和学生权限;平台运营方还可以通过 SaaS 控制台管理多个租户。

项目中的 AI Engine 不是一次性问答,而是长期读取市场和玩家状态,定期生成新闻、市场分析、机构行为、参数建议和市场动作,再把结果反馈到后续行情中,已经形成持续运行的“感知—决策—执行—反馈”循环。

2. 项目亮点

  • 学生端、教师端、SaaS 运营端、实时市场引擎和数据持久化均有完整代码,工程完成度较高。
  • AI 模块会实际改变新闻、行情、流动性、市场事件和教学提示,Agent 能力不是停留在文档描述。
  • 支持 T+1、涨跌停、交易成本、滑点、流动性、做空和保证金等规则,适合开展风险教育和行为金融讨论。
  • 教师可以暂停行情、调整难度、组织比赛、管理账号并进行课堂复盘。
  • 多租户、License、API Key、用户 JWT、Socket.IO 命名空间和一次性 SSO 短码等交付能力较完整。
  • 仓库包含实际活动复盘材料,说明项目已经尝试过真实课堂或活动应用。

3. 当前问题和疑点

3.1 公开仓库包含可识别的学生活动数据

仓库中的活动复盘、JSON 输出和演示文稿源码包含学生姓名,以及对应的资产、收益率、交易次数和成交额。

项目面向学生和学校场景,这些数据应当在公开仓库中匿名化。建议立即删除或替换为不可逆编号,并检查 Git 历史、Release、归档包和镜像中是否仍保留原始数据。

公开案例建议只保留聚合统计,不展示可识别个人姓名和细粒度行为数据。

3.2 多租户 AI Service 存在异步串租户风险

TenantEngineBundle 在每个租户 tick 前通过全局 setDeps 切换 AI Service,但 AIEngine.tick 启动异步模块后不会等待其完成。

部分模块会先等待数据库查询,再通过全局 getAIService 获取服务。在等待期间,Registry 可能已经切换到下一个租户。

这可能导致某租户的玩家分析或市场数据通过另一个租户的模型、API Key 和调用队列发出。

建议:

  • 将 AIService 作为 AIEngine 构造依赖;
  • 所有模块只使用实例级依赖;
  • 移除多租户路径中的全局 getAIService 和全局 marketEngine;
  • 增加两个租户并发运行的集成测试,验证模型配置、请求数据、调用统计和结果不会串号。

3.3 AI 动作缺少严格 Schema,可能写入非法市场参数

当前主要通过 JSON.parse 和局部字段判断处理模型结果,没有统一运行时 Schema。

例如 setVolatility 动作缺失 multiplier 时,Number(undefined) 会得到 NaN,随后市场波动率也会变成 NaN。

参数顾问中的 liquidityLevel 还被错误映射到了 setVolatilityMultiplier;当建议值为 tight 等字符串时,也会产生 NaN。

建议为每种动作定义明确 Schema,并在执行前检查:

  • 必需字段;
  • 有限数字;
  • 枚举值;
  • 参数范围;
  • 跨字段约束。

任何无效动作都应拒绝执行,而不是依赖模型遵循 Prompt。

3.4 高影响动作建议增加教师确认

AI 总控制器可以直接触发黑天鹅、庄家、羊群效应、流动性变化、新闻冲击和市场参数调整。

这证明智能体执行能力很强,但对于课堂与比赛场景,建议把高影响动作改为:

  1. AI 提出动作和教学理由;
  2. 教师查看预计影响;
  3. 教师批准、修改或拒绝;
  4. 系统执行并写入可回放日志。

普通教育提示可以继续自动执行,高影响市场动作则应默认人工确认。

3.5 资金审计不宜通过共享价格惩罚高收益用户

当前资金审计会对高收益用户的主要盈利持仓施加负面价格压力,但市场价格由所有学生共享,因此其他持有同一股票的学生也会受到影响。

建议将其改为异常检测和教师复核机制,必要时处理个人成绩、异常交易或规则漏洞,而不是修改全班共享行情。

3.6 部署文档和实际依赖需要统一

README 要求当前生产环境使用单实例进程,但 DEPLOYMENT.md 仍提供 PM2 cluster 和不存在的 Docker Compose 部署方式。

README 写 Node.js >=18,但当前 Vite lockfile 要求 Node ^20.19.0 或 >=22.12.0。

建议统一当前真实部署口径,避免评审和用户按旧文档部署后出现状态分裂或构建失败。

4. 优先改进建议

建议按以下顺序处理:

  1. 立即删除和匿名化仓库中的可识别学生数据,并检查 Git 历史。
  2. 修复多租户 AI Service 的实例隔离,增加并发租户集成测试。
  3. 为全部 AI 动作增加运行时 Schema 和有限数值校验,修复 liquidityLevel 映射。
  4. 将黑天鹅、庄家、羊群和市场参数等高影响动作改为教师确认。
  5. 重新设计资金审计,使其不通过共享行情惩罚特定学生。
  6. 更新 Node 版本、单实例和部署文档。

5. 综合评价

这是一个功能和工程完成度都较高的项目,市场仿真、学生实践、教师控制、AI 动作和 SaaS 交付已经形成连续系统。

项目最大的优势是 AI 真正参与了市场运行,而不是只负责生成文本。当前最大的风险也来自这一点:当 AI 能够实际修改共享市场时,多租户隔离、动作参数验证、教师审批、数据隐私和过程可解释性必须比普通内容生成应用更加严格。

完成学生数据脱敏、多租户 AI 隔离和高影响动作治理后,项目会更接近一套可以安全进入真实教学环境的 AI 投资教育实验室。

## 1. 项目理解 我理解“智研星河 InvestEd Lab”是一套面向学校、财经素养课程和投教机构的 AI 仿真投资教育平台。 它通过可配置的虚拟市场、新闻和宏观事件,为学生提供模拟交易、风险体验、知识问答、预测、投资日记和比赛;教师可以控制市场节奏、风险事件、教学难度和学生权限;平台运营方还可以通过 SaaS 控制台管理多个租户。 项目中的 AI Engine 不是一次性问答,而是长期读取市场和玩家状态,定期生成新闻、市场分析、机构行为、参数建议和市场动作,再把结果反馈到后续行情中,已经形成持续运行的“感知—决策—执行—反馈”循环。 ## 2. 项目亮点 - 学生端、教师端、SaaS 运营端、实时市场引擎和数据持久化均有完整代码,工程完成度较高。 - AI 模块会实际改变新闻、行情、流动性、市场事件和教学提示,Agent 能力不是停留在文档描述。 - 支持 T+1、涨跌停、交易成本、滑点、流动性、做空和保证金等规则,适合开展风险教育和行为金融讨论。 - 教师可以暂停行情、调整难度、组织比赛、管理账号并进行课堂复盘。 - 多租户、License、API Key、用户 JWT、Socket.IO 命名空间和一次性 SSO 短码等交付能力较完整。 - 仓库包含实际活动复盘材料,说明项目已经尝试过真实课堂或活动应用。 ## 3. 当前问题和疑点 ### 3.1 公开仓库包含可识别的学生活动数据 仓库中的活动复盘、JSON 输出和演示文稿源码包含学生姓名,以及对应的资产、收益率、交易次数和成交额。 项目面向学生和学校场景,这些数据应当在公开仓库中匿名化。建议立即删除或替换为不可逆编号,并检查 Git 历史、Release、归档包和镜像中是否仍保留原始数据。 公开案例建议只保留聚合统计,不展示可识别个人姓名和细粒度行为数据。 ### 3.2 多租户 AI Service 存在异步串租户风险 TenantEngineBundle 在每个租户 tick 前通过全局 setDeps 切换 AI Service,但 AIEngine.tick 启动异步模块后不会等待其完成。 部分模块会先等待数据库查询,再通过全局 getAIService 获取服务。在等待期间,Registry 可能已经切换到下一个租户。 这可能导致某租户的玩家分析或市场数据通过另一个租户的模型、API Key 和调用队列发出。 建议: - 将 AIService 作为 AIEngine 构造依赖; - 所有模块只使用实例级依赖; - 移除多租户路径中的全局 getAIService 和全局 marketEngine; - 增加两个租户并发运行的集成测试,验证模型配置、请求数据、调用统计和结果不会串号。 ### 3.3 AI 动作缺少严格 Schema,可能写入非法市场参数 当前主要通过 JSON.parse 和局部字段判断处理模型结果,没有统一运行时 Schema。 例如 setVolatility 动作缺失 multiplier 时,Number(undefined) 会得到 NaN,随后市场波动率也会变成 NaN。 参数顾问中的 liquidityLevel 还被错误映射到了 setVolatilityMultiplier;当建议值为 tight 等字符串时,也会产生 NaN。 建议为每种动作定义明确 Schema,并在执行前检查: - 必需字段; - 有限数字; - 枚举值; - 参数范围; - 跨字段约束。 任何无效动作都应拒绝执行,而不是依赖模型遵循 Prompt。 ### 3.4 高影响动作建议增加教师确认 AI 总控制器可以直接触发黑天鹅、庄家、羊群效应、流动性变化、新闻冲击和市场参数调整。 这证明智能体执行能力很强,但对于课堂与比赛场景,建议把高影响动作改为: 1. AI 提出动作和教学理由; 2. 教师查看预计影响; 3. 教师批准、修改或拒绝; 4. 系统执行并写入可回放日志。 普通教育提示可以继续自动执行,高影响市场动作则应默认人工确认。 ### 3.5 资金审计不宜通过共享价格惩罚高收益用户 当前资金审计会对高收益用户的主要盈利持仓施加负面价格压力,但市场价格由所有学生共享,因此其他持有同一股票的学生也会受到影响。 建议将其改为异常检测和教师复核机制,必要时处理个人成绩、异常交易或规则漏洞,而不是修改全班共享行情。 ### 3.6 部署文档和实际依赖需要统一 README 要求当前生产环境使用单实例进程,但 DEPLOYMENT.md 仍提供 PM2 cluster 和不存在的 Docker Compose 部署方式。 README 写 Node.js >=18,但当前 Vite lockfile 要求 Node ^20.19.0 或 >=22.12.0。 建议统一当前真实部署口径,避免评审和用户按旧文档部署后出现状态分裂或构建失败。 ## 4. 优先改进建议 建议按以下顺序处理: 1. 立即删除和匿名化仓库中的可识别学生数据,并检查 Git 历史。 2. 修复多租户 AI Service 的实例隔离,增加并发租户集成测试。 3. 为全部 AI 动作增加运行时 Schema 和有限数值校验,修复 liquidityLevel 映射。 4. 将黑天鹅、庄家、羊群和市场参数等高影响动作改为教师确认。 5. 重新设计资金审计,使其不通过共享行情惩罚特定学生。 6. 更新 Node 版本、单实例和部署文档。 ## 5. 综合评价 这是一个功能和工程完成度都较高的项目,市场仿真、学生实践、教师控制、AI 动作和 SaaS 交付已经形成连续系统。 项目最大的优势是 AI 真正参与了市场运行,而不是只负责生成文本。当前最大的风险也来自这一点:当 AI 能够实际修改共享市场时,多租户隔离、动作参数验证、教师审批、数据隐私和过程可解释性必须比普通内容生成应用更加严格。 完成学生数据脱敏、多租户 AI 隔离和高影响动作治理后,项目会更接近一套可以安全进入真实教学环境的 AI 投资教育实验室。
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
MuskZhou/Stock-Simulator#6
No description provided.