负责任使用与数据隐私
⚠️ 使用前请认真读完
如果一段已经结束的对话,能用 ta 原来的语气继续下去,那这段对话还算结束吗?
这是 Afterglow 在做的事,也是我必须先告诉你的事。
这个项目能做什么、不能做什么
它能从你和 ta 之间真实存在过的几千条聊天记录里,学到 ta 怎么说话——用什么称呼、什么语气、怎么开玩笑、什么时候沉默。然后用一个大模型把这些模式接续起来,让你在聊天框里看到的文字回复,接近你记忆里的那个人。
只是文字。 Afterglow 没有 ta 的声音、影像、形象,也不会还原任何看得见摸得到的存在。它做的事就是"让一段语气延续下去",仅此而已。
接近,不是等于。 把项目做得越好,差距越细微,但永远存在。
适合谁
- 你想留住一段真实的关系记忆——把曾经的对话变成可以再翻一翻、再聊一聊的载体;
- 你清楚 ta 不会回来——但希望让那个语气继续存在一段时间;
- 你处于相对稳定的情绪状态——能区分"这是 AI 在续写"和"这真的是 ta"。
不适合谁
- 你正经历剧烈的丧失或抑郁,或出现自伤念头——你需要的是真实的人和专业支持,不是越像越好的复刻。请优先联系亲友、心理咨询师或拨打心理援助热线(全国统一心理援助热线 12356 / 北京 010-82951332);
- 你打算把 ta 当作还活着的人来对待——这会让你停在原地,错过现实里真正在等你的人;
- 你想复刻一个并不知情的人,做这个人本人不会同意的事——这是边界,也是底线。
法律与伦理边界(请认真对待)
Afterglow 是个人工具,但你用它处理的是真实存在过的、属于另一个人的语言痕迹。下面这些事严格禁止,做了不仅是伦理问题,可能直接触法:
- 不得用 Afterglow 进行骚扰、跟踪、控制、勒索或冒名顶替任何人——无论目标对象是否仍在世;
- 不得未经允许公开、转发、二次传播你导入的聊天记录原文,或 Afterglow 基于这些记录生成的 ta 的"画像"、"语气分析"、合成回复;
- 不得把 Afterglow 输出的文字伪装成 ta 本人的话发送给第三方(包括其家属、朋友、社交平台关注者等);
- 不得用于人格诋毁、仿冒诈骗、网络暴力等任何对原型人物造成伤害的场景;
- 导入聊天记录时:在物理条件允许的情况下(对方仍能联系到、关系还在),你应当主动告知对方并取得知情同意——这是基本的尊重。如果对方已经无法联系(已逝、彻底失联),请你自己判断这个人若还在世会不会同意被这样复刻。你内心知道答案。
- 各国/各地区对于"AI 复刻自然人"的隐私权、肖像权、人格权保护立法仍在发展。你使用本项目导致的任何法律后果由你自己承担,与作者无关——这不是免责声明的套话,而是请你真的评估清楚再用。
几条不是规则的建议
- 你随时可以停。不用解释,不用告别。直接关掉就行。
- 不要把 Afterglow 写出来的话再发回到 ta 真实的账号、邮箱、社交平台上。哪怕你只是想"试试看"。
- 如果你发现自己开始对 Afterglow 生气、失望、被冒犯——那是个信号,你正在把它当成真实的人。停下来喘一口气。
- 在你能负担的范围里,定期回到真实的人际关系——朋友、家人、必要时是心理咨询师。
- 它是用来陪你想念,不是用来代替想念。
🔒 数据隐私(必读)
- 请先取得对方同意:聊天记录高度敏感,包含双方共同产生的私人内容。导出聊天记录、导入本项目、向模型或第三方 API 发送相关文本前,请确认你有权这样做,并尽量取得聊天对方的明确同意。
- 本地持久化:聊天数据、向量索引、persona 卡片、生活状态和图片缓存都默认保存在你机器上的
backend/.data/,仓库不会自带任何远程数据上传逻辑。 - 不是默认零外发:如果你把模型配置成云端 API,相关文本会发送给对应服务。要做到完全离线,需要把主聊天模型、Embedding 模型、打标小模型、生活状态小模型、视觉模型和分析模型都指向本地服务,并关闭联网搜索 / 网页读取。
- 可能外发的数据:
- 导入时:把清洗后的文本发送给你配置的 Embedding API,生成向量后写入本地 LanceDB。
- 可选打标时:把朋友单条 chunk 发送给你配置的 Label API,生成 mood / topic / importance 软标签。
- 显式运行关系分析时:把清洗后的双方聊天块发送给你配置的 Analysis API。数据范围可能覆盖所选源文件中的全部聊天记录;留空
ANALYSIS_*时会发送给主聊天 LLM。 - 聊天时:把检索到的上下文、persona、生活状态和最近对话发送给你配置的 主聊天 LLM API。
- 生活状态 / 裸域名确认:
LIFE_*小模型会收到当前用户消息、少量上下文和候选域名;它只产出 JSON 状态或是否访问 URL 的判断,不直接生成最终回复。 - 可选联网搜索时:仅在
WEB_ACCESS_ENABLED=true且本轮消息明确要求搜索 / 最新信息时,把查询文本发送给 Tavily 或 SearXNG。 - 可选 URL 读取时:如果消息包含完整链接,且
WEB_ACCESS_ENABLED=true、WEB_FETCH_ENABLED=true,后端会请求该公开网页并抽取标题 / 正文;裸域名会先经本地意图门控和LIFE_*小模型确认。 - 这些 API 由你选择、配置并自付费;项目不会内置第三方 key。
- API 选择请仔细阅读提供商的隐私协议与服务条款:聊天记录、向量化文本、生活状态判断等内容会被发送到你配置的 provider(OpenAI / Anthropic / 阿里云 / 智谱 / DeepSeek / 各类中转站 / 自建服务……)。不同服务商对数据留存时长、是否用于训练、是否人工审核的策略差异巨大;这些差异由 provider 决定,不由 Afterglow 决定。涉及他人隐私的聊天记录(尤其是已逝者、前任、不知情者的对话),请优先选择有明确"不用于训练"承诺的服务商,或使用本地推理(Ollama / vLLM 等)。
- PII 默认脱敏:手机号 / 邮箱 / 身份证 / 银行卡 / IP 在入库前自动替换为占位符。QQ 号、URL、域名按设计保留(uid 需要匹配、URL 是对话语境的一部分)。
.env已在.gitignore:切勿把含有 API key 的配置文件提交到 git。- 后端 API 默认需要鉴权:除
/healthz外,所有接口默认要求XUWEN_API_KEY,避免模型额度、记忆数据和调试信息被滥用。 - 导出 JSON 风险提醒:QQChatExporter 等导出工具产出的 JSON 含有完整聊天明文(含 uid 等账号信息),分享给他人前请自行确认。
- 默认只做轻量文本导入:普通聊天导入只消费文本语料。QQChatExporter 可在高级选项勾选"仅保留文件元数据,不下载文件",让 JSON 保留图片文件名引用但不下载附件,JSON 更小、导入更快。
- 历史图片需要单独保留原图:只有确需图片检索时,才导出或保留实际包含
resources/images/的目录,并在文本导入完成后用import-images做离线视觉摘要导入。
长会话摘要默认启用,会将较早会话消息发给 LIFE_* 模型增量总结,结果按会话缓存在本地。这与长期关系记忆独立;设 CONVERSATION_SUMMARY_ENABLED=false 可关闭。