const icon=n=>``; const people=[["高","高瑞@微信","处理中","00:00:12",""],["小","一个小迷糊@微信","等待中","00:01:45","green"],["李","李先生@微信","等待中","00:02:10",""] ,["陈","陈女士@微信","待重试","—","violet"],["张","张小明@微信","等待中","00:03:22","cyan"]]; let listening=true; const head=(title,sub,actions)=>`

${title}

${sub}

${actions}
`; const connected=(extra="",primary="")=>`企业微信已连接AI 服务正常${extra}`; const ribbon=items=>`
${items.map(x=>`
${icon(x[2])}
${x[0]}${x[1]}
`).join("")}
`; const queueList=(archive=false)=>`
${people.map((p,i)=>`
${p[0]}
${p[1]}${archive?(i===0?"请问你们的灵芝孢子粉怎么服用…":i===1?"每天吃几次比较合适?":i===2?"有不良反应吗?":"会话已归档"):`${p[2]}`}
${archive?["16:31","16:18","15:42","14:20","13:35"][i]:p[3]}${archive?`${i===2?"已转人工":"AI 已回复"}`:`${icon("message")} ${i===3?1:0}`}
`).join("")}
`; const activities=(more="查看完整日志")=>`
${[["16:33:27","扫描未读","检测到客户未读消息","activity","成功",""],["16:33:28","提取聊天记录","已提取最近 6 条聊天记录","log","成功",""],["16:33:29","AI 服务","正在请求 AI 生成回复","brain","进行中","blue"],["16:33:31","人工保护","检测到人工鼠标操作,暂停 5 秒","user","警告","orange"]].map(x=>`
${icon(x[3])}
${x[1]}

${x[2]}

● ${x[4]}
`).join("")}
`; const journey=()=>`
${[["扫描未读","已完成","0.3s"],["提取聊天记录","已完成","1.2s"],["合并连续消息","已完成","0.4s"],["发送至 AI","已完成","0.6s"],["生成回复","进行中","2.4s"],["回填企业微信","等待","—"],["自动发送与归档","等待","—"]].map((x,i)=>`
4?"wait":""}">
${i<4?"✓":i+1}
${x[0]}${x[1]}
${x[2]}
`).join("")}
`; const statusCells=items=>`
${items.map(x=>`
${icon(x[0])}
${x[1]}${x[2]}
`).join("")}
`; function autoView(){return `
${head("桌面自动化控制台","监听企业微信未读消息,并由 AI 自动生成与发送回复",connected(`${icon("send")}自动发送`,"danger"))}${ribbon([["监听状态","运行中","activity","green"],["排队","3","users"],["今日回复","128","message"],["失败","1","alert","red"]])}

任务队列

3${icon("filter")}${icon("sort")}
${queueList()}

当前处理任务

${icon("user")}高瑞@微信已读取 6 条消息AI 生成中
复制的聊天内容
请问你们的灵芝孢子粉怎么服用?
每天吃几次比较合适?
有什么注意事项吗?
AI 回复预览
您好!灵芝孢子粉建议每日 1–2 次,每次 2–3 克,温水冲服,饭前半小时或睡前服用效果更佳。
如有特殊体质或正在服药,建议咨询专业医生后再服用哦。
${icon("shield")}置信度 96%${icon("clock")}模型耗时 2.4s

自动化执行状态

总耗时 5.01s
${journey()}

企业微信窗口状态

${[["folder","窗口","已识别"],["message","当前会话","高瑞@微信"],["monitor","DPI","200%"],["shield","人工保护","5 秒"],["refresh","最小化恢复","已开启"]].map(x=>`
${icon(x[0])}${x[1]}${x[2]}
`).join("")}

实时事件

${activities()}
`} function queueView(){return `
${head("任务队列","查看排队、处理中与待重试的自动回复任务",connected(`${icon("send")}自动发送`,"danger"))}${ribbon([["处理中","1","check","","blue"],["等待中","3","clock"],["待重试","1","refresh","orange"],["平均等待","12s","clock","green"]])}

全部任务

${queueList()}

任务详情

客户高瑞@微信
会话 ID7bc26546… ${icon("copy")}
已等待12 秒
重试0 次
来源消息
请问你们的灵芝孢子粉怎么服用?
✦ AI 生成回复中
${[["入队","16:32:11"],["读取消息","16:32:11"],["请求 AI","16:32:12"],["生成回复","进行中"],["回填发送","等待中"],["完成","等待中"]].map((x,i)=>`
${i<3?"✓":i+1}
${x[0]}${x[1]}
`).join("")}

调度信息

优先级普通
${icon("clock")}
预计完成3 秒
${icon("shield")}
人工保护已开启
${icon("refresh")}
下次重试

任务执行记录

${activities()}
`} function archiveView(){return `
${head("会话归档","保存客户上下文、自动回复与回访线索",`企业微信已连接AI 服务正常`)}

最近会话

${queueList(true)}

会话记录

${icon("user")}高瑞@微信6 条消息AI 已回复${icon("clock")}16:31 更新
${icon("user")}
请问你们的灵芝孢子粉怎么服用?
${icon("bot")}
每天吃几次比较合适?
${icon("user")}
有什么注意事项吗?
${icon("bot")}
温水冲服,饭前半小时或睡前服用效果更佳。
如有特殊体质或正在服药,建议咨询专业医生后再服用哦。
${icon("user")}
好的,谢谢!
${icon("bot")}
不客气!如有其他问题,随时为您服务~

客户记忆

饮食控制体重管理长期回访
客户关注灵芝孢子粉的服用方法与注意事项,希望优化服用时间与剂量,同时注重产品安全性与体质适配。
◔ 上下文 8 轮

业务沉淀

挂号登记已登记潜在客户
1 次 ✓
回访线索创建回访计划
1 条 ✓
${icon("user")}
人工跟进未分配客服
0 次 ·

最近更新

${activities("复制全部记录")}
`} function aiView(){return `
${head("AI 设置","配置模型、客服人格、知识库与工具能力",`配置已同步`)}

客服人格

AI
服务风格:温和专业简洁
✧ 实时预览

您好!我是甄养堂贴心管家,
很高兴为您服务 😊

请问有什么可以帮您的吗?

✣ 模型引擎

▰ 企业知识库

1,284个知识片段
● 刚刚同步✓ 已连接

◇ MCP 工具

单次最多调用 5 个工具 ⓘ
挂号登记
已启用
客户查询
已启用
回访记录
已启用

${icon("shield")} 安全边界

🛡 不做医疗诊断
💊 不修改用药方案
♙ 高风险转人工
当前模式:${icon("shield")}严格模式

配置状态

${statusCells([["cloud","云端模型正常","最后检查:刚刚"],["folder","知识库已同步","1,284 个知识片段"],["folder","3 个工具可用","全部运行正常"],["shield","安全策略已生效","严格模式"]])}
`} function automationView(){return `
${head("自动化设置","配置企业微信监听、消息合并与自动发送规则",`企业微信已识别规则已生效`)}

监听与发送策略

${icon("activity")} ● 规则运行中
${[["activity","扫描未读"],["log","提取消息"],["folder","合并消息"],["brain","请求 AI"],["send","回填发送"]].map(x=>`
${icon(x[0])}
${x[1]}
`).join("")}
${icon("clock")}扫描间隔 2 秒
⌛ 连续消息等待 20 秒
${icon("clock")}发送前等待 1 秒

企业微信窗口

▣ 主窗口:● 已识别
${icon("user")} 当前账号:甄养堂客服
◎ DPI:200%
${icon("monitor")} 最小化恢复:● 已开启

人机共存

启用人工操作保护
鼠标静止 5 秒 后恢复
${icon("bot")}
AI 运行中

检测到人工操作
AI 暂停

消息处理

✓ 同一客户连续消息自动合并
✓ 保留最近 8 轮上下文8 轮
✓ 一次只处理 1 个会话1 个

异常与兜底

${icon("clock")}AI 超时:重试 2 次2 次
${icon("alert")}发送失败:自动重试已开启
${icon("message")}固定回复:在的,请稍等编辑

高风险转人工

● 已开启
⚕ 诊断◇ 用药调整¥ 投诉退款

启动前检查

${statusCells([["check","企业微信已登录","检查完成"],["cloud","AI 服务正常","检查完成"],["activity","窗口坐标已校准","检查完成"],["shield","规则配置有效","检查完成"]])}
`} function logsView(){return `
${head("运行日志","实时追踪连接、消息识别、AI 调用与自动发送事件",`监控中`)}${ribbon([["企业微信","99.9%","message","green"],["AI 成功率","98.6%","brain","","blue"],["平均响应","2.4s","clock","","blue"],["警告","1","alert","red"]])}

实时事件流

${[["16:33:27","未读扫描","检测到客户未读消息","activity","成功","green"],["16:33:28","提取聊天记录","已读取最近 6 条消息","message","成功","green"],["16:33:29","AI 服务","正在生成回复","brain","进行中",""],["16:33:31","人工保护","检测到鼠标操作,暂停 5 秒","user","警告","orange"],["16:33:36","自动发送","回复发送成功","send","成功","green"]].map(x=>`
${icon(x[3])}
${x[1]}${x[2]}
${x[4]}
`).join("")}

系统健康

${[["企业微信连接","正常"],["AI 服务","正常"],["窗口识别","正常"]].map(x=>`
${icon("check")}
${x[0]}${x[1]}
`).join("")}
${icon("clock")}运行时长 02:18:46

当前回复链路

${[["activity","扫描未读","0.3s"],["message","读取消息","1.2s"],["brain","请求 AI","2.4s"],["send","回填发送","0.6s"]].map(x=>`
${icon(x[0])}
${x[1]}${x[2]}
`).join("")}

事件详情

${icon("user")}
人工保护

检测到人工鼠标操作,自动回复暂停 5 秒

模块:人机共存会话:高瑞@微信已自动恢复

异常追踪

${icon("alert")}
发送失败1
${icon("clock")}
模型超时0
${icon("monitor")}
窗口丢失0

最近活动

${activities("查看完整记录")}
`} function systemView(){return `
${head("系统设置","管理软件启动、数据存储、通知与系统维护",`当前版本 v2.0 ⓘ`)}

基础设置

${icon("power")}开机自动启动
${icon("activity")}启动后自动监听
最小化到系统托盘
${icon("log")}关闭窗口时保持后台运行
界面语言: 简体中文
${icon("monitor")}缩放比例: 自动

数据与存储

286MB 已使用
● 会话归档128 MB
● 运行日志86 MB
● 缓存数据72 MB
数据保留90 天 ⌄

通知提醒

${icon("send")}发送失败提醒
模型超时提醒
${icon("user")}需要人工跟进
企业微信连接中断
发送失败提醒消息发送失败,已加入重试队列

安全与隐私

${icon("shield")}敏感信息脱敏:已开启 ●
${icon("lock")}本地数据加密:已开启 ●
${icon("lock")}日志隐藏聊天正文:已开启 ●
${icon("log")}退出时清理剪贴板:已开启 ●

网络与服务

${icon("cloud")}云端 AI:已连接 ●
${icon("folder")}企业知识库:已连接 ●
网络延迟:28ms ●

维护与诊断

${icon("refresh")}
检查更新已是最新版本
导出诊断导出系统诊断报告
恢复默认设置重置所有设置项
${icon("shield")}
查看许可信息查看软件许可详情

系统状态

${statusCells([["shield","配置已保存","所有设置已生效"],["cloud","数据已备份","最近备份:16:33:28"],["shield","安全策略正常","所有安全策略已启用"],["monitor","后台服务运行中","系统运行状态良好"]])}
`} const views={auto:autoView,queue:queueView,archive:archiveView,ai:aiView,automation:automationView,logs:logsView,system:systemView}; const glyphIcons=[["✦","sparkles"],["✧","sparkles"],["✣","brain"],["⚑","flag"],["▣","clipboard"],["☎","phone"],["⌕","search"],["▤","clipboard"],["◇","package"],["🛡","shield"],["💊","pill"],["♙","users"],["⌛","hourglass"],["◎","globe"],["⚕","shield"],["¥","coins"],["⌁","wifi"],["♟","bell"],["▰","tray"],["▷","play"],["↻","refresh"],["➤","cursor"],["Ⅱ","pause"],["◔","clock"],["ⓘ","info"],["⌄","chevron"]]; function polishedIcons(html){return glyphIcons.reduce((value,[glyph,name])=>value.replaceAll(glyph,icon(name)),html)} function render(name){ if(!views[name])name="auto"; document.querySelectorAll("[data-view]").forEach(b=>b.classList.toggle("active",b.dataset.view===name)); document.getElementById("main").innerHTML=polishedIcons(views[name]()); const listen=document.querySelector('[data-action="toggle-listen"]'); if(listen)listen.innerHTML=listening?`${icon("pause")}暂停监听`:`${icon("play")}恢复监听`; location.hash=name; } function toast(msg="操作已完成"){const t=document.getElementById("toast");t.textContent=msg;t.classList.add("show");clearTimeout(window.__toast);window.__toast=setTimeout(()=>t.classList.remove("show"),1600)} document.addEventListener("click",e=>{const nav=e.target.closest("[data-view]");if(nav){render(nav.dataset.view);return}const action=e.target.closest("[data-action]");if(action){const a=action.dataset.action;if(a==="toggle-listen"){listening=!listening;document.getElementById("orb").classList.toggle("paused",!listening);document.getElementById("orb-label").textContent=listening?"监听中":"已暂停";render(location.hash.slice(1));toast(listening?"已恢复监听":"监听已暂停")}else if(a==="logs")render("logs");else if(a==="clear-logs"){const list=document.getElementById("log-list");if(list)list.innerHTML='
日志已清空
';toast("日志已清空")}else toast()}const sw=e.target.closest(".switch");if(sw)sw.classList.toggle("on");const pill=e.target.closest(".filter-pill,.tab");if(pill){[...pill.parentElement.children].forEach(x=>x.classList.remove("active"));pill.classList.add("active")}}); function fit(){const s=Math.min(innerWidth/1630,innerHeight/965);document.getElementById("stage").style.setProperty("--scale",String(s))}addEventListener("resize",fit);fit();render((location.hash||"#auto").slice(1));