面向学习场景的 AI 助手:AI 聊天、知识库、题库/错题集、学习概览一体
5.7K
面向学习场景的 AI 助手:以自研的最小 Agent 运行时内核(harness)为后端,配合 React 前端,一站式提供 AI 聊天、知识库、题库、错题集、学习概览。支持联网检索、代码沙箱执行、无头浏览器抓取与 MCP 工具接入。
前后端打包进同一个镜像,容器内 FastAPI 同源托管前端静态产物,开箱即用,只暴露一个端口。
sumengnan/ai-learning-helperhttp_request(被防抓时自动改用浏览器抓取)、代码沙箱(按语言起一次性子沙箱执行)、无头浏览器抓取、MCP 客户端(stdio + streamable-http)。docker run(最小可用)docker run -d --name ai-learning-helper \
-p 8000:8000 \
-v "$PWD/data:/app/data" \
-e HARNESS_API_KEY=sk-your-key \
-e HARNESS_BASE_URL=https://api.openai.com/v1 \
-e HARNESS_MODEL=gpt-4o-mini \
-e AUTH_SECRET=$(openssl rand -hex 32) \
sumengnan/ai-learning-helper:latest
打开 http://localhost:8000,注册/登录后即可使用。
docker compose(推荐,数据持久化).env:
HARNESS_API_KEY=sk-your-key
HARNESS_BASE_URL=https://api.openai.com/v1
HARNESS_MODEL=gpt-4o-mini
AUTH_SECRET=change-me-to-a-long-random-secret
HARNESS_REQUIRE_CAPTCHA=true
docker-compose.yml:
services:
app:
image: sumengnan/ai-learning-helper:latest
container_name: ai-learning-helper
restart: unless-stopped
env_file: [.env]
environment:
HARNESS_APP_HOST: "0.0.0.0"
HARNESS_APP_PORT: "8000"
# 全部持久化数据落到挂载卷 /app/data,重建容器不丢
HARNESS_APP_DB_PATH: /app/data/app.db
HARNESS_PERSISTENCE_DB_PATH: /app/data/harness.db
HARNESS_MEMORY_DB_PATH: /app/data/memory.db
HARNESS_DOWNLOADS_DIR: /app/data/downloads
HARNESS_ATTACHMENTS_DIR: /app/data/attachments
ports:
- "8000:8000" # 需要 80 端口改成 "80:8000"
volumes:
- ./data:/app/data
docker compose up -d
| 变量 | 说明 |
|---|---|
HARNESS_API_KEY | 大模型 API Key |
HARNESS_BASE_URL | OpenAI 兼容的 API Base URL |
HARNESS_MODEL | 模型名,如 gpt-4o-mini |
AUTH_SECRET | 登录签名密钥,生产必须设为随机长字符串(勿用默认值) |
| 变量 | 默认 | 说明 |
|---|---|---|
HARNESS_APP_PORT | 8000 | 容器内监听端口 |
HARNESS_MAX_STEPS | 10 | 单轮 Agent 最大步数 |
HARNESS_TEMPERATURE | 0.7 | 采样温度 |
HARNESS_REQUIRE_CAPTCHA | — | 登录/注册是否强制图形验证码(生产建议 true) |
HARNESS_APP_DB_PATH / HARNESS_PERSISTENCE_DB_PATH / HARNESS_MEMORY_DB_PATH | — | 三个 SQLite 库路径,建议都指向挂载卷 /app/data |
HARNESS_DOWNLOADS_DIR / HARNESS_ATTACHMENTS_DIR | — | 下载/附件产物目录,同样建议放 /app/data |
进阶能力(代码沙箱
HARNESS_ENABLE_SANDBOX、无头浏览器HARNESS_ENABLE_BROWSER、MCPHARNESS_ENABLE_MCP、回答校验门HARNESS_ENABLE_ANSWER_GATE)默认关闭。完整清单见源码仓库的.env.example。
8000(前后端同源)。/app/data 持久化全部 SQLite 库与下载/附件产物,重建容器不丢数据。应用会调用宿主 Docker 起一次性子沙箱来执行代码或抓网页。启用时需额外挂载 Docker socket,并打开对应开关:
environment:
HARNESS_ENABLE_SANDBOX: "true"
HARNESS_ENABLE_BROWSER: "true"
volumes:
- ./data:/app/data
- /var/run/docker.sock:/var/run/docker.sock
⚠️ 挂载
docker.sock等同于把宿主 Docker 控制权交给容器,请仅在受信任环境启用。
latest — 最新构建。X.Y.Z — 语义版本号:X.Y 由仓库 VERSION 文件声明,Z(patch)由 CI 在每次 main 推送时自增。镜像由 GitHub Actions 自动构建并推送(多阶段构建:Node 20 编译前端 → Python 3.12-slim 运行时)。
docs/DEPLOY.md.env.example
Content type
Image
Digest
sha256:99c0fddec…
Size
115.1 MB
Last updated
7 days ago
docker pull sumengnan/ai-learning-helper