晴天
|
66375d2807
|
feat(hermes): add base model config
|
2026-05-26 05:25:30 +08:00 |
|
晴天
|
1e56a54aeb
|
feat(hermes): add display defaults config
|
2026-05-26 05:06:15 +08:00 |
|
晴天
|
fc8f209e01
|
feat(hermes): add display skin config
|
2026-05-26 04:55:29 +08:00 |
|
晴天
|
2a23b682be
|
feat(hermes): add agent quality config
|
2026-05-26 04:42:28 +08:00 |
|
晴天
|
a34d7befb6
|
feat(hermes): add model aliases config
|
2026-05-26 04:28:33 +08:00 |
|
晴天
|
59d7833203
|
feat(hermes): add shell hooks config
|
2026-05-26 04:04:22 +08:00 |
|
晴天
|
be7aca03fa
|
feat(hermes): add mcp servers config
|
2026-05-26 03:48:31 +08:00 |
|
晴天
|
b768a14942
|
feat(hermes): add provider timeout overrides config
|
2026-05-26 03:26:46 +08:00 |
|
晴天
|
ac2282591d
|
feat(hermes): add provider routing config
|
2026-05-26 03:00:31 +08:00 |
|
晴天
|
fb7ae3f15c
|
feat(hermes): add openrouter cache config
|
2026-05-26 02:36:37 +08:00 |
|
晴天
|
a52b70ade7
|
feat(hermes): add auxiliary model config
|
2026-05-26 02:18:03 +08:00 |
|
晴天
|
c5ed3ba5aa
|
feat(hermes): add platform toolsets config
|
2026-05-26 01:50:06 +08:00 |
|
晴天
|
30dd6cc2e2
|
feat(hermes): add stt config form
|
2026-05-26 01:29:32 +08:00 |
|
晴天
|
c41340a9e0
|
feat(hermes): add prompt caching settings
|
2026-05-25 07:07:47 +08:00 |
|
晴天
|
e091a975c0
|
feat(hermes): add display output controls
|
2026-05-25 04:09:55 +08:00 |
|
晴天
|
a22b5b503d
|
feat(hermes): add display run controls
|
2026-05-25 03:49:41 +08:00 |
|
晴天
|
054e45a8b3
|
feat(hermes): add logging settings
|
2026-05-25 03:29:56 +08:00 |
|
晴天
|
92d64efd8e
|
feat(hermes): add cron output settings
|
2026-05-25 03:01:14 +08:00 |
|
晴天
|
e74df5f288
|
feat(hermes): add approval safety settings
|
2026-05-25 02:26:50 +08:00 |
|
晴天
|
ae1208d856
|
feat(hermes): add checkpoint rollback settings
|
2026-05-25 02:00:24 +08:00 |
|
晴天
|
77cadf9e0a
|
feat(hermes): add agent runtime guard settings
|
2026-05-25 01:29:28 +08:00 |
|
晴天
|
4766a99d87
|
feat(hermes): add global toolset disable settings
|
2026-05-25 01:03:14 +08:00 |
|
晴天
|
8d5d21f908
|
feat(hermes): add browser tool settings
|
2026-05-25 00:27:06 +08:00 |
|
晴天
|
26d6ad18bc
|
feat(hermes): add privacy redaction setting
|
2026-05-24 23:54:46 +08:00 |
|
晴天
|
459811b188
|
feat(hermes): add input output safety settings
|
2026-05-24 23:33:03 +08:00 |
|
晴天
|
d245d2e320
|
feat(hermes): add display reliability settings
|
2026-05-24 23:03:41 +08:00 |
|
晴天
|
8c963cd3d4
|
feat(hermes): add human delay settings
|
2026-05-24 22:31:52 +08:00 |
|
晴天
|
b2146b54cb
|
feat(hermes): add tirith security settings
|
2026-05-24 22:08:12 +08:00 |
|
晴天
|
7be0ec66cc
|
feat(hermes): add unauthorized dm policy form
|
2026-05-24 21:41:17 +08:00 |
|
晴天
|
2de5d1e38a
|
feat(hermes): add quick commands config form
|
2026-05-24 21:21:16 +08:00 |
|
晴天
|
01f17f0a2a
|
feat(hermes): add skills config form
|
2026-05-24 20:54:29 +08:00 |
|
晴天
|
d9fc9a8783
|
feat(hermes): add memory flush setting
|
2026-05-24 20:34:12 +08:00 |
|
晴天
|
56e41dd512
|
feat(hermes): add terminal execution config form
|
2026-05-24 20:06:50 +08:00 |
|
晴天
|
122d7a63be
|
feat(hermes): add execution limits config form
|
2026-05-24 19:28:30 +08:00 |
|
晴天
|
c0b40070c0
|
feat(hermes): add channel display settings form
|
2026-05-24 18:42:34 +08:00 |
|
晴天
|
a1307716dd
|
feat(hermes): add streaming config form
|
2026-05-24 08:40:53 +08:00 |
|
晴天
|
1883e18f02
|
feat(hermes): add memory config form
|
2026-05-24 08:04:31 +08:00 |
|
晴天
|
18ca140af8
|
feat(hermes): add tool loop guardrails form
|
2026-05-24 07:38:42 +08:00 |
|
晴天
|
5dd6f1be40
|
feat(hermes): add compression config form
|
2026-05-24 07:16:00 +08:00 |
|
晴天
|
f500da39c1
|
feat(hermes): add session runtime config form
|
2026-05-24 06:49:17 +08:00 |
|
晴天
|
4c29ed68ab
|
fix(hermes): validate raw config saves
|
2026-05-24 06:10:07 +08:00 |
|
晴天
|
ff4da27eeb
|
feat(hermes): add bundled plugin channel configs
|
2026-05-24 05:12:17 +08:00 |
|
晴天
|
6c947a1fec
|
feat(hermes): support Discord plugin runtime config
|
2026-05-23 06:41:49 +08:00 |
|
晴天
|
d3d527ca34
|
feat(hermes): add dingtalk channel config
|
2026-05-23 03:48:33 +08:00 |
|
晴天
|
f7518ae4b3
|
fix(hermes): align channel secrets with runtime env
|
2026-05-23 02:49:31 +08:00 |
|
晴天
|
eccf91ed1e
|
feat(hermes): add channel configuration editor
|
2026-05-23 01:51:08 +08:00 |
|
晴天
|
0b4ef11971
|
fix(hermes): restore gateway message sending dependencies
Hermes Gateway 能启动但消息发送链路仍可能不可用:工具安装环境缺少运行时依赖,
同时自定义端点场景下 provider 字段可能被省略,导致消息路由继续落到错误 provider。
## 补齐运行时依赖
- uv tool install 固定带上 HTTP 客户端依赖
- 补齐 OpenAI SDK 依赖
- 补齐 Gateway HTTP server 所需 aiohttp
- 补齐 browser/dialog 等工具链会触发的 websocket 依赖
- 安装日志同步展示完整安装参数,便于用户排查环境问题
## 明确 custom provider
- 自定义 base_url 时显式写入 provider: custom
- 如果 model 段已有 provider,则覆盖为 custom
- 如果 model 段缺少 provider,则补写 provider: custom
- 继续保留 OPENAI_API_KEY alias 自愈,确保辅助客户端和主流程读取同一份凭证
## 范围
- 桌面 Tauri 安装与配置自愈逻辑
- Web dev API 安装与配置自愈逻辑
|
2026-05-15 17:32:56 +08:00 |
|
晴天
|
583f5401ac
|
fix(hermes): stabilize gateway provider routing and startup
Hermes Gateway 之前容易出现两类问题:配置里的 provider 与 base_url 不一致,
以及多个启动入口并发触发 Gateway start,导致日志里反复出现启动流程,运行状态也不稳定。
## Provider / base_url 自愈
- 归一化 provider URL(去掉尾斜杠和常见 API path 后缀)
- 当 openrouter provider 搭配自定义 base_url 时,自动切换为 custom provider
- 在读取配置、写入模型配置、启动 Gateway 前都执行一次自愈
- Web 模式同步实现相同逻辑,避免桌面端和浏览器端行为不一致
## API Key 别名兼容
- custom provider 优先读取 OPENAI_API_KEY
- 当 .env 只有 CUSTOM_API_KEY 时,自动补齐 OPENAI_API_KEY
- 避免辅助客户端读取不到凭证或落到错误 provider
## Gateway 启动互斥
- 增加 Gateway start guard,串行化启动流程
- 如果已有启动流程在进行中,直接复用健康检查结果
- 避免重复 Gateway 进程、重复日志和竞态状态覆盖
## 范围
- 桌面 Tauri 命令
- Web dev API 运行时
- Hermes provider 注册表
|
2026-05-15 17:32:38 +08:00 |
|
晴天
|
c264224e7c
|
fix(rust): 修 CI 失败的 4 个 clippy + fmt 问题
之前 3 个 commit (cc19a07/1873e23/d97e196/6a0d874/bf55ca0) 推上去后 CI
全部 fail(三平台都 fail),原因不是 JS 改动而是历史 Rust 代码累积的
clippy/fmt 检查问题,本次一次性修齐让 CI 重新跑通。
## 4 个 clippy errors(-D warnings 模式)
1. `field 'name' is never read` (HermesAttachment::name)
- 该字段是前端可选传入的附件原文件名,目前后端未消费
- 加 #[allow(dead_code)] + 说明性 doc,保留字段供后续展开附件清单 UI
2. `unnecessary closure used to substitute value for Result::Err` × 2
- hermes_dashboard_api_proxy 里
`unwrap_or_else(|_| Value::String(body))` →
`unwrap_or(Value::String(body))`
- 闭包捕获 _ 但不用,直接用 unwrap_or
3. `manually reimplementing div_ceil`
- base64_encode 里 `(bytes.len() + 2) / 3` →
`bytes.len().div_ceil(3)`(标准库 1.73+ 支持)
## fmt 修复
hermes.rs 多处长 match arm + long argument list 不符合 rustfmt 默认风格,
跑 cargo fmt --all 自动修齐。
## 验证
✓ cargo fmt --all -- --check PASS
✓ cargo check PASS
✓ cargo clippy --all-targets -- -D warnings PASS(无 warning 无 error)
## 影响
- 不改变任何运行时行为
- 不影响前端 / 不影响 i18n / 不影响 Tauri 命令签名
- 纯代码风格 + lint 修复
|
2026-05-14 06:54:13 +08:00 |
|
晴天
|
129d8c0ac1
|
feat(hermes): Batch 3 §L - 文件管理器(限定在 ~/.hermes 子树内)
校对:Hermes 没有 file HTTP API,必须自建。
## Rust 后端:3 个安全 fs 命令(~180 行)
### 安全策略
- 所有路径必须在 hermes_home() 子树内(防 path traversal)
- canonicalize 后用 starts_with 验证
- 拒绝绝对路径跳出 + .. 跳出
- 5 MB 文件大小上限
- 单次列目录最多 2000 条
### 命令
- hermes_fs_list(path) → { path, entries: [{name, kind, size, modified}] }
· 隐藏文件默认不显示(.env 除外)
· 排序:目录在前,文件在后,按名字
- hermes_fs_read(path) → { path, size, text?, binary_b64? }
· UTF-8 文本 → text
· 二进制 → 内置 base64 编码(不引新依赖)
- hermes_fs_write(path, content) → { path, size }
· 父目录必须存在
· 5 MB 上限
## 前端 /h/files 页面(~270 行)
### UI 布局
- 左侧:面包屑 + 目录树(点目录进入 / 点文件选中)
- 右侧:编辑器(文本)/ 预览(图片)/ 元信息(其他二进制)
### 文件树
- 文件图标按扩展名(📁/🔗/🖼️/📝/⚙️/📄)
- 文件大小显示(B/KB/MB)
- ".." 返回上级
- 选中态高亮
### 编辑器
- textarea 编辑,monospace 字体
- "保存 *" 状态标记 dirty
- 切目录/文件前 showConfirm 「丢弃未保存修改?」
- 保存成功 toast
### 二进制预览
- 图片 (png/jpg/gif/webp/svg) → 用 data: URL 显示
- 其他 → 「二进制文件(不可编辑)」+ 文件大小
## sidebar
- 「管理」section 加文件管理器入口(folder icon)
- /h/files 路由注册(含意外的 routes 顺序修复)
### dev-api.js
- Web 模式走 Node fs.readdirSync/readFileSync/writeFileSync
- 同样的安全策略:根目录 hermes_home() = process.env.HERMES_HOME 或 ~/.hermes
- realpath 验证 + 5 MB 限制
### CSS(~165 行)
- .hm-files-layout: grid 双栏(响应式 → 单栏)
- .hm-files-tree: 左侧树,breadcrumb + entry 列表
- .hm-files-pane: 右侧编辑器/预览
- .hm-files-editor: 全宽 textarea,monospace
- 响应式:768px 以下单栏
### i18n
- 12 个新键 × 3 语言(hermesFiles*)
## 修复
- src/engines/hermes/index.js 末尾多余 `}` 删除(之前 edit 留下)
## 累计
- Rust ~180 行 + 前端 ~270 行 + CSS ~165 行 + dev-api ~55 行
- 12 个 i18n × 3 语言
- cargo check ✓ + npm build ✓
|
2026-05-14 05:36:50 +08:00 |
|