[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-84198":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":14,"subscribersCount":14,"size":14,"stars1d":13,"stars7d":12,"stars30d":12,"stars90d":14,"forks30d":14,"starsTrendScore":15,"compositeScore":16,"rankGlobal":9,"rankLanguage":9,"license":9,"archived":17,"fork":17,"defaultBranch":18,"hasWiki":19,"hasPages":17,"topics":20,"createdAt":9,"pushedAt":9,"updatedAt":21,"readmeContent":22,"aiSummary":9,"trendingCount":14,"starSnapshotCount":14,"syncStatus":23,"lastSyncTime":24,"discoverSource":25},84198,"4Ever","Anglyao7\u002F4Ever","Anglyao7","Design For You",null,"Python",58,6,1,0,8,2.54,false,"main",true,[],"2026-06-12 02:04:38","\u003Cdiv align=\"center\">\n\n# 4Ever\n\n**一个面向聊天、Agent、记忆、自动化和个人 AI 用量分析的多模型工作台。**\n\n[English](README_EN.md)\n\n[![Python](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FPython-3.11+-3776AB?style=for-the-badge&logo=python&logoColor=white)](https:\u002F\u002Fwww.python.org\u002F)\n[![FastAPI](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FFastAPI-0.115+-009688?style=for-the-badge&logo=fastapi&logoColor=white)](https:\u002F\u002Ffastapi.tiangolo.com\u002F)\n[![React](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FReact-19-61DAFB?style=for-the-badge&logo=react&logoColor=111111)](https:\u002F\u002Freact.dev\u002F)\n[![Vite](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FVite-6-646CFF?style=for-the-badge&logo=vite&logoColor=white)](https:\u002F\u002Fvite.dev\u002F)\n[![Docker](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FDocker-Compose-2496ED?style=for-the-badge&logo=docker&logoColor=white)](https:\u002F\u002Fdocs.docker.com\u002Fcompose\u002F)\n\n\u003C\u002Fdiv>\n\n---\n\n## 4Ever 是什么？\n\n4Ever 是一个 Python\u002FFastAPI + React 构建的个人 AI 工作空间。它从一个 AI 工作台出发，逐步扩展成集聊天、模型配置、Agent 工作流、长期记忆、Token 用量统计和个人内容管理于一体的系统。\n\n| 模块 | 能力 |\n| --- | --- |\n| **交耳 Chat** | 多供应商 AI 聊天，支持 Persona、记忆、流式事件、附件、引用和 MCP 工具事件。 |\n| **中枢 Provider Hub** | 管理模型 profile、base URL、API key、fallback model 和图片理解能力。 |\n| **秩序 Workflow** | 面向 Agent \u002F MCP 的工作流界面，由 Python 后端运行时承载。 |\n| **Token 统计** | 本地 CLI 采集、仪表盘、热力图、排行榜和设备 \u002F Key 管理。 |\n| **虚实 \u002F 笔记 \u002F 地图纪念 \u002F 灵感** | 围绕创作、记录、记忆和灵感整理的个人工作面。 |\n| **管理员端** | 用户、模块、MCP 策略、readiness 检查和审计记录。 |\n\n当前后端已经切到 Python\u002FFastAPI，并保持前端 API 合同稳定。默认使用 SQLite，因此本地运行不需要额外数据库服务。\n\n## 亮点\n\n- **FastAPI 后端**：覆盖认证、聊天、模型供应商、图像生成、Token 统计、管理员端和 Agent 工作流。\n- **React + Vite 前端**：模块化工作台，包含 Chat、Provider Hub、Workflow、Token Usage、Notes、Memory Map、Inspiration 和 Admin。\n- **流式聊天事件协议**：支持文本 chunk、错误、工具调用、Token 用量、引用校验和运行事件回放。\n- **后端托管模型配置**：支持用户隔离、模型 profile 和加密保存模型 API key。\n- **Persona 与记忆**：让 AI 联系人更稳定，并支持轻量长期记忆召回。\n- **私有附件存储**：owner-scoped 下载、签名临时 URL、文档 chunk 检索和引用详情。\n- **MCP-ready 运行时**：支持 BigModel MCP planned\u002Flive 模式和管理员 allowlist。\n- **Docker Compose 部署**：包含 Caddy 前端 \u002F 反代容器和持久化 Docker volume。\n- **Token CLI**：把本机 AI 编程工具的 Token 用量同步到 4Ever 仪表盘。\n\n## 界面结构\n\n4Ever 不是单一聊天页，而是一个模块化工作空间：\n\n```text\n交耳 | 中枢 | 秩序 | Token统计 | 笔记 | 地图纪念 | 灵感 | 管理员端\n```\n\n后续如果要补产品截图，可以放到 `docs\u002Fimages\u002F` 后在这里引用。\n\n## 快速开始\n\n### 1. 启动后端\n\n```bash\ncd python_backend\npython3.11 -m venv .venv\nsource .venv\u002Fbin\u002Factivate\npip install -e '.[dev]'\nuvicorn app.main:app --host 127.0.0.1 --port 7778\n```\n\n### 2. 启动前端\n\n```bash\ncd frontend\nnpm install\nnpm run dev\n```\n\n打开：\n\n```text\nhttp:\u002F\u002F127.0.0.1:7777\n```\n\nVite 开发服务器会把 `\u002Fapi` 和 `\u002Fhealth` 代理到 `http:\u002F\u002F127.0.0.1:7778`。\n\n## 本地 Docker 部署\n\n如果你希望用容器方式在本地运行，而不是分别启动前后端开发服务器，可以使用 Docker Compose。\n\n```bash\ncd deploy\ncp .env.example .env\n```\n\n把 `deploy\u002F.env` 改成本地 HTTP 配置：\n\n```env\nSITE_ADDRESS=:80\nHTTP_PORT=7777\nHTTPS_PORT=7443\nVITE_API_BASE_URL=\n\nCORS_ORIGINS=http:\u002F\u002Flocalhost:7777,http:\u002F\u002F127.0.0.1:7777\nALLOW_LEGACY_GLOBAL_MODEL_PROFILES=0\n\nMODEL_PROFILE_ENCRYPTION_KEY=local-dev-stable-key\nCHAT_ATTACHMENT_URL_SECRET=local-dev-attachment-secret\n```\n\n构建并启动：\n\n```bash\ndocker compose build\ndocker compose up -d\n```\n\n打开：\n\n```text\nhttp:\u002F\u002F127.0.0.1:7777\n```\n\n健康检查：\n\n```bash\ncurl http:\u002F\u002F127.0.0.1:7777\u002Fhealth\ncurl http:\u002F\u002F127.0.0.1:7777\u002Fapi\u002Fdatabase\u002Fhealth\n```\n\n停止容器但保留数据：\n\n```bash\ncd deploy\ndocker compose down\n```\n\n删除容器和本地 Docker volume 数据：\n\n```bash\ncd deploy\ndocker compose down -v\n```\n\n`deploy\u002F.env` 已被 Git 忽略。若你希望已保存的模型 API key 在重启后仍可解密，请保持 `MODEL_PROFILE_ENCRYPTION_KEY` 稳定不变。\n\n## Token 统计 CLI\n\n安装 CLI：\n\n```bash\nnpm install -g @anglyaoy\u002Ftoken-usage\n```\n\n绑定线上 4Ever 并立即同步一次：\n\n```bash\nforever-token init\n```\n\n本地开发服务：\n\n```bash\nforever-token init local\n```\n\n设置自动同步：\n\n```bash\nforever-token service setup\n```\n\n## 配置\n\n后端配置可以放在项目根目录 `.env` 或 `python_backend\u002F.env`，参考 `python_backend\u002F.env.example`。\n\n```env\nDATABASE_URL=sqlite:\u002F\u002F\u002F.\u002F4ever.db\nBIGMODEL_API_KEY=\nBIGMODEL_MCP_LIVE=0\nAGENT_SYNTHESIS_LIVE=0\nAGENT_GRAPH_RUNTIME=langgraph\n```\n\n前端配置可以放在 `frontend\u002F.env`，参考 `frontend\u002F.env.example`。\n\n## 项目结构\n\n```text\n.\n├── python_backend\u002F             # Python FastAPI 后端\n│   ├── app\u002F                    # API routes、配置和 Agent runtime\n│   ├── tests\u002F                  # 后端合同测试\n│   ├── .env.example            # 后端环境变量示例\n│   └── pyproject.toml          # Python 依赖和 pytest 配置\n├── frontend\u002F                   # React + Vite 前端\n│   ├── src\u002F                    # Panels、services、types 和应用壳\n│   ├── .env.example            # 前端环境变量示例\n│   ├── package.json            # 前端脚本和依赖\n│   └── vite.config.ts          # Vite 开发服务器和代理配置\n├── deploy\u002F                     # Docker Compose、Caddy 和部署环境变量示例\n├── token-usage-cli\u002F            # forever-token CLI 包\n├── docs\u002F                       # 调研和实现文档\n├── deploy.sh                   # 维护者服务器部署辅助脚本\n├── README.md                   # 中文 README\n└── README_EN.md                # English README\n```\n\n## 检查命令\n\n前端：\n\n```bash\ncd frontend\nnpm run build\n```\n\n后端：\n\n```bash\ncd python_backend\npython3.11 -m pytest\n```\n\n健康检查：\n\n```bash\ncurl http:\u002F\u002F127.0.0.1:7778\u002Fhealth\ncurl http:\u002F\u002F127.0.0.1:7778\u002Fapi\u002Fdatabase\u002Fhealth\n```\n\n## Star 趋势\n\n\u003Ca href=\"https:\u002F\u002Fwww.star-history.com\u002F#Anglyao7\u002F4Ever&Date\">\n  \u003Cpicture>\n    \u003Csource media=\"(prefers-color-scheme: dark)\" srcset=\"https:\u002F\u002Fapi.star-history.com\u002Fsvg?repos=Anglyao7\u002F4Ever&type=Date&theme=dark\" \u002F>\n    \u003Csource media=\"(prefers-color-scheme: light)\" srcset=\"https:\u002F\u002Fapi.star-history.com\u002Fsvg?repos=Anglyao7\u002F4Ever&type=Date\" \u002F>\n    \u003Cimg alt=\"Star History Chart\" src=\"https:\u002F\u002Fapi.star-history.com\u002Fsvg?repos=Anglyao7\u002F4Ever&type=Date\" \u002F>\n  \u003C\u002Fpicture>\n\u003C\u002Fa>\n\n## 备注\n\n- 本地数据库、`.env`、`node_modules\u002F`、Vite `dist\u002F` 和生成媒体文件都应保持在 Git 外。\n- 不要把密钥提交到仓库。\n- Agent、LangGraph 和 BigModel MCP 工作流细节见 [docs\u002Fagent-mcp-workflow.md](docs\u002Fagent-mcp-workflow.md)。\n",2,"2026-06-11 04:12:31","CREATED_QUERY"]