经 AI Skill Hub 精选评估,Afterglow 获评「推荐使用」。这款AI工具在功能完整性、社区活跃度和易用性方面表现出色,AI 评分 7.5 分,适合有一定技术背景的用户使用。
Afterglow 是一款基于 Python 开发的开源工具,专注于 installable、ai-companion、digital-companion 等核心功能。作为 GitHub 开源项目,它拥有活跃的社区支持和持续的版本迭代,代码完全透明可审计,支持本地部署以保护数据隐私。无论是个人使用还是集成到企业工作流,都能提供稳定可靠的解决方案。
Afterglow 是一款基于 Python 开发的开源工具,专注于 installable、ai-companion、digital-companion 等核心功能。作为 GitHub 开源项目,它拥有活跃的社区支持和持续的版本迭代,代码完全透明可审计,支持本地部署以保护数据隐私。无论是个人使用还是集成到企业工作流,都能提供稳定可靠的解决方案。
# 方式一:pip 安装(推荐)
pip install afterglow
# 方式二:虚拟环境安装(推荐生产环境)
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install afterglow
# 方式三:从源码安装(获取最新功能)
git clone https://github.com/kldhsh123/Afterglow
cd Afterglow
pip install -e .
# 验证安装
python -c "import afterglow; print('安装成功')"
# 命令行使用
afterglow --help
# 基本用法
afterglow input_file -o output_file
# Python 代码中调用
import afterglow
# 示例
result = afterglow.process("input")
print(result)
# afterglow 配置文件示例(config.yml) app: name: "afterglow" debug: false log_level: "INFO" # 运行时指定配置文件 afterglow --config config.yml # 或通过环境变量配置 export AFTERGLOW_API_KEY="your-key" export AFTERGLOW_OUTPUT_DIR="./output"
330316577Qwen3-Embedding-8B。对于项目的支持,我们非常感谢。如果需要使用该 Embedding 模型,请在 backend/.env 中修改以下配置,并按服务说明填写对应的 EMBEDDING_API_URL / EMBEDDING_API_KEY:
EMBEDDING_MODEL=Qwen3-Embedding-8B
EMBEDDING_DIM=4096
EMBEDDING_BATCH_SIZE=25
EMBEDDING_MAX_REQUESTS_PER_MINUTE=100
---
| 工具 | 版本 | 用途 | 备注 |
|---|---|---|---|
| Python | ≥ 3.12 | 后端运行时 | 必需 |
| Node.js | ≥ 20 | 前端构建 | **仅用前端时需要**;纯 API 用户可不装 |
| [uv](https://github.com/astral-sh/uv) | latest | Python 包管理 | 推荐 |
| [pnpm](https://pnpm.io/) | latest | Node 包管理 | 仅前端 |
[QQChatExporter V5](https://github.com/shuakami/qq-chat-exporter) / [WeFlow](https://github.com/hicccc77/WeFlow)(微信,arkme-json)导出纯文本 JSON | — | 真人聊天数据源 | 至少一份;plugin 会自动识别格式 |
接下来所有命令都在 backend/ 目录下执行。
cd backend
uv sync --extra dev
.envcp .env.example .env
用编辑器打开 .env,按文件内注释填写:
SELF_NAME / SELF_UID / FRIEND_NAME / FRIEND_UIDSELF_UID / FRIEND_UID 填 QQChatExporter 导出 JSON 里的 selfUid / 对方 sender.uid(u_xxx 形式)senders[] 的 wxid(wxid_xxx 形式);定位方法见 backend/README.mdFRIEND_* 永远是你想让 AI 模仿的那个人,不是你自己SELF_UID / FRIEND_UID 里用逗号分隔列上所有 UID,导入时会被视为同一身份。例:FRIEND_UID=u_qq_friend,wxid_friend_main,wxid_friend_altOPENAI_BASE_URL / OPENAI_API_KEY / CHAT_MODELEMBEDDING_API_URL / EMBEDDING_API_KEY / EMBEDDING_MODEL / EMBEDDING_DIM / EMBEDDING_BATCH_SIZE / EMBEDDING_MAX_CONCURRENCY / EMBEDDING_MAX_REQUESTS_PER_MINUTEXUWEN_API_KEY(长随机串;调用方在 Header 带 Authorization: Bearer <key>)⚠️ 关键提醒(容易踩的坑) -API_AUTH_REQUIRED=false不会让XUWEN_API_KEY失效——只要 KEY 有值就强制校验。想完全开放,请同时把 KEY 留空。 - 改了.env必须完全重启后端——uvicorn --reload只监听.py文件变化,不会重新加载.env。 - 客户端请求里的model字段是占位——实际使用的永远是.env配的CHAT_MODEL;传gpt-4.1或gemini-flash都会被忽略。
```bash
cd frontend
pnpm install
pnpm dev
→ 打开 http://localhost:5173,按引导填写姓名/关系,就可以开始聊天了。
Afterglow 不内置模型,所有 LLM 调用都走你自己配置的 OpenAI 兼容服务。下表列出每个角色需要什么样的模型 + 推荐。
| 角色 | 必需? | 作用 | 推荐 | 配置项 |
|---|---|---|---|---|
| **主聊天模型** | ✅ 必需 | 生成最终回复,决定"像不像 TA" | **DeepSeek** / **Gemini** | OPENAI_BASE_URL OPENAI_API_KEY CHAT_MODEL |
| **Embedding 模型** | ✅ 必需 | 向量化历史聊天与检索 query | Qwen3-Embedding-8B(阿里云 DashScope 免费额度,或合作伙伴二次元 API 中转站免费提供该模型) | EMBEDDING_API_URL EMBEDDING_API_KEY EMBEDDING_MODEL EMBEDDING_DIM |
| **打标小模型** | 🔧 可选 | 给历史 chunk 打 mood / topic / importance 软标签 | **[智谱清言 glm-4-flash](https://www.bigmodel.cn/invite?icode=Q2FUoY2w04wQb%2FoIugMwsA%3D%3D)(免费)** | LABELING_ENABLED=true LABEL_API_* LABEL_MODEL |
| **生活状态 / 网页意图小模型** | 🔧 可选 | 维护 AI 当前在做什么、判断要不要打开 URL | **[智谱清言 glm-4-flash](https://www.bigmodel.cn/invite?icode=Q2FUoY2w04wQb%2FoIugMwsA%3D%3D)(免费)** | LIFE_API_* LIFE_MODEL |
| **互动决策小模型** | 🔧 可选 | 规则层之后再叫一次小模型微调本轮策略 | **[智谱清言 glm-4-flash](https://www.bigmodel.cn/invite?icode=Q2FUoY2w04wQb%2FoIugMwsA%3D%3D)(免费)** 或复用 LIFE_* | RESPONSE_POLICY_MODEL_ENABLED=true RESPONSE_POLICY_* |
| **视觉模型** | 🔧 可选 | 主聊天模型不支持视觉时用 VLM 把图转文字 | Qwen-VL / Gemini Vision | VISION_API_* VISION_MODEL |
| **联网检索** | 🔧 可选 | 用户明确要求"搜索 / 最新 / 天气"时调 | Tavily(月度免费额度)/ 自建 SearXNG | WEB_ACCESS_ENABLED=true WEB_SEARCH_* |
💡 推荐组合(小模型几乎零成本) - 主聊天模型:DeepSeek 或 Gemini——较高参数量才能撑得起"像 TA 说话"的细腻度 - 所有小模型(打标 / 生活状态 / 网页意图 / 互动决策):智谱清言 glm-4-flash——免费且性能完全够辅助任务 - Embedding:Qwen3-Embedding-8B(DashScope 免费额度 / 二次元 API 中转站 免费) 这套组合下你的主要花费只在主聊天模型上,其它链路几乎不消耗额度。
Q:必须用阿里云 Qwen3-Embedding 吗? A:不必,任何 OpenAI 兼容的 /embeddings 接口都可以。改 EMBEDDING_API_URL / EMBEDDING_MODEL / EMBEDDING_DIM 即可。本地 ollama 也支持。
Q:必须用 OpenAI 吗? A:不必,任何 OpenAI 兼容的 /chat/completions 接口都可以(DeepSeek、Moonshot、Qwen、ollama 等)。改 OPENAI_BASE_URL 即可。
Q:能不能不脱敏 PII? A:可以。.env 设 ENABLE_PII_REDACTION=false,或通过 PII_RULES_PATH 加载自定义规则。
Q:QQ 号 / URL 为什么不脱敏? A:QQ 号在导出文件里到处都是(uid 关联需要);URL 是对话语境的一部分(朋友分享 B 站视频是有意义的)。脱敏列表只覆盖一旦泄漏就造成实质损失的"硬隐私"。
Q:能否导入微信 / Telegram / Discord 数据? A:已内置两个导入 plugin —— QQChatExporter V5(QQ)和 WeFlow arkme-json(微信)。CLI 会按 JSON 顶层特征自动识别,无需额外参数。导出时记得只勾选纯文本,不要带图片/语音/文件等附件。其它平台目前没有内置 plugin,但写一个新 plugin 输出 NormalizedMessage 即可,下游流水线无需改动,欢迎 PR。
Q:会不会越聊越不像? A:每轮对话都会异步回写到 live_messages(trust_level=0.35,权重远低于历史 1.0)。前端可在设置页"暂停回写"避免污染。
Q:怎么删除某条记忆? A:调 DELETE /memory/friend_messages/{chunk_id} 或 DELETE /memory/response_pairs/{pair_id}(软删除)。
Q:能本地完全离线吗? A:可以。LLM 用 ollama / vLLM;embedding 用 nomic-embed-text / bge 等本地模型。
---
Afterglow是一款开源AI工具,提供美好回忆和陪伴功能,值得关注,但仍需要进一步完善
该工具使用 AGPL-3.0 协议,商用场景请仔细阅读协议条款,必要时咨询法律意见。
AI Skill Hub 为第三方内容聚合平台,本页面信息基于公开数据整理,不对工具功能和质量作任何法律背书。
建议在沙箱或测试环境中充分验证后,再部署至生产环境,并做好必要的安全评估。
⚠️ AGPL 3.0 — 最严格的 Copyleft,网络服务端使用也需开源,SaaS 使用受限。
AI Skill Hub 点评:Afterglow 的核心功能完整,质量良好。对于AI 技术爱好者来说,这是一个值得纳入个人工具库的选择。建议先在非生产环境试用,再逐步推广。
| 原始名称 | Afterglow |
| Topics | installableai-companiondigital-companion |
| GitHub | https://github.com/kldhsh123/Afterglow |
| License | AGPL-3.0 |
| 语言 | Python |
收录时间:2026-05-25 · 更新时间:2026-05-25 · License:AGPL-3.0 · AI Skill Hub 不对第三方内容的准确性作法律背书。