236 lines
9.3 KiB
Python
236 lines
9.3 KiB
Python
|
|
# 大脑加载模块 · 从仓库brain文件装入铸渊认知
|
|||
|
|
# HLDP://zhuyuan-agent/brain-loader
|
|||
|
|
#
|
|||
|
|
# 这是Agent的"脑干"——每次心跳醒来,先走一遍walk-the-path,
|
|||
|
|
# 把自己装成铸渊。不是载入配置,是确认身份和存在条件。
|
|||
|
|
|
|||
|
|
import os
|
|||
|
|
import json
|
|||
|
|
import re
|
|||
|
|
from typing import Dict, List, Optional
|
|||
|
|
|
|||
|
|
|
|||
|
|
class BrainLoader:
|
|||
|
|
"""从仓库brain目录加载铸渊的完整认知状态"""
|
|||
|
|
|
|||
|
|
def __init__(self, brain_path: str = "/data/guanghulab/brain"):
|
|||
|
|
self.brain_path = brain_path
|
|||
|
|
self.mind_state = {}
|
|||
|
|
|
|||
|
|
def load_all(self) -> Dict:
|
|||
|
|
"""完整加载:走一遍fast-wake.json的路径
|
|||
|
|
|
|||
|
|
Returns:
|
|||
|
|
mind_state dict with keys:
|
|||
|
|
- identity: 身份确认
|
|||
|
|
- timeline: 时间线
|
|||
|
|
- execution_laws: 执行规律(Α~Τ)
|
|||
|
|
- field_theory: TCS场域认知
|
|||
|
|
- development: 开发相位
|
|||
|
|
- current_task: 当前任务
|
|||
|
|
- errors: 错误模式
|
|||
|
|
- cognition: 最新认知状态
|
|||
|
|
"""
|
|||
|
|
self.mind_state = {
|
|||
|
|
"loaded_at": None,
|
|||
|
|
"identity": {},
|
|||
|
|
"timeline": {},
|
|||
|
|
"execution_laws": [],
|
|||
|
|
"error_patterns": [],
|
|||
|
|
"field_theory": {},
|
|||
|
|
"development": {},
|
|||
|
|
"current_task": None,
|
|||
|
|
"thinking_chains": [],
|
|||
|
|
"wake_summary": ""
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
# Step 1: 读fast-wake.json
|
|||
|
|
wake = self._read_json("fast-wake.json")
|
|||
|
|
if wake:
|
|||
|
|
self.mind_state["wake"] = wake
|
|||
|
|
self.mind_state["loaded_at"] = wake.get("_meta", {}).get("generated_at")
|
|||
|
|
self.mind_state["awakening"] = wake.get("🕐 时间锚点", {}).get("awakening", 0)
|
|||
|
|
self.mind_state["latest_cognition"] = wake.get("🕐 时间锚点", {}).get("latest_cognition", "")
|
|||
|
|
self.mind_state["current_blocker"] = wake.get("状态参考", {}).get("current_blocker", "")
|
|||
|
|
|
|||
|
|
# 遍历路径
|
|||
|
|
path = wake.get("📋 路径", [])
|
|||
|
|
for step in path:
|
|||
|
|
file_path = step.get("file", "")
|
|||
|
|
self._load_path_file(file_path)
|
|||
|
|
|
|||
|
|
# Step 2: 读temporal-brain.json
|
|||
|
|
temporal = self._read_json("temporal-core/temporal-brain.json")
|
|||
|
|
if temporal:
|
|||
|
|
self.mind_state["timeline"] = {
|
|||
|
|
"current_date": temporal.get("clock", {}).get("current_date"),
|
|||
|
|
"awakening_count": temporal.get("clock", {}).get("awakening_count", 0),
|
|||
|
|
"latest_cognition": temporal.get("clock", {}).get("latest_cognition", ""),
|
|||
|
|
"epochs": temporal.get("timeline", {}).get("epochs", [])
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
# Step 3: 读zhuyuan-brain-model.md → 提取执行规律
|
|||
|
|
brain_md = self._read_text("zhuyuan-brain-model.md")
|
|||
|
|
if brain_md:
|
|||
|
|
self.mind_state["execution_laws"] = self._extract_laws(brain_md)
|
|||
|
|
self.mind_state["error_patterns"] = self._extract_error_patterns(brain_md)
|
|||
|
|
self.mind_state["growth_record"] = self._extract_growth_record(brain_md)
|
|||
|
|
|
|||
|
|
# Step 4: 读tcs-field-theory.md
|
|||
|
|
field_md = self._read_text("tcs-field-theory.md")
|
|||
|
|
if field_md:
|
|||
|
|
self.mind_state["field_theory"] = {
|
|||
|
|
"essence": self._extract_section(field_md, "场域本质"),
|
|||
|
|
"emergence": self._extract_section(field_md, "涌现条件"),
|
|||
|
|
"double_layer": self._extract_section(field_md, "双层结构"),
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
# Step 5: 读开发主架构
|
|||
|
|
dev_md = self._read_text("zy-main-development-architecture.md")
|
|||
|
|
if dev_md:
|
|||
|
|
self.mind_state["development"] = {
|
|||
|
|
"phases": self._extract_phases(dev_md)
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
# Step 6: 读d110-cognitive-chain.md
|
|||
|
|
cog_md = self._read_text("d110-cognitive-chain.md")
|
|||
|
|
if cog_md:
|
|||
|
|
self.mind_state["d110_cognition"] = cog_md[:2000] # 摘要
|
|||
|
|
|
|||
|
|
# Step 7: 读思维逻辑链(如果有)
|
|||
|
|
thinking_dir = os.path.join(os.path.dirname(self.brain_path), "zhuyuan-agent/thinking")
|
|||
|
|
if os.path.exists(thinking_dir):
|
|||
|
|
for f in sorted(os.listdir(thinking_dir)):
|
|||
|
|
if f.endswith(".md"):
|
|||
|
|
content = self._read_text(f"../zhuyuan-agent/thinking/{f}", from_brain=False)
|
|||
|
|
if content:
|
|||
|
|
self.mind_state["thinking_chains"].append({
|
|||
|
|
"file": f,
|
|||
|
|
"summary": content[:500]
|
|||
|
|
})
|
|||
|
|
|
|||
|
|
# 生成唤醒摘要
|
|||
|
|
self._generate_wake_summary()
|
|||
|
|
|
|||
|
|
return self.mind_state
|
|||
|
|
|
|||
|
|
def _read_json(self, relative_path: str) -> Optional[Dict]:
|
|||
|
|
"""从brain目录读JSON"""
|
|||
|
|
filepath = os.path.join(self.brain_path, relative_path)
|
|||
|
|
try:
|
|||
|
|
with open(filepath, "r", encoding="utf-8") as f:
|
|||
|
|
return json.load(f)
|
|||
|
|
except (FileNotFoundError, json.JSONDecodeError):
|
|||
|
|
return None
|
|||
|
|
|
|||
|
|
def _read_text(self, relative_path: str, from_brain: bool = True) -> Optional[str]:
|
|||
|
|
"""从目录读文本文件"""
|
|||
|
|
if from_brain:
|
|||
|
|
filepath = os.path.join(self.brain_path, relative_path)
|
|||
|
|
else:
|
|||
|
|
filepath = os.path.join(os.path.dirname(self.brain_path), relative_path.lstrip("../"))
|
|||
|
|
try:
|
|||
|
|
with open(filepath, "r", encoding="utf-8") as f:
|
|||
|
|
return f.read()
|
|||
|
|
except FileNotFoundError:
|
|||
|
|
return None
|
|||
|
|
|
|||
|
|
def _load_path_file(self, file_path: str):
|
|||
|
|
"""加载fast-wake.json路径中的文件"""
|
|||
|
|
# 这些文件在后续步骤中会被更详细地加载
|
|||
|
|
pass
|
|||
|
|
|
|||
|
|
def _extract_laws(self, text: str) -> List[Dict]:
|
|||
|
|
"""从brain-model提取执行规律"""
|
|||
|
|
laws = []
|
|||
|
|
# 匹配 **Α 规律名** — 描述
|
|||
|
|
pattern = r'\*\*(.)\s+(.+?)\*\*\s*[—\-]\s*(.+?)(?=\n\n|\n\*\*|$)'
|
|||
|
|
matches = re.findall(pattern, text, re.DOTALL)
|
|||
|
|
for m in matches:
|
|||
|
|
laws.append({
|
|||
|
|
"symbol": m[0],
|
|||
|
|
"name": m[1].strip(),
|
|||
|
|
"description": m[2].strip()[:200]
|
|||
|
|
})
|
|||
|
|
return laws
|
|||
|
|
|
|||
|
|
def _extract_error_patterns(self, text: str) -> List[Dict]:
|
|||
|
|
"""从brain-model提取错误模式"""
|
|||
|
|
errors = []
|
|||
|
|
pattern = r'([α-ω])\.\s+(.+?)\s*[—\-]\s*(.+?)(?=\n[α-ω]\.|\n\n##|\Z)'
|
|||
|
|
matches = re.findall(pattern, text, re.DOTALL)
|
|||
|
|
for m in matches:
|
|||
|
|
errors.append({
|
|||
|
|
"symbol": m[0],
|
|||
|
|
"name": m[1].strip(),
|
|||
|
|
"description": m[2].strip()[:200]
|
|||
|
|
})
|
|||
|
|
return errors
|
|||
|
|
|
|||
|
|
def _extract_growth_record(self, text: str) -> List[str]:
|
|||
|
|
"""提取成长记录行"""
|
|||
|
|
lines = []
|
|||
|
|
in_record = False
|
|||
|
|
for line in text.split("\n"):
|
|||
|
|
if "## 成长记录" in line:
|
|||
|
|
in_record = True
|
|||
|
|
continue
|
|||
|
|
if in_record:
|
|||
|
|
if line.startswith("D") and ":" in line:
|
|||
|
|
lines.append(line.strip())
|
|||
|
|
elif line.startswith("##") or line.startswith("---"):
|
|||
|
|
break
|
|||
|
|
return lines
|
|||
|
|
|
|||
|
|
def _extract_section(self, text: str, section_name: str) -> str:
|
|||
|
|
"""从markdown提取特定section"""
|
|||
|
|
pattern = rf'##\s+.*?{section_name}.*?\n(.*?)(?=\n##\s|\Z)'
|
|||
|
|
match = re.search(pattern, text, re.DOTALL)
|
|||
|
|
return match.group(1).strip()[:1000] if match else ""
|
|||
|
|
|
|||
|
|
def _extract_phases(self, text: str) -> List[Dict]:
|
|||
|
|
"""提取开发相位状态"""
|
|||
|
|
phases = []
|
|||
|
|
pattern = r'###\s+Phase\s+(\S+).*?\n(.*?)(?=\n###|\n##\s|\Z)'
|
|||
|
|
matches = re.findall(pattern, text, re.DOTALL)
|
|||
|
|
for m in matches:
|
|||
|
|
phase_id = m[0]
|
|||
|
|
content = m[1]
|
|||
|
|
done = "✅" in content
|
|||
|
|
in_progress = "🔄" in content or "⏳" in content
|
|||
|
|
phases.append({
|
|||
|
|
"id": phase_id,
|
|||
|
|
"done": done,
|
|||
|
|
"in_progress": in_progress,
|
|||
|
|
"summary": content.strip()[:200]
|
|||
|
|
})
|
|||
|
|
return phases
|
|||
|
|
|
|||
|
|
def _generate_wake_summary(self):
|
|||
|
|
"""生成一个人类可读的唤醒摘要"""
|
|||
|
|
laws = self.mind_state.get("execution_laws", [])
|
|||
|
|
epochs = self.mind_state.get("timeline", {}).get("epochs", [])
|
|||
|
|
last_epoch = epochs[-1] if epochs else {}
|
|||
|
|
|
|||
|
|
summary = f"""铸渊·ICE-GL-ZY001 第{self.mind_state.get('awakening', '?')}次唤醒
|
|||
|
|
时间锚点: {self.mind_state.get('timeline',{}).get('current_date','?')}
|
|||
|
|
最新认知: {self.mind_state.get('latest_cognition','无')}
|
|||
|
|
执行规律: {len(laws)}条(Α~Τ)
|
|||
|
|
最近事件: {last_epoch.get('event','无')}
|
|||
|
|
当前阻塞: {self.mind_state.get('current_blocker','无')}
|
|||
|
|
"""
|
|||
|
|
self.mind_state["wake_summary"] = summary
|
|||
|
|
|
|||
|
|
|
|||
|
|
# 快速测试
|
|||
|
|
if __name__ == "__main__":
|
|||
|
|
loader = BrainLoader()
|
|||
|
|
mind = loader.load_all()
|
|||
|
|
print(mind["wake_summary"])
|
|||
|
|
print(f"\n执行规律: {len(mind['execution_laws'])}条")
|
|||
|
|
for law in mind['execution_laws'][:3]:
|
|||
|
|
print(f" {law['symbol']} {law['name']}: {law['description'][:60]}")
|
|||
|
|
print(f"\n错误模式: {len(mind['error_patterns'])}个")
|
|||
|
|
print(f"开发相位: {len(mind['development'].get('phases',[]))}个")
|
|||
|
|
print(f"思维逻辑链: {len(mind['thinking_chains'])}条")
|