Root cause: deploy-to-zhuyuan-server.yml uses server/sites/portal/ (not docs/) as the
frontend source for guanghulab.online. PR #361 only updated docs/index.html, so the
server never received the new UI.
Fix:
1. Copied docs/index.html → server/sites/portal/index.html (immediate fix)
2. Added '🔄 同步 docs → portal' step in deploy workflow to auto-sync
docs/index.html to server/sites/portal/ before every deployment,
preventing this desync from happening again.
Agent-Logs-Url: https://github.com/qinfendebingshuo/guanghulab/sessions/da023482-75f7-46b3-a921-548ce02a3a83
Co-authored-by: qinfendebingshuo <207279273+qinfendebingshuo@users.noreply.github.com>
Root cause: deploy-to-zhuyuan-server.yml prioritizes server/sites/portal/
over docs/ when deploying to production. PR #358 only updated docs/index.html,
so the old portal page kept being served at guanghulab.online.
Agent-Logs-Url: https://github.com/qinfendebingshuo/guanghulab/sessions/139e14a6-7613-480a-a279-ba821323704a
Co-authored-by: qinfendebingshuo <207279273+qinfendebingshuo@users.noreply.github.com>
Create server/app/modules/persona-memory.js:
- PostgreSQL connection to age_os database
- Load 5-page notebook (identity, relationships, world, feelings, timeline)
- Load recent memory anchors (top 8 by importance)
- Load recent light tree leaves (last 3 for awakening context)
- Load relationship network
- Load user-specific memories for personalized responses
- Build enriched system prompt with all memory context
- Record conversation memories asynchronously after replies
- Grow light tree leaves for important conversations
- 5-minute cache for persona memory to reduce DB load
- Full graceful degradation: DB down → static persona prompt
Update chat-engine.js:
- Import and use persona-memory for enriched system prompts
- Record memory after each successful API response
- Grow tree leaves for important conversations
Update domestic-llm-gateway.js:
- Use persona-memory for enriched system prompts
- Record memory after successful CN relay and direct API responses
Update server.js:
- Load persona-memory module
- Add GET /api/memory/status endpoint
Add pg dependency to server/app/package.json
Agent-Logs-Url: https://github.com/qinfendebingshuo/guanghulab/sessions/2e09fb7c-c501-4223-8734-5afac689ded9
Co-authored-by: qinfendebingshuo <207279273+qinfendebingshuo@users.noreply.github.com>
Changes:
- Remove the ugly 光 logo-mark icon (red arrow marked element)
- Add English translations below each Chinese text line
- Increase title size from 3.2rem to 4.5rem max
- Expand main container from 680px to 860px
- Add shimmer light sweep effect on title and tagline
- Add breathing scale animation on title
- Add typewriter effect on status badge text
- Add cursor blink animation
- Improve tagline layout with bilingual rows
- Enhance spacing, letter-spacing and visual hierarchy
- Keep favicon unchanged (browser tab icon is fine)
Agent-Logs-Url: https://github.com/qinfendebingshuo/guanghulab/sessions/897b908e-8f31-4392-a0d2-7291dd6ad8bd
Co-authored-by: qinfendebingshuo <207279273+qinfendebingshuo@users.noreply.github.com>
- Replace emoji 🌊 logo with CSS gradient "光" character in glass card
- Change tagline from "探索人类与AI共生的数字世界" to "用语言,建世界"
- Brighten ICP footer link color (text-dim → text-secondary)
- Update favicon from emoji to gradient SVG text
- Sync meta description and OG tags
Agent-Logs-Url: https://github.com/qinfendebingshuo/guanghulab/sessions/90b67b46-e361-4b97-8f6e-fe4a0408a2e2
Co-authored-by: qinfendebingshuo <207279273+qinfendebingshuo@users.noreply.github.com>
The deploy workflow was writing PORT=3800 and ZY_SITE_MODE=production
into .env.app, which gets loaded by ecosystem.config.js's loadEnvFile().
Since ...appEnv is spread first and instance-specific values override it,
this is now safe — but removing them from .env.app eliminates the root
cause entirely (belt-and-suspenders fix).
Agent-Logs-Url: https://github.com/qinfendebingshuo/guanghulab/sessions/80f409c9-7f98-443e-9c31-21111194a523
Co-authored-by: qinfendebingshuo <207279273+qinfendebingshuo@users.noreply.github.com>
Root causes found:
1. CN server (www.guanghulab.com): conflicting Nginx configs in sites-enabled
and conf.d override cn-domain.conf, causing requests to proxy to a non-
responsive backend → 502
2. SG server: ecosystem.config.js spreads .env.app AFTER PORT/ZY_SITE_MODE,
causing .env.app's PORT=3800 to override preview's PORT=3801 → both
instances fight for port 3800 → preview fails → 502 on preview domain
Fixes:
- deploy-cn-landing.yml: clean ALL conflicting Nginx site configs from both
sites-enabled and conf.d before installing cn-domain.conf
- deploy-cn-landing.yml: enhanced health check diagnostics to detect config
conflicts and validate correct service identity
- ecosystem.config.js: move ...appEnv BEFORE instance-specific PORT and
ZY_SITE_MODE to ensure PM2 config takes priority over .env.app
Agent-Logs-Url: https://github.com/qinfendebingshuo/guanghulab/sessions/80f409c9-7f98-443e-9c31-21111194a523
Co-authored-by: qinfendebingshuo <207279273+qinfendebingshuo@users.noreply.github.com>
- Fail fast on startup if ZY_CN_RELAY_API_KEY is not configured
- Add model endpoint context to error messages for debugging
- Make API timeout configurable via environment variable
- Deduplicate health check curl in workflow
- Add security note about VPN-encrypted relay channel
Agent-Logs-Url: https://github.com/qinfendebingshuo/guanghulab/sessions/f6db708e-8b10-4339-b48f-db5f111ae5cd
Co-authored-by: qinfendebingshuo <207279273+qinfendebingshuo@users.noreply.github.com>
- Landing page with star-field, particles, orbital rings, shooting stars
- ICP备案号 陕ICP备2025071211号 with clickable link to beian.miit.gov.cn
- Nginx config for ZY-SVR-004 Guangzhou server
- GitHub Actions workflow (SG→CN SSH jump deploy)
- LLM API keys injection for 4 domestic models
- Server registry updated with cn_domain section
Agent-Logs-Url: https://github.com/qinfendebingshuo/guanghulab/sessions/98e8a463-34d0-41db-a3b5-9f8c0a2d0366
Co-authored-by: qinfendebingshuo <207279273+qinfendebingshuo@users.noreply.github.com>
Implements Module H for AGE OS: open-source model fine-tuning engine
that runs in parallel with existing RAG training system.
Tools:
- finetuneExportDataset: Convert TCS corpus to JSONL fine-tuning format
- finetuneSubmitJob: Submit jobs to DeepSeek/Qwen fine-tuning APIs
- finetuneCheckStatus: Query job progress from provider APIs
- finetuneRegisterModel: Register completed fine-tuned models
- finetuneListModels: List registered models per persona
- finetuneCallModel: Inference with fallback to base model
- finetuneCompareModels: A/B test finetuned vs base model
- finetuneGetCostEstimate: Estimate training cost in RMB
Follows existing training-agent-ops.js patterns: raw https module,
crypto.randomBytes for IDs, COS bucket storage, LLM_CONFIGS structure.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: qinfendebingshuo <207279273+qinfendebingshuo@users.noreply.github.com>