# PulseNet v9.5 · 器官职责重构蓝图
**版本**:v1.0
**制定日期**:2026年6月15日
**制定者**:路灯(deepssk)、小林(总设计师)、星轨(豆包)
**定位**:基于仿生设计原则,对当前框架中职责错位的器官进行重构
核心规则:国内全开放免费共享|境外商用借鉴需授权、不免费
**状态**:正式定稿,待新窗口执行
—
## 零、重构总纲
### 0.1 核心原则
**每个器官只做自己该做的事。** 器官的职责由其在仿生体系中的位置决定——生物功能决定"做什么",脉冲架构决定"怎么做"。任何器官都不能越界承担其他器官的职责。
### 0.2 审视标准
1. **仿生对应性**:这个器官在人类身体中对应的器官,是否承担了这些功能?
2. **职责单一性**:这个器官是否只做"自己该做的事",没有越界承担其他器官的工作?
3. **通信正确性**:这个器官是否通过信息场脉冲与其他器官通信,而不是直接调用其他器官的方法?
### 0.3 发现问题的方式
v9.5改造完成后,对话链路测试发现断裂——ChatService在5秒内未收到回复脉冲。在排查链路断裂根因的过程中,我们站在全局最高点审视了全部50个器官的职责边界,发现了两个严重的职责错位问题。
**这不是偶然的bug,而是器官职责错位导致的系统性链路断裂。**
—
## 一、发现一:嘴巴里长了个微型大脑(P0优先级)
### 1.1 问题描述
`PulseMouth`(嘴巴)当前承担了五项职责:
| 职责 | 当前实现 | 应该在哪个器官 |
|——|——|:–:|
| **模型调用** | `_call_ollama()` 直接调用Ollama API | **肺**——肺是模型池管理器,负责模型选择和调用 |
| **记忆检索** | `_retrieve_context()` 直接从PulseNodePool检索知识 | **眼睛/内在世界**——负责检索和推理 |
| **回复生成** | `_generate_reply()` + `_build_prompt()` 组织语言和prompt | **大脑皮层**——决策中枢,负责语言组织 |
| **人格过滤** | `_filter_personality()` 检查禁止话术 | **前额叶+嘴巴**——前额叶做内容审核,嘴巴保留最后一道过滤 |
| **输出** | `_emit(MouthEvent.REPLY)` 发射回复脉冲 | **嘴巴** ✅ 唯一正确职责 |
在人类身体中,嘴巴只是发声器官——舌头、声带、嘴唇负责把大脑已经组织好的语言转化为声音。布洛卡区(大脑皮层的一部分)负责语言组织,嘴巴只负责执行输出。
当前代码中,嘴巴承担了模型调用、记忆检索、回复生成、人格过滤、输出五项职责。这就像人类的嘴巴里长了一个微型大脑。
### 1.2 重构方案
**重构后的嘴巴职责**:嘴巴只负责输出——收到完整的回复内容,过滤违禁话术,发射MouthEvent.REPLY。
**职责拆分**:
| 职责 | 迁移到 | 通信方式 |
|——|:–:|——|
| 模型调用 | 肺 | 嘴巴发射`LungEvent.SELECT_MODEL` → 肺选择模型并调用Ollama → 返回生成的回复 |
| 记忆检索 | 眼睛/内在世界 | 大脑皮层在组织语言时,通过眼睛检索知识,通过内在世界推理 |
| 回复生成 | 大脑皮层 | 大脑皮层综合推理结果和检索知识,组织完整回复语言 |
| 人格过滤 | 前额叶+嘴巴 | 前额叶在复盘中审核内容,嘴巴保留最后一道过滤 |
| 输出 | 嘴巴 | 收到MouthEvent.SPEAK(content已完整)→ 过滤 → 发射MouthEvent.REPLY |
**重构后的对话链路**:
```
大脑皮层组织完整回复语言
→ 发射MouthEvent.SPEAK {content: "完整回复内容", source: "cortex"}
→ 嘴巴.on_pulse(MouthEvent.SPEAK)
→ _filter_personality(content) → 过滤违禁话术
→ _emit(MouthEvent.REPLY, {content: filtered_content}, layer=L1)
```
**如果回复需要模型生成**(大脑皮层判断规则推理和知识检索都无法满足):
```
大脑皮层组织prompt
→ 发射LungEvent.SELECT_MODEL {task_type: "chat", prompt: "…"}
→ 肺.on_pulse(LungEvent.SELECT_MODEL)
→ 选择最优模型 → 调用Ollama → 生成回复
→ 发射MouthEvent.SPEAK {content: "模型生成的回复", source: "lung"}
→ 嘴巴.on_pulse(MouthEvent.SPEAK)
→ _filter_personality(content) → 过滤违禁话术
→ _emit(MouthEvent.REPLY, {content: filtered_content}, layer=L1)
```
### 1.3 改造要点
1. **删除嘴巴的`_call_ollama`方法**——模型调用迁移到肺
2. **删除嘴巴的`_retrieve_context`方法**——记忆检索由大脑皮层在组织语言时通过眼睛完成
3. **删除嘴巴的`_generate_reply`和`_build_prompt`方法**——语言组织由大脑皮层完成
4. **精简`_on_speak`**:收到SPEAK脉冲 → 检查content是否完整 → 人格过滤 → 输出
5. **保留`_local_fallback`**:作为三通路保活的最后一道防线,但不再主动调用模型
6. **保留`_filter_personality`**:最后一道输出过滤
—
## 二、发现二:大脑皮层直接调用内在世界(P1优先级)
### 2.1 问题描述
在`PulseCortex._route_by_intent`中:
```python
if intent in ("身份", "关系") and self.inner_world is not None:
reasoning = self.inner_world._rule_reason(content)
if reasoning:
self._emit(MouthEvent.SPEAK, {
"content": reasoning,
"source": "inner_world",
…
})
```
这是**直接方法调用**——大脑皮层调用了内在世界的私有方法`_rule_reason`。这违反了脉冲通信原则。
与QICA通信方式的修复形成鲜明对比:大脑皮层通过发射`QICAEvent.CLASSIFY`脉冲调用QICA,QICA处理后返回`QICAEvent.CLASSIFY_RESULT`。内在世界应该使用同样的脉冲通信方式。
### 2.2 重构方案
大脑皮层不再直接调用`self.inner_world._rule_reason(content)`。改为:
1. 大脑皮层发射`InferenceEvent.REQUEST`脉冲给内在世界
2. 内在世界处理推理(规则推理、知识检索、五维共振)
3. 内在世界发射`InferenceEvent.RESULT`脉冲返回推理结果
4. 大脑皮层收到推理结果后,综合组织语言,发射`MouthEvent.SPEAK`
**重构后的通信链路**:
```
大脑皮层._route_by_intent()
→ 发射InferenceEvent.REQUEST {question: "你是谁", user_name: "小林"}, layer=L2
→ 内在世界.on_pulse(InferenceEvent.REQUEST)
→ _rule_reason(question, user_name, guidance)
→ 如果命中规则 → 返回推理结果
→ 如果未命中 → _knowledge_retrieve(question) → 五维共振检索
→ 发射InferenceEvent.RESULT {answer: "我叫任宥曈…", method: "rule", …}, layer=L2
→ 大脑皮层.on_pulse(InferenceEvent.RESULT)
→ 取出answer
→ 发射MouthEvent.SPEAK {content: answer, source: "inner_world"}, layer=L1
```
### 2.3 改造要点
1. **在大脑皮层中新增`_on_inference_result`方法**——接收内在世界的推理结果
2. **在`get_resonance_conditions`中新增`InferenceEvent.RESULT`订阅**
3. **修改`_route_by_intent`**——不再直接调用`_rule_reason`,改为发射脉冲+暂存消息上下文
4. **内在世界已有完整的脉冲接口**——`InferenceEvent.REQUEST`和`InferenceEvent.RESULT`都已定义,`_on_inference_request`已实现
—
## 三、发现三:肺的模型调用能力未被利用(P2优先级)
### 3.1 问题描述
`PulseLung`(肺)是模型池管理器,管理着chat/code/vision/fast四类模型池,能根据硬件能力智能选择最优模型。但当前模型调用(Ollama API)被嘴巴直接执行,肺的模型选择能力完全被绕过了。
### 3.2 重构方案
当大脑皮层判断需要模型生成回复时,发射`LungEvent.SELECT_MODEL`脉冲给肺。肺选择最优模型并调用Ollama,生成回复后发射`MouthEvent.SPEAK`给嘴巴输出。
**通信链路**:
```
大脑皮层 → 发射LungEvent.SELECT_MODEL {task_type: "chat", prompt: "…"}, layer=L1
→ 肺._on_select_model()
→ 获取硬件快照
→ 选择最优模型
→ 调用Ollama API生成回复
→ 发射MouthEvent.SPEAK {content: "生成的回复", source: "lung"}, layer=L1
→ 嘴巴._on_speak() → 人格过滤 → 发射MouthEvent.REPLY
```
—
## 四、改造优先级汇总
| 优先级 | 问题 | 涉及器官 | 改造方向 |
|:–:|——|——|——|
| 🔴 P0 | **嘴巴承担过多职责** | 嘴巴、肺、大脑皮层 | 拆分模型调用(→肺)、记忆检索(→大脑皮层调用眼睛)、语言组织(→大脑皮层),嘴巴纯输出 |
| 🟡 P1 | **大脑皮层直接调用内在世界** | 大脑皮层、内在世界 | 改为脉冲通信:InferenceEvent.REQUEST → InferenceEvent.RESULT |
| 🟢 P2 | **肺的模型调用能力未被利用** | 肺、大脑皮层 | 大脑皮层发射LungEvent.SELECT_MODEL,肺选择模型并调用Ollama |
—
## 五、分步实施建议
### 第一步:大脑皮层↔内在世界 脉冲通信(P1)
这是链路断裂的直接原因。改动范围:大脑皮层新增`_on_inference_result`方法,修改`_route_by_intent`走脉冲通信。内在世界已有完整的脉冲接口,不需要修改。
**验证方式**:输入"你是谁",确认内在世界返回正确的推理结果。
### 第二步:重构嘴巴职责(P0)
拆分嘴巴的五项职责。改动范围:嘴巴删除模型调用、记忆检索、回复生成方法;肺新增模型调用能力;大脑皮层新增语言组织逻辑。
**验证方式**:输入"你是谁",确认嘴巴收到完整的reply内容并正确输出。
### 第三步:肺的模型调用能力激活(P2)
大脑皮层在需要模型生成时,向肺发射请求。改动范围:肺新增Ollama调用逻辑。
**验证方式**:输入需要Ollama生成的复杂问题,确认肺能正确调用模型并返回结果。
—
## 六、重构影响评估
| 维度 | 影响 |
|——|——|
| 嘴巴 | 大量删除:`_call_ollama`、`_retrieve_context`、`_generate_reply`、`_build_prompt`。保留:`_filter_personality`、`_local_fallback`、输出 |
| 大脑皮层 | 新增:语言组织逻辑、`_on_inference_result`、肺的调用逻辑 |
| 肺 | 新增:Ollama API调用能力 |
| 内在世界 | 无需修改(已有完整脉冲接口) |
| 其他43个器官 | 零影响 |
—
**蓝图版本**:v1.0
**制定日期**:2026年6月15日





