Updated project name and added badges for GitHub stars, forks, and issues. Added license section and removed old license information.
225 lines
7.6 KiB
Markdown
225 lines
7.6 KiB
Markdown
# Arboris-Novel | 给写小说的人,一个有意思的写作空间
|
||
|
||

|
||

|
||

|
||
[](https://opensource.org/licenses/MIT)
|
||
|
||
|
||
|
||
|
||
你盯着屏幕上闪烁的光标,脑子里有个模糊的想法:一个有意思的故事。但当你试图把它写下来时,却发现自己卡在了「主角叫什么名字」「故事发生在哪里」「第三章该写什么」这些问题上。
|
||
|
||
**Arboris** 就是在这种时候出现的——它不会替你写作(那样多没意思),但它会在你需要的时候,帮你理清思路、记住细节、提供几个「要不试试这个方向」的建议。
|
||
|
||
**在线体验:** [https://arboris.aozhiai.com](https://arboris.aozhiai.com)
|
||
|
||
**有问题想聊?加群:**
|
||
<p align="center">
|
||
<img width="294" alt="交流群二维码" src="https://github.com/user-attachments/assets/90b6819f-896b-4ddf-9946-43d52c8f1c36" />
|
||
</p>
|
||
|
||
---
|
||
|
||
## 截图看看长什么样
|
||
|
||
<p align="center">
|
||
<img width="1471" alt="主界面" src="https://github.com/user-attachments/assets/a52d0214-bc1b-4792-8a2b-267b09e47379" />
|
||
</p>
|
||
<p align="center">
|
||
<img width="1375" alt="角色管理" src="https://github.com/user-attachments/assets/0673faad-43df-4479-83ae-cffa870199a3" />
|
||
</p>
|
||
<p align="center">
|
||
<img width="1392" alt="大纲编辑" src="https://github.com/user-attachments/assets/b7a7af24-1689-4341-aa78-26b0d74bdddd" />
|
||
</p>
|
||
<p align="center">
|
||
<img width="1255" alt="写作界面" src="https://github.com/user-attachments/assets/c831d746-8c1a-4ce8-aa1c-9b852da15c11" />
|
||
</p>
|
||
|
||
---
|
||
|
||
## 它能帮你干什么?
|
||
|
||
### 📖 管住那些跑偏的设定
|
||
写到第五十章突然想不起来男二号的眼睛是什么颜色?世界观里的魔法体系到底有几个等级?
|
||
Arboris 帮你把所有角色、地点、派系的设定都记下来,随时翻阅,再也不会前后矛盾。
|
||
|
||
### 🧵 把乱糟糟的灵感捋成故事线
|
||
脑子里有十几个场景片段,但不知道怎么串起来?
|
||
和 AI 聊聊你的想法,它会帮你梳理出一条主线,从开头到结局的大纲自然就出来了。
|
||
|
||
### ✍️ 有个不会累的写作搭档
|
||
今天状态不好,但又不想断更?让 AI 先写个草稿,你再根据自己的风格改改。
|
||
或者反过来——你写了开头,让它接着往下试试,没准能给你意想不到的灵感。
|
||
|
||
### 🔄 多版本对比,找到最对味的那一版
|
||
AI 生成的内容不一定第一次就完美,但你可以让它多试几版,挑出最喜欢的部分,慢慢"训练"它懂你的笔触。
|
||
|
||
---
|
||
|
||
## 为什么要做这个?
|
||
|
||
因为我觉得我们需要的不是一个"自动生成器",而是一个**能记住你的世界、理解你的角色、陪你一起推进故事的伙伴**。
|
||
|
||
所以我们做了 Arboris,并且决定**开源**——因为好的工具应该属于所有创作者。
|
||
|
||
---
|
||
|
||
## 快速开始(真的很快)
|
||
|
||
### 方式一:直接用 Docker 跑起来
|
||
|
||
```bash
|
||
# 1. 复制配置文件
|
||
cp .env.example .env
|
||
|
||
# 2. 改几个必填项(用你喜欢的编辑器打开 .env)
|
||
# - SECRET_KEY: 随便敲点字符,越长越安全
|
||
# - OPENAI_API_KEY: 你的大模型 API Key
|
||
# - ADMIN_DEFAULT_PASSWORD: 管理员密码,别用默认的
|
||
|
||
# 3. 启动(默认用 SQLite,不需要装数据库)
|
||
docker compose up -d
|
||
|
||
# 搞定!浏览器打开 http://localhost:<端口> 就能用了
|
||
```
|
||
|
||
### 方式二:我想用 MySQL
|
||
|
||
```bash
|
||
# 在 .env 里改一下 DB_PROVIDER=mysql
|
||
# 然后用这个命令启动(会自动带上 MySQL 容器)
|
||
DB_PROVIDER=mysql docker compose --profile mysql up -d
|
||
```
|
||
|
||
### 方式三:我有自己的 MySQL 服务器
|
||
|
||
```bash
|
||
# 在 .env 里填好你的数据库地址、用户名、密码
|
||
# 然后正常启动
|
||
DB_PROVIDER=mysql docker compose up -d
|
||
```
|
||
|
||
---
|
||
|
||
## 环境变量速查表
|
||
|
||
这些是你可能需要改的配置(完整列表在 `.env.example` 里):
|
||
|
||
| 配置项 | 必填吗 | 说明 |
|
||
|--------|--------|------|
|
||
| `SECRET_KEY` | ✅ | JWT 加密密钥,自己随机生成一串,别告诉别人 |
|
||
| `OPENAI_API_KEY` | ✅ | 你的 LLM API Key(OpenAI 或兼容的) |
|
||
| `OPENAI_API_BASE_URL` | ❌ | API 地址,默认是 OpenAI 官方的 |
|
||
| `OPENAI_MODEL_NAME` | ❌ | 模型名称,默认 `gpt-3.5-turbo` |
|
||
| `ADMIN_DEFAULT_PASSWORD` | ❌ | 管理员初始密码,**部署后记得改** |
|
||
| `ALLOW_USER_REGISTRATION` | ❌ | 要不要开放注册?默认不开(`false`) |
|
||
| `SMTP_SERVER` / `SMTP_USERNAME` | 开注册就得填 | 邮件服务配置,用来发验证码 |
|
||
|
||
> 💡 **数据存哪?**
|
||
> 默认用 SQLite,数据存在 Docker 卷里。想映射到本地?在 `.env` 里设置 `SQLITE_STORAGE_SOURCE=./storage` 就行。
|
||
|
||
---
|
||
|
||
## 一些常见问题
|
||
|
||
**Q: 我不会 Docker 怎么办?**
|
||
A: 装一下 Docker Desktop(Windows/Mac)或者 Docker Engine(Linux),然后复制粘贴上面的命令就行。真的不难。
|
||
|
||
**Q: 我的 API Key 会不会泄露?**
|
||
A: 不会。密钥存在服务器的 `.env` 文件里,不会暴露给前端或用户。
|
||
|
||
**Q: 可以用其它的大模型吗?**
|
||
A: 只要提供 OpenAI 兼容接口,都可以。改一下 `OPENAI_API_BASE_URL` 就行。
|
||
|
||
**Q: 我改了代码怎么办?**
|
||
A: 欢迎!提 PR 或者 Issue 都行。。
|
||
|
||
---
|
||
|
||
## 技术栈(给开发者看的)
|
||
|
||
- **后端:** Python + FastAPI
|
||
- **数据库:** SQLite(默认)或 MySQL+libsql
|
||
- **前端:** Vue +TailwindCSS
|
||
- **部署:** Docker + Docker Compose
|
||
- **AI 对接:** OpenAI API(或兼容接口)
|
||
|
||
---
|
||
|
||
## 面向开发者
|
||
|
||
### 环境准备
|
||
|
||
- Python 3.10+(建议使用虚拟环境)
|
||
- Node.js 18+ 与 npm
|
||
- pip / virtualenv(或你习惯的依赖管理工具)
|
||
- 可选:Docker 与 Docker Compose(用于一键部署与发布)
|
||
|
||
### 后端本地开发
|
||
|
||
```bash
|
||
cd backend
|
||
python3 -m venv .venv
|
||
source .venv/bin/activate # Windows 使用 .venv\Scripts\activate
|
||
pip install -r requirements.txt
|
||
uvicorn app.main:app --reload
|
||
```
|
||
|
||
默认会监听 `http://127.0.0.1:8000`,你可以通过 `--host`、`--port` 调整,或加上 `--reload` 保持热重载。
|
||
|
||
### 前端本地开发
|
||
|
||
```bash
|
||
cd frontend
|
||
npm install
|
||
npm run dev
|
||
```
|
||
|
||
开发服务器默认运行在 `http://127.0.0.1:5173`,可通过 `--host` 参数暴露给局域网设备。
|
||
|
||
### 打包与构建
|
||
|
||
- 前端:`npm run build`,构建产物位于 `frontend/dist/`
|
||
- 后端:确认依赖锁定后,可使用 `pip install -r requirements.txt` 安装到目标环境,或基于 `deploy/Dockerfile` 构建镜像
|
||
- 静态文件托管:生产环境下可用 Nginx 等服务托管 `dist` 目录,并由后端提供 API
|
||
|
||
### 发布与部署
|
||
|
||
推荐在根目录下使用 Compose 文件完成一体化部署:
|
||
|
||
```bash
|
||
docker compose -f deploy/docker-compose.yml up -d --build
|
||
```
|
||
|
||
如需推送镜像,可在 `deploy` 目录执行 `docker build -t <registry>/arboris:<tag> .`,测试后再 `docker push` 发布。
|
||
|
||
---
|
||
|
||
## 参与贡献
|
||
|
||
如果你觉得这个项目有意思,欢迎:
|
||
|
||
- ⭐ 给个 Star
|
||
- 🐛 提 Bug 或建议(在 Issues 里)
|
||
- 💻 贡献代码(PR 我们都会认真看)
|
||
- 💬 加群聊天(二维码在最上面)
|
||
|
||
---
|
||
|
||
## 最后说两句
|
||
|
||
如果你用 Arboris 写出了什么有趣的东西,记得告诉我们。
|
||
|
||
祝你写作顺利,故事精彩。
|
||
|
||
|
||
|
||
|
||
|
||
## License
|
||
|
||
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
|
||
|
||
[](https://star-history.com/#t59688/arboris-novel&Date)
|