[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-93020":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":8,"htmlUrl":8,"language":9,"languages":8,"totalLinesOfCode":8,"stars":10,"forks":11,"watchers":12,"openIssues":13,"contributorsCount":13,"subscribersCount":13,"size":13,"stars1d":13,"stars7d":14,"stars30d":15,"stars90d":13,"forks30d":13,"starsTrendScore":13,"compositeScore":16,"rankGlobal":8,"rankLanguage":8,"license":17,"archived":18,"fork":18,"defaultBranch":19,"hasWiki":20,"hasPages":18,"topics":21,"createdAt":8,"pushedAt":8,"updatedAt":22,"readmeContent":23,"aiSummary":24,"trendingCount":13,"starSnapshotCount":13,"syncStatus":25,"lastSyncTime":26,"discoverSource":27},93020,"ai-virtual-phone","xiaolongbao0709\u002Fai-virtual-phone","xiaolongbao0709",null,"TypeScript",205,405,79,0,11,116,60.33,"GNU Affero General Public License v3.0",false,"main",true,[],"2026-07-22 04:02:07","# AI Virtual Phone\n\n一个基于 Next.js 的 AI 虚拟互动手机：在浏览器中模拟一部完整的手机，支持与你创建的 AI 角色进行仿真聊天、朋友圈互动与剧情创作。\n\n主要功能：\n\n- 仿真聊天：私聊 \u002F 群聊 \u002F 朋友圈 \u002F 语音消息 \u002F 转账红包卡片，AI 角色有作息、记忆和长期关系\n- 创作系统：角色卡、世界书、预设、正则，附带桌面 AI 助手「小卷」帮你写这些内容\n- 剧情玩法：剧情模式、视觉小说、查手机、访谈、地图冒险、日记、便签墙\n- 扩展生态：应用市场（用 SDK 写自定义 APP）、游戏大厅、内置小游戏\n- 多媒体：AI 生图、Minimax 语音合成、网易云在线音乐（需自配 API）、3D 世界搭建（Tripo）\n- 桌面美化：主题、壁纸、贴纸小组件、自定义 CSS，支持 PWA 安装到手机桌面\n\n所有 LLM 调用都使用**你自己的 API key**，本项目不内置任何模型服务。\n\n## 运行要求\n\n- Node.js 20+（Next.js 15 要求 ≥ 18.18）\n- 任意 OpenAI 兼容的 LLM API（OpenAI \u002F DeepSeek \u002F 中转站等），或 Anthropic \u002F Google Gemini 官方 API\n\n## 快速开始（本地运行）\n\n```bash\ngit clone -b main \u003Crepo-url>\ncd \u003Crepo-dir>\nnpm install\ncp .env.example .env.local\nnpm run dev\n```\n\n浏览器打开 `http:\u002F\u002Flocalhost:3001`（默认端口 3001，可用 `PORT` 环境变量修改）。\n\n`.env.example` 已默认开启：\n\n```env\nNEXT_PUBLIC_SELF_HOSTED_MODE=true\n```\n\n这个模式跳过账号\u002F激活码门禁，用本地单机账号直接进入，适合个人使用。其余环境变量全部可选，功能按需启用（见下表）。\n\n## 首次使用\n\n进入应用后只差一步就能开聊：\n\n1. 打开**设置 → API 设置**，添加你的 LLM API（填 Base URL + API Key，支持 OpenAI 兼容接口、Anthropic、Google Gemini）；\n2. 创建或导入角色卡，开始聊天；\n3. 可选：在设置里继续配置生图、Minimax 语音、网易云音乐 API 等增强功能。\n\n## 部署到 Netlify \u002F Vercel\n\n两个平台都可以直接导入本仓库部署：\n\n1. 新建站点 \u002F 项目，关联你 fork 或 clone 的仓库，选择 `main` 或 `test` 分支；\n2. 构建设置保持默认即可（Netlify 会自动读取仓库里的 `netlify.toml`；Vercel 自动识别 Next.js）；\n3. **在平台后台添加环境变量**（平台不会读取仓库里的 `.env.example`）：\n\n   ```env\n   NEXT_PUBLIC_SELF_HOSTED_MODE=true\n   ```\n\n4. 部署完成后打开站点，按「首次使用」配置即可。\n\n## 环境变量总表\n\n除 `NEXT_PUBLIC_SELF_HOSTED_MODE` 外全部可选，不填时对应功能自动隐藏或停用。\n\n| 变量 | 用途 |\n|---|---|\n| `NEXT_PUBLIC_SELF_HOSTED_MODE` | `true`=单机模式（推荐自部署开启）；`false`=启用账号\u002F激活码门禁（需配 Supabase） |\n| `SUPABASE_URL` \u002F `SUPABASE_SERVICE_ROLE_KEY` | 你自己的 Supabase 项目，启用云端功能时必填（服务端专用，勿放进 NEXT_PUBLIC） |\n| `ACCOUNT_GATE_SECRET` | 账号门禁签名密钥，启用账号系统时设为随机长字符串 |\n| `VERIFY_ADMIN_KEY` | 成年审核\u002F激活码管理后台密钥 |\n| `APP_MARKET_ADMIN_KEY` | 应用市场审核后台密钥（不填回退用 `VERIFY_ADMIN_KEY`） |\n| `NEXT_PUBLIC_SUPABASE_URL` \u002F `NEXT_PUBLIC_SUPABASE_ANON_KEY` \u002F `NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY` | 便签墙实时刷新用（anon key 本身可公开） |\n| `NEXT_PUBLIC_IMAGE_GEN_PROXY_URL` | 通用生图代理地址，需自己部署代理服务 |\n| `NEXT_PUBLIC_DEFAULT_NETEASE_API_BASE` | 网易云音乐 API 默认地址（NeteaseCloudMusicApi 兼容实例，请自行部署）。留空时在线音乐隐藏，用户也可在音乐 APP 设置里自填 |\n| `NEXT_PUBLIC_NETEASE_REAL_IP` | 网易云 API 的 X-Real-IP 参数（海外部署解锁地区限制用） |\n| `TRIPO_API_KEY` | 可选的服务端兜底，一般不用填——用户在世界搭建界面内自行填写 Tripo key |\n| `IMGBB_API_KEY` | 可选的服务端兜底，一般不用填——用户在应用内生图\u002F图床设置里自行填写 |\n| `WEIXIN_PROXY` | 微信本地助手代理，见 `tools\u002Fweixin-local-assistant\u002FREADME.md` |\n\n## 启用自己的 Supabase（可选云端功能）\n\n账号、激活码、成年审核、便签墙、游戏大厅、应用市场、黑市等云端功能需要你自己的 Supabase 项目。在 Supabase SQL Editor 按需执行 `docs\u002F` 下的建表脚本：\n\n- `docs\u002Faccount-supabase.sql`：账号、会话、激活码\n- `docs\u002Fverify-supabase.sql`：成年审核与审核图片桶（部署说明见 `docs\u002Fverify-setup.md`）\n- `docs\u002Fnotewall-supabase.sql`：便签墙\n- `docs\u002Fgame-hall-supabase.sql`：游戏大厅\n- `docs\u002Fcustom-app-market-supabase.sql`：应用市场\n- `docs\u002Fblack-market-supabase.sql`：黑市\n\n然后关闭单机模式并填入服务端密钥：\n\n```env\nNEXT_PUBLIC_SELF_HOSTED_MODE=false\nSUPABASE_URL=https:\u002F\u002Fyour-project.supabase.co\nSUPABASE_SERVICE_ROLE_KEY=your-service-role-key\nACCOUNT_GATE_SECRET=your-random-long-secret\n```\n\n不要把 `.env.local` 提交到 Git。\n\n## 分支选择\n\n本仓库长期保留两个设备兼容版本：\n\n- `main`：正常设备版\n- `test`：兼容设备版，部分设备全屏或显示异常时部署此分支\n\n## 常用命令\n\n```bash\nnpm run dev     # 本地开发（端口 3001）\nnpm run build   # 生产构建\nnpm run start   # 生产运行\nnpm run lint    # 代码检查\n```\n\n## License\n\n本项目采用 GNU Affero General Public License v3.0 only（AGPL-3.0-only）开源。详见 [LICENSE](.\u002FLICENSE)。\n\n## Credits\n\n本项目为独立实现，但部分产品设计和系统抽象受 SillyTavern 启发，包括预设、正则处理、世界书 \u002F lorebook \u002F WorldInfo 等概念。\n\n- SillyTavern: https:\u002F\u002Fgithub.com\u002FSillyTavern\u002FSillyTavern\n- SillyTavern 使用 AGPL-3.0 许可证。\n\n字体、贴纸素材、3D 模型等第三方资源的授权说明见 [NOTICE](.\u002FNOTICE)。\n\n## 备注\n\n`NEXT_PUBLIC_*` 变量会打包进浏览器代码、完全公开。不要把 Supabase `service_role`、后台管理密钥、第三方 API 私钥写进任何 `NEXT_PUBLIC_*` 变量。\n","AI虚拟手机是一个基于Next.js的浏览器端AI互动模拟平台，将手机界面与AI角色深度结合，支持私聊\u002F群聊、朋友圈、语音消息、红包转账等仿真交互，并内置角色卡、世界书、剧情模式、视觉小说、地图冒险等创作玩法。技术上采用TypeScript开发，所有LLM调用均依赖用户自配API（OpenAI兼容\u002FAnthropic\u002FGemini），支持PWA安装、主题定制、AI生图、语音合成及3D世界搭建，强调本地化部署与数据自主权。适用于AI角色扮演、互动叙事创作、教育模拟、社交实验等轻量级个人化AI应用场景。",2,"2026-07-11 02:30:40","CREATED_QUERY"]