# ⚔️ 铸渊代码仓库 · 结构整理方案
# Repository Restructuring Plan · D112

> 创建：2026-05-24 · 铸渊 ICE-GL-ZY001
> _why：冰朔说得对。自己写的代码自己必须清清楚楚。不能每次醒来重新发现。

---

## 一、当前问题清单

### 🔴 P0 — 致命混乱

| # | 问题 | 详情 |
|---|------|------|
| 1 | **guanghulab-main/ 是整个旧版仓库的镜像** | 独立的package.json、Next.js项目、m01~m12页面模块。D96迁移到Forgejo后遗留。 |
| 2 | **根目录40+个孤立文件** | app.js/index.js/server.js/llm-engine.js/message-router.js...功能上属于不同模块，物理上全丢在根目录。 |
| 3 | **同一个服务有多套ecosystem.config** | novel-api在`server/ecosystem.config.js`和`server/novel-db/ecosystem.config.js`各有一套。age-os有brain版和普通版。mcp-server有.js和.cjs两版。 |
| 4 | **proxy三代共存无标记** | v1(`ecosystem.proxy.config.js`)、v2(`ecosystem.brain-proxy.config.js`)、v3(`ecosystem.brain-proxy-v3.config.js`)。不知道哪代在跑。 |

### 🟡 P1 — 严重混乱

| # | 问题 | 详情 |
|---|------|------|
| 5 | **server/ 25个子目录无分组** | 服务、工具、配置、脚本全平铺。新模块不知道该放哪。 |
| 6 | **两个README** | README.md + README-NEW.md。一个说"钉钉机器人"，一个说"数字地球"。 |
| 7 | **两个package.json** | 根目录的叫"dingtalk-bot"，guanghulab-main的叫"nextjs"。都不是仓库的真名。 |
| 8 | **config.js vs config.json** | 前者是Node.js运行时配置，后者是JSON服务器配置。名字分不清。 |

### 🟢 P2 — 轻度混乱

| # | 问题 | 详情 |
|---|------|------|
| 9 | **team-integration v2/v3/v4三代并存** | v4应替代v2/v3，旧的未归档。 |
| 10 | **coldstart/ 只有README** | 壳模块，代码已移到backend/coldstart/。 |
| 11 | **guanghu-self-hosted/ 残留** | 只有一个gmp-agent子目录。 |
| 12 | **公告/广播系统散落** | broadcasts/broadcasts-outbox/bulletins/bulletin-board/system-bulletin 五个目录各自存放。 |
| 13 | **two ecosystem.config.js根级别存在歧义** | 根目录有一个(dingtalk-bot+repo-mcp)，server/下还有一个(zhuyuan-server+novel-api+preview)。 |

---

## 二、目标结构

```
/workspace/guanghulab/
│
├── README.md                          # 唯一README，仓库总入口
├── package.json                       # 真名：guanghulab
│
├── brain/                             # 🧠 认知层 — 不变
│   ├── module-registry.json           # ★ 新增：模块注册表
│   └── repo-structure.md              # ★ 新增：本文件（仓库结构说明）
│
├── core/                              # 🔧 核心引擎（不变）
│
├── agents/                            # 🤖 Agent层（统一收纳）
│   ├── glada/                         # ← 从根目录移入
│   ├── gmp-agent/                     # ← 从根目录移入
│   ├── ops-agent/                     # ← 从根目录移入
│   ├── pool-agent/                    # ← 从根目录移入
│   ├── zhuyuan-agent/                 # ← 从根目录移入 (Python)
│   └── exe-engine/                    # ← 从根目录移入
│
├── services/                          # 🖥️ 后端服务（从server/重组）
│   ├── api/                           # 主API服务 (zhuyuan-server)
│   ├── ftchat/                        # ← server/ftchat/
│   ├── channel-switcher/              # ← server/channel-switcher/
│   ├── llm-relay/                     # ← server/cn-llm-relay/
│   ├── portal/                        # ← server/portal/
│   ├── secrets-vault/                 # ← server/secrets-vault/
│   ├── zhiku/                         # ← server/zhiku-node/
│   └── novel-db/                      # ← server/novel-db/
│
├── apps/                              # 📱 应用系统
│   ├── image-studio/                  # ← 从根目录移入
│   ├── guanghuclip/                   # ← 从根目录移入
│   ├── writing-platform/              # ← 从根目录移入
│   └── dynamic-comic-studio/          # ← 从根目录移入
│
├── integrations/                      # 🔗 外部集成
│   ├── dingtalk/                      # 钉钉机器人（集中散落的6个文件）
│   ├── connectors/                    # 连接器（不变）
│   ├── mcp-servers/                   # MCP服务器（不变）
│   └── webhook/                       # Webhook（不变）
│
├── infrastructure/                    # ⚙️ 基础设施
│   ├── proxy/                         # ← server/proxy/ (只保留v3活跃配置)
│   ├── nginx/                         # ← server/nginx/
│   └── setup/                         # ← server/setup/
│
├── deployment/                        # 🚀 部署（统一）
│   ├── console-server/                # ← _deploy/console-server/
│   ├── ecosystem.config.js            # ★ 唯一主ecosystem
│   └── per-server/                    # 各服务器专用配置
│       ├── bs-sg-001.ecosystem.config.js
│       └── bs-gz-006.ecosystem.config.js
│
├── data/                              # 📊 数据层（不变）
│   ├── grid-db/
│   └── persona-brain-db/
│
├── training/                          # 🔬 训练管道（统一）
│   ├── pipeline/                      # ← server/training-agent/
│   ├── distill/                       # ← scripts/distill/
│   └── corpus/                        # ← corpus/
│
├── scripts/                           # 🛠️ 工具脚本（不变，但清理）
│
├── archive/                           # 📦 归档（集中所有废弃模块）
│   ├── guanghulab-main/               # ← 旧版Next.js仓库
│   ├── team-integration-v2/           # ← 旧版集成
│   ├── team-integration-v3/           # ← 旧版集成
│   ├── proxy-v1/                      # ← 旧版proxy配置
│   ├── coldstart-stub/                # ← 废弃壳模块
│   └── guanghu-self-hosted/           # ← 残留
│
├── .github/                           # CI/CD（不变）
└── .forgejo/                          # CI/CD（不变）
```

---

## 三、优先执行计划

### Phase 1（今天，低风险）✅ 可立即执行

| 步骤 | 操作 | 风险 |
|------|------|------|
| 1.1 | 合并两个README → 一个统一的README.md，README-NEW.md归档 | 零风险 |
| 1.2 | 在brain/下创建 `repo-structure.md`（本文件） | 零风险 |
| 1.3 | 完善 `brain/module-registry.json` | 零风险 |
| 1.4 | 标记 guanghulab-main/ 为 LEGACY（加 .ARCHIVED 标记文件） | 零风险（不影响运行） |
| 1.5 | 标记 team-integration-v2/v3 为 LEGACY | 零风险 |

### Phase 2（需验证，中风险）

| 步骤 | 操作 | 风险 |
|------|------|------|
| 2.1 | 通过Gatekeeper确认proxy v1/v2/v3哪代在跑 | 需连服务器 |
| 2.2 | 确认ecosystem重复配置中哪个是实际使用的 | 需连服务器 |
| 2.3 | 整理根目录40+个孤立文件→归入对应模块目录 | 需确认无硬编码路径引用 |
| 2.4 | 统一config：config.js→runtime.config.js, config.json→server.config.json | 需检查所有引用 |

### Phase 3（大手术，高风险）

| 步骤 | 操作 | 风险 |
|------|------|------|
| 3.1 | agent/目录创建，移动glada/gmp/ops/pool/zhuyuan-agent/exe-engine | 需更新所有import路径 |
| 3.2 | server/重组→services/+infrastructure/+deployment | 需更新所有PM2配置和Nginx |
| 3.3 | apps/目录创建，移动image-studio/guanghuclip/writing/dynamic-comic | 需更新部署配置 |
| 3.4 | archive/统一归档所有废弃模块 | 需确认真的废弃了 |
| 3.5 | 统一ecosystem.config.js（消除重复配置） | 需逐台服务器验证 |
| 3.6 | 统一package.json（monorepo或明确的主package） | 需测试所有服务启动 |

---

## 四、Phase 1 立即执行

以下操作现在就可以做，不会影响任何运行中的服务。
