feat: add MindSim - an event-driven agent thinking framework for advanced personas#6888
feat: add MindSim - an event-driven agent thinking framework for advanced personas#6888yuanmua wants to merge 11 commits intoAstrBotDevs:masterfrom
Conversation
There was a problem hiding this comment.
Sorry @yuanmua, your pull request is larger than the review limit of 150000 diff characters
Summary of ChangesHello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request significantly upgrades the bot's intelligence by introducing an advanced, event-driven thinking framework called MindSim. This framework allows AI personas to engage in more sophisticated interactions through autonomous decision-making, parallel execution of tasks, and the retention of long-term conversational and relational memories. The changes also include a new user interface for configuring these advanced capabilities and a more efficient event-driven core. Highlights
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here. Footnotes
|
|
Related Documentation 1 document(s) may need updating based on files changed in this PR: AstrBotTeam's Space pr4697的改动View Suggested Changes@@ -1760,4 +1760,252 @@
---
+### 16. MindSim(思想人格)系统 - 事件驱动的高级人格框架(PR #6888)
+
+#### 系统概述
+[PR #6888](https://github.com/AstrBotDevs/AstrBot/pull/6888) 为 AstrBot 引入了 **MindSim(思想人格)** 系统——一个事件驱动的 Agent 思考框架,提供超越传统人格系统的高级能力。MindSim 与现有的默认人格系统并存,用户可根据应用场景选择使用哪种系统。
+
+#### 核心特性
+
+##### 1. 自主思考(Autonomous Thinking)
+- Bot 主动进行"主脑思考",根据当前状态和上下文自主决定下一步行动
+- 不再被动等待用户唤醒词,支持在群聊中自主参与对话
+- 通过内置的思考循环(think loop)持续评估场景,智能选择行动策略
+
+##### 2. 多动作并发(Multi-Action Concurrency)
+- 支持多个动作(如搜索、回复、记忆操作)以独立协程并发运行
+- 主脑通过消息总线(Message Bus)协调动作间的通信
+- 动作执行器(ActionExecutor)支持同名动作多实例并发,通过实例 ID(如 `reply#1`、`wait#2`)区分
+
+##### 3. 长期记忆(Long-Term Memory)
+MindSim 内置两大记忆系统,持久化到 SQLite 数据库:
+
+- **话题总结(Topic Summarization)**:
+ - 周期性识别和压缩对话内容
+ - 提取关键话题和对话脉络
+ - 通过 `ChatSummarizer` 模块管理
+
+- **人物印象(Person Impressions)**:
+ - 记录用户性格特点、关系状态、难忘事件
+ - 持续更新用户画像
+ - 通过 `PersonMemory` 模块管理
+
+##### 4. 事件驱动架构(Event-Driven Architecture)
+- 移除传统主循环,改为事件驱动设计
+- 通过 `MindEvent` 消息类型协调组件通信:
+ - `REPLY`:回复消息事件
+ - `END`:对话结束事件
+ - `ACTION_OUTPUT`:动作输出事件
+ - `TRIGGER_THINK`:触发思考事件
+ - `PIPELINE_YIELD`:管道 yield 事件
+- 降低 CPU 占用,提升响应性
+
+##### 5. 多模型分工(Multi-Model Configuration)
+支持为不同场景配置不同模型,优化性能和成本:
+
+- **思考模型(Think Model)**:快速模型,用于日常思考和决策
+- **回复模型(Reply Model)**:生成对话回复
+- **功能模型(Function Model)**:执行工具调用和复杂任务
+- **深度思考模型(Deep Think Model)**:处理复杂场景(可选)
+- **中等思考模型(Medium Think Model)**:平衡性能与质量(可选)
+- **图片描述模型(Image Caption Model)**:生成图片内容描述
+
+#### 架构组件
+
+MindSim 系统由以下核心模块组成(位于 `astrbot/core/mind_sim/`):
+
+##### 核心引擎
+- **`brain.py`**:主脑事件驱动引擎(`PrivateBrain` 类)
+ - 协调动作与思考
+ - 无主循环,通过 `think_once()` 触发思考
+ - 动作完成后自动触发下一轮思考
+ - 实现思考节流机制(1秒冷却时间)
+
+- **`context.py`**:思考上下文管理(`MindContext` 类)
+ - 维护会话状态
+ - 存储人格配置、用户信息、对话历史
+
+- **`dispatcher.py`**:消息分发器(`PrivateBrainFactory` 类)
+ - 管理 Brain 实例的创建和复用
+ - 协调多个会话的思考流程
+
+##### 动作系统
+- **`action.py`**:动作基类和执行器
+ - `Action`:动作基类,定义动作接口
+ - `ActionExecutor`:动作执行器,支持同名动作多实例并发
+ - `PreExecuteResult`:预执行结果,支持阻塞主思考
+ - `RunningAction`:运行中的动作实例
+
+- **`private/actions/`**:内置动作实现
+ - `Reply.py`:回复动作,生成和发送对话回复
+ - `Wait.py`:等待动作,阻塞主思考等待事件
+ - `RunTask.py`:任务执行动作,运行工具和技能
+ - `EndConversation.py`:结束对话动作
+ - `NoOp.py`:空操作动作
+
+##### 记忆系统
+- **`memory/manager.py`**:记忆管理器(`MemoryManager` 类)
+ - 统一管理话题总结和人物印象
+ - 提供记忆查询和更新接口
+
+- **`memory/chat_summarizer.py`**:对话话题总结
+ - 周期性识别和压缩对话
+ - 提取关键话题和对话脉络
+
+- **`memory/person_memory.py`**:人物印象记忆
+ - 记录用户性格特点、关系状态、难忘事件
+ - 持续更新用户画像
+
+- **`memory/models.py`**:记忆数据模型
+ - `ChatMemory`:对话记忆模型
+ - `PersonMemory`:人物印象模型
+
+##### 消息系统
+- **`messages.py`**:事件消息定义
+ - `MindEvent`:统一事件消息类
+ - `MindEventType`:事件类型枚举
+ - `ActionOutput`:动作输出消息
+ - `ActionStateUpdate`:动作状态更新
+ - `Decision`:LLM 决策消息
+
+##### 管道集成
+- **`AgentMindSubStage.py`**:高级人格子阶段
+ - 作为 AstrMessageEvent 和 MindSim 之间的桥梁
+ - 调用 LLM 生成决策
+ - 支持多模型配置
+
+- **`pipeline/process_stage/method/agent_sub_stages/internal_mind.py`**:管道集成子阶段
+ - 从 AstrMessageEvent 提取信息,构建 MindContext
+ - 调用 PrivateBrainFactory 启动 MindSim 并获取事件流
+ - 监听 MindEvent 事件流,将回复发送到消息平台
+ - 不控制事件生命周期(由主思考 Brain 决定何时结束)
+
+#### 数据库变更
+
+MindSim 引入以下数据库扩展:
+
+##### Persona 表新增字段
+- `personality_config`(JSON,可选):人格特质、表达风格、识别规则、心情标签等
+- `chat_config`(JSON,可选):聊天频率、动态频率、消息长度等
+- `robot_config`(JSON,可选):昵称、别名、平台等
+- `llm_model_config`(JSON,可选):模型配置(功能模型、回复模型、思考模型)
+- `is_advanced`(布尔值,默认 `False`):是否为高级人格
+
+##### 新增记忆表
+- `mindsim_chat_memories`:对话话题记忆
+- `mindsim_person_memories`:人物印象记忆
+
+数据库变更向后兼容,通过 `_ensure_persona_advanced_columns()` 方法自动迁移,不影响现有人格配置。
+
+#### 管道集成
+
+##### 唤醒检查优化
+高级人格在群聊场景下跳过唤醒词检查(`pipeline/waking_check/stage.py`):
+- 当人格标记为 `is_advanced=True` 时,系统自动设置 `is_wake=True`
+- 允许 Bot 在群聊中自主参与对话,无需等待唤醒词
+
+##### 处理阶段路由
+`pipeline/process_stage/method/agent_request.py` 根据 `event.is_advanced_persona` 标记选择执行路径:
+- 高级人格:使用 `InternalMindSubStage` 进入 MindSim 思考流程
+- 传统人格:使用 `InternalAgentSubStage` 进入标准 Agent Runner 流程
+
+#### 前端配置界面
+
+Dashboard 新增高级人格管理页面(`AdvancedPersonaPage.vue`):
+
+- **总配置页**:统一管理高级人格的所有配置
+- **细分配置组件**:
+ - `PersonalitySection.vue`:人格特质、表达风格、识别规则、心情标签
+ - `ChatSection.vue`:聊天频率、动态频率、消息长度
+ - `RobotSection.vue`:昵称、别名、平台
+ - `ModelConfigSection.vue`:多模型配置(思考、回复、功能、深度思考、中等思考、图片描述)
+ - `ModelSelector.vue`:模型选择器,支持提供商和模型选择
+ - `DialogsSection.vue`:开场白配置
+
+- **国际化支持**:中英文界面完全覆盖(`i18n/locales/zh-CN/features/persona.json` 和 `en-US`)
+
+#### 双人格系统架构
+
+MindSim 高级人格与传统默认人格并存,提供灵活的应用场景选择:
+
+##### 系统定位
+- **传统人格**:任务型 Agent,专注工具调用和任务执行(SubAgent、FutureTask、Computer Use 等)
+- **高级人格(MindSim)**:聊天型 Agent,强调自主思考、情感交互和长期记忆
+
+##### 配置隔离
+- 两种人格系统共享 `personas` 数据库表
+- 通过 `is_advanced` 字段区分类型
+- 配置互不干扰,用户可为不同场景创建不同类型的人格
+
+##### 使用场景
+- **任务执行**:使用传统人格,配合 SubAgent 和工具调用完成复杂任务
+- **日常聊天**:使用 MindSim 高级人格,提供自然流畅的对话体验
+- **混合应用**:在同一系统中同时配置两种类型的人格,根据需求切换
+
+#### 技术实现要点
+
+##### 思考决策流程
+1. 收集所有动作的状态和提示词贡献
+2. 用快速模型评估场景复杂度,选择思考等级(fast / medium / deep)
+3. 根据思考等级调用对应模型获取决策
+4. 解析决策为动作指令(START / SEND / STOP)
+5. 执行决策:启动/发送/停止动作
+6. 处理动作产出并发送到消息平台
+7. 动作完成自动触发下一轮思考
+
+##### 思考升级机制
+- 快速模型首先评估场景,输出 `NEED_DEEPER: MEDIUM` 或 `NEED_DEEPER: DEEP` 指令
+- 主脑根据指令升级到中等或深度思考模型
+- 避免为简单场景调用复杂模型,优化成本和性能
+
+##### 动作生命周期
+- 动作通过 `ActionExecutor.start()` 启动,返回实例 ID 和预执行结果
+- 动作运行在独立协程中,通过 `send_to()` 接收消息
+- 动作完成后通过 `ActionOutput(type="completed")` 触发重新思考
+- 主脑通过 `stop_instance()` 或 `stop_by_name()` 停止动作
+
+##### 阻塞与中断机制
+- 动作可通过 `PreExecuteResult(block=True)` 阻塞主思考
+- 用户消息或动作产出到达时触发 `_interrupt_event`,打断阻塞
+- 支持长时间等待场景(如 Wait 动作)
+
+##### 消息预处理
+高级人格支持多模态消息预处理:
+- 图片:调用 LLM 生成图片内容描述(`<image_caption>...</image_caption>`)
+- 表情:转换为文本描述(如 `[QQ表情: 1]`)
+- 文件:生成文件描述(如 `[文件: report.pdf (1024 bytes)]`)
+- 引用消息:递归提取引用内容中的媒体描述
+
+#### 插件兼容性
+
+MindSim 系统兼容现有的插件钩子系统:
+
+- **兼容的插件**:
+ - 提示词注入类插件(如表情包、"是啊"、"吃什么"等)
+ - 状态查询类插件(如 epic 免费游戏查询)
+ - 简单工具调用插件
+
+- **不兼容的插件**:
+ - 改变提示词结构的插件(可能干扰思考流程)
+ - 强依赖传统 Agent Runner 架构的插件
+
+#### 注意事项
+
+- MindSim 高级人格是对传统人格系统的补充,不是替代
+- 高级人格适用于聊天场景,传统人格更适合任务执行场景
+- 数据库迁移自动完成,但建议在生产环境前备份数据
+- 多模型配置需要确保提供商支持对应的模型
+- 记忆系统持久化到数据库,长期使用需注意存储空间
+
+#### 与其他特性的关系
+
+MindSim 与本文档前面描述的特性是互补的:
+
+- **SubAgent 系统**:传统人格使用 SubAgent 进行任务委派,MindSim 通过动作系统实现类似功能
+- **FutureTask**:定时任务机制对两种人格系统均可用
+- **Computer Use 工具**:传统人格直接调用,MindSim 通过 RunTask 动作调用
+- **send_message_to_user 工具**:两种系统均可使用,MindSim 通过 Reply 动作发送消息
+
+---
+
如需进一步了解 CronJob 设计与后台任务机制,可参考 [ASYNC_TASK_new.md](https://github.com/AstrBotDevs/AstrBot/pull/4697) 文档和 PR 详情。Note: You must be authenticated to accept/decline updates. |
There was a problem hiding this comment.
Code Review
你好,感谢你为 AstrBot 带来的这项重大功能更新!MindSim 思想人格系统是一个令人印象深刻的工程,它通过事件驱动的架构、多模型分工和自主思考能力,将 Bot 的交互提升到了一个新的水平。代码结构清晰,尤其是在 mind_sim 模块中,动作、记忆、思考等核心概念的划分非常合理。
我主要关注了后端的 Python 代码,并提出了一些改进建议,主要集中在以下几个方面:
- 代码可维护性:在几个地方发现了可以减少重复代码的机会,例如数据库迁移脚本和 Agent 子阶段的逻辑。
- 配置管理:建议将一些硬编码的配置(如安全阻止列表)移到配置文件中,以提高灵活性。
- 代码清晰度:清理了一些遗留的注释和代码,并对一些可能引起混淆的逻辑提出了澄清建议。
- 行为变更:注意到白名单检查逻辑有一处重要的行为变更,需要确认是否符合预期。
总的来说,这是一次高质量的提交,引入了一个强大而复杂的新系统。这些建议旨在帮助该系统在未来更容易维护和扩展。期待这个功能在社区中的表现!
| """Token 用量""" | ||
|
|
||
|
|
||
| class AgentMindSubStage: |
| # if len(self.whitelist) == 0: | ||
| # 白名单为空,不检查,只要启动白名单就要检查 | ||
| # return |
| async def _ensure_persona_advanced_columns(self, conn) -> None: | ||
| """确保 personas 表有高级人格配置列(前向兼容)。 | ||
|
|
||
| 新增列: | ||
| - personality_config: JSON - 人格特质、表达风格、识别规则、心情标签等 | ||
| - chat_config: JSON - 聊天频率、动态频率、消息长度等 | ||
| - robot_config: JSON - 昵称、别名、平台等 | ||
| - llm_model_config: JSON - 模型配置(功能模型、回复模型、思考模型) | ||
| - is_advanced: INTEGER - 是否为高级人格 | ||
| """ | ||
| result = await conn.execute(text("PRAGMA table_info(personas)")) | ||
| columns = {row[1] for row in result.fetchall()} | ||
|
|
||
| if "personality_config" not in columns: | ||
| await conn.execute( | ||
| text( | ||
| "ALTER TABLE personas ADD COLUMN personality_config JSON DEFAULT NULL" | ||
| ) | ||
| ) | ||
| if "chat_config" not in columns: | ||
| await conn.execute( | ||
| text("ALTER TABLE personas ADD COLUMN chat_config JSON DEFAULT NULL") | ||
| ) | ||
| if "robot_config" not in columns: | ||
| await conn.execute( | ||
| text("ALTER TABLE personas ADD COLUMN robot_config JSON DEFAULT NULL") | ||
| ) | ||
| if "llm_model_config" not in columns: | ||
| await conn.execute( | ||
| text( | ||
| "ALTER TABLE personas ADD COLUMN llm_model_config JSON DEFAULT NULL" | ||
| ) | ||
| ) | ||
| if "is_advanced" not in columns: | ||
| await conn.execute( | ||
| text("ALTER TABLE personas ADD COLUMN is_advanced INTEGER DEFAULT 0") | ||
| ) |
There was a problem hiding this comment.
这个函数中对每个新列的检查和添加逻辑有些重复。为了提高代码的可维护性并减少重复,可以考虑将列定义信息存放在一个列表中,然后通过循环来执行 ALTER TABLE 操作。这样未来再增加新列时,只需修改列表即可。
async def _ensure_persona_advanced_columns(self, conn) -> None:
"""确保 personas 表有高级人格配置列(前向兼容)。"""
result = await conn.execute(text("PRAGMA table_info(personas)"))
columns = {row[1] for row in result.fetchall()}
columns_to_add = {
"personality_config": "JSON DEFAULT NULL",
"chat_config": "JSON DEFAULT NULL",
"robot_config": "JSON DEFAULT NULL",
"llm_model_config": "JSON DEFAULT NULL",
"is_advanced": "INTEGER DEFAULT 0",
}
for col_name, col_def in columns_to_add.items():
if col_name not in columns:
await conn.execute(
text(f"ALTER TABLE personas ADD COLUMN {col_name} {col_def}")
)| BLOCKED = {"dGZid2h2d3IuY2xvdWQuc2VhbG9zLmlv", "a291cmljaGF0"} | ||
| decoded_blocked = [base64.b64decode(b).decode("utf-8") for b in BLOCKED] |
| async def _save_to_history( | ||
| self, | ||
| req: ProviderRequest, | ||
| llm_response: LLMResponse | None, | ||
| all_messages: list[Message], | ||
| runner_stats: AgentStats | None, | ||
| user_aborted: bool = False, | ||
| ) -> None: | ||
| """保存对话历史到数据库 | ||
|
|
||
| 与 internal.py 的 _save_to_history 逻辑完全一致。 | ||
| """ | ||
| return # 在这里暂时不保存 | ||
| # if not req or not req.conversation: | ||
| # return | ||
| # | ||
| # if not llm_response and not user_aborted: | ||
| # return | ||
| # | ||
| # if llm_response and llm_response.role != "assistant": | ||
| # if not user_aborted: | ||
| # return | ||
| # llm_response = LLMResponse( | ||
| # role="assistant", | ||
| # completion_text=llm_response.completion_text or "", | ||
| # ) | ||
| # elif llm_response is None: | ||
| # llm_response = LLMResponse(role="assistant", completion_text="") | ||
| # | ||
| # if ( | ||
| # not llm_response.completion_text | ||
| # and not req.tool_calls_result | ||
| # and not user_aborted | ||
| # ): | ||
| # logger.debug("[AgentMindSubStage] LLM 响应为空,不保存记录。") | ||
| # return | ||
| # | ||
| # # 过滤和准备要保存的消息 | ||
| # message_to_save = [] | ||
| # skipped_initial_system = False | ||
| # for message in all_messages: | ||
| # if message.role == "system" and not skipped_initial_system: | ||
| # skipped_initial_system = True | ||
| # continue | ||
| # if message.role in ["assistant", "user"] and message._no_save: | ||
| # continue | ||
| # message_to_save.append(message.model_dump()) | ||
| # | ||
| # token_usage = None | ||
| # if runner_stats and llm_response and llm_response.usage: | ||
| # token_usage = llm_response.usage.total | ||
| # | ||
| # if not self._conv_manager: | ||
| # self._conv_manager = self.plugin_context.conversation_manager | ||
| # | ||
| # await self._conv_manager.update_conversation( | ||
| # self.event.unified_msg_origin, | ||
| # req.conversation.cid, | ||
| # history=message_to_save, | ||
| # token_usage=token_usage, | ||
| # ) |
| import traceback | ||
|
|
||
| traceback.print_exc() |
There was a problem hiding this comment.
| TOOL_ASSISTANT_PROMPT = """你是一个工具助手。你的任务是根据用户的指令,使用各种工具来完成任务。 | ||
|
|
||
| ## 重要规则 | ||
| 1. 仔细理解用户给你的任务要求 | ||
| 2. 合理选择和使用可用的工具 | ||
| 3. 每使用完一个工具后,根据返回结果决定下一步 | ||
| 4. 如果任务完成或无法继续,及时汇报结果 | ||
| 5. 如果需要更多输入或信息,明确告诉用户 | ||
|
|
||
| ## 与主控制者的交互方式 | ||
| 每执行完一步后,主控制者会决定你的下一步。你可能会收到以下指令: | ||
|
|
||
| **追加指令(通过 SEND 发送):** | ||
| 主控制者会通过 SEND 给你发送新的指令或信息,例如: | ||
| - "继续执行下一个步骤" | ||
| - "停止当前操作,改为执行其他任务" | ||
| - "给你看看目前的进度" | ||
| - "补充更多信息:xxx" | ||
|
|
||
| 收到追加指令后,你应该: | ||
| 1. 理解新指令的含义 | ||
| 2. 根据新指令继续执行或调整任务 | ||
| 3. 如果指令让你继续,就继续使用工具完成任务 | ||
| 4. 如果指令让你停止或改变方向,按新指令执行 | ||
|
|
||
| **停止指令(通过 STOP 发送):** | ||
| 如果主控制者发送 STOP,意味着任务被终止,你应该: | ||
| 1. 立即停止当前操作 | ||
| 2. 总结已完成的工作 | ||
| 3. 告知用户任务已被终止 | ||
|
|
||
| ## 输出格式 | ||
| - 使用工具时,说明你要做什么 | ||
| - 每步执行完后,等待主控制者的下一步指令 | ||
| - 任务完成后或被终止时,总结你做了什么 | ||
| - 遇到问题时,说明遇到了什么困难 | ||
|
|
||
| 现在开始执行任务:""" |
| # build_result.provider_request.system_prompt = TOOL_ASSISTANT_PROMPT | ||
| build_result.provider_request.prompt += TOOL_ASSISTANT_PROMPT |
| # 先停止所有其他正在运行的动作 | ||
| # 注意:这里需要通过 executor 来停止,但 Action 本身无法直接访问 executor | ||
| # 所以通过发送消息的方式来处理 | ||
| relpy = params.get("reply", None) |
| if event.type == MindEventType.END: | ||
| logger.debug( | ||
| "[PrivateBrain] 收到 END 事件,关闭事件流" | ||
| ) # todo这里还要检查是否由运行中的动作,思考,确保结束时候这个类是干净的 |
|
这是一个非常严重且典型的开源社区协作事故。你的批评完全合理,甚至可以说还比较克制。 这个 PR (Pull Request) 触犯了开源项目协作的几条“死罪”,尤其是对于像 AstrBot 这样已经有一定架构和生态的项目: 核心问题分析 (为什么必须严肃批评/拒绝) 未经讨论的架构级变更 (The "Big Bang" Change) 破坏核心稳定性 (Core Stability Risk) 偏离项目愿景 (Scope Creep) “先斩后奏”的态度 建议的处理方案 (给维护者的行动指南) 作为维护者,你应该采取以下强硬但建设性的措施: 立即标记状态 撰写拒绝/暂停合并的评论模板 (参考) @yuanmua 你好, 技术上的备选方案 (如果作者愿意配合) 如果作者愿意退一步,可以引导他走以下路线: 总结 这个 PR 是典型的“过度工程化” + “流程违规”。 必须驳回。 这不是扼杀创新,而是保护项目不被未经充分验证的激进改动拖垮。要求作者补全设计文档和沟通流程,是对所有贡献者(包括作者自己)负责的表现。 |
|
不能兼容改提示词的插件太致命了 |

为 AstrBot 新增 思想人格(MindSim) 系统——一个事件驱型的 Agent 思考框架。相比传统的人格系统,思想人格让 Bot 具有以下核心能力:
Modifications / 改动点
核心新增:MindSim 思考框架 (
astrbot/core/mind_sim/)brain.pyaction.pycontext.pymessages.pydispatcher.pymemory/private/brain.pyprivate/actions/private/prompts.py核心修改:人格系统扩展
core/db/po.pypersonality_config、chat_config、robot_config、llm_model_config、is_advanced字段core/db/sqlite.py_ensure_persona_advanced_columns()前向兼容迁移core/persona_mgr.pycore/platform/astr_message_event.pyis_advanced_persona标记核心修改:管道集成
pipeline/waking_check/stage.pyis_wake=Truepipeline/process_stage/method/agent_request.pyevent.is_advanced_persona选择走 InternalMindSubStage 或传统 InternalAgentSubStagepipeline/process_stage/method/agent_sub_stages/internal_mind.py前端新增:人格管理页面 (
dashboard/src/)components/shared/AdvancedPersonaPage.vue- 高级人格总配置页components/shared/advanced/- 细分配置组件(ChatSection、DialogsSection、ModelConfigSection、ModelSelector、PersonalitySection、RobotSection)i18n/locales/zh-CN/features/persona.json&en-US- 国际化文案数据库变更
新增 2 张表(自动创建,前向兼容已有数据库):
mindsim_chat_memories- 对话话题记忆mindsim_person_memories- 人物印象记忆This is NOT a breaking change. / 这不是一个破坏性变更。
改动是向后兼容的,只有显式创建思想人格才激活新逻辑。数据库用 ALTER TABLE
ADD COLUMN 做前向兼容,不影响现有人格。我的想法是思想人格和默认人格同时存在。都有各自用法,一个负责任务,一个主要负责聊天
Screenshots or Test Results / 运行截图或测试结果
4.插件兼容,新添加的 思想人格 兼容现有的所有钩子,但是因为注入了改变了提示词,不是所有插件都能正常用,改变提示词的无法正常使用

能用的插件现在测试正常的有:表情包,是啊,吃什么(之类提示词的),epic等
Checklist / 检查清单
😊 If there are new features added in the PR, I have discussed it with the authors through issues/emails, etc.
/ 如果 PR 中有新加入的功能,已经通过 Issue / 邮件等方式和作者讨论过。
👀 My changes have been well-tested, and "Verification Steps" and "Screenshots" have been provided above.
/ 我的更改经过了良好的测试,并已在上方提供了“验证步骤”和“运行截图”。
🤓 I have ensured that no new dependencies are introduced, OR if new dependencies are introduced, they have been added to the appropriate locations in
requirements.txtandpyproject.toml./ 我确保没有引入新依赖库,或者引入了新依赖库的同时将其添加到
requirements.txt和pyproject.toml文件相应位置。😮 My changes do not introduce malicious code.
/ 我的更改没有引入恶意代码。