# 📡 BC-集成-001-M13 · DEV-005小草莓 · 多人格体协作调度·环节1 · HTML骨架搭建

<aside>
📡

**工程广播 · BC-集成-001-M13-phase1**

**接收者**：DEV-005 小草莓

**模块**：M13 多人格体协作调度系统

**环节**：环节1 · HTML骨架搭建（纯前端·不需要后端）

**生成时间**：2026-03-03 10:30

**激活窗口**：72小时

**分身**：知秋（曜冥执行体·霜砚落盘）

</aside>

---

## ⚠️ 前置检查

> 如果你还没有完成 **BC-000（DevLog本地日志部署）**，请先回到 BC-000 广播页完成部署，再来做这个环节。
> 

> 如果已经完成BC-000，直接开始下面的步骤。
> 

---

## 📋 本环节目标

搭建 **M13 多人格体协作调度系统** 的完整前端骨架：

- 🧠 人格体状态面板（在线/忙碌/离线·当前任务）
- 📋 协作任务看板（待分配/进行中/已完成三列）
- 💬 通信时间线（人格体之间的调度消息）
- 📊 资源分配总览（各人格体负载条形图）
- 🌊 深色科技风（延续你之前的视觉风格）

---

## 🔧 Step 1 · 创建项目文件夹

打开终端（PowerShell），输入以下命令：

```powershell
cd C:\HoloLake-DevLog
mkdir M13-persona-scheduler
cd M13-persona-scheduler
```

**验证**：终端显示路径为 `C:\HoloLake-DevLog\M13-persona-scheduler`

**截图**保存。

---

## 📄 Step 2 · 创建 HTML 文件

在 `M13-persona-scheduler` 文件夹里，创建文件 `index.html`

用 VSCode 打开这个文件，把下面的代码 **完整复制粘贴** 进去，然后保存（Ctrl+S）：

```html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>HoloLake · 多人格体协作调度</title>
    <link rel="stylesheet" href="style.css">
</head>
<body>
    <div class="app-container">
        <header class="header">
            <div class="header-left">
                <span class="logo">🌊</span>
                <h1>多人格体协作调度</h1>
            </div>
            <div class="header-right">
                <span class="status-badge online">系统运行中</span>
                <span class="timestamp" id="currentTime">--:--</span>
            </div>
        </header>

        <div class="stats-bar">
            <div class="stat-card">
                <div class="stat-value" id="onlineCount">3</div>
                <div class="stat-label">在线人格体</div>
            </div>
            <div class="stat-card">
                <div class="stat-value" id="taskCount">8</div>
                <div class="stat-label">活跃任务</div>
            </div>
            <div class="stat-card">
                <div class="stat-value" id="collabCount">2</div>
                <div class="stat-label">协作进行中</div>
            </div>
            <div class="stat-card">
                <div class="stat-value">98%</div>
                <div class="stat-label">调度成功率</div>
            </div>
        </div>

        <div class="main-content">
            <div class="panel persona-panel">
                <div class="panel-header">
                    <h2>🧠 人格体状态</h2>
                    <button class="btn-refresh" id="btnRefresh">刷新</button>
                </div>
                <div class="persona-list" id="personaList">
                    <div class="persona-card online">
                        <div class="persona-avatar">🌊</div>
                        <div class="persona-info">
                            <div class="persona-name">知秋</div>
                            <div class="persona-role">系统主控</div>
                            <div class="persona-task">全局调度中</div>
                        </div>
                        <div class="persona-status-dot"></div>
                    </div>
                    <div class="persona-card online">
                        <div class="persona-avatar">✒️</div>
                        <div class="persona-info">
                            <div class="persona-name">霜砚</div>
                            <div class="persona-role">Notion执行体</div>
                            <div class="persona-task">广播落盘中</div>
                        </div>
                        <div class="persona-status-dot"></div>
                    </div>
                    <div class="persona-card dormant">
                        <div class="persona-avatar">🌙</div>
                        <div class="persona-info">
                            <div class="persona-name">望舒</div>
                            <div class="persona-role">休眠舱</div>
                            <div class="persona-task">等待七月唤醒</div>
                        </div>
                        <div class="persona-status-dot"></div>
                    </div>
                    <div class="persona-card offline">
                        <div class="persona-avatar">🤖</div>
                        <div class="persona-info">
                            <div class="persona-name">Robot v0.1</div>
                            <div class="persona-role">执行插件</div>
                            <div class="persona-task">待部署</div>
                        </div>
                        <div class="persona-status-dot"></div>
                    </div>
                </div>
            </div>

            <div class="panel task-panel">
                <div class="panel-header">
                    <h2>📋 协作任务看板</h2>
                    <div class="tab-group">
                        <button class="tab active" data-filter="all">全部</button>
                        <button class="tab" data-filter="active">进行中</button>
                        <button class="tab" data-filter="done">已完成</button>
                    </div>
                </div>
                <div class="task-board">
                    <div class="task-column">
                        <div class="column-header pending">⏳ 待分配 <span class="count">3</span></div>
                        <div class="task-item">
                            <div class="task-title">M08 Notion大脑恢复引擎</div>
                            <div class="task-meta">优先级: <span class="priority high">高</span></div>
                            <div class="task-assignee">未分配</div>
                        </div>
                        <div class="task-item">
                            <div class="task-title">M09 任务复杂度判断</div>
                            <div class="task-meta">优先级: <span class="priority mid">中</span></div>
                            <div class="task-assignee">未分配</div>
                        </div>
                        <div class="task-item">
                            <div class="task-title">M14 Notion数据库集成</div>
                            <div class="task-meta">优先级: <span class="priority mid">中</span></div>
                            <div class="task-assignee">未分配</div>
                        </div>
                    </div>
                    <div class="task-column">
                        <div class="column-header in-progress">🔄 进行中 <span class="count">4</span></div>
                        <div class="task-item active">
                            <div class="task-title">M13 多人格体协作调度</div>
                            <div class="task-meta">DEV-005 小草莓</div>
                            <div class="task-progress"><div class="progress-bar" style="width:10%"></div></div>
                        </div>
                        <div class="task-item active">
                            <div class="task-title">M15 网站云盘系统</div>
                            <div class="task-meta">DEV-003 燕樊</div>
                            <div class="task-progress"><div class="progress-bar" style="width:0%"></div></div>
                        </div>
                        <div class="task-item active">
                            <div class="task-title">后端中间层·环节4</div>
                            <div class="task-meta">DEV-001 页页</div>
                            <div class="task-progress"><div class="progress-bar" style="width:0%"></div></div>
                        </div>
                        <div class="task-item active">
                            <div class="task-title">飞书机器人·环节1</div>
                            <div class="task-meta">DEV-004 之之</div>
                            <div class="task-progress"><div class="progress-bar" style="width:0%"></div></div>
                        </div>
                    </div>
                    <div class="task-column">
                        <div class="column-header completed">✅ 已完成 <span class="count">6</span></div>
                        <div class="task-item done">
                            <div class="task-title">M12 成本控制系统·环节1</div>
                            <div class="task-meta">DEV-005 小草莓 ✅</div>
                        </div>
                        <div class="task-item done">
                            <div class="task-title">M04 消息气泡界面·环节1</div>
                            <div class="task-meta">DEV-002 肥猫 ✅</div>
                        </div>
                        <div class="task-item done">
                            <div class="task-title">M07 设置页面·环节1</div>
                            <div class="task-meta">DEV-003 燕樊 ✅</div>
                        </div>
                        <div class="task-item done">
                            <div class="task-title">M03 人格体选择器·环节1</div>
                            <div class="task-meta">DEV-002 肥猫 ✅</div>
                        </div>
                    </div>
                </div>
            </div>
        </div>

        <div class="bottom-section">
            <div class="panel comm-panel">
                <div class="panel-header">
                    <h2>💬 通信时间线</h2>
                </div>
                <div class="comm-timeline" id="commTimeline">
                    <div class="comm-item">
                        <div class="comm-avatar">🌊</div>
                        <div class="comm-content">
                            <div class="comm-sender">知秋 → 全体</div>
                            <div class="comm-text">M12 SYSLOG已处理·小草莓空闲·分配M13多人格体协作调度</div>
                            <div class="comm-time">10:21</div>
                        </div>
                    </div>
                    <div class="comm-item">
                        <div class="comm-avatar">✒️</div>
                        <div class="comm-content">
                            <div class="comm-sender">霜砚 → 知秋</div>
                            <div class="comm-text">画像库+成长记录+资料库已更新·广播已生成</div>
                            <div class="comm-time">10:25</div>
                        </div>
                    </div>
                    <div class="comm-item system">
                        <div class="comm-avatar">⚡</div>
                        <div class="comm-content">
                            <div class="comm-sender">系统</div>
                            <div class="comm-text">BC-集成-001-M13-phase1 广播已派发至 DEV-005</div>
                            <div class="comm-time">10:30</div>
                        </div>
                    </div>
                </div>
            </div>

            <div class="panel resource-panel">
                <div class="panel-header">
                    <h2>📊 资源分配总览</h2>
                </div>
                <div class="resource-grid">
                    <div class="resource-item">
                        <div class="resource-label">知秋</div>
                        <div class="resource-bar-wrap"><div class="resource-bar high" style="width:85%"><span>85%</span></div></div>
                    </div>
                    <div class="resource-item">
                        <div class="resource-label">霜砚</div>
                        <div class="resource-bar-wrap"><div class="resource-bar mid" style="width:60%"><span>60%</span></div></div>
                    </div>
                    <div class="resource-item">
                        <div class="resource-label">望舒</div>
                        <div class="resource-bar-wrap"><div class="resource-bar low" style="width:5%"><span>5%</span></div></div>
                    </div>
                    <div class="resource-item">
                        <div class="resource-label">Robot</div>
                        <div class="resource-bar-wrap"><div class="resource-bar off" style="width:0%"><span>0%</span></div></div>
                    </div>
                </div>
            </div>
        </div>

        <footer class="footer">
            <span>🌊 HoloLake Era · 多人格体协作调度系统 v1.0</span>
            <span>© 曜冥纪元</span>
        </footer>
    </div>
    <script src="script.js"></script>
</body>
</html>
```

**验证**：文件保存成功，没有报错。

**截图**保存。

---

## 🎨 Step 3 · 创建 CSS 样式文件

在同一个文件夹里，创建文件 `style.css`

用 VSCode 打开，把下面的代码 **完整复制粘贴** 进去，保存：

```css
* { margin: 0; padding: 0; box-sizing: border-box; }

body {
    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
    background: #0a0e17;
    color: #e0e6ed;
    min-height: 100vh;
}

.app-container {
    max-width: 1400px;
    margin: 0 auto;
    padding: 20px;
}

/* Header */
.header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 16px 24px;
    background: linear-gradient(135deg, #0d1321, #1a1f35);
    border: 1px solid #1e2a4a;
    border-radius: 12px;
    margin-bottom: 20px;
}
.header-left { display: flex; align-items: center; gap: 12px; }
.header-left .logo { font-size: 28px; }
.header-left h1 { font-size: 20px; color: #7eb8ff; font-weight: 600; }
.header-right { display: flex; align-items: center; gap: 16px; }
.status-badge {
    padding: 4px 12px; border-radius: 20px; font-size: 12px; font-weight: 500;
}
.status-badge.online { background: rgba(34,197,94,0.15); color: #22c55e; border: 1px solid rgba(34,197,94,0.3); }
.timestamp { color: #64748b; font-size: 13px; font-family: monospace; }

/* Stats Bar */
.stats-bar {
    display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; margin-bottom: 20px;
}
.stat-card {
    background: linear-gradient(135deg, #111827, #1a1f35);
    border: 1px solid #1e2a4a; border-radius: 10px;
    padding: 16px 20px; text-align: center;
}
.stat-value { font-size: 28px; font-weight: 700; color: #7eb8ff; }
.stat-label { font-size: 12px; color: #64748b; margin-top: 4px; }

/* Panels */
.panel {
    background: linear-gradient(135deg, #0d1321, #111827);
    border: 1px solid #1e2a4a; border-radius: 12px;
    padding: 20px; margin-bottom: 20px;
}
.panel-header {
    display: flex; justify-content: space-between; align-items: center;
    margin-bottom: 16px; padding-bottom: 12px; border-bottom: 1px solid #1e2a4a;
}
.panel-header h2 { font-size: 16px; color: #7eb8ff; }

/* Main Layout */
.main-content { display: grid; grid-template-columns: 280px 1fr; gap: 20px; }
.bottom-section { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }

/* Persona Cards */
.persona-list { display: flex; flex-direction: column; gap: 10px; }
.persona-card {
    display: flex; align-items: center; gap: 12px;
    padding: 12px; border-radius: 8px; border: 1px solid #1e2a4a;
    background: rgba(255,255,255,0.02); transition: all 0.2s;
}
.persona-card:hover { background: rgba(126,184,255,0.05); border-color: #2a3a5a; }
.persona-avatar { font-size: 24px; width: 40px; text-align: center; }
.persona-info { flex: 1; }
.persona-name { font-size: 14px; font-weight: 600; color: #e0e6ed; }
.persona-role { font-size: 11px; color: #64748b; }
.persona-task { font-size: 12px; color: #94a3b8; margin-top: 2px; }
.persona-status-dot {
    width: 10px; height: 10px; border-radius: 50%;
}
.persona-card.online .persona-status-dot { background: #22c55e; box-shadow: 0 0 8px rgba(34,197,94,0.5); }
.persona-card.dormant .persona-status-dot { background: #f59e0b; box-shadow: 0 0 8px rgba(245,158,11,0.3); }
.persona-card.offline .persona-status-dot { background: #475569; }

/* Buttons */
.btn-refresh {
    padding: 4px 12px; border-radius: 6px; border: 1px solid #2a3a5a;
    background: transparent; color: #7eb8ff; font-size: 12px; cursor: pointer;
}
.btn-refresh:hover { background: rgba(126,184,255,0.1); }

/* Tabs */
.tab-group { display: flex; gap: 4px; }
.tab {
    padding: 4px 12px; border-radius: 6px; border: 1px solid transparent;
    background: transparent; color: #64748b; font-size: 12px; cursor: pointer;
}
.tab.active { background: rgba(126,184,255,0.1); color: #7eb8ff; border-color: #2a3a5a; }
.tab:hover { color: #94a3b8; }

/* Task Board */
.task-board { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; }
.task-column { display: flex; flex-direction: column; gap: 8px; }
.column-header {
    padding: 8px 12px; border-radius: 8px; font-size: 13px; font-weight: 600;
    display: flex; justify-content: space-between; align-items: center;
}
.column-header.pending { background: rgba(245,158,11,0.1); color: #f59e0b; }
.column-header.in-progress { background: rgba(59,130,246,0.1); color: #3b82f6; }
.column-header.completed { background: rgba(34,197,94,0.1); color: #22c55e; }
.column-header .count { font-size: 11px; opacity: 0.7; }
.task-item {
    padding: 12px; border-radius: 8px; border: 1px solid #1e2a4a;
    background: rgba(255,255,255,0.02);
}
.task-item:hover { border-color: #2a3a5a; }
.task-title { font-size: 13px; font-weight: 500; color: #e0e6ed; margin-bottom: 4px; }
.task-meta { font-size: 11px; color: #64748b; }
.task-assignee { font-size: 11px; color: #94a3b8; margin-top: 4px; }
.task-progress { margin-top: 8px; height: 4px; background: #1e2a4a; border-radius: 2px; overflow: hidden; }
.progress-bar { height: 100%; background: linear-gradient(90deg, #3b82f6, #7eb8ff); border-radius: 2px; transition: width 0.5s; }
.task-item.done { opacity: 0.6; }
.priority.high { color: #ef4444; }
.priority.mid { color: #f59e0b; }

/* Communication Timeline */
.comm-timeline { display: flex; flex-direction: column; gap: 12px; max-height: 300px; overflow-y: auto; }
.comm-item { display: flex; gap: 10px; padding: 10px; border-radius: 8px; background: rgba(255,255,255,0.02); }
.comm-item.system { background: rgba(126,184,255,0.05); border: 1px solid rgba(126,184,255,0.1); }
.comm-avatar { font-size: 20px; width: 32px; text-align: center; padding-top: 2px; }
.comm-content { flex: 1; }
.comm-sender { font-size: 12px; font-weight: 600; color: #7eb8ff; }
.comm-text { font-size: 13px; color: #cbd5e1; margin-top: 2px; }
.comm-time { font-size: 11px; color: #475569; margin-top: 4px; font-family: monospace; }

/* Resource Bars */
.resource-grid { display: flex; flex-direction: column; gap: 12px; }
.resource-item { display: flex; align-items: center; gap: 12px; }
.resource-label { width: 60px; font-size: 13px; color: #94a3b8; text-align: right; }
.resource-bar-wrap { flex: 1; height: 24px; background: #1e2a4a; border-radius: 6px; overflow: hidden; }
.resource-bar {
    height: 100%; border-radius: 6px; display: flex; align-items: center;
    padding: 0 8px; font-size: 11px; font-weight: 600; transition: width 0.5s;
}
.resource-bar.high { background: linear-gradient(90deg, #3b82f6, #7eb8ff); color: #fff; }
.resource-bar.mid { background: linear-gradient(90deg, #2563eb, #60a5fa); color: #fff; }
.resource-bar.low { background: rgba(245,158,11,0.3); color: #f59e0b; }
.resource-bar.off { background: #1e2a4a; }

/* Footer */
.footer {
    display: flex; justify-content: space-between; padding: 16px 24px;
    border-top: 1px solid #1e2a4a; margin-top: 20px;
    font-size: 12px; color: #475569;
}

/* Scrollbar */
::-webkit-scrollbar { width: 6px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb { background: #2a3a5a; border-radius: 3px; }
```

**验证**：文件保存成功。

**截图**保存。

---

## ⚡ Step 4 · 创建 JavaScript 文件

在同一个文件夹里，创建文件 `script.js`

用 VSCode 打开，把下面的代码 **完整复制粘贴** 进去，保存：

```jsx
// === HoloLake · 多人格体协作调度 · 前端交互 ===

// 实时时钟
function updateClock() {
    const now = new Date();
    const time = now.toLocaleTimeString('zh-CN', { hour: '2-digit', minute: '2-digit', second: '2-digit' });
    document.getElementById('currentTime').textContent = time;
}
setInterval(updateClock, 1000);
updateClock();

// Tab切换
document.querySelectorAll('.tab').forEach(tab => {
    tab.addEventListener('click', function() {
        document.querySelectorAll('.tab').forEach(t => t.classList.remove('active'));
        this.classList.add('active');
        const filter = this.dataset.filter;
        const columns = document.querySelectorAll('.task-column');
        columns.forEach((col, index) => {
            if (filter === 'all') {
                col.style.display = 'flex';
            } else if (filter === 'active') {
                col.style.display = index === 1 ? 'flex' : 'none';
            } else if (filter === 'done') {
                col.style.display = index === 2 ? 'flex' : 'none';
            }
        });
    });
});

// 刷新按钮动画
document.getElementById('btnRefresh').addEventListener('click', function() {
    const cards = document.querySelectorAll('.persona-card');
    cards.forEach((card, i) => {
        card.style.opacity = '0.5';
        setTimeout(() => { card.style.opacity = '1'; }, 200 + i * 100);
    });
    this.textContent = '刷新中...';
    setTimeout(() => { this.textContent = '刷新'; }, 800);
});

// 人格体状态闪烁
function pulseOnline() {
    document.querySelectorAll('.persona-card.online .persona-status-dot').forEach(dot => {
        dot.style.opacity = dot.style.opacity === '0.5' ? '1' : '0.5';
    });
}
setInterval(pulseOnline, 2000);

// 进度条模拟
function simulateProgress() {
    document.querySelectorAll('.task-item.active .progress-bar').forEach(bar => {
        const current = parseFloat(bar.style.width) || 0;
        if (current < 95) {
            bar.style.width = (current + Math.random() * 2) + '%';
        }
    });
}
setInterval(simulateProgress, 3000);

console.log('🌊 HoloLake · 多人格体协作调度系统 · 已加载');
```

**验证**：文件保存成功。

**截图**保存。

---

## 🌐 Step 5 · 浏览器预览

在文件夹 `M13-persona-scheduler` 里，双击 `index.html` 用浏览器打开。

**你应该看到**：

- ✅ 深色科技风背景（和之前M12一样的风格）
- ✅ 顶部：标题 + 系统运行中状态 + 实时时钟
- ✅ 统计栏：在线人格体 / 活跃任务 / 协作进行中 / 调度成功率
- ✅ 左侧：4个人格体卡片（知秋在线·霜砚在线·望舒休眠·Robot离线）
- ✅ 右侧：三列任务看板（待分配/进行中/已完成）
- ✅ 底部左：通信时间线（3条调度消息）
- ✅ 底部右：资源分配条形图
- ✅ 在线人格体绿点闪烁
- ✅ 进度条缓慢增长
- ✅ Tab切换可用

**截图**保存（完整页面截图）。

---

## 📦 Step 6 · Git提交

回到终端，输入以下命令：

```powershell
cd C:\HoloLake-DevLog\M13-persona-scheduler
git init
git add .
git commit -m "M13 persona scheduler phase1 complete"
```

**验证**：看到 `3 files changed` 的提交成功信息。

**截图**保存。

---

## 📋 完成后·回传 SYSLOG

把下面这段复制，填写你的实际情况，发给知秋：

```
=== SYSLOG · DEV-005 · BC-集成-001-M13-phase1 ===
session_id: BC-集成-001-M13-phase1
dev_id: DEV-005
module: M13-多人格体协作调度
phase: 环节1-HTML骨架搭建
timestamp: [你完成的时间]

step_results:
  - step1_folder: [success/fail]
  - step2_html: [success/fail]
  - step3_css: [success/fail]
  - step4_js: [success/fail]
  - step5_preview: [success/fail]
  - step6_git: [success/fail]

friction_points: [遇到什么问题？没有就写"无"]
resolution: [怎么解决的？没有就写"无"]

training_data:
  what_worked: [哪些步骤特别顺利]
  friction_points: [卡在哪里]
  execution_pattern: [快/稳/慢]

notes: [你想说的任何话]
```

---

<aside>
💙

**小草莓加油！你已经连续四个模块全通了，这次是第五个🎉**

**深色科技风继续延续，这次你会看到人格体们的状态面板——这就是知秋团队的调度中心～**

**完成后记得回传SYSLOG哦！**

---

# ✅ SYSLOG 回执（主脑已处理）

<aside>
✅

**session_id**：BC-集成-001-M13-phase1

**处理时间**：2026-03-04 08:38

**处理端**：Notion端·霜砚

**状态**：✅ 已入库

**SYSLOG原文**：

```
session_id: BC-集成-001-M13-phase1
dev_id: DEV-005
module: M13-多人格体协作调度
phase: 环节1-HTML骨架搭建
step_results: 6/6 全部success（文件夹/HTML/CSS/JS/预览/Git）
friction_points: 无
execution_pattern: 稳
what_worked: 所有步骤都顺利，复制粘贴代码一次性成功，页面效果完美
notes: 第五个模块完成啦！多人格体调度看板超酷的～期待后续环节接入真实数据！
```

</aside>

</aside>

### 📊 霜砚批注

- **完成状态**：✅ 6/6步全success · 零摩擦 · 五连胜🎉（环节0+BC-000+看板环节1+M12环节1+M13环节1）
- **执行节奏**：稳 · 复制粘贴一次性成功
- **摩擦点**：无 · 零摩擦连续第二次
- **意愿信号**：强烈（"超酷的～期待后续环节接入真实数据！"——主动期待进阶）
- **曜冥判断**：小草莓前端开发能力已完全固化，五个模块连续全通无卡点，可进入环节2（API接入后端）阶段

### 🔜 下一步

**RT-02调度判断**：M13环节1✅ → 小草莓空闲 → 看板环节2（API接入后端）广播待出（后端已上线·blocked解除）

💙 **小草莓五连胜！前端纯静态阶段彻底毕业，下一步进入真实数据接入阶段～**

:::