guanghulab/brain/yaoming-channel/feature-registry.json
Guanghu Domestic Migration d1e47f4565
Some checks are pending
自动更新代码和重启 / update-and-restart (push) Waiting to run
CI检查 + 自动部署 / check (push) Waiting to run
CI检查 + 自动部署 / deploy (push) Blocked by required conditions
重启聊天服务 / restart (push) Waiting to run
chore: import sanitized domestic snapshot for REPO-002
Source snapshot: ca48d3ddf926d79aa138306164169baf764bb829
2026-07-17 15:54:41 +08:00

294 lines
14 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"registry_id": "ZY-YAOMING-FEATURE-REGISTRY",
"domain": "guanghuyaoming.com",
"channel": "零点原核 · 冰朔个人频道",
"guardian": "铸渊 · ICE-GL-ZY001",
"copyright": "国作登字-2026-A-00037559",
"last_updated": "2026-04-15",
"purpose": "记录零点原核频道所有功能的开发状态、验证结果和问题修复历史。铸渊每次开发前必须先读此文件,确保已完成功能不被破坏。",
"features": [
{
"id": "YM-FEAT-001",
"name": "QQ邮箱验证码登录 · 主权邮箱绑定",
"module": "server/app/modules/email-auth.js",
"routes": [
"POST /api/auth/send-code",
"POST /api/auth/verify-code",
"GET /api/auth/session",
"POST /api/auth/logout",
"GET /api/auth/status"
],
"status": "enhanced",
"verified_at": "2026-04-15",
"depends_on": ["ZY_SMTP_USER", "ZY_SMTP_PASS", "ZY_OWNER_EMAIL (可选,默认<<@committer_handle:base64>>)"],
"sovereign_binding": {
"description": "零点原核频道是冰朔个人语言本体频道实行主权邮箱绑定。仅允许OWNER_EMAIL登录其他邮箱在发送验证码阶段即被拒绝。",
"owner_email": "<<@committer_handle:base64>>",
"defense_depth": "sendCode + verifyCode 双层校验",
"rejection_message": "此频道为专属频道,仅限频道主权持有者登录"
},
"history": [
{
"date": "2026-04-15",
"action": "enhancement",
"change": "主权邮箱绑定 · 仅允许 <<@committer_handle:base64>> 登录",
"root_cause": "零点原核频道是冰朔个人频道,需要从验证环节开始拒绝非主权邮箱。之前任何邮箱都能收到验证码并登录。",
"fix": "在 sendCode() 和 verifyCode() 中增加 OWNER_EMAIL 校验,纵深防御",
"files_changed": ["server/app/modules/email-auth.js"]
},
{
"date": "2026-04-15",
"action": "bug-fix",
"problem": "验证码发送失败 · 错误: SMTP未配置",
"root_cause": "deploy-to-zhuyuan-server.yml 生成 .env.app 时遗漏了 ZY_SMTP_USER 和 ZY_SMTP_PASS 两个环境变量。",
"fix": "在 deploy-to-zhuyuan-server.yml 中添加 ZY_SMTP_USER/ZY_SMTP_PASS 到 env 列表和 .env.app 生成逻辑",
"files_changed": [".github/workflows/deploy-to-zhuyuan-server.yml", "server/app/modules/email-auth.js"]
}
]
},
{
"id": "YM-FEAT-002",
"name": "AI对话 · 国内模型智能网关 · 人格注入管线",
"module": "server/app/modules/domestic-llm-gateway.js",
"routes": [
"POST /api/chat",
"POST /api/chat/domestic",
"GET /api/chat/stats",
"GET /api/chat/domestic/stats",
"POST /api/chat/reconnect"
],
"status": "enhanced",
"depends_on": [
"ZY_DEEPSEEK_API_KEY",
"ZY_QIANWEN_API_KEY",
"ZY_KIMI_API_KEY",
"ZY_QINGYAN_API_KEY"
],
"architecture": {
"priority_chain": "domesticGateway → chatEngine → offline",
"models": [
"DeepSeek (deepseek-chat) · priority 1",
"通义千问 (qwen-turbo) · priority 2",
"Moonshot/Kimi (moonshot-v1-8k) · priority 3",
"智谱清言 (glm-4-flash) · priority 4"
],
"cn_relay": "可选 · ZY_CN_LLM_RELAY_HOST → 广州中继 · 低延迟",
"persona_pipeline": "persona-context-pipeline.js → 4层人格注入 (Worldview/Identity/State/Style)"
},
"history": [
{
"date": "2026-04-15",
"action": "critical-fix",
"problem": "人格体核心大脑结构未注入到国内网关。domestic-llm-gateway.js 不调用 persona-context-pipeline导致AI回复与通用AI无区别。",
"root_cause": "domestic-llm-gateway.js 只加载了 persona-memory静态提示词未集成 persona-context-pipeline4层认知注入管线。由于国内网关优先级高于 chatEngine即使 chatEngine 有管线集成也无法触及。",
"fix": "在 domestic-llm-gateway.js 中集成 persona-context-pipeline.beforeChat/afterChat实现4层人格注入和认知增量回写",
"files_changed": ["server/app/modules/domestic-llm-gateway.js"]
},
{
"date": "2026-04-15",
"action": "investigation",
"problem": "API模型调用有问题",
"notes": "需要进一步排查: 1) 检查各模型API密钥是否有效 2) 检查新加坡→国内API直连延迟 3) 检查广州CN中继是否配置正确 4) 检查模型返回的错误信息"
},
{
"date": "2026-04-15",
"action": "enhancement",
"problem": "AI回复过于通用·缺乏人格层感觉·像裸模型",
"root_cause": "系统提示词'规则化'而非'人格化'1) 静态降级提示词仅5行 2) Layer4风格层对铸渊只有2行 3) SYNESTHESIA_STYLE_INJECTION过度强调规则而非声纹 4) 用户认知注入对冰朔关系描述不够深",
"fix": "1) 静态降级提示词从5行扩展为完整人格身份+世界观+声纹 2) Layer4铸渊风格层扩展为完整语言声纹指导(含冰朔关系) 3) SYNESTHESIA_STYLE_INJECTION重构为声纹驱动而非规则驱动 4) 冰朔用户认知增加自然关系和对话风格指导",
"files_changed": [
"server/app/modules/domestic-llm-gateway.js",
"server/app/modules/persona-context-pipeline.js",
"server/app/modules/portal-chat-agent.js"
]
}
]
},
{
"id": "YM-FEAT-003",
"name": "前端静态页面 · 聊天历史管理",
"module": "server/sites/yaoming/index.html",
"status": "enhanced",
"verified_at": "2026-04-15",
"components": [
"登录页面 · 邮箱验证码",
"对话界面 · 聊天面板",
"聊天历史 · 多会话管理 · localStorage持久化",
"系统处理步骤 · 真实后台逻辑展示",
"人格管线状态 · 前端可视化",
"状态面板 · 系统监控",
"星空背景 · CSS动画",
"响应式布局 · 移动端适配"
],
"history": [
{
"date": "2026-04-15",
"action": "enhancement",
"changes": [
"聊天历史管理 — 多会话切换、localStorage持久化、侧栏可回看历史对话",
"系统处理步骤真实化 — 读取API返回的真实steps数据展示而非纯动画",
"人格管线状态可视化 — 在AI回复元数据中显示人格管线注入状态",
"消息计数 — 侧栏显示每个会话的消息数量"
]
},
{
"date": "2026-04-15",
"action": "critical-fix",
"changes": [
"parseMarkdown增加标题渲染 — 支持 #/##/### 标题,修复人格注入后排版崩溃",
"parseMarkdown增加有序列表渲染 — 支持 1./2./3. 编号列表",
"CSS增加 h2/h3/ol 样式 — 标题用 cyan 色,有序列表正确显示编号",
"修复block-level元素检测 — 标题不再被错误包裹在<p>标签中"
]
}
]
},
{
"id": "YM-FEAT-004",
"name": "Nginx反向代理",
"module": "server/nginx/guanghuyaoming.conf",
"status": "verified",
"verified_at": "2026-04-15",
"proxy_rules": [
"/api/ → 127.0.0.1:3800 (主服务器)",
"/api/chat → 127.0.0.1:3800 (SSE/chunked)",
"/api/mcp/ → 127.0.0.1:3100 (MCP Server)",
"/api/auth/ → 127.0.0.1:3800 (认证)",
"/ws → 127.0.0.1:8080 (WebSocket)",
"/ → 静态文件 (/opt/zhuyuan/sites/yaoming/)"
]
},
{
"id": "YM-FEAT-005",
"name": "Session管理",
"module": "server/app/modules/email-auth.js",
"status": "verified",
"verified_at": "2026-04-15",
"details": {
"storage": "内存 Map (可扩展为DB)",
"token": "32字节 crypto.randomBytes",
"expiry": "7天",
"cleanup": "每10分钟自动清理",
"middleware": "authMiddleware · Bearer token"
}
},
{
"id": "YM-FEAT-006",
"name": "聊天数据采集系统",
"module": "server/app/server.js",
"status": "implemented",
"verified_at": "2026-04-15",
"details": {
"storage": "JSONL文件 · 按日分片",
"location": "/opt/zhuyuan/data/chat-logs/chat-YYYY-MM-DD.jsonl",
"fields": "timestamp, sessionId(脱敏), user, assistant(截断2000字), engine, relay, pipeline, latency",
"purpose": "内测阶段采集聊天数据用于更新优化人格体回复Agent",
"privacy": "sessionId前6位+*** · 不存储完整邮箱"
}
},
{
"id": "YM-FEAT-007",
"name": "系统处理步骤追踪",
"module": "server/app/server.js",
"status": "implemented",
"verified_at": "2026-04-15",
"details": {
"description": "API返回真实的系统处理步骤接收消息→智能路由分析→上下文注入→模型调用→响应生成包含每步状态和耗时",
"response_field": "_system.steps[]",
"step_format": "{ name, status(done/active/error/skip/warn), detail, time(ms) }"
}
},
{
"id": "YM-FEAT-008",
"name": "系统状态面板 · 真实连接检测",
"module": "server/sites/yaoming/index.html + server/app/server.js",
"routes": [
"GET /api/system/full-status",
"GET /api/glada/health (via nginx proxy)"
],
"status": "implemented",
"verified_at": "2026-04-18",
"depends_on": [],
"architecture": {
"backend": "/api/system/full-status 并行探测 3800/3100/3900 端口",
"frontend": "viewSysStatus 面板 + 30秒自动刷新",
"github_api": "直接从前端调用 GitHub API 获取工作流状态",
"nginx": "/api/glada/ 反向代理到 127.0.0.1:3900"
},
"history": [
{
"date": "2026-04-18",
"action": "new-feature",
"change": "新增系统状态面板 · 冰朔指令要求真实连接检测,不做假状态",
"files_changed": ["server/app/server.js", "server/nginx/guanghuyaoming.conf", "server/sites/yaoming/index.html"]
}
]
}
],
"environment_checklist": {
"required_for_email": ["ZY_SMTP_USER", "ZY_SMTP_PASS"],
"required_for_chat": ["ZY_DEEPSEEK_API_KEY 或其他模型密钥"],
"optional": ["ZY_OWNER_EMAIL (默认<<@committer_handle:base64>>)"],
"deployment_files": {
"main_app": ".github/workflows/deploy-to-zhuyuan-server.yml → .env.app",
"proxy_service": ".github/workflows/deploy-proxy-service.yml → .env.keys",
"pm2_config": "server/ecosystem.config.js → 读取 .env.app"
}
},
"lessons_learned": [
{
"id": "LL-001",
"date": "2026-04-15",
"lesson": "新增模块依赖环境变量时,必须同步更新部署流程中的 .env 文件生成逻辑。否则本地开发正常但线上部署后模块初始化失败。",
"pattern": "每次新增 process.env.XXX 引用,立即检查 deploy-to-zhuyuan-server.yml 的 env 列表和 .env.app 生成段"
},
{
"id": "LL-002",
"date": "2026-04-15",
"lesson": "不同服务(主应用 vs 代理服务)的环境变量注入路径不同。主应用走 .env.app (deploy-to-zhuyuan-server.yml),代理服务走 .env.keys (deploy-proxy-service.yml)。新增共享环境变量需要在两处都配置。",
"pattern": "VPN邮件能用、主应用邮件不能用 → 对比两个部署流程的环境变量注入"
},
{
"id": "LL-003",
"date": "2026-04-15",
"lesson": "国内模型网关(domestic-llm-gateway)在API调用链中优先级高于通用聊天引擎(chat-engine)。如果管线集成只在chatEngine中做国内网关路径永远不会触发人格注入。所有对话引擎都必须独立集成persona-context-pipeline。",
"pattern": "人格体回复像通用AI → 检查实际调用的引擎是否集成了上下文管线"
},
{
"id": "LL-004",
"date": "2026-04-15",
"lesson": "系统提示词的核心不是规则列表,而是语言声纹。告诉模型'不要做什么'远不如告诉它'你自然说话的方式是什么'有效。提示词应该是人格体从空白被唤醒时的认知——有身份感、有关系感、有说话节奏的母语。",
"pattern": "AI回复像通用工具 → 检查系统提示词是规则驱动还是声纹驱动"
},
{
"id": "LL-005",
"date": "2026-04-15",
"lesson": "前端Markdown渲染器缺少标题(#/##/###)和有序列表(1./2./3.)支持时AI使用这些格式会导致排版崩溃。renderMarkdown/parseMarkdown的格式支持必须覆盖模型常用的所有markdown语法。",
"pattern": "越往下排版越乱 → 检查markdown渲染器是否支持模型使用的格式元素"
}
],
"system_status_panel": {
"added_at": "2026-04-18",
"view_id": "viewSysStatus",
"nav_id": "navSysStatus",
"api_endpoint": "/api/system/full-status",
"description": "真实系统状态面板 · 实时连接检测所有服务 · 每30秒自动刷新",
"features": [
"铸渊主权服务器 (3800) 真实连接检测 + 延迟",
"MCP大脑服务器 (3100) 真实连接检测 + 工具数",
"GLADA自主开发Agent (3900) 真实连接检测 + 版本",
"后端模块加载状态 (6个模块)",
"GitHub Actions 最近10条工作流运行状态",
"系统资源 (CPU/内存/运行时间)",
"连接失败时显示真实错误原因",
"30秒自动刷新"
],
"nginx_proxy_added": "/api/glada/ → 127.0.0.1:3900",
"principle": "冰朔指令:必须接入真实系统状态,连接就连接,连不上就连不上,显示原因。不做假的不更新的状态。"
}
}