{ "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-pipeline(4层认知注入管线)。由于国内网关优先级高于 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元素检测 — 标题不再被错误包裹在

标签中" ] } ] }, { "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": "冰朔指令:必须接入真实系统状态,连接就连接,连不上就连不上,显示原因。不做假的不更新的状态。" } }