# tokui_chat **Repository Path**: lmxsoft/tokui_chat ## Basic Information - **Project Name**: tokui_chat - **Description**: TokUI 流式 AI 对话独立项目(零运行时依赖) - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 3 - **Created**: 2026-07-15 - **Last Updated**: 2026-07-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # TokUI Chat 流式 AI 对话独立项目(零运行时依赖)。前端单页 + Node 单文件服务,对接阿里云百炼(OpenAI 兼容模式)。 ![TokUI Chat截图](assets/screenshot/screenshot.png) ## 目录结构 ``` tokui-chat/ ├── index.html # 页面骨架(仅结构 + 资源引用) ├── server/ │ └── server.js # 单文件服务:静态资源 + SSE 代理(百炼) ├── assets/ │ ├── css/style.css # 应用样式 │ └── js/ │ ├── app.js # 前端应用逻辑 │ ├── tokui-config.js # 浏览器端配置(Base URL / 模型 / 采样) │ ├── tokui-prompt.js # 系统提示词(TokUI DSL 文档) │ └── tokui-cases.js # 预制案例库 ├── lib/ # 第三方:tokui.umd.js + tokui.css ├── tokui.sh # 进程控制:start/stop/restart/status/logs ├── package.json ├── .env.example # 配置模板 └── .env # 本地配置(自行创建,已 gitignore) ``` ## 快速开始 ```bash # 1) 配置(API Key 服务端持有,不下发浏览器) cp .env.example .env # 编辑 .env 填入 BAILIAN_API_KEY # 2) 启动 ./tokui.sh start # → http://localhost:5179 ``` > 需要 Node.js(脚本与 `npm` 命令均依赖)。无第三方 npm 依赖,无需 `npm install`。 ## 命令 | 脚本 | npm | |------|-----| | `./tokui.sh start` | `npm start` | | `./tokui.sh stop` | `npm run stop` | | `./tokui.sh restart` | `npm run restart` | | `./tokui.sh status` | `npm run status` | | `./tokui.sh logs [N]` | `npm run logs` | | `node server/server.js`(前台) | `npm run serve` | - 后台 `nohup` 运行,PID → `.run/tokui.pid`,日志 → `.run/tokui.log` - `start` 若端口被占(本实例或他进程)会先停掉再启 - 自动加载 `.env`;命令行环境变量优先(如 `PORT=8080 ./tokui.sh start`) ## 配置(`.env`) | 变量 | 必填 | 默认 | 说明 | |------|------|------|------| | `BAILIAN_API_KEY` | 是 | — | 百炼 API Key,仅服务端持有 | | `PORT` | 否 | `5179` | 服务端口 | | `HOST` | 否 | `127.0.0.1` | 绑定地址;设 `0.0.0.0` 对外暴露(见安全) | | `RATE_LIMIT` | 否 | `30` | 代理按 IP 限流:窗口内最大请求数 | | `RATE_WINDOW` | 否 | `60` | 限流窗口(秒) | | `PROXY_TOKEN` | 否 | 空 | 代理鉴权 token;设置后请求需带 `X-Proxy-Token` 头,服务端自动注入浏览器 | 浏览器端非敏感参数(模型、采样温度、maxTokens 上限 16384 等)在 `assets/js/tokui-config.js`。 ## 安全 - **API Key 仅在服务端**:浏览器不持有 key,`/api/bailian/stream` 由服务端注入鉴权头转发。 - **默认仅绑 127.0.0.1**:绑 `0.0.0.0` / 内网暴露 = 任何可达者可消耗你的百炼额度,脚本会打印警告。 - **限流**:代理按 IP 限流(默认 30 次/60s),防误用/死循环烧额度。 - **可选鉴权**:设 `PROXY_TOKEN` 后,请求需带 `X-Proxy-Token` 头(服务端注入浏览器,仅同源可见,主要挡外部直调)。 - **日志轮转**:`.run/tokui.log` 超 5MB 自动轮转为 `.log.1`,上限约 10MB。 - `.env`、`.run/` 已在 `.gitignore` 中忽略,勿提交 Key。