From 0ec86e845e31808d6a235a41441c56bf3d284bb1 Mon Sep 17 00:00:00 2001 From: kang Date: Mon, 11 May 2026 17:39:04 +0800 Subject: [PATCH] auto-save 2026-05-11 17:39 (~4) --- .memory/worklog.json | 26 ++-- src/app.js | 13 +- src/index.html | 287 ++++++++++++++++++++++++------------------- src/styles.css | 54 ++++++++ 4 files changed, 239 insertions(+), 141 deletions(-) diff --git a/.memory/worklog.json b/.memory/worklog.json index 7fa2b15..29edafa 100644 --- a/.memory/worklog.json +++ b/.memory/worklog.json @@ -1,18 +1,5 @@ { "entries": [ - { - "files_changed": 1, - "hash": "8a6ae80", - "message": "auto-save 2026-05-10 08:50 (~1)", - "ts": "2026-05-10T08:50:53+08:00", - "type": "commit" - }, - { - "files_changed": 1, - "message": "Codex 会话活跃 · 最近命令:codex · 分支 master · 1 项未提交变更 · 最近提交:auto-save 2026-05-10 08:50 (~1)", - "ts": "2026-05-10T00:56:24Z", - "type": "session-heartbeat" - }, { "files_changed": 1, "hash": "6f92814", @@ -3265,6 +3252,19 @@ "message": "auto-save 2026-05-11 17:27 (~4)", "hash": "c4716b8", "files_changed": 4 + }, + { + "ts": "2026-05-11T17:33:29+08:00", + "type": "commit", + "message": "auto-save 2026-05-11 17:33 (~1)", + "hash": "5b3c07c", + "files_changed": 1 + }, + { + "ts": "2026-05-11T09:36:29Z", + "type": "session-heartbeat", + "message": "Codex 会话活跃 · 最近命令:codex · 分支 master · 3 项未提交变更 · 最近提交:auto-save 2026-05-11 17:33 (~1)", + "files_changed": 3 } ] } diff --git a/src/app.js b/src/app.js index 09a5048..1295800 100644 --- a/src/app.js +++ b/src/app.js @@ -644,16 +644,21 @@ function switchTab(name, options = {}) { } if (name === "cron") refreshCron(); if (name === "memory") refreshMemory(); - if (name === "tools") refreshTools(); - if (name === "integrations") refreshFeishuApps(); - if (name === "settings") { - renderWeeklyReports(); + if (name === "models") { renderModelProfiles(); refreshUiConfig().catch((error) => { setSharedConfigStatus("共享配置读取失败: " + (error.message || error), true); }); refreshHermesConfig(); } + if (name === "tools") { + refreshTools(); + refreshHermesConfig(); + } + if (name === "integrations") refreshFeishuApps(); + if (name === "settings") { + renderWeeklyReports(); + } if (name === "runs") setTimeout(() => document.getElementById("runPrompt")?.focus(), 50); if (name === "dashboard" && _dashboardDirty) { // 推迟到下一帧,避免阻塞切换动画 diff --git a/src/index.html b/src/index.html index 4909b45..b7ce41e 100644 --- a/src/index.html +++ b/src/index.html @@ -11,7 +11,7 @@ 爱马仕 · AI - + @@ -62,6 +62,10 @@ Agent + + + + + +
+
+
+
+ +
+
+
运行模型
+
线上 Hermes agent 当前默认调用的模型接入配置
+
+
+
+
+
+ + +
+
+ + +
+
+ + +
+
+
+
+ + +
真实 Key 仍只放在服务器环境变量;这里不保存、不回显密钥。
+
+
+
+ + +
打开模型页后自动读取。
+
+
+
+ +
+
+
+ +
+
+
模型 Profiles
+
给不同 Agent 绑定不同模型、Provider、Base URL 和服务器端 Key 引用
+
+
+
+
+
+
+
已配置 Profiles
+
用于给不同智能体绑定不同模型接入信息。
+
+ +
+
+
正在读取服务器共享配置...
+
+
+
新增模型 Profile
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
只填服务器环境变量名;前端不保存真实 Key。Agent 使用该 Profile 时会由桥接服务代理请求。
+
+
+ + +
+
+
+ + +
共享配置会保存到服务器,供同事端同步。
+
+
+
+
+
+
+ +
@@ -657,7 +785,39 @@
-
加载中…
+
+
加载中…
+ +
+
+
+ +
+
+
MCP 工具接入
+
外部工具、知识库和服务调用配置
+
+
+
+
+ + +
留空会移除 mcp_servers;保存只改工具接入,不要求同时填写模型配置。
+
+
+ + +
打开工具页后自动读取。
+
+
+
+
@@ -1199,127 +1359,6 @@ git push # Gitea kangwan/hermes-glass-ui-personal - -
-
-
- -
-
-
AI 模型接入
-
AI 模型 Profiles 与线上 Hermes agent 默认运行模型
-
-
-
-
-
- - -
-
- - -
-
- - -
-
-
-
- - -
-
-
- - -
打开设置页后自动读取。
-
-
-
-
-
模型 Profiles
-
用于给不同智能体绑定不同模型接入信息。
-
- -
-
-
正在读取服务器共享配置...
-
-
-
新增模型 Profile
-
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
只填服务器环境变量名;前端不保存真实 Key。Agent 使用该 Profile 时会由桥接服务代理请求。
-
-
- - -
-
-
- - -
共享配置会保存到服务器,供同事端同步。
-
-
-
-
-
- - -
-
-
- -
-
-
MCP 工具接入
-
外部工具、知识库和服务调用配置
-
-
-
-
- - -
留空会移除 mcp_servers;保存只改工具接入,不再要求同时填写模型配置。
-
-
- - -
打开设置页后自动读取。
-
-
-
-
@@ -1462,6 +1501,6 @@ git push # Gitea kangwan/hermes-glass-ui-personal
- + diff --git a/src/styles.css b/src/styles.css index af7bd2f..d272ce2 100644 --- a/src/styles.css +++ b/src/styles.css @@ -3558,8 +3558,37 @@ a { color: var(--orange-3); text-decoration: none; } } /* ========== Tools ========== */ +.models-scroll { + grid-template-columns: 1fr; +} + +#tab-models, +#tab-tools { + overflow: hidden; +} + +#tab-models .settings-subpanel { + border: 0; + border-radius: 0; + background: transparent; + padding: 0; +} + +.tools-scroll { + flex: 1 1 auto; + min-height: 0; + overflow-y: auto; + overflow-x: hidden; + padding-right: 6px; + display: grid; + grid-template-columns: minmax(0, 1.15fr) minmax(360px, 0.85fr); + align-items: start; + gap: 16px; +} + .tools-grid { flex: 1 1 auto; + min-height: 0; overflow-y: auto; padding-right: 6px; display: grid; @@ -3567,6 +3596,31 @@ a { color: var(--orange-3); text-decoration: none; } gap: 10px; align-content: start; } + +.tools-scroll .tools-grid { + overflow: visible; + padding-right: 0; +} + +.tools-mcp-group { + grid-column: auto; + position: sticky; + top: 0; +} + +.tools-mcp-group .settings-field textarea { + min-height: min(360px, 42vh); +} + +@media (max-width: 1180px) { + .tools-scroll { + grid-template-columns: 1fr; + } + .tools-mcp-group { + position: static; + } +} + .tool-chip { padding: 14px 16px; background: var(--card-bg);