Skip to content

Repository files navigation

MentorOS

与 12 位思想导师对话的多 Agent 智识对话平台。选择 1 位导师时单聊,选择 2~4 位时进入手动点名辩论:先确认话题,再点击人物让他单独发言。

当前阶段

这是第一阶段 demo 上线版,不是正式用户系统。

  • 后端:Node.js + Express 4
  • 前端:纯 HTML/CSS/Vanilla JS,无构建工具
  • LLM:Anthropic Messages API,默认模型 claude-haiku-4-5-20251001
  • 流式输出:SSE(Server-Sent Events,浏览器保持连接,服务端一段段推回复)
  • 登录:本地用户名密码,token 默认 7 天过期
  • 存储:data/users.json 存用户,data/diag.json 存 LLM 自检结果
  • 部署:先走 zaodeploy

data/users.json 只是 demo 级存储。它适合小范围验证,不适合正式用户长期使用;后面要接 PostgreSQL 或其他正式数据库。

项目结构

MentorOS/
├── server.js          # Express API、登录、LLM 调用、SSE
├── agents.js          # 12 位导师数据和 prompt 构建器
├── public/            # 前端页面、样式、头像
├── scripts/smoke.mjs  # 上线前 smoke check
├── data/              # 运行时生成,不进 Git
├── package.json
└── .env.example

环境变量

上线必须设置:

变量名 说明
ANTHROPIC_BASE_URL Anthropic API 网关地址,例如 https://api.anthropic.com
ANTHROPIC_AUTH_TOKEN Bearer Token
ANTHROPIC_MODEL 模型名,默认 claude-haiku-4-5-20251001;兼容网关可填自己的模型
ANTHROPIC_THINKING 可选。兼容网关如果默认输出 thinking 块,可填 disabled
SESSION_SECRET 32 位以上随机字符串,用来签名登录 token
MENTOROS_REQUIRE_PROD_CONFIG 上线建议设为 true,缺关键配置时直接启动失败

常用可选项:

变量名 默认值 说明
TOKEN_TTL_DAYS 7 登录 token 有效天数
MENTOROS_DATA_DIR ./data 用户和诊断文件目录
MAX_AGENT_IDS 4 单次最多选择导师数;服务端硬上限仍为 4
RATE_LIMIT_AUTH_MAX 20 每分钟登录/注册限制
RATE_LIMIT_CHAT_MAX 20 每分钟聊天限制
RATE_LIMIT_DEBATE_MAX 30 每分钟点名发言限制

本地运行

npm install
cp .env.example .env

编辑 .env 后,在 zsh/bash 中加载环境变量并启动:

set -a
source .env
set +a
npm start

打开 http://localhost:3000

也可以本地放一个 llm.config.json 作为 LLM 凭证兜底:

{
  "baseURL": "https://api.anthropic.com",
  "authToken": "sk-ant-xxxxx",
  "model": "claude-haiku-4-5-20251001"
}

llm.config.json 已经在 .gitignore 中,不要提交。

上线前自检

node --check server.js
npm audit --omit=dev
npm run smoke

npm run smoke 会随机启动一个本地端口,检查:

  • /health
  • /api/agents
  • 未登录聊天返回 401
  • 注册返回 token
  • 登录返回 token
  • 多人不能误走单聊接口
  • 第 5 位导师和错误发言人会被拒绝
  • 手动辩论一次只返回指定人物
  • 人物错误称呼自己时会自动重写

它使用脚本内置的本地假 LLM,不会消耗真实 API 额度。

健康检查

curl http://localhost:3000/health

期望返回:

{
  "ok": true,
  "llmConfigured": true,
  "authConfigured": true,
  "dataDirWritable": true
}

任何字段为 false,都先别上线。

zaodeploy 部署

确保平台环境变量已经设置:

ANTHROPIC_BASE_URL
ANTHROPIC_AUTH_TOKEN
ANTHROPIC_MODEL
ANTHROPIC_THINKING
SESSION_SECRET
MENTOROS_REQUIRE_PROD_CONFIG=true

如果用小米 Mimo 的 Anthropic 兼容网关,对应关系是:

ANTHROPIC_BASE_URL=https://token-plan-cn.xiaomimimo.com/anthropic
ANTHROPIC_AUTH_TOKEN=<你的 tp-... token>
ANTHROPIC_MODEL=mimo-v2.5
ANTHROPIC_THINKING=disabled

部署命令:

zaodeploy deploy --project mentoros --start "node server.js"

如果平台要求显式申请数据库,可以暂时不接入代码;当前版本仍然使用 data/users.json。等核心功能验证通过,再把用户表迁到 PostgreSQL。

部署后验收

上线后按这个顺序测:

  1. 访问 /health,确认四个字段全是 true
  2. 打开首页,注册一个新用户。
  3. 退出后重新登录。
  4. 选择 1 位导师单聊,确认流式回复正常。
  5. 选择 2~4 位导师,输入话题并确认,此时不应自动生成回复。
  6. 依次点击不同导师,确认每次只出现当前人物的一个气泡,后发言者能回应前文。
  7. 连续点击同一位导师,确认可以继续深化观点且不会把自己当成辩友。
  8. 刷新页面,确认登录状态还在。

后续正式化

第一阶段跑通后,下一步建议按这个顺序做:

  • data/users.json 迁到 PostgreSQL。
  • 加服务端会话表或更完整的 token 撤销机制。
  • 加按用户计费/额度记录,避免 LLM 成本失控。
  • 给 LLM 错误、超时、余额不足做更明确的前端提示。

About

Current MentorOS app: 12 mentor personas, streaming dialogue, and guided multi-agent debates.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages