Personal project
Hermes GUI
面向非技术用户,将 Hermes 的命令行操作转化为可视化配置、交互式对话和任务管理。基于 Electron、React 与 Three.js 构建桌面工作台及 3D 智能体办公室,统一接入生图、招投标、AI 新闻推送和飞书双 AI 等项目,降低智能体的使用与维护门槛。
- Electron
- React
- TypeScript
- Three.js
- React Three Fiber
- Drei
- Tailwind CSS
- Electron IPC
- Hermes Gateway 集成
- asyncio
- HTTP/WebSocket
- LLM Prompt
- 飞书/企微 Webhook
Project overview
针对 Hermes 命令行使用方式对非专业用户不友好、配置与任务执行依赖技术操作的问题,开发 Hermes GUI 可视化桌面程序,将模型配置、技能管理、智能对话、历史会话、定时任务及任务看板整合为统一工作台,让用户通过界面完成智能体配置、使用与管理。 在此基础上,接入生图、招投标、AI 新闻推送和飞书双 AI 等独立项目,集中管理业务入口、服务启停、公网访问和运行日志;引入 Three.js 构建交互式 3D 办公室,将 Agent 配置及网关状态映射为虚拟角色与自动行为,形成兼具实用管理与直观展示的 AI 应用平台。
Core features
Hermes 可视化操作: 基于 Electron + React + TypeScript,将模型、服务商、技能、工具及会话管理转为图形界面。Electron 连接本地进程与文件能力,React 承载配置和交互,适配本地 Agent 的使用场景,减少用户记忆命令和手动修改配置的负担。 智能对话与任务管理: 对接 Gateway 通信与流式事件,展示模型回复和工具执行过程,支持历史会话恢复;通过任务看板和可视化时间配置管理任务,帮助用户了解任务状态,而不必持续查看终端输出。 Three.js 智能体办公室: 使用 Three.js、React Three Fiber 与 Drei,将各 Agent Profile 映射为可选择的 3D 角色,根据网关启停自动切换工位与休息区行为;支持角色信息查看、视角切换与独立聊天,将抽象运行状态转化为直观交互。 多项目统一管理: 通过 Electron IPC、命令适配层与 HTTP 探测,集中提供生图参数配置、招投标流程调用、项目启停、日志查看和公网隧道管理。复用各项目现有能力,在统一操作体验的同时保留独立业务边界。 AI 新闻自动推送: 构建 多源采集 → 规则初筛 → LLM 事件去重与解读 → 飞书/企微推送链路。规则负责日期和显性重复过滤,模型负责语义判断与重点提炼,并结合定时补跑和发送记录,让资讯获取从主动检索转为自动交付。 飞书双 AI 可视化配置: 对接外部 Lark 项目,将双 AI、主动插话、记忆、联网及访问权限等群级配置整合到管理面板,通过 配置快照、版本校验与连接测试,减少直接修改配置的操作成本与误覆盖风险。
Responsibilities
产品定位与交互设计: 围绕非技术用户使用 Hermes 的障碍,梳理配置、对话、自动化任务及异常排查流程,设计图形化操作入口、状态反馈与操作确认机制,将底层技术能力转化为可理解、可操作的产品功能。 桌面端与 Agent 运行时集成: 构建 React 页面、Electron IPC 接口和运行时适配链路,对接 Hermes 的会话、工具、技能及调度能力,衔接界面操作、后台执行和结果反馈。 3D 交互与状态联动: 实现 Agent Profile 到虚拟角色的映射、网关状态驱动的行为切换,以及角色选择、视角控制和聊天入口,兼顾场景表现与真实运行数据的关联。 跨项目接入与管理: 整合生图、招投标、飞书双 AI 等项目的业务调用和运维入口,统一命令目录、参数传递、执行状态及日志展示,避免各业务模块重复建设管理功能。 新闻工作流与异常处理: 开发新闻采集、模型编辑和双渠道推送链路,设计结构化输出、规则降级、后台长任务及漏推补跑机制,覆盖生成到交付过程中的主要异常场景。
Challenges and solutions
命令行能力如何转化为易用 GUI: 难点不仅是增加按钮,还要表达参数约束、执行阶段及操作后果。通过统一命令目录与类型化 IPC 接口描述参数、耗时类别和副作用,由表单收集输入、主进程调用适配层,再将开始、输出及完成事件反馈到界面;任务看板的拖拽也映射为 CLI 支持的合法动作,避免界面操作脱离底层执行规则。 跨 Windows、WSL 与外部服务的状态不一致: 单凭进程或端口存在,无法判断目标业务是否真正可用。通过 分运行环境适配、HTTP 健康探测及特定服务身份校验,区分进程存活、接口可访问与目标服务正确响应,并集中展示日志,为用户提供更明确的故障定位依据。 3D 动画与真实状态同步,同时避免画面重置: 将低频业务状态与逐帧动画分离:界面可见时每 4 秒读取 Profile 状态,仅在变化时更新 React 数据;动画使用 **useFrame + Ref**维护位置与姿态,刷新时保留已有角色状态,并通过门口路径点引导移动,减少反复渲染、角色瞬移和穿墙问题。