From 4a1b8dbc1dfd89f86637a597445c1b47b3d15c8b Mon Sep 17 00:00:00 2001 From: YuanShiJiLoong <2450829984@qq.com> Date: Sun, 22 Feb 2026 02:08:34 +0900 Subject: [PATCH] security: add honest privacy warnings about data flow through server --- README.md | 26 ++++++++++++++++++++++++++ README.zh.md | 26 ++++++++++++++++++++++++++ app/locales/en.json | 4 ++-- app/locales/ru.json | 4 ++-- app/locales/zh.json | 4 ++-- 5 files changed, 58 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 1ed37e2..ba325e1 100644 --- a/README.md +++ b/README.md @@ -120,6 +120,32 @@ Author supports multiple AI providers. Configure via **environment variables** o --- +## 🔒 Privacy & Data Security + +### Local Storage (Safe) +- All creative data (chapters, settings, snapshots) is **stored 100% locally in your browser (IndexedDB)** — never uploaded to any server +- API Keys are stored in browser localStorage + +### ⚠️ Data Flow When Using AI Features + +When using AI features (continue, rewrite, chat, etc.), the following data passes through the **deployer's server** on its way to the AI provider: +- Your **API Key** +- The **text content** you send to AI + +``` +Your Browser → Deployer's Server → AI Provider (ZhipuAI/Gemini/DeepSeek/etc.) +``` + +**If you're using someone else's deployed public instance**, while the deployer promises not to inspect logs, the technical capability to intercept data exists. Therefore: + +1. ✅ You can use a public instance for a **quick trial** +2. ⚠️ After trying it, **immediately destroy your API Key at your provider's website** +3. 🔐 **For real use, fork and deploy your own private instance** — then all data only passes through your own server + +> 💡 Deploying your own instance is easy: Fork this repo → One-click deploy to Vercel → Done. Takes less than 5 minutes. + +--- + ## 📄 License This project is licensed under [AGPL-3.0](LICENSE). diff --git a/README.zh.md b/README.zh.md index 84e9c3a..25d3c95 100644 --- a/README.zh.md +++ b/README.zh.md @@ -120,6 +120,32 @@ Author 支持多种 AI 供应商,你可以通过 **环境变量** 或 **应用 --- +## 🔒 隐私与数据安全 + +### 本地存储(安全) +- 章节内容、设定集、快照等创作数据 **100% 存储在浏览器本地(IndexedDB)**,不会上传到任何服务器 +- API Key 存储在浏览器 localStorage 中 + +### ⚠️ AI 功能的数据流向 + +使用 AI 功能时(续写、改写、对话等),以下数据会经过**部署者的服务器**转发给 AI 供应商: +- 你的 **API Key** +- 你发送给 AI 的**文字内容** + +``` +你的浏览器 → 部署者的服务器 → AI 供应商(智谱/Gemini/DeepSeek等) +``` + +**如果你正在使用他人部署的公开实例**,虽然部署者承诺不会窥视日志,但技术上存在被截获的可能。因此: + +1. ✅ 可以先用公开实例**简单体验**功能 +2. ⚠️ 体验完毕后,**务必到 API 提供商网站及时销毁你的 Key** +3. 🔐 **正式使用请自行 Fork 并部署私有实例**,这样数据只经过你自己的服务器 + +> 💡 部署自己的实例非常简单:Fork 本项目 → 在 Vercel 一键部署 → 完成。全程不到 5 分钟。 + +--- + ## 开源协议 本项目采用 [AGPL-3.0](LICENSE) 协议开源。 diff --git a/app/locales/en.json b/app/locales/en.json index 8e3c783..3e3b022 100644 --- a/app/locales/en.json +++ b/app/locales/en.json @@ -311,7 +311,7 @@ "step3Title": "🤖 Your Personal AI Editor", "step3Content": "Click here to open the AI sidebar, where you can discuss plot with AI or have it help refine your settings and provide writing suggestions.", "step4Title": "⚙️ Settings & API Config", - "step4Content": "This is the brain of your workspace. Make sure to configure your AI model API Key here, otherwise the AI assistant won't work. You can also change language, theme, and build your world settings.", + "step4Content": "This is the brain of your workspace. Make sure to configure your AI model API Key here, otherwise the AI assistant won't work. You can also change language, theme, and build your world settings.\n\n⚠️ Privacy Notice: When using AI features, your API Key and text content are relayed through the deployer's server. If you're using someone else's instance, destroy your API key at your provider's site after trying it out. For serious use, fork and deploy your own instance.", "step5Title": "💡 Always Here to Help", "step5Content": "If you skipped the tour or want to review it again, click the 📖 Help button. In the top-right corner of the help panel, you can restart the tour anytime.", "step6Title": "🐙 Open Source Project", @@ -334,7 +334,7 @@ "savedProfiles": "📁 Saved Profiles", "loadProfile": "Load: {provider} | {model}\nSaved on {date}", "deleteProfile": "Delete this profile", - "intro": "🔑 Configure your AI service provider. Your API Key is stored only in your browser and never uploaded to any server.", + "intro": "🔑 Configure your AI service provider. Your API Key is stored locally, but when using AI features, it is relayed through the deployer's server to the AI provider.\n\n⚠️ If you're using someone else's deployed instance: use it only for a quick trial. Destroy your API key at your provider's site afterward. For serious use, fork and deploy your own private instance.", "provider": "Provider", "geminiNativeHint": "🔷 Calls the Gemini API directly in native format, supporting all native features. Authentication uses a URL parameter (?key=), different from the OpenAI format.", "apiKeyPlaceholder": "Paste your API Key...", diff --git a/app/locales/ru.json b/app/locales/ru.json index 4dab7b1..179c989 100644 --- a/app/locales/ru.json +++ b/app/locales/ru.json @@ -311,7 +311,7 @@ "step3Title": "🤖 Ваш персональный ИИ-редактор", "step3Content": "Нажмите здесь, чтобы открыть боковую панель ИИ, где вы можете обсуждать сюжет с ИИ или попросить его уточнить настройки и дать советы по написанию.", "step4Title": "⚙️ Настройки и конфигурация API", - "step4Content": "Это мозг вашего рабочего пространства. Обязательно настройте здесь API Key вашей языковой модели, иначе ИИ-ассистент не будет работать. Вы также можете изменить язык, тему и создать настройки мира.", + "step4Content": "Это мозг вашего рабочего пространства. Обязательно настройте здесь API Key вашей языковой модели, иначе ИИ-ассистент не будет работать. Вы также можете изменить язык, тему и создать настройки мира.\n\n⚠️ Уведомление о конфиденциальности: При использовании ИИ-функций ваш API Key и текстовое содержимое передаются через сервер развёртывания. Если вы используете чужой экземпляр, уничтожьте свой ключ API на сайте провайдера после пробного использования. Для серьёзной работы разверните свой собственный экземпляр.", "step5Title": "💡 Всегда готов помочь", "step5Content": "Если вы пропустили тур или хотите просмотреть его снова, нажмите кнопку 📖 Справка. В правом верхнем углу панели справки вы можете в любое время перезапустить тур.", "step6Title": "🐙 Проект с открытым кодом", @@ -334,7 +334,7 @@ "savedProfiles": "📁 Сохранённые профили", "loadProfile": "Загрузить: {provider} | {model}\nСохранено {date}", "deleteProfile": "Удалить этот профиль", - "intro": "🔑 Настройте вашего провайдера услуг ИИ. Ваш API Key хранится только в вашем браузере и никогда не загружается ни на один сервер.", + "intro": "🔑 Настройте вашего провайдера услуг ИИ. Ваш API Key хранится локально, но при использовании ИИ-функций он передаётся через сервер развёртывания к провайдеру ИИ.\n\n⚠️ Если вы используете чужой экземпляр: используйте только для пробы. Затем уничтожьте свой API Key на сайте провайдера. Для серьёзной работы сделайте форк и разверните свой приватный экземпляр.", "provider": "Провайдер", "geminiNativeHint": "🔷 Вызывает Gemini API напрямую в нативном формате, поддерживая все нативные функции. Аутентификация использует параметр URL (?key=), отличаясь от формата OpenAI.", "apiKeyPlaceholder": "Вставьте ваш API Key...", diff --git a/app/locales/zh.json b/app/locales/zh.json index fe7a8ee..5ef127a 100644 --- a/app/locales/zh.json +++ b/app/locales/zh.json @@ -311,7 +311,7 @@ "step3Title": "🤖 你的专属 AI 编辑", "step3Content": "点击这里打开 AI 侧栏,可以与 AI 讨论剧情,也可以让它帮你修改设定集、提供写作建议。", "step4Title": "⚙️ 设定集与 API 配置", - "step4Content": "这是工作台的大脑中枢。请务必在此配置你的大模型 API Key,否则 AI 助理无法工作。另外,你还可以在这里随时更改语言、主题、并建立属于你的世界观设定。", + "step4Content": "这是工作台的大脑中枢。请务必在此配置你的大模型 API Key,否则 AI 助理无法工作。另外,你还可以在这里随时更改语言、主题、并建立属于你的世界观设定。\n\n⚠️ 隐私提醒:使用 AI 功能时,你的 API Key 和发送给 AI 的文字内容会经过部署者的服务器。如果你正在使用他人部署的实例,体验完毕后请务必到 API 提供商网站销毁 Key。正式使用请自行部署。", "step5Title": "💡 随时准备为您服务", "step5Content": "如果您跳过了引导,或希望重新回顾,都可以点击这个 📖 帮助按钮。在帮助面板的右上角,您可以随时重新开启向导。", "step6Title": "🐙 开源项目", @@ -334,7 +334,7 @@ "savedProfiles": "📁 已保存的配置方案", "loadProfile": "加载:{provider} | {model}\n保存于 {date}", "deleteProfile": "删除此方案", - "intro": "🔑 配置你的AI服务提供商。API Key 仅存储在你的浏览器本地,不会上传到任何服务器。", + "intro": "🔑 配置你的AI服务提供商。API Key 存储在浏览器本地,但使用 AI 功能时会经过部署者的服务器转发给 AI 供应商。\n\n⚠️ 如果你正在使用他人部署的实例:请仅做简单体验,完毕后务必到 API 提供商网站及时销毁你的 Key。正式使用请自行 Fork 并部署私有实例。", "provider": "服务提供商", "geminiNativeHint": "🔷 原生格式直接调用 Gemini API,支持全部原生功能。认证方式使用 URL 参数(?key=),与 OpenAI 格式不同。", "apiKeyPlaceholder": "粘贴你的 API Key...",