docs: remove OpenClaw/Hermes analysis docs
This commit is contained in:
@@ -1,270 +0,0 @@
|
||||
# Hermes Agent 深度研究 — Metona 可借鉴方案
|
||||
|
||||
> 基于 2026-04-18 对 [NousResearch/hermes-agent](https://github.com/NousResearch/hermes-agent) 源码和文档的深度研究。
|
||||
> 定位:与 `OPENCLAW-HERMES-ANALYSIS.md` 互补,侧重**实现细节和可落地方案**。
|
||||
|
||||
---
|
||||
|
||||
## 一、Hermes 核心架构一览
|
||||
|
||||
```
|
||||
语言:Python(~40K 行代码)
|
||||
核心文件:
|
||||
run_agent.py — AIAgent 类(~10,700 行),Agent Loop 引擎
|
||||
cli.py — TUI 终端界面(~10,000 行)
|
||||
model_tools.py — 工具发现、Schema 收集、调度
|
||||
tools/registry.py — 中央工具注册表(47 个工具,19 个 toolset)
|
||||
hermes_state.py — SQLite 状态数据库(FTS5)
|
||||
prompt_builder.py — System Prompt 组装
|
||||
context_compressor.py — 上下文压缩
|
||||
```
|
||||
|
||||
### 关键设计原则
|
||||
|
||||
| 原则 | 实践 |
|
||||
|------|------|
|
||||
| Prompt 稳定性 | System prompt 在对话中不变化,保护 LLM prefix cache |
|
||||
| 可观测执行 | 每个工具调用通过 callback 通知用户 |
|
||||
| 可中断 | API 调用和工具执行可被用户输入中断 |
|
||||
| 平台无关核心 | 一个 AIAgent 类服务 CLI/Gateway/ACP/Batch/API |
|
||||
| 松耦合 | MCP/插件/记忆提供者使用 registry 模式 + check_fn |
|
||||
| Profile 隔离 | 每个 profile 独立 HERMES_HOME、配置、记忆、会话 |
|
||||
|
||||
---
|
||||
|
||||
## 二、Agent Loop 对比
|
||||
|
||||
### Hermes 的 Agent Loop
|
||||
|
||||
```
|
||||
用户输入 → build_system_prompt() → resolve provider → API 调用
|
||||
→ 有 tool_calls?→ 并行执行(ThreadPoolExecutor)→ 循环
|
||||
→ 无 tool_calls?→ 持久化 → 返回
|
||||
```
|
||||
|
||||
**关键差异:**
|
||||
|
||||
| 维度 | Hermes | Metona |
|
||||
|------|--------|--------|
|
||||
| API 模式 | 3 种(chat_completions / codex_responses / anthropic_messages) | 1 种(Ollama chat) |
|
||||
| 工具执行 | 单工具主线程,多工具 ThreadPoolExecutor 并行 | 同一批次 Promise.all 并行 |
|
||||
| 中断机制 | 后景线程 + interrupt event | AbortController |
|
||||
| 迭代预算 | 90 轮(可配置) | ✅ 默认 85 轮,设置面板可配(v5.1.1) |
|
||||
| 上下文压缩 | context_compressor.py 摘要中间轮次 | context-manager.ts 滑动窗口 |
|
||||
| Prompt 缓存 | Anthropic prompt caching 支持 | 无 |
|
||||
| 消息交替 | 严格 user→assistant 交替 | Ollama 自动处理 |
|
||||
| 回调系统 | 8 种 callback(progress/thinking/reasoning/clarify/step/stream/status) | 5 种 callback |
|
||||
|
||||
### Metona 可借鉴
|
||||
|
||||
1. **迭代预算可配置化**:从硬编码 15 轮改为 `state.get('maxTurns', 15)`
|
||||
2. **工具执行分单/并行逻辑优化**:单工具直接执行,多工具并行(Hermes 的 ThreadPoolExecutor 思路)
|
||||
3. **上下文压缩**:当 context 超过 50% 时自动摘要中间轮次,而非简单滑动窗口
|
||||
|
||||
---
|
||||
|
||||
## 三、工具系统对比
|
||||
|
||||
### Hermes 的 Tool Registry
|
||||
|
||||
```python
|
||||
# tools/registry.py — 中央注册表
|
||||
class ToolRegistry:
|
||||
def register(self, name, toolset, schema, handler, check_fn, ...):
|
||||
# 每个 tool 文件在 import 时自动注册
|
||||
# 防止 shadowing(MCP 不能覆盖内置工具)
|
||||
|
||||
def discover_builtin_tools(self):
|
||||
# AST 扫描 tools/*.py,找到 registry.register() 调用的文件自动 import
|
||||
```
|
||||
|
||||
**关键差异:**
|
||||
|
||||
| 维度 | Hermes | Metona |
|
||||
|------|--------|------|
|
||||
| 注册方式 | 每个文件 import 时自动 register() | 集中式 getToolDefinitions() |
|
||||
| 工具数量 | 47 个 + 19 个 toolset | 38 个内置 + MCP 动态注册 |
|
||||
| Toolset | 工具分组,可按组启用/禁用 | 无分组,全部启用 |
|
||||
| Shadowing 防护 | MCP 不能覆盖内置工具 | ✅ 已实现(v5.1.2) |
|
||||
| 工具发现 | AST 扫描自动发现 | 手动导入 |
|
||||
| 结果截断 | max_result_size_chars 每工具可配 | ✅ 按工具独立配置(v5.1.0) |
|
||||
| 安全审批 | tools/approval.py 危险命令检测 + 用户确认 | tool-security.ts 路径/命令检查 |
|
||||
|
||||
### Metona 可借鉴
|
||||
|
||||
1. ✅ **结果截断按工具配置**:不同工具设置不同的 max_result_size_chars(v5.1.0 已实现)
|
||||
2. ✅ **Shadowing 防护**:MCP 工具注册时检查是否与内置工具重名(v5.1.2 已实现)
|
||||
3. ❌ **Toolset 分组**:将 38 个工具分为文件系统/系统网络/记忆会话/浏览器/MCP 等组,用户可按组启用/禁用
|
||||
|
||||
---
|
||||
|
||||
## 四、记忆系统对比
|
||||
|
||||
### Hermes 的记忆
|
||||
|
||||
| 维度 | Hermes | Metona |
|
||||
|------|--------|--------|
|
||||
| 存储方式 | 2 个 Markdown 文件(MEMORY.md + USER.md) | SQLite(memories 表 + FTS5) |
|
||||
| 容量限制 | MEMORY.md 2200 字符,USER.md 1375 字符 | ✅ 上限 500 条,超限自动清理(v5.1.2) |
|
||||
| 注入方式 | 会话开始时冻结快照注入 system prompt | 每次用户消息时检索注入 |
|
||||
| 管理方式 | Agent 通过 memory tool 自主管理 | Agent 通过 memory_search/memory_add 工具 |
|
||||
| 操作 | add / replace / remove(子串匹配) | ✅ search / add / replace / remove(v5.1.0) |
|
||||
| 会话搜索 | session_search(FTS5 + Gemini 摘要) | session_read(原始内容) |
|
||||
| 外部提供者 | 8 个插件(Honcho / Mem0 / OpenViking 等) | 无 |
|
||||
| 安全扫描 | 注入检测 + 凭证外泄检测 | ✅ prompt injection / 敏感信息 / 不可见字符检测(v5.1.0) |
|
||||
|
||||
### Metona 可借鉴
|
||||
|
||||
1. ✅ **记忆容量限制**:上限 500 条,超限自动清理低价值条目(v5.1.2 已实现)
|
||||
2. ✅ **replace/remove 操作**:记忆工具支持修改和删除(v5.1.0 已实现)
|
||||
3. ✅ **安全扫描**:记忆条目写入前检查 prompt injection / 凭证外泄模式(v5.1.0 已实现)
|
||||
4. ❌ **冻结快照模式**:会话开始时一次性注入记忆,不随对话变化(保护 LLM cache)
|
||||
5. ❌ **记忆区分层**:MEMORY.md(环境/工作流)vs USER.md(用户画像)清晰分离
|
||||
|
||||
---
|
||||
|
||||
## 五、Skill 系统对比
|
||||
|
||||
### Hermes 的 Skill
|
||||
|
||||
| 维度 | Hermes | Metona |
|
||||
|------|--------|------|
|
||||
| 格式 | SKILL.md(Markdown 文件,YAML frontmatter) | SQLite skills 表 |
|
||||
| 加载方式 | 渐进式披露(Level 0→1→2) | 匹配后全文注入 |
|
||||
| 触发条件 | `/<skill-name>` 斜杠命令 + 自然对话 | 自动匹配关键词 |
|
||||
| 创建时机 | 5+ 工具调用的复杂任务完成后 | 2+ 工具调用后 |
|
||||
| 更新方式 | create / patch / edit / delete | 仅 create |
|
||||
| 条件激活 | fallback_for_toolsets / requires_toolsets | 无 |
|
||||
| Skill Hub | 在线注册表浏览/安装 | 无 |
|
||||
| agentskills.io 兼容 | ✅ 开放标准 | ❌ |
|
||||
|
||||
### Metona 可借鉴
|
||||
|
||||
1. **渐进式加载**:先返回技能名称+描述(~3K tokens),Agent 需要时再加载全文
|
||||
2. **patch 更新**:Agent 可以用 old_string/new_string 局部修改技能,而非全文替换
|
||||
3. **条件激活**:某些技能只在特定工具不可用时才显示(fallback 机制)
|
||||
4. **SKILL.md 格式标准化**:采用 YAML frontmatter + 结构化正文(When to Use / Procedure / Pitfalls / Verification)
|
||||
|
||||
---
|
||||
|
||||
## 六、Prompt 组装对比
|
||||
|
||||
### Hermes 的 Prompt Builder
|
||||
|
||||
```
|
||||
prompt_builder.py 组装顺序:
|
||||
1. Personality(SOUL.md)
|
||||
2. Memory(MEMORY.md + USER.md 冻结快照)
|
||||
3. Skills(渐进式索引)
|
||||
4. Context Files(AGENTS.md, .hermes.md)
|
||||
5. Tool-use guidance
|
||||
6. Model-specific instructions
|
||||
7. Ephemeral layers(budget warnings, context pressure)
|
||||
```
|
||||
|
||||
**关键差异:**
|
||||
|
||||
| 维度 | Hermes | Metona |
|
||||
|------|--------|------|
|
||||
| 组装来源 | 6 层 + 2 个临时层 | 4 层(记忆+工作空间+Agent提示+人格) |
|
||||
| 缓存保护 | Prompt 稳定性原则,不随对话变化 | 每次消息重新组装 |
|
||||
| 预算警告 | 迭代接近上限时注入警告层 | 无 |
|
||||
| 上下文压力 | context 超 50% 时注入压缩提示 | 无 |
|
||||
|
||||
### Metona 可借鉴
|
||||
|
||||
1. **临时层机制**:在 system prompt 末尾追加临时提示(预算警告、上下文压力),不影响基础 prompt 稳定性
|
||||
2. **模型特定指令**:根据模型能力(tools/thinking/vision)动态调整 prompt 内容
|
||||
|
||||
---
|
||||
|
||||
## 七、上下文管理对比
|
||||
|
||||
### Hermes 的 Context Compression
|
||||
|
||||
```python
|
||||
# context_compressor.py
|
||||
# 当对话超过 context window 的 50% 时:
|
||||
# 1. 保留首尾各 2-3 条消息
|
||||
# 2. 中间消息用 LLM 摘要为 1-2 条 system 消息
|
||||
# 3. 摘要后的消息标记为 compressed
|
||||
# 4. 新消息基于压缩后的历史继续
|
||||
```
|
||||
|
||||
| 维度 | Hermes | Metona |
|
||||
|------|--------|--------|
|
||||
| 压缩触发 | context > 50% | 无自动压缩 |
|
||||
| 压缩方式 | LLM 摘要中间轮次 | 滑动窗口截断 |
|
||||
| Session 谱系 | 压缩后创建子 session,保留 parent_id | 无谱系跟踪 |
|
||||
| Token 估算 | model_metadata.py 按模型配置 | 粗略估算(中 1.5字/token,英 4字符/token) |
|
||||
|
||||
### Metona 可借鉴
|
||||
|
||||
1. **LLM 摘要压缩**:context 超过阈值时,用 LLM 摘要中间轮次而非简单截断
|
||||
2. **Session 谱系**:压缩后创建新 session 并保留 parent_id,支持回溯
|
||||
3. **Token 估算精确化**:按模型配置 token 估算参数
|
||||
|
||||
---
|
||||
|
||||
## 八、可落地的改进清单
|
||||
|
||||
按优先级排序,基于 Metona 现状和投入产出比:
|
||||
|
||||
### P0 — 已实施
|
||||
|
||||
| 改进 | 来源 | 复杂度 | 改动文件 | 状态 |
|
||||
|------|------|--------|----------|------|
|
||||
| 迭代预算可配置 | Hermes Agent Loop | 低 | agent-engine.ts | ✅ v5.1.1(默认 85 轮,设置面板可配) |
|
||||
| 记忆 replace/remove 操作 | Hermes Memory | 中 | memory-manager.ts + tool-registry.ts | ✅ v5.1.0 |
|
||||
| 记忆安全扫描 | Hermes Memory | 低 | memory-manager.ts | ✅ v5.1.0 |
|
||||
| 工具结果截断按工具配置 | Hermes Tool Registry | 低 | tool-registry.ts | ✅ v5.1.0 |
|
||||
|
||||
### P1 — 近期实施
|
||||
|
||||
| 改进 | 来源 | 复杂度 | 改动文件 | 状态 |
|
||||
|------|------|--------|----------|------|
|
||||
| Skill 渐进式加载 | Hermes Skills | 中 | skill-manager.ts + agent-engine.ts | ❌ 当前 Level 0,全文注入 |
|
||||
| Skill patch 更新 | Hermes Skills | 中 | skill-manager.ts + tool-registry.ts | ❌ 仅 create |
|
||||
| Toolset 分组管理 | Hermes Toolset | 中 | tool-registry.ts + settings-modal.ts | ❌ 未实现 |
|
||||
| LLM 摘要压缩 | Hermes Context | 高 | context-manager.ts + agent-engine.ts | ❌ 未实现(仍用滑动窗口) |
|
||||
|
||||
### P2 — 中期规划
|
||||
|
||||
| 改进 | 来源 | 复杂度 | 状态 |
|
||||
|------|------|--------|------|
|
||||
| Skill 条件激活 | Hermes Skills | 中 | ❌ 未实现 |
|
||||
| Session 谱系跟踪 | Hermes Session | 中 | ❌ 未实现 |
|
||||
| 预算警告临时层 | Hermes Prompt | 低 | ✅ v5.1.2(≤5 轮 warning,≤2 轮 critical) |
|
||||
| Shadowing 防护 | Hermes Registry | 低 | ✅ v5.1.2(MCP 工具注册时自动检测重名) |
|
||||
|
||||
---
|
||||
|
||||
## 九、Hermes vs Metona 定位总结
|
||||
|
||||
```
|
||||
Hermes = 云端 Python Agent(CLI + Gateway + 多平台)
|
||||
✅ 技能生态成熟(agentskills.io 开放标准)
|
||||
✅ 记忆系统精巧(容量限制 + 冻结快照)
|
||||
✅ 工具注册表自动发现
|
||||
❌ 非桌面原生体验
|
||||
❌ 需要 Python 环境
|
||||
|
||||
Metona = 本地 Electron 桌面 Agent
|
||||
✅ 零配置启动,全离线
|
||||
✅ 系统托盘 + 原生文件对话框
|
||||
✅ 工作空间面板(终端 + 文件浏览器)
|
||||
✅ 暖色调 UI
|
||||
✅ MCP 协议支持(v5.0.0)
|
||||
✅ 技能自动生成(v5.1.0)
|
||||
✅ 记忆容量管理 + 安全扫描(v5.1.0 / v5.1.2)
|
||||
❌ 技能渐进式加载(Level 0,全文注入)
|
||||
❌ 上下文管理粗糙(滑动窗口,无 LLM 压缩)
|
||||
|
||||
互补方向:
|
||||
Metona 吸收 Hermes 的学习进化能力
|
||||
Hermes 不具备 Metona 的桌面原生体验
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
*最后更新:2026-04-19(根据 v5.1.3 实际代码更新实施状态)*
|
||||
@@ -1,317 +0,0 @@
|
||||
# OpenClaw & Hermes Agent 对比分析 — Metona 改进路线图
|
||||
|
||||
> 基于 2026 年 4 月对 OpenClaw 和 Hermes Agent 两个开源 AI Agent 项目的深度研究,
|
||||
> 梳理 Metona Ollama Desktop 可吸收和改进的功能点。
|
||||
|
||||
---
|
||||
|
||||
## 一、项目概览
|
||||
|
||||
### OpenClaw(原 Clawdbot)
|
||||
|
||||
- **定位**:个人 AI 助手运行平台(Gateway 中心化架构)
|
||||
- **核心哲学**:编排 + 生态 — 你配置模型、工具、通道,网关负责路由
|
||||
- **GitHub Stars**:6 万+(2026 年初现象级项目)
|
||||
- **特点**:技能市场成熟、多通道接入、团队协作友好、生态丰富
|
||||
|
||||
### Hermes Agent(Nous Research)
|
||||
|
||||
- **定位**:自进化 AI 智能体(Learning Agent 架构)
|
||||
- **核心哲学**:学习循环 — Agent 从经验中积累技能,越用越强
|
||||
- **GitHub Stars**:6.4 万+(2026 年 2-4 月爆火)
|
||||
- **特点**:技能自动生成、分层记忆、执行轨迹反哺、多实例隔离
|
||||
|
||||
### Metona Ollama Desktop
|
||||
|
||||
- **定位**:本地 Ollama 桌面 AI Agent 客户端(Electron + TypeScript)
|
||||
- **核心哲学**:原生桌面体验 — 零配置、全离线、系统级集成
|
||||
- **差异化优势**:系统托盘、原生文件对话框、工作空间面板、暖色调 UI
|
||||
|
||||
### 架构对比
|
||||
|
||||
```
|
||||
OpenClaw: Gateway 中心化 → 路由/编排/生态 → 偏「平台」
|
||||
Hermes: 学习循环核心 → 记忆/技能/进化 → 偏「个体智能体」
|
||||
Metona: Electron 桌面 → 工具调用/UI → 偏「客户端」
|
||||
|
||||
Metona 进化方向:
|
||||
当前 = 工具调用客户端
|
||||
目标 = 会学习的桌面 Agent(吸收 Hermes 的学习能力 + OpenClaw 的工程化能力)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 二、从 Hermes Agent 吸收
|
||||
|
||||
### 1. 技能自动生成(Skill Learning Loop) ✅ 已实现 v5.1.0
|
||||
|
||||
**Hermes 做法**
|
||||
|
||||
完成复杂任务后自动将执行轨迹抽取为结构化 Skill,包含:
|
||||
- 任务分解步骤
|
||||
- 关键判断节点
|
||||
- 潜在陷阱
|
||||
- 验证方式
|
||||
|
||||
下次遇到类似任务时直接复用已有技能,跳过重新推理。多次使用中持续优化技能实现。
|
||||
|
||||
**Metona 现状** ✅ 已实现
|
||||
|
||||
`skills` 表 + `skill-manager.ts` 自动提取 + `skill_list` / `skill_view` 工具(Level 0 渐进式)。
|
||||
Agent Loop 结束后从 traces 提取成功工具链,下次自动匹配复用。
|
||||
|
||||
### 2. 分层记忆 + 用户画像模型 ✅ 已实现 v5.0.0
|
||||
|
||||
**Hermes 做法**
|
||||
|
||||
- `memory.md`:事实卡片(技术栈、项目上下文、常用工具)
|
||||
- `user.md`:用户画像(角色、领域经验、编码风格、偏好)
|
||||
- 构建一个「关于用户的深层模型」,跨会话持续积累
|
||||
|
||||
**Metona 现状** ✅ 已实现
|
||||
|
||||
- fact/preference/rule 三类记忆 + FTS5 搜索 + 向量语义搜索
|
||||
- 用户画像自动推断:检测 14 种技术栈,自动注入 system prompt
|
||||
- `memory_replace` / `memory_remove` 支持修改和删除(v5.1.0)
|
||||
- 记忆写入前安全扫描(prompt injection / 敏感信息检测)(v5.1.0)
|
||||
- 记忆容量管理:上限 500 条,超限自动清理低价值条目(v5.1.2)
|
||||
- 记忆过期衰减:90 天未使用自动降低 importance(v5.1.3)
|
||||
|
||||
### 3. 执行轨迹导出 → 自训练数据 🔵 P3(未实现)
|
||||
|
||||
**Hermes 做法**
|
||||
|
||||
将工具调用轨迹导出为训练数据,可用于后续模型微调。Agent 不仅在「用模型」,也在不断生产可以反哺模型的训练数据。
|
||||
|
||||
**Metona 现状**
|
||||
|
||||
`traces` 表已记录每步 Thought → Action → Observation,但没有导出功能。
|
||||
|
||||
**改进方案**
|
||||
|
||||
1. 新增「导出训练数据」功能
|
||||
2. 将 traces 转换为 SFT 格式:
|
||||
```json
|
||||
{
|
||||
"instruction": "帮我查询项目中所有 TypeScript 文件",
|
||||
"input": "",
|
||||
"output": "我来帮你搜索...",
|
||||
"tool_calls": [
|
||||
{"name": "search_files", "arguments": {"path": ".", "query": "*.ts"}}
|
||||
],
|
||||
"observations": ["找到 42 个文件..."],
|
||||
"final_answer": "项目中有 42 个 TypeScript 文件..."
|
||||
}
|
||||
```
|
||||
3. 设置中新增「允许导出训练数据」开关
|
||||
4. 导出格式支持 JSON / JSONL
|
||||
|
||||
---
|
||||
|
||||
## 三、从 OpenClaw 吸收
|
||||
|
||||
### 4. Heartbeat 主动检查机制 ✅ 已实现 v5.0.0
|
||||
|
||||
**OpenClaw 做法**
|
||||
|
||||
Agent 定期(默认 30 分钟)主动检查邮箱、日历、通知等,有事才通知用户,没事保持安静(`HEARTBEAT_OK`)。支持在 `HEARTBEAT.md` 中配置检查项。
|
||||
|
||||
**Metona 现状** ✅ 已实现
|
||||
|
||||
后台 heartbeat 定时器,检查 Ollama 连接状态等,通过 Electron Notification API 推送通知。
|
||||
|
||||
### 5. Cron 定时任务 ✅ 已实现 v5.0.0
|
||||
|
||||
**OpenClaw 做法**
|
||||
|
||||
支持 `at`(一次性)和 `cron`(周期性)两种调度,systemEvent(注入文本)和 agentTurn(隔离执行)两种任务类型。
|
||||
|
||||
**Metona 现状** ✅ 已实现
|
||||
|
||||
`cron-manager.ts` 已集成,支持一次性 / 周期性任务调度,任务结果显示在聊天区域。
|
||||
|
||||
### 6. MCP(Model Context Protocol)生态对接 ✅ 已实现 v5.0.0
|
||||
|
||||
**OpenClaw + Hermes**
|
||||
|
||||
均支持 MCP 协议,可连接外部工具和 IDE(Cursor、VS Code、Claude Desktop)。工具从硬编码 → 动态发现。
|
||||
|
||||
**Metona 现状** ✅ 已实现
|
||||
|
||||
- `mcp-manager.ts`(主进程)+ `mcp-client.ts`(渲染进程)
|
||||
- JSON-RPC 2.0 over stdio 通信
|
||||
- 7 个 IPC 通道(startServer / stopServer / stopAll / callTool / getTools / getStatuses / refreshTools)
|
||||
- Shadowing 防护:MCP 工具注册时自动检测与内置工具重名(v5.1.2)
|
||||
- 设置面板管理:添加 / 启用 / 禁用 / 删除
|
||||
|
||||
### 7. 浏览器控制(Browser Automation) ✅ 已实现 v5.0.0
|
||||
|
||||
**OpenClaw**
|
||||
|
||||
内置 Playwright 浏览器自动化,支持截图、表单填写、页面交互。
|
||||
|
||||
**Metona 现状** ✅ 已实现
|
||||
|
||||
`browser.ts`(主进程)提供 8 个浏览器工具:browser_open / browser_screenshot / browser_evaluate / browser_extract / browser_click / browser_type / browser_scroll / browser_close。
|
||||
|
||||
### 8. 子代理委派(Sub-Agent Delegation) ✅ 已实现 v5.0.0
|
||||
|
||||
**OpenClaw**
|
||||
|
||||
`sessions_spawn` 生成独立子会话,支持 `run`(一次性)和 `session`(持久化)两种模式。
|
||||
|
||||
**Metona 现状** ✅ 已实现
|
||||
|
||||
`sub-agent.ts` + `spawn_task` 工具,主 Agent 可委派独立子任务执行。
|
||||
|
||||
---
|
||||
|
||||
## 四、从两者共同吸收(通用最佳实践)
|
||||
|
||||
### 9. 会话管理增强 ✅ 部分实现 v5.0.0
|
||||
|
||||
| 功能 | OpenClaw | Hermes | Metona 现状 |
|
||||
|------|----------|--------|------------|
|
||||
| `/new` `/reset` | ✅ | ✅ | ✅ 已有 |
|
||||
| `/retry` 重试 | ✅ | ✅ | ✅ 已实现 |
|
||||
| `/undo` 撤销 | ✅ | ✅ | ✅ 已实现 |
|
||||
| `/compress` 压缩 | ✅ | ✅ | ❌ 未实现(上下文压缩) |
|
||||
| `/usage` 统计 | ✅ | ✅ | ⚠️ 部分(日志面板有) |
|
||||
| `/model` 切换 | ✅ | ✅ | ⚠️ 下拉框 |
|
||||
|
||||
**`/compress` 实现方案**(未实现):
|
||||
|
||||
```typescript
|
||||
// 将 messages 中间部分(保留首尾各 2 条)用 LLM 做摘要
|
||||
// 摘要结果作为 system 消息注入
|
||||
// 大幅减少 token 消耗,保留关键上下文
|
||||
```
|
||||
|
||||
### 10. 诊断系统(Doctor) 🟢 P2(未实现)
|
||||
|
||||
**Hermes 做法**
|
||||
|
||||
`hermes doctor` 一键诊断所有配置问题:连接、模型、工具权限、磁盘空间等。
|
||||
|
||||
**Metona 现状**
|
||||
|
||||
设置面板只有 Ollama 连接检测。
|
||||
|
||||
**改进方案**
|
||||
|
||||
在设置面板新增「系统诊断」页面,检查项:
|
||||
|
||||
| 检查项 | 说明 |
|
||||
|--------|------|
|
||||
| Ollama 连接 | 服务地址可达、版本号 |
|
||||
| 模型可用性 | 选中模型是否已下载、是否正在运行 |
|
||||
| Tool Calling 支持 | 当前模型是否支持 function calling |
|
||||
| Vision 支持 | 当前模型是否支持图片 |
|
||||
| 磁盘空间 | workspace 目录剩余空间 |
|
||||
| SQLite 完整性 | 数据库文件完整性检查 |
|
||||
| 工具权限 | 安全配置是否合理 |
|
||||
| 版本信息 | Metona 版本、Electron 版本、Node 版本 |
|
||||
|
||||
### 11. 人格/模式切换 ✅ 已实现 v5.0.0
|
||||
|
||||
**OpenClaw**
|
||||
|
||||
`SOUL.md` 定义人格和行为准则。
|
||||
|
||||
**Hermes**
|
||||
|
||||
`/personality [name]` 切换不同人格模式。
|
||||
|
||||
**Metona 现状** ✅ 已实现
|
||||
|
||||
多种预设人格模板(编程助手/写作助手/数据分析师等),每种有独立 system prompt + 温度设置,设置面板快速切换。
|
||||
|
||||
### 12. 响应速度优化 ⚡ 部分实现
|
||||
|
||||
**Hermes 核心优势**
|
||||
|
||||
比 OpenClaw 响应更快,社区反馈明显。
|
||||
|
||||
**Metona 已优化方向**
|
||||
|
||||
1. ✅ **工具并行执行**:独立工具通过 `Promise.all` 并行执行(v5.0.0)
|
||||
2. ❌ **模型预热**:切换模型后发送空请求保持 `keep_alive`
|
||||
3. ❌ **上下文智能管理**:超过 `num_ctx` 时自动摘要而非截断
|
||||
4. ❌ **工具结果预处理**:在格式化前预计算,减少序列化开销
|
||||
|
||||
---
|
||||
|
||||
## 五、优先级排序
|
||||
|
||||
### 按投入产出比排序
|
||||
|
||||
| 优先级 | 功能 | 复杂度 | 用户价值 | 来源 | 状态 |
|
||||
|--------|------|--------|----------|------|------|
|
||||
| 🔴 P0 | 技能自动生成(Skill Loop) | 高 | ⭐⭐⭐⭐⭐ | Hermes | ✅ v5.1.0 |
|
||||
| 🔴 P0 | `/retry` `/undo` 会话操作 | 低 | ⭐⭐⭐⭐⭐ | 共同 | ✅ v5.0.0 |
|
||||
| 🟡 P1 | 用户画像模型 | 中 | ⭐⭐⭐⭐ | Hermes | ✅ v5.0.0 |
|
||||
| 🟡 P1 | 上下文压缩 (`/compress`) | 中 | ⭐⭐⭐⭐ | 共同 | ❌ 未实现 |
|
||||
| 🟡 P1 | 工具并行执行优化 | 中 | ⭐⭐⭐⭐ | 共同 | ✅ v5.0.0 |
|
||||
| 🟢 P2 | Heartbeat 主动检查 | 低 | ⭐⭐⭐ | OpenClaw | ✅ v5.0.0 |
|
||||
| 🟢 P2 | 人格模板切换 | 低 | ⭐⭐⭐ | 共同 | ✅ v5.0.0 |
|
||||
| 🟢 P2 | 诊断系统 (`doctor`) | 低 | ⭐⭐⭐ | Hermes | ❌ 未实现 |
|
||||
| 🔵 P3 | MCP 生态对接 | 高 | ⭐⭐⭐⭐ | 共同 | ✅ v5.0.0 |
|
||||
| 🔵 P3 | 浏览器控制 | 高 | ⭐⭐⭐ | 共同 | ✅ v5.0.0 |
|
||||
| 🔵 P3 | 子代理委派 | 高 | ⭐⭐⭐ | 共同 | ✅ v5.0.0 |
|
||||
| 🔵 P3 | 训练数据导出 | 中 | ⭐⭐ | Hermes | ❌ 未实现 |
|
||||
| ⚪ P4 | Cron 定时任务 | 中 | ⭐⭐ | OpenClaw | ✅ v5.0.0 |
|
||||
|
||||
### 待实施功能
|
||||
|
||||
| 功能 | 复杂度 | 说明 |
|
||||
|------|--------|------|
|
||||
| `/compress` 上下文压缩 | 中 | LLM 摘要中间轮次,而非简单滑动窗口 |
|
||||
| 诊断系统 (`doctor`) | 低 | 设置面板一键检查连接/模型/权限/磁盘 |
|
||||
| 训练数据导出 | 中 | traces → SFT 格式导出 |
|
||||
| Skill 渐进式加载 | 中 | Level 0→1→2,先返回名称+描述,需要时再加载全文 |
|
||||
| Session 谱系跟踪 | 中 | 压缩后创建子 session,保留 parent_id |
|
||||
|
||||
---
|
||||
|
||||
## 六、Metona 的差异化定位
|
||||
|
||||
```
|
||||
OpenClaw = 平台型(Gateway + Skills + 多通道 + 团队)
|
||||
Hermes = 进化型(学习循环 + 记忆 + 技能自动生成)
|
||||
Metona = 桌面型(原生体验 + 系统集成 + 离线优先)
|
||||
|
||||
Metona 的独特价值:
|
||||
✅ 零配置启动(npm start 即用)
|
||||
✅ 系统托盘 + 原生文件对话框
|
||||
✅ 工作空间面板(终端 + 文件浏览器一体化)
|
||||
✅ 暖色调 UI(非暗色主题,长时间使用不疲劳)
|
||||
✅ 全离线运行(数据不离开本机)
|
||||
|
||||
已吸收(v5.0.0 ~ v5.1.3):
|
||||
✅ 技能自动生成(Hermes) — v5.1.0
|
||||
✅ 用户画像模型(Hermes) — v5.0.0
|
||||
✅ /retry /undo 会话操作(共同) — v5.0.0
|
||||
✅ MCP 生态对接(共同) — v5.0.0
|
||||
✅ 浏览器控制(共同) — v5.0.0
|
||||
✅ Heartbeat 主动检查(OpenClaw) — v5.0.0
|
||||
✅ Cron 定时任务(OpenClaw) — v5.0.0
|
||||
✅ 子代理委派(共同) — v5.0.0
|
||||
✅ 记忆容量管理 + 安全扫描(Hermes) — v5.1.2 / v5.1.0
|
||||
✅ Shadowing 防护(Hermes) — v5.1.2
|
||||
✅ 预算警告临时层(Hermes) — v5.1.2
|
||||
|
||||
待吸收:
|
||||
🔜 /compress 上下文压缩(Hermes Context)
|
||||
🔜 诊断系统 doctor(Hermes)
|
||||
🔜 Skill 渐进式加载(Hermes)
|
||||
🔜 训练数据导出(Hermes)
|
||||
|
||||
最终形态 = 会学习的桌面 Agent
|
||||
= Metona 的原生桌面体验
|
||||
+ Hermes 的学习进化能力
|
||||
+ OpenClaw 的工程化实践
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
*最后更新:2026-04-19(根据 v5.1.3 实际代码更新实施状态)*
|
||||
Reference in New Issue
Block a user