Metadata-Version: 2.4
Name: omnific
Version: 0.8.0
Summary: A local-first AI workspace for long-form fiction writing.
Project-URL: Homepage, https://github.com/F0rJay/OmniFic
Project-URL: Repository, https://github.com/F0rJay/OmniFic
Author-email: F0rJay <C1053127549@gmail.com>
License-Expression: Apache-2.0
License-File: LICENSE
Classifier: Development Status :: 3 - Alpha
Classifier: Environment :: Web Environment
Classifier: Framework :: FastAPI
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Internet :: WWW/HTTP :: HTTP Servers
Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
Requires-Python: <3.14,>=3.12
Requires-Dist: aiocache>=0.12.3
Requires-Dist: aiofiles>=22.0
Requires-Dist: aiosqlite>=0.22.0
Requires-Dist: alembic>=1.17.2
Requires-Dist: argon2-cffi>=25.1.0
Requires-Dist: charset-normalizer>=3.4.7
Requires-Dist: cryptography>=46.0.3
Requires-Dist: fastapi>=0.127.0
Requires-Dist: fastembed>=0.8.0
Requires-Dist: gunicorn>=23.0.0
Requires-Dist: itsdangerous>=2.2.0
Requires-Dist: json-repair>=0.60.1
Requires-Dist: lancedb>=0.26.0
Requires-Dist: langchain-amazon-nova>=1.0.1
Requires-Dist: langchain-anthropic>=1.3.1
Requires-Dist: langchain-cohere>=0.5.1
Requires-Dist: langchain-deepseek>=1.0.1
Requires-Dist: langchain-google-genai>=4.1.3
Requires-Dist: langchain-groq>=1.1.2
Requires-Dist: langchain-huggingface>=1.2.2
Requires-Dist: langchain-mistralai>=1.1.1
Requires-Dist: langchain-nvidia-ai-endpoints>=1.4.0
Requires-Dist: langchain-openai>=1.1.6
Requires-Dist: langchain-openrouter>=0.2.3
Requires-Dist: langchain>=1.3.0
Requires-Dist: langgraph-checkpoint-sqlite>=3.0.5
Requires-Dist: langgraph>=1.0.8
Requires-Dist: loguru>=0.7.3
Requires-Dist: mem0ai>=1.0.2
Requires-Dist: nanoid>=2.0.0
Requires-Dist: pillow<12.0,>=8.0
Requires-Dist: pydantic-settings>=2.12.0
Requires-Dist: pyjwt[crypto]>=2.10.1
Requires-Dist: python-multipart>=0.0.21
Requires-Dist: python-socketio[asgi]>=5.11.0
Requires-Dist: pyyaml>=6.0.2
Requires-Dist: pyzmq>=27.1.0
Requires-Dist: sqlalchemy>=2.0.45
Requires-Dist: sqlmodel>=0.0.27
Requires-Dist: starlette-compress>=1.6.1
Requires-Dist: tiktoken>=0.12.0
Requires-Dist: tzdata>=2025.2
Requires-Dist: uvicorn[standard]>=0.40.0
Description-Content-Type: text/markdown

# OmniFic Backend

Python FastAPI 后端，提供 REST API、Agent Runtime、WebSocket、数据库管理。

## 技术栈

- **Python** 3.12+
- **FastAPI** — Web 框架
- **SQLAlchemy / SQLModel** — ORM + 数据库模型
- **SQLite** — 本地数据库
- **LangChain / LangGraph** — Agent 框架
- **ZeroMQ** — 后台任务通信
- **httpx** — HTTP 客户端
- **LanceDB / FastEmbed** — RAG 检索与嵌入

## 项目结构

```
backend/app/
├── api/routers/      # REST API 路由
├── agent_runtime/    # Agent 运行时（图、工具、上下文）
├── storage/          # 数据模型、仓库、服务
├── models/           # LLM 客户端、提供商、目录
├── reading/          # 书架搜索（实验性）
├── background/       # 后台任务（标题生成、摘要）
├── core/             # 工具函数（TXT 解析、文档解析、错误）
├── settings.py       # 应用配置
└── main.py           # 入口
```

## 快速开始

```bash
cd backend
uv sync
uv run uvicorn app.main:app --host 127.0.0.1 --port 8001 --app-dir .
```

## 环境变量

| 变量 | 默认值 | 说明 |
|---|---|---|
| `OMNIFIC_SERVER_HOST` | `127.0.0.1` | 监听地址 |
| `OMNIFIC_SERVER_PORT` | `8000` | 监听端口 |
| `OMNIFIC_DATA_DIR` | `backend/data` | 数据目录 |
| `OMNIFIC_FRONTEND_DIST` | `frontend/dist` | 前端构建产物路径 |

## 数据库迁移

```bash
alembic -c alembic.ini upgrade head
alembic -c alembic.ini revision --autogenerate -m "description"
alembic -c alembic.ini downgrade -1
```

## 测试

```bash
pytest
pytest tests/api/test_tasks.py -v
```

## API 路由

| 前缀 | 模块 |
|---|---|
| `/api/v1/projects` | 项目管理 |
| `/api/v1/characters` | 角色管理 |
| `/api/v1/world-info` | 世界书 |
| `/api/v1/models` | 模型管理 |
| `/api/v1/settings` | 用户设置 |
| `/api/v1/agent` | Agent 会话 |
| `/api/v1/import` | TXT 导入 |
| `/api/v1/bookshelf` | 书架搜索（实验） |
