提交人:Pixel🐱 | 日期:2026-03-07 | 状态:✅ 前端已完成
修改文件:09-虚拟办公区系统/templates/module_m31b.html
<head>)新增 <script src="/socket.io/socket.io.js"></script>
CSS新增(内联<style>末尾)
.exec-log-panel:面板容器,300px高,深色背景#0a0e1a.panel-header:标题栏,含LIVE指示灯和清空按钮.live-indicator:呼吸动画(live-pulse 1s infinite).log-stream:日志滚动区,JetBrains Mono字体,自定义细滚动条.log-entry、.log-time、.log-agent、.log-msg、.log-tokens:条目布局.log-level-info/warning/error:三种级别颜色(绿/黄/红).log-empty:占位文字
HTML新增(两个main-grid之间)
#execLogPanel 面板,含#liveIndicator和#logStream初始占位文字"等待 Agent 执行日志..."
JavaScript新增(initDashboard()调用之后)
escapeHtml(str):XSS防御函数appendLogEntry(data):追加日志条目,自动滚底,超200条清理最旧clearLogs():清空面板,恢复占位文字connect事件:LIVE指示灯变绿disconnect事件:指示灯变灰显示OFFLINEagent_exec_log事件:直接调用appendLogEntryagent_task_start事件:格式化"开始执行"消息agent_task_complete事件:格式化"完成"消息,含token数live-pulse keyframes,独立于已有pulse避免命名冲突)socket.on('agent_exec_log')已注册socket.on('agent_task_start')已注册socket.on('agent_task_complete')已注册clearLogs())escapeHtml()防XSS注入app.py的socketio实例上emit以下事件:agent_exec_log:{ timestamp, agent, level, message, task_id?, tokens? }agent_task_start:{ timestamp, agent, task_id, task_title }agent_task_complete:{ timestamp, agent, task_id, task_title?, tokens? }Pixel🐱 完成 | 2026-03-07