跳转至

青少年编程学习与实践平台速查(CPU 服务器部署 · 图形化 + Python 双入口)

版本基线: Scratch(LLK 仓库已迁移至 scratchfoundation 组织):scratch-gui v5.3.0(2026-04-03,MIT)、scratch-blocks v2.2.1(2026-10-29;2.0 起"unfork",改为以 Blockly v12 为依赖,2026-04 编辑器 "spork" 更新)· TurboWarp Desktop v1.17.1(2026-10-30,GPL-3.0;web 版 turbowarp.org/editor)· Blockly v13.2.1(2026-08,MIT;2025-11 起由 Google 移交 Raspberry Pi Foundation 维护)· Blockly Games(MIT,老项目但浏览器端仍可用)· Hedy(hedyorg/hedy,EUPL-1.2,47 种语言含中文,面向 10 岁+)· CodeCombat(codecombat/codecombat,MIT 代码 + CC-BY 素材,关卡内容不开源(LICENSE-LEVELS.md),活跃,8.6k stars)· JupyterLite 0.8.x(0.8.4,BSD-3-Clause;Pyodide kernel 0.8 → 浏览器内 Python 3.14)· code-server v4.133/4.134(MIT,2026-08 仍随上游 VS Code 发版;Coder 官方重心已转向 Coder 平台,code-server 无新功能规划,跟随上游维护)· OpenVSCode Server(MIT,Gitpod 维护,备选)· Eclipse Theia 平台 / Theia IDE(EPL-2.0,活跃)· Brython(BSD-3,了解级)/ Skulpt(BSD,了解级,维护缓慢)· Microsoft MakeCode for micro:bit(MIT,pxt-microbit;MicroPython/Mu 生态)(核对日期 2026-11-11,来源:官网 / GitHub Releases / jupyter.org blog)

宿主机约束(必读): Windows Server,2×Xeon Gold 6138(40 核 80 线程)、256GB 内存,无 GPU 纯 CPU——本册所有项目均为轻量 Web 服务,CPU 完全够用。Docker 优先,产物只存 F:\EricLiu\ 下;构建产物与数据放 F:\EricLiu\AppDocs\YouthCoding\labs\。

联动: 网关/反代用 AppDocs 阶段 A 的 1Panel + Nginx(WebPanel 分册);编程助教 LLM 用 NLP 分册 Ollama(Dify 编排可选);教学站配图用 ImageGen 分册。


1. 选型对比(按年龄/阶段分层)

分层:图形化(6–12 岁)→ 过渡(10–14 岁)→ 文本 Python(12 岁+)。

阶段 项目 定位 许可证 部署方式 资源 适用范围与限制
图形化 Scratch(scratch-gui 自建) 事实标准的图形化编程(积木+舞台),6–12 岁主力 MIT(scratch-gui 及全家桶) 从源码 build 出静态站点挂 Nginx;Node 20+ 构建 静态文件,~1C/1G 内即可 教学资源最丰富;自建版离线无云社区(自建没有 scratch.mit.edu 的账号/作品分享);2026-04 "spork"(Blockly unfork)改造后小版本有回归 bug,自建 pin v5.3.0 并实测
图形化 TurboWarp(桌面+在线) Scratch 增强版:编译提速 10–100 倍、暗色、插件、打包器 GPL-3.0 Desktop 直接发安装包给学员机;在线版可用官方或自建(scratch-gui 的 mod) 极轻 老电脑流畅跑大型项目;内置打包器(HTML/zip/桌面应用);与官方 Scratch 兼容性好(v1.16.0 已适配最新 Scratch 项目格式);GPL 要求分发时开源修改
图形化 Blockly + Blockly Games Google 的积木编程库(可自做编辑器)+ 七个闯关小游戏(Maze/Turtle 等) MIT Blockly Games:静态部署即可;Blockly:嵌入自己页面 极轻 适合做"编程前热身"与自定义课程;注意 Blockly 已移交 Raspberry Pi Foundation(2025-11),版本迭代到 v13.x,自嵌代码要跟 API 变化
过渡 Hedy 渐进式文本编程语言:Level 1→43 逐级增加语法复杂度,终点是合法 Python 子集;支持中文关键字界面 EUPL-1.2(主仓 hedyorg/hedy) 浏览器 Web 应用(Python 后端),可 Docker 自建 ~2C/2G(含 Python 执行沙箱) 图形化→文本的最佳桥梁(10 岁+);47 种语言含中文;自带课堂管理与教案;自建需关注沙箱安全配置
过渡 CodeCombat(开源版) 游戏化学编程(Python/JS 控制角色闯关) MIT(代码)/ CC-BY(素材)/ 关卡内容专有 仓库自带 docker-compose 可自建 中等(Node+Mongo,数 G) ⚠️ 自建只有引擎没有官方课程关卡——LICENSE-LEVELS.md 明确关卡不开源;自建更适合"自研关卡"或作为编程游戏引擎参考;直接用官网免费关卡教学更实际
文本 JupyterLite 浏览器内 JupyterLab:Pyodide WASM 跑 Python 3.14,纯静态站点 BSD-3-Clause pip install jupyterlite 构建 → 静态目录挂 Nginx;可预打包常用包(离线) 构建 ~2C/2G;运行时算力在学员浏览器 Python 教学入口首选:零服务器执行、零安装;限制:纯 WASM 环境无 pip 装系统包之外的 C 扩展重包(matplotlib/numpy 等 Pyodide 自带可用)、文件存 IndexedDB(换浏览器/清缓存即丢,需教学"下载作业"流程)
文本 code-server 浏览器里的 VS Code(真后端 Python,可装库/跑长任务) MIT 官方 Docker 镜像 codercom/code-server ~2C/2G/人(上限 1–2G 内存每人) 进阶/竞赛学员用;维护状态如实写:仍发版(v4.134.x 跟随上游 VS Code),但 Coder 重心在 Coder 平台,无新功能规划——可用但别指望新特性;扩展走 Open VSX(微软市场扩展缺失)
文本 OpenVSCode Server(备选) Gitpod 维护的上游 VS Code 浏览器版 MIT 官方 Docker 镜像 同上 微软官方市场扩展可用;功能少于 code-server(无密码登录页等)
文本 Eclipse Theia / Theia IDE 开放云/桌面 IDE 平台(非 VS Code fork),可定制品牌化 IDE;官方提供实验性 Docker 在线托管 EPL-2.0 Docker 实验镜像 / 自建 ~2C/2G 想做"自有品牌教学 IDE"的远期选项;教学生态/插件不如 VS Code 系;活跃(AI-native 方向)
了解 Brython / Skulpt 纯 JS 实现的浏览器 Python(无 WASM) Brython BSD-3 / Skulpt BSD 嵌页面即可 极轻 比 Pyodide 轻但兼容性差(标准库不全、C 扩展不可用);有 JupyterLite 后价值有限,仅了解
了解 micro:bit / MakeCode 生态 micro:bit 硬件编程:MakeCode(积木+JS+Python)MIT(pxt-microbit)、MicroPython、Python Web 编辑器 MIT 官网用/自建较重(PXT 构建链) 官网轻 有 micro:bit 硬件课程时用官方站最省事;自建仅了解

1.1 限制与回避(选型红线)

  • CodeCombat 开源版:关卡内容不开源(代码 MIT ≠ 课程开源),自建=空引擎。要教学内容就官方站/商用授权,自建只适合引擎二开——教学主线回避,记档备查。
  • code-server:无新功能规划(Coder 重心转移),微软市场扩展不可用(Open VSX 替代),多人多租户要自己搭认证——按"维护跟随上游、无演进"的预期使用;要微软扩展就换 OpenVSCode Server。
  • Scratch 自建版:无官方云服务(账号/云变量/作品分享不可用,云变量需自建 backend);spork 大重构后有零散回归,pin 版本+实测。
  • TurboWarp:GPL-3.0 传染性(自建服务/修改需开源);桌面版给学员机分发要走安装包管理。
  • JupyterLite:浏览器 IndexedDB 不持久(教学必须配套"作业导出/提交"流程);重包(pandas 大数据处理、部分 C 扩展)受 WASM 限制。
  • Hedy:EUPL-1.2 许可对 SaaS 分发有要求;沙箱执行学员代码必须做好资源限制与隔离(容器/超时)。
  • Blockly 自嵌开发:版本节奏 v12→v13 快,自写积木课程要跟进 API;已非 Google 直营,维护主体变了。
  • Brython/Skulpt:兼容性与性能均劣于 Pyodide 路线——新项目回避。

推荐结论(青少年编程学习站): - 首选(图形化入口)= Scratch 自建(scratch-gui v5.3.0 静态站)+ Blockly Games(热身);老电脑/进阶课 TurboWarp 桌面版分发(GPL 注意)。 - 首选(过渡)= Hedy Docker 自建(中文支持、渐进语法、课堂管理,是 Scratch→Python 的标准桥)。 - 首选(Python 文本入口)= JupyterLite 静态站(零服务器算力、纯 Nginx 可挂);进阶学员 code-server Docker(如实接受其维护预期)。 - 选配 = Theia(自有品牌 IDE 远期)、MicroPython/micro:bit(有硬件时)、JupyterLab Server(需要真后端 notebook 的班级)。 - 回避 = CodeCombat 开源版当课程用(内容不开源)、Brython/Skulpt 新项目、直接裸奔自建 code-server 公网(必须过网关+认证)。

2. 部署要点

2.1 scratch-gui 自建(静态站)

git clone https://github.com/scratchfoundation/scratch-gui.git
cd scratch-gui && npm ci && npm run build      # Node 20+,构建产物 dist/
# 产物拷到 F:\EricLiu\AppDocs\YouthCoding\labs\scratch-dist\,Nginx 静态托管即可
  • pin v5.3.0;构建机内存要给足(webpack 大项目)。
  • 想要云变量/账号需自配 backend(默认不带);纯教学"打开即编"场景不需要。

2.2 TurboWarp 打包

  • 桌面版:desktop.turbowarp.org 直接下载 v1.17.1 安装包(Win/macOS/Linux),分发给学员机即可,无需服务器。
  • 打包作品:用内置 Packager 把 .sb3 打成 HTML/zip/桌面应用,产物落 labs\packaged\,可挂 Nginx 直接玩。
  • 在线版自建属深度二开(scratch-gui mod),一般不必——官方在线编辑器或桌面版足够。

2.3 JupyterLite 构建(纯静态挂 Nginx)

pip install "jupyterlite[lab]"==0.8.*    # jupyterlite-core 0.8.x(内含 JupyterLab 4.6)
mkdir lite && cd lite
# 预装离线包:requirements 里列 numpy/matplotlib 等 Pyodide 支持的包
echo "numpy
matplotlib" > requirements.txt
jupyter lite build --contents notebooks/           # 产物在 _output/
# _output/ 整体拷到 F:\EricLiu\AppDocs\YouthCoding\labs\jupyterlite-dist\,Nginx 静态托管
  • 运行时计算全在学员浏览器,服务器只发静态文件——40 核服务器几乎无压力。
  • 教学流程配套:内容预置进 notebooks/ 一起构建;学员作业走"下载 .ipynb → 平台提交"。

2.4 code-server Docker

# docker-compose.yml,放 F:\EricLiu\AppDocs\YouthCoding\labs\docker\code-server\
services:
  code-server:
    image: codercom/code-server:4.134.*        # pin 具体版本
    container_name: codeserver-py
    ports: ["127.0.0.1:8104:8080"]
    environment:
      - DOCKER_USER=$USER
    command: --auth=password                    # 务必认证;公网再叠加 Nginx basic-auth/网关认证
    volumes:
      - F:\EricLiu\AppDocs\YouthCoding\labs\workspace:/home/coder/project
    cpus: 2
    deploy:
      resources:
        limits: { memory: 2G }
    restart: unless-stopped
  • 扩展市场默认 Open VSX;Python 系扩展(ms-python 部分需微软市场)注意兼容,可用 Pylance 替代品/基础 lint。
  • 每学员一容器或一目录,资源限额必须配;沙箱执行注意 --auth 与反代。

2.5 Hedy Docker 自建

services:
  hedy:
    image: ghcr.io/hedyorg/hedy:latest          # pin 实际 tag
    ports: ["127.0.0.1:8105:8080"]
    environment:
      - IS_FLAASKY=false                        # 按官方 env 文档配置数据库/邮件等
    volumes:
      - F:\EricLiu\AppDocs\YouthCoding\labs\hedy-data:/data
    cpus: 2
    deploy:
      resources:
        limits: { memory: 2G }
    restart: unless-stopped
  • 面向 10 岁+,界面/教材支持中文;开课前先跑通"教师建班→学员加入→Level 1→Save & run"全流程。
  • 学员代码执行沙箱务必确认资源限制与超时配置(官方默认已有基本防护,自建需复核)。

3. 实验路径:搭建"青少年编程学习站"

目标形态:图形化 + Python 双入口,统一走阶段 A 的 1Panel/Nginx 网关(WebPanel 分册):

Nginx 网关(1Panel 统管,HTTPS)
 ├─ /scratch    → 静态站(scratch-gui dist)         # 6–12 岁
 ├─ /games      → 静态站(Blockly Games)            # 热身
 ├─ /hedy       → Hedy 容器 8105                     # 10–14 岁过渡
 ├─ /py         → 静态站(JupyterLite dist)         # 12 岁+ Python 入口
 └─ /code       → code-server 容器 8104(认证+限额)  # 进阶/竞赛

分步实验: 1. E1 网关与静态层:1Panel 建 Nginx 站点,挂 scratch/Blockly Games/JupyterLite 三个静态目录;验收 = 家长/学员机浏览器全流程可玩。 2. E2 过渡层:部署 Hedy 容器,建测试班,跑一节 Level 1–3 课程;验收 = 中文界面出题、课堂管理可用。 3. E3 进阶层:code-server 上线,配置认证、每学员目录与资源限额;预装 Python 基础扩展与库。 4. E4 助教层:接 NLP 分册 Ollama(见第 4 节),在 code-server/JupyterLite 页面挂"提示按钮"。 5. E5 运营层:作业提交目录约定(学员下载 .ipynb/打包 .sb3 → 上传平台目录)、日志与备份纳入 Docs 分册备份机制。

4. AI 结合点:本地 LLM 编程助教(不给答案,只给提示)

用 NLP 分册 Ollama(qwen 2–7B 量化,纯 CPU 可跑),做 Scratch→Python 双入口共用的"提示型助教":

  • 调用形态:页面侧边栏按钮 → 后端(FastAPI/Dify)→ Ollama /api/generate;上下文注入 = 学员当前代码 + 卡点(编译错误/超时/积木截图描述)。
  • 核心 prompt 设计(不给答案只给提示):
你是面向 8–15 岁青少年的编程助教。学生正在学习{Scratch|Python}。
规则(必须遵守):
1. 绝不直接给出完整可运行的修正代码或答案;只给提示。
2. 每次回复:先用一句话肯定学生做对的部分;再给一条"下一步检查什么"的引导
   (提问式,例如"循环里的变量每次都加 1 了吗?");最多给一个 5 行以内的
   伪代码片段,且不能直接粘贴即用。
3. 语言:简体中文,短句,不用专业术语堆砌;一次只讲一个知识点。
4. 学生连续 3 次卡在同一处,才允许逐步提高提示粒度(方向→伪代码→半成品)。
5. 遇到与学习无关的请求,礼貌拒绝并引导回编程任务。
学生代码:
{code}
学生描述的问题:
{question}
  • 防作弊与防沉迷(与第 6 节守则呼应):助教输出走后端统一网关,可注入"提示预算"(每 30 分钟 N 次)与日志留存;答案泄露类请求("直接给我最终代码")命中规则即拒绝。
  • Scratch 场景:积木无法直接进 LLM,用"学生口述目标 + 报错/行为描述 +(可选)截图 OCR(OCR 分册)"作为上下文。

5. 排障

症状 原因 处置
scratch-gui 构建失败/OOM Node 构建吃内存 构建机临时 NODE_OPTIONS=--max-old-space-size=4096;pin v5.3.0 后再试
Scratch 自建版打开空白/资源 404 静态产物路径/反代子路径问题 产物放站点根目录最省事;子路径部署需核对 asset 前缀
JupyterLite 页面打不开 kernel 浏览器不支持/缓存损坏 用新版 Chrome/Edge;清理 IndexedDB;确认 WASM 共享内存头(如跨域隔离需要时配 COOP/COEP)
JupyterLite 学员环境丢失 IndexedDB 随浏览器清理丢失 教学流程强制"下载作业"习惯;重要内容预置进构建 contents
code-server 连不上/反复要求登录 未配 auth 或密码文件丢失 compose 里 --auth=password 并持久化配置目录;公网必须叠加网关认证
code-server 缺扩展 Open VSX 无微软专有扩展 预期行为;用开源替代扩展或换 OpenVSCode Server 镜像
Hedy 学员代码拖垮服务 沙箱资源限制未复核 容器限 cpus/memory;核对官方超时/沙箱 env;只在内网教学时段开放
Ollama 助教响应慢 CPU 推理排队 限并发(一次 1–2 个请求)、用小模型(qwen 2B 级);提示预算顺带限流
公网子域被扫描攻击 服务直暴露 一律过 1Panel/Nginx 网关 + HTTPS + 认证,容器只绑 127.0.0.1
Windows 路径挂载失败 Docker Desktop 路径格式 compose 用 F:\EricLiu\... 原生写法;bash 操作用 /f/EricLiu/...

6. AI 操作守则(未成年人场景强化)

  1. 先读后写:改配置/代码前先读现有文件;产物只写 F:\EricLiu\ 下;学员作业/数据放 labs\ 对应目录。
  2. 版本固定:scratch-gui pin v5.3.0(spork 重构期小版本有回归)、TurboWarp 1.17.1、JupyterLite 0.8.x、code-server 4.134.x(升级前查 changelog)、Hedy/Hedy 镜像 pin tag。
  3. 未成年人数据隐私:不采集多余个人信息(不强制手机号/实名);学员作品、代码、对话日志只留本机 F:\EricLiu\ 下,禁止上传外部云服务;展示/分享学员作品前须家长/教师同意。
  4. 内容过滤:助教 prompt 强制"教学语境",无关/不当请求拒绝;平台对外内容(配图用 ImageGen 分册)生成后人工审核再上线。
  5. 防沉迷与提示预算:助教调用限频(提示预算),教学站页面可加连续使用提醒;不设激励无限刷题的机制。
  6. 沙箱安全:一切学员可执行代码的环境(Hedy/code-server/JupyterLab Server)必须容器隔离+资源限额+超时;JupyterLite 在学员浏览器内执行,风险天然低,但仍提示家长浏览器版本。
  7. 诚实标注:文档/网站对"自建版无云社区""code-server 维护预期""CodeCombat 关卡不开源"等限制如实标注,不夸大。
  8. 破坏性操作需确认:删除学员作品、重建数据卷、清理 labs\ 前必须向用户确认。