| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
English | 中文
让 AstrBot 在群聊中持续采集、学习、审查并注入上下文,使 Bot 逐步具备表达风格、群组黑话、社交关系、长期记忆和人格演化能力。
版权与许可 / Copyright and License
作者: NickMo / Mo Zhiping (莫志平) — nickmo318@outlook.com / max318515692@gmail.com
维护者: EterUltimate
版权所有: Copyright (c) 2025-2026 NickMo (Mo Zhiping). All rights reserved (for personal components).
许可协议: 本项目采用 GPLv3 开源协议,包含并衍生自 AstrBot(同为 GPLv3)。基于本仓库的修改或衍生作品必须以相同协议分发。
Author: NickMo / Mo Zhiping — nickmo318@outlook.com / max318515692@gmail.com
Maintainer: EterUltimate
Copyright: Copyright (c) 2025-2026 NickMo (Mo Zhiping). All rights reserved (for personal components).
License: Licensed under GPLv3. This project incorporates and is a derivative work of AstrBot (also GPLv3). Any modifications or derivative works must be distributed under the same license.
Warning
使用前请先在 AstrBot 原生人格管理中手动备份当前人格。学习、审查和回滚机制不能替代外部备份。
使用本项目即表示您已阅读、理解并同意以下条款:
| 功能 | 说明 |
|---|---|
| 对话风格学习 | 从真实 user -> bot 对话对中提取表达模式、few-shot 和风格审查记录 |
| 群组黑话学习 | 统计预筛高频词,结合上下文推断含义,并在 LLM 请求前注入解释 |
| 人格演化审查 | 学习结果先进入审查链路,支持批准、拒绝、删除、回滚和自动应用策略 |
| 社交关系分析 | 记录互动关系、好感度、心理状态和群组社交上下文 |
| 记忆与知识图谱 | 构建记忆图、知识图谱和可视化查询入口 |
| LLM 请求注入 | 在 on_llm_request 阶段注入社交、黑话、记忆、few-shot 和临时人格增量 |
| WebUI Dashboard | 提供全量设置、审查、黑话、图谱、学习内容、日志等级和指标监控 |
| 多数据库支持 | 支持 SQLite、MySQL、PostgreSQL,包含自动建表和轻量迁移 |
插件不会直接替换 AstrBot 的回复逻辑。它在消息进入、Bot 回复发送后、下一次 LLM 请求前这三个位置增强 AstrBot。
flowchart TB
subgraph AstrBot["AstrBot 框架"]
Event["消息事件 on_message"]
Sent["发送后事件 after_message_sent"]
Req["LLM 请求 on_llm_request"]
end
subgraph Plugin["SelfLearningPlugin"]
Lifecycle["PluginLifecycle"]
Factory["FactoryManager / ServiceFactory"]
Commands["管理命令"]
Hook["LLMHookHandler"]
end
subgraph Learning["学习服务层"]
Pipeline["MessagePipeline"]
Realtime["RealtimeProcessor"]
Progressive["ProgressiveLearningService"]
Quality["LearningQualityMonitor"]
Jargon["JargonMiner / JargonQuery"]
Persona["Persona / Style Review"]
Social["Affection / Social / State"]
end
subgraph Data["数据层"]
Manager["SQLAlchemyDatabaseManager"]
Engine["DatabaseEngine"]
Facades["Domain Facades"]
ORM["models/orm"]
end
subgraph WebUI["WebUI"]
Quart["Quart API"]
Dashboard["Dashboard 静态页面"]
Graphs["图谱与审查界面"]
end
Event --> Pipeline
Sent --> Manager
Req --> Hook
Lifecycle --> Factory
Factory --> Learning
Pipeline --> Realtime
Pipeline --> Progressive
Pipeline --> Jargon
Progressive --> Quality
Progressive --> Persona
Hook --> Social
Hook --> Jargon
Hook --> Manager
Learning --> Manager
Manager --> Facades
Facades --> Engine
Engine --> ORM
Quart --> Manager
Dashboard --> Quart
Graphs --> Quart
Commands --> Learning
sequenceDiagram
participant U as 用户消息
participant P as on_message
participant M as MessagePipeline
participant DB as 数据库
participant R as 实时学习
participant G as 群组批量学习
participant Review as 审查队列
participant H as LLMHookHandler
participant LLM as AstrBot LLM 请求
U->>P: AstrMessageEvent
P->>M: 后台处理消息
M->>DB: 保存 RawMessage
M->>R: 表达模式 / 实时学习
M->>G: 达到阈值后启动批量学习
G->>DB: 筛选消息并创建学习会话
G->>Review: 写入人格审查 / 风格审查
LLM->>H: 下一次请求前触发
H->>DB: 读取已批准 few-shot / 黑话 / 记忆 / 社交关系
H->>LLM: 注入 extra_user_content_parts 或 system_prompt
flowchart LR
Raw["原始消息 RawMessage"] --> Filtered["筛选消息 FilteredMessage"]
Raw --> Expression["表达模式 ExpressionPattern"]
Raw --> Jargon["黑话 Jargon"]
Sent["Bot 出站消息 BotMessage"] --> Pair["user -> bot 对话对"]
Pair --> StyleReview["风格审查 StyleLearningReview"]
Filtered --> PersonaReview["人格审查 PersonaLearningReview"]
StyleReview --> Approved["批准后的 few-shot"]
Jargon --> Context["LLM 注入上下文"]
Approved --> Context
PersonaReview --> Context
进入 AstrBot 插件目录:
cd C:\path\to\AstrBot\data\plugins
git clone https://github.com/EterUltimate/self_learning_EterU.git astrbot_plugin_self_learning重启 AstrBot 或在插件管理页重新加载插件。
当前代码不会在插件安装或启动阶段自动安装 pip 依赖。安装完成后,请进入 self-learning 设置页或 WebUI 系统设置,手动点击“安装依赖”。
依赖安装接口只接受设置页确认请求:
{"manual_confirmed": true, "source": "system_settings"}如果部署环境禁止 WebUI 安装依赖:
$env:ASTRBOT_ENABLE_WEB_DEP_INSTALL="false"默认地址:
http://127.0.0.1:7833
当前 WebUI 默认免密访问。若 web_interface_host=0.0.0.0,局域网内可使用服务器 IP 访问。
Provider 未配置时插件仍可加载,但 LLM 相关功能会降级并写入日志。
WebUI 提供以下入口:
修改数据库类型、数据目录、WebUI host/port 后需要重启插件。日志等级和多数学习阈值可立即生效。
| 类型 | Driver | 适用场景 |
|---|---|---|
| SQLite | sqlite+aiosqlite | 默认单机部署 |
| MySQL | mysql+aiomysql | 多实例或较大数据量 |
| PostgreSQL | postgresql+asyncpg | 长期运行、schema 隔离、多实例部署 |
数据库层使用 SQLAlchemy async ORM。SQLAlchemyDatabaseManager 对外保持旧接口兼容,内部通过 Domain Facade 路由到消息、学习、黑话、人格、社交、表达、心理状态、强化学习、指标和管理等领域。
自动建表会执行:
自动迁移只做列级新增,不做字段删除、重命名或类型变更。
所有命令需要 AstrBot 管理员权限。
| 命令 | 说明 |
|---|---|
| /learning_status | 查看学习状态和统计 |
| /start_learning | 手动启动学习 |
| /stop_learning | 停止学习 |
| /force_learning | 强制执行一次学习 |
| /affection_status | 查看好感度状态 |
| /set_mood <类型> | 设置 Bot 情绪 |
确认已经通过设置页手动安装依赖。安装阶段不会自动执行 pip install。
检查:
按顺序检查:
检查:
详细文档位于 docs/:
关键源码入口:
本插件负责学习、审查、记忆和人格优化;群聊增强插件负责回复决策和读空气。组合使用时,Bot 既能积累上下文,也能更稳地决定何时回复。
本项目采用 GPLv3 License 开源协议。
如果觉得有帮助,欢迎 Star 支持。
| Back | FazBrowse Home | New Git URL |