mit einem Klick
skill-name
>-
Mit Codex oder Claude installieren Kopieren Sie diesen Prompt, fügen Sie ihn in Codex, Claude oder einen anderen Assistant ein und lassen Sie die Skill-Seite prüfen und installieren.
Menü
>-
Mit Codex oder Claude installieren Kopieren Sie diesen Prompt, fügen Sie ihn in Codex, Claude oder einen anderen Assistant ein und lassen Sie die Skill-Seite prüfen und installieren.
Basierend auf der SOC-Berufsklassifikation
将编码任务委派给 Claude Code(Anthropic 的 CLI 代理)。用于构建功能、重构、PR 审查和迭代编码。需要安装 claude CLI。 Use when: claude code, 编码任务, coding task, 代码审查, code review, 重构, refactoring, PR审查, Claude CLI. Do NOT use for: - Hermes 配置问题(用 hermes-agent skill) - Codex/OpenCode 任务(用 codex/opencode skills) - 非编码任务(用相应 skills) - 批量文件操作(用 file/terminal 工具)
Configure, extend, or contribute to Hermes Agent.
Hermes Fork 仓库完整维护指南 - 保守式更新 + 文档本地化 + 更新日志自动化 + GitHub 推送配置。涵盖:本地修改保护、冲突解决、性能优化合并、README 翻译、更新日志自动记录、Fork 推送全流程。
灵魂注入器 - 已合并到统一时间感知模块。 【v3.0 更新】时间感知功能已合并到 unified_time_awareness.py,避免重复注入。 原功能保留: - 搜索上下文注入(search.md) - 对话状态感知 移除功能(已合并): - 时间感知 → unified_time_awareness.py
全局约束管理系统 - 时间感知、情境感知、对话状态感知的统一约束层。 在所有任务执行前自动注入约束条件,确保 AI 的行为符合人类期望。 Use when: 全局约束, constraints, 时间感知, time awareness, 情境感知, context awareness, 执行规范, Hook注入. Do NOT use for: - 具体任务执行(用其他执行类 skills) - 数据获取(用 stock-data-acquisition) - 股票分析(用 stock-analysis-framework) - 错误恢复(用 supervisor-mode) 触发场景: - 所有任务执行前的自动检查(通过 Shell Hook 注入) - 用户主动询问约束规则 - 发现执行偏离时的人工干预 核心约束类别: 1. 时间感知约束:深夜/周末/节假日行为规范 2. 情境感知约束:用户状态识别与响应策略 3. 对话状态约束:跨会话连贯性与话题衔接 4. 执行规范约束:Skill 执行合规性检查
分层分级记忆系统 - 六层记忆架构(L1-L6)+ 缓存优化。 L1 会话记忆 → L2 短期记忆 → L3 长期记忆 → L4 技能记忆 → L5 任务上下文 → L6 全息记忆。 Use when: 记忆系统, memory system, 六层记忆, L1-L6, 记忆分层, 上下文管理, 缓存优化. Do NOT use for: - 单次会话记录(用 L1 session) - Skill 创建(用 skill_manage) - 数据持久化(用 file_write) - 知识图谱(用 fact_store) v1.10.0 新增: - ✅ 缓存优化系统集成(DeepSeek Prefix Caching) - ✅ 平均缓存命中率 92%+,节省成本 80%+ - ✅ CLI 工具 hermes-cache(统计监控、优化建议) - ✅ 固定前缀策略(从 HERMES.md 读取核心约束) - 🎯 效果:Token 成本 -81%、延迟 -80%、缓存命中 92%+ v1.9.0 新增: - ✅ 六层记忆架构(L1-L6) - ✅ L2 精简方法论(2491→1021 chars,-59%) - ✅ 跨层协同优化(L2↔L5、L3↔L6、L4→L3) - ✅ l5_to_l2_injector.py(高频实体反向注入) - 🎯 效果:跨层一致性 +100%、重复录入 -80%
系统化流程:发现 → 评估 → 选择 → 安装 → 验证
# 按关键词搜索
curl -s "https://api.github.com/search/repositories?q=wechat+article+download+export&sort=stars&order=desc&per_page=15" | jq -r '.items[] | "\(.stargazers_count)|\(.full_name)|\(.description)|\(.html_url)"'
# 查看特定仓库
curl -s "https://api.github.com/repos/{owner}/{repo}" | jq -r '.stargazers_count, .description, .html_url'
| 维度 | 权重 | 检查项 |
|---|---|---|
| Stars | 30% | >1000 优选,>5000 优秀 |
| 活跃度 | 25% | 最近 commit 时间、issue 响应 |
| 功能完整 | 25% | README 描述、支持格式、API 设计 |
| 集成方式 | 20% | MCP / Skill / CLI / 桌面应用 |
适用场景:远程服务、无需本地运行、跨平台
配置格式(写入 ~/.hermes/config.yaml):
mcp_servers:
tool-name:
type: streamableHttp
url: https://api.example.com/mcp
enabled: true
connect_timeout: 30
timeout: 60
验证方法:
# 测试连接
curl -s -X POST "https://api.example.com/mcp" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"initialize","id":1}' | jq .
# 列出工具
curl -s -X POST "https://api.example.com/mcp" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"tools/list","id":2}' | jq -r '.result.tools[].name'
适用场景:需要本地环境、复杂配置、多文件支持
安装步骤:
# 1. 克隆仓库
cd ~/.hermes
git clone https://github.com/xxx/tool.git temp_tool
# 2. 复制 Skill
mkdir -p ~/.hermes/skills/skill-name
cp -r temp_tool/skills/xxx/* ~/.hermes/skills/skill-name/
# 3. 清理临时文件
rm -rf temp_tool
npx skills add 自动安装(推荐)适用场景:Skills.sh 生态的技能,GitHub 仓库支持 npx skills add 安装
标准流程:
# 一键安装(自动处理依赖、配置、验证)
npx skills add owner/skill-repo
# 示例:安装达尔文.skill
npx skills add alchaincyf/darwin-skill
# 跳过确认直接安装
npx skills add owner/skill-repo --yes
安装位置:
.agents/skills/ 目录(当前项目)输出示例:
✓ ./.agents/skills/darwin-skill
universal: Codex, Gemini CLI, OpenCode, Amp, Antigravity +8 more
symlinked: Claude Code, OpenClaw, Qwen Code, Trae, Trae CN
验证安装:
# 查看安装的 Skill
ls .agents/skills/skill-name/
# 检查 SKILL.md 格式
cat .agents/skills/skill-name/SKILL.md | head -10
优点:
注意事项:
.agents/skills/,不是 ~/.hermes/skills/~/.hermes/skills/适用场景:
npx skills add 的仓库标准流程:
# 1. 克隆到临时目录
cd /tmp
git clone https://github.com/owner/skills-repo.git
# 2. 查看仓库结构
ls -la skills-repo/
# 常见结构:
# - 根目录直接是 Skill 文件夹(skill-name/SKILL.md)
# - 有 skills/ 子目录
# - 有多个 Skill 文件夹
# 3. 复制 Skill 到 Hermes
# 如果根目录直接是 Skill:
cp -r /tmp/skills-repo/skill-name ~/.hermes/skills/
# 如果有 skills/ 子目录:
cp -r /tmp/skills-repo/skills/* ~/.hermes/skills/
# 4. 验证安装
hermes skills list | grep skill-name
# 5. 清理临时文件
rm -rf /tmp/skills-repo
验证检查清单:
ls .agents/skills/skill-name/ 或 ls ~/.hermes/skills/skill-name/ls .agents/skills/skill-name/SKILL.mdhermes skills list | grep skill-name(Hermes)或直接测试(Skills.sh)常见仓库结构:
| 结构 | 说明 | 安装方式 |\n|------|------|----------|\n| Skills.sh 生态 | 支持 npx skills add | npx skills add owner/repo --yes |\n| repo/skill-name/SKILL.md | 根目录直接是 Skill | cp -r repo/skill-name ~/.hermes/skills/ |\n| repo/skills/skill-name/ | 有 skills 子目录 | cp -r repo/skills/* ~/.hermes/skills/ |\n| repo/category/skill-name/ | 按分类组织 | cp -r repo/category/skill-name ~/.hermes/skills/category/ |
注意事项:
cd ~/.hermes/skills/skill-name
npm init -y
npm install dependency-name
timeout 命令不存在,使用 Perl 替代:
perl -e 'alarm shift; exec @ARGV' 10 node scripts/test.js "args"
适用场景:需要用户手动操作、OAuth 登录、浏览器交互
处理方式:
http://127.0.0.1:端口/mcp)# 查看 MCP 配置
grep -A 10 "mcp_servers:" ~/.hermes/config.yaml
# 或使用 Read 工具
使用 Patch 工具在 mcp_servers: 部分添加新条目:
mcp_servers:
existing-server:
...
new-tool: # 新增
type: streamableHttp
url: https://api.new-tool.com/mcp
enabled: true
connect_timeout: 30
timeout: 60
| 问题 | 原因 | 解决 |
|---|---|---|
| 连接超时 | 网络问题/服务不可用 | 检查 URL、重试、换网络 |
| 工具列表为空 | API 变更/权限问题 | 查看 GitHub issues |
| Skill 不生效 | 文件格式错误 | 检查 SKILL.md frontmatter |
新安装工具:{tool-name}
- 来源:{GitHub URL}
- Stars:{数量}
- 功能:{描述}
- 集成方式:MCP/Skill/桌面应用
- 配置位置:~/.hermes/config.yaml 或 ~/.hermes/skills/
- 验证状态:✅/❌
## ✅ 安装完成!
### 📦 安装内容
| 组件 | 状态 | 说明 |
|------|------|------|
| MCP 服务器 | ✅ | `{url}` |
| Skill 文件 | ✅ | `~/.hermes/skills/{name}/` |
| 连接测试 | ✅ | 服务器名: `{server_name}` |
### 🛠️ 可用工具
1. **`tool-1`** - 功能描述
2. **`tool-2`** - 功能描述
### 📝 使用方式
直接说:"下载这篇微信文章:https://..."
适用场景:Skill 数量过多、用户想精简系统、保留但不常使用
操作流程:
# 1. 创建归档目录
mkdir -p ~/.hermes/skills/_archived/{source-name}
# 2. 统计各分类角色数量(Python 脚本)
from pathlib import Path
skills_dir = Path.home() / ".hermes" / "skills"
stats = {}
for cat in skills_dir.iterdir():
if cat.is_dir() and not cat.name.startswith("_"):
count = len([d for d in cat.iterdir() if d.is_dir() and (d / "SKILL.md").exists()])
stats[cat.name] = count
# 按数量排序输出
for cat, count in sorted(stats.items(), key=lambda x: -x[1]):
print(f"{cat:25s} {count:3d} 个角色")
# 3. 移动不常用的分类到归档目录
import shutil
archive_categories = ["marketing", "testing", "design"] # 根据统计结果选择
archive_dir = skills_dir / "_archived" / "source-name"
archive_dir.mkdir(parents=True, exist_ok=True)
for cat in archive_categories:
src = skills_dir / cat
if src.exists():
shutil.move(str(src), str(archive_dir / cat))
print(f"✅ 已归档: {cat}")
示例:agency-agents-zh 归档(2026-04-29)
~/.hermes/skills/_archived/agency-agents-zh/# 恢复单个分类
mv ~/.hermes/skills/_archived/agency-agents-zh/marketing ~/.hermes/skills/
# 批量恢复多个分类
for cat in marketing sales; do
mv ~/.hermes/skills/_archived/agency-agents-zh/$cat ~/.hermes/skills/
done
注意:
~/.hermes/skills/ 目录下的 Skill 都会被自动加载hermes restart)skills_list 检查是否已存在browser_navigate + sleep 5 等待通过importlib.util,避免模块路径问题:
import importlib.util
spec = importlib.util.spec_from_file_location("skill_router", hooks_dir / "skill-router.py")
skill_router = importlib.util.module_from_spec(spec)
spec.loader.exec_module(skill_router)
SkillRouter = skill_router.SkillRouter
skill-router.py 时,新领域必须添加在 SKILL_ROUTES 字典的最后一个领域之后、结束大括号之前适用场景:
标准流程:
# 检查 Docker
docker --version
# 检查端口占用
lsof -i:8888 # API 端口
lsof -i:9999 # UI 端口
cd ~
git clone https://github.com/owner/tool.git
cd tool
# 复制环境变量模板
cp .env.example .env
# 编辑配置(重点是 API Key)
vim .env
关键配置项:
LLM_PROVIDER: 兼容 OpenAI API 的 providerLLM_API_KEY: API 密钥LLM_MODEL: 模型选择LLM_BASE_URL: API 端点(如 OpenRouter)start-tool.sh(后台模式):
#!/bin/bash
# 检查环境变量
if [ -z "$API_KEY" ]; then
echo "❌ 未找到 API_KEY 环境变量"
exit 1
fi
# 检查 Docker
if ! command -v docker &> /dev/null; then
echo "❌ Docker 未安装"
exit 1
fi
# 检查是否已运行
if docker ps | grep -q tool-name; then
echo "✅ Tool 已在运行"
exit 0
fi
# 创建数据目录
mkdir -p ~/.tool-data
# 后台启动
docker run -d --pull always \
-p 8888:8888 \
-p 9999:9999 \
--name tool-name \
--restart unless-stopped \
-e API_KEY=$API_KEY \
-v $HOME/.tool-data:/home/tool/.data \
ghcr.io/owner/tool:latest
echo "✅ Tool 已启动"
echo "API: http://localhost:8888"
echo "UI: http://localhost:9999"
安装 Python Client:
pip install tool-client -U
配置 Hermes(~/.hermes/config.yaml):
memory:
extended_memory:
tool-name:
enabled: true
api_url: http://localhost:8888
collection: hermes-agent
创建 Hook(~/.hermes/hooks/tool_integration.py):
#!/usr/bin/env python3
"""Tool 集成 Hook"""
import os
import requests
API_URL = os.getenv('TOOL_API_URL', 'http://localhost:8888')
def store_data(content: str, metadata: dict = None):
"""存储数据到 Tool"""
try:
response = requests.post(
f"{API_URL}/v1/store",
json={'content': content, 'metadata': metadata or {}}
)
return response.json()
except Exception as e:
print(f"Tool 存储失败: {e}")
return None
def retrieve_data(query: str, limit: int = 5):
"""从 Tool 检索数据"""
try:
response = requests.post(
f"{API_URL}/v1/search",
json={'query': query, 'limit': limit}
)
return response.json().get('results', [])
except Exception as e:
print(f"Tool 检索失败: {e}")
return []
# 测试 API
curl http://localhost:8888/v1/health
# 测试存储
curl -X POST http://localhost:8888/v1/store \
-H "Content-Type: application/json" \
-d '{"content": "测试内容"}'
# 测试检索
curl -X POST http://localhost:8888/v1/search \
-H "Content-Type: application/json" \
-d '{"query": "测试"}'
stop-tool.sh:
#!/bin/bash
docker stop tool-name
docker rm tool-name
echo "✅ Tool 已停止"
backup-tool.sh:
#!/bin/bash
tar -czf tool-backup-$(date +%Y%m%d).tar.gz ~/.tool-data
注意事项:
--restart unless-stopped 确保服务稳定完整案例:Hindsight 记忆系统集成(2026-05-02)
references/hindsight-deployment-example.md风险评估:高风险 - 涉及真实资金
处理流程:
示例:FluxA Agent Wallet (Base 链 USDC 钱包)
问题:外部技能可能使用简化格式(如纯 Markdown),缺少 SKILL.md frontmatter
解决:
适用场景:
完整封装流程:
# 方式1:直接访问 skill.md URL
curl -s https://example.com/skill.md
# 方式2:从 GitHub 仓库获取
curl -s https://raw.githubusercontent.com/owner/repo/main/skills/skill-name/SKILL.md
# 方式3:浏览器访问(如有 Cloudflare 验证)
browser_navigate https://example.com/skill.md
# 等待 5 秒通过验证
sleep 5
browser_console "document.body.innerText"
# 标准结构
~/.hermes/skills/{category}/{skill-name}/
├── SKILL.md # 主文档(完整中文版)
├── README.md # 快速参考指南
├── INTEGRATION_REPORT.md # 集成报告(可选)
├── scripts/
│ ├── install.sh # 自动安装脚本
│ └── test_integration.py # 集成测试脚本
└── references/ # 官方参考文档
├── GUIDE-1.md
├── GUIDE-2.md
└── ...
必需 frontmatter 字段:
---
name: skill-name
description: >-
技能描述(用于 Smart Skill Router 自动识别)
version: x.x.x
cli_version: package-name@x.x.x # 如有 CLI
network: Network Name # 如涉及网络
category: category-name
tags: [tag1, tag2, tag3]
---
必需章节:
# 创建 references 目录
mkdir -p ~/.hermes/skills/{category}/{skill-name}/references
# 下载官方文档
cd ~/.hermes/skills/{category}/{skill-name}/references
curl -sO https://raw.githubusercontent.com/.../GUIDE-1.md
curl -sO https://raw.githubusercontent.com/.../GUIDE-2.md
# ...
scripts/install.sh:
#!/bin/bash
# 技能名称 安装脚本
set -e
echo "🦄 技能名称 安装脚本"
echo "================================"
echo ""
# 检查依赖
if ! command -v node &> /dev/null; then
echo "❌ 错误: 未找到 Node.js"
exit 1
fi
echo "✅ Node.js 版本: $(node --version)"
# 安装 CLI(如有)
npm install -g package-name@version
echo ""
echo "✅ 安装完成!"
echo ""
echo "下一步:"
echo "1. 运行初始化命令"
echo "2. 查看文档: ~/.hermes/skills/{category}/{skill-name}/SKILL.md"
赋予执行权限:
chmod +x ~/.hermes/skills/{category}/{skill-name}/scripts/install.sh
scripts/test_integration.py:
#!/usr/bin/env python3
"""
技能名称 集成测试
验证 Smart Skill Router 是否正确识别并加载此技能
"""
import sys
from pathlib import Path
# 动态导入 SkillRouter
hooks_dir = Path.home() / ".hermes" / "hooks"
sys.path.insert(0, str(hooks_dir))
import importlib.util
spec = importlib.util.spec_from_file_location("skill_router", hooks_dir / "skill-router.py")
skill_router = importlib.util.module_from_spec(spec)
spec.loader.exec_module(skill_router)
SkillRouter = skill_router.SkillRouter
def test_triggers():
"""测试触发词识别"""
router = SkillRouter()
test_cases = [
("关键词1", ["skill-name"]),
("关键词2", ["skill-name"]),
("关键词3", ["skill-name"]),
]
print("🧪 测试触发词识别\n")
passed = 0
for message, expected in test_cases:
recommended = router.recommend_skills(message)
matched = all(skill in recommended for skill in expected)
status = "✅" if matched else "❌"
print(f"{status} \"{message}\" → {recommended}")
if matched:
passed += 1
print(f"\n结果: {passed}/{len(test_cases)} 通过")
return passed == len(test_cases)
def test_structure():
"""测试文件结构"""
skill_dir = Path.home() / ".hermes" / "skills" / "{category}" / "{skill-name}"
required_files = [
"SKILL.md",
"README.md",
"scripts/install.sh",
"scripts/test_integration.py",
]
print("\n🧪 测试文件结构\n")
passed = 0
for file_path in required_files:
exists = (skill_dir / file_path).exists()
status = "✅" if exists else "❌"
print(f"{status} {file_path}")
if exists:
passed += 1
print(f"\n结果: {passed}/{len(required_files)} 存在")
return passed == len(required_files)
def main():
results = {
"触发词识别": test_triggers(),
"文件结构": test_structure(),
}
print("\n" + "=" * 60)
print("📊 最终测试结果")
print("=" * 60)
for test_name, passed in results.items():
status = "✅ 通过" if passed else "❌ 失败"
print(f"{status} - {test_name}")
if all(results.values()):
print("\n🎉 所有测试通过!")
return 0
else:
return 1
if __name__ == "__main__":
sys.exit(main())
编辑 ~/.hermes/hooks/skill-router.py,在 SKILL_ROUTES 中添加新领域:
SKILL_ROUTES = {
# ... 现有领域 ...
"new_domain": {
"triggers": ["关键词1", "关键词2", "关键词3"],
"skills": {
"primary": ["skill-name"],
"secondary": ["backup-skill"],
"specific": {
"特定触发词": "specific-skill",
}
},
"priority": 9 # 高优先级
},
}
python3 ~/.hermes/skills/{category}/{skill-name}/scripts/test_integration.py
预期输出:
============================================================
🧪 测试触发词识别
✅ "关键词1" → ['skill-name', 'backup-skill']
✅ "关键词2" → ['skill-name', 'backup-skill']
✅ "关键词3" → ['skill-name', 'backup-skill']
结果: 3/3 通过
🧪 测试文件结构
✅ SKILL.md
✅ README.md
✅ scripts/install.sh
✅ scripts/test_integration.py
结果: 4/4 存在
============================================================
📊 最终测试结果
============================================================
✅ 通过 - 触发词识别
✅ 通过 - 文件结构
🎉 所有测试通过!
MemPalace:
mcp_mempalace_mempalace_add_drawer \
--wing "hermes-integration" \
--room "agent-skills" \
--content "技能名称 v1.0.0 已成功封装为 Hermes Skill..." \
--source_file "~/.hermes/skills/{category}/{skill-name}/INTEGRATION_REPORT.md"
fact_store:
fact_store(
action="add",
category="project",
content="技能名称 v1.0.0 已成功封装为 Hermes Skill,集成到 Smart Skill Router。所有测试通过,文档完整(XXKB),自动加载触发词已配置。",
tags="skill,integration,hermes"
)
INTEGRATION_REPORT.md:
# 技能名称 - Hermes Skill 封装完成报告
## ✅ 集成状态
**状态:** 已完成并通过所有测试
**日期:** YYYY-MM-DD
**版本:** 技能名称 vX.X.X
## 📦 已创建文件
- SKILL.md (XXKB)
- README.md (XXKB)
- scripts/install.sh (XXKB)
- scripts/test_integration.py (XXKB)
- references/ (X 个文档,共 XXKB)
**总计:** X 个文件,约 XXKB 文档
## 🧪 测试结果
✅ 触发词识别 - X/X 通过
✅ 文件结构 - X/X 存在
✅ 元数据检查 - X/X 通过
## 🔧 Smart Skill Router 集成
新增 "{domain}" 领域,优先级 X
触发关键词:关键词1、关键词2、关键词3
## 📚 核心功能
1. 功能1
2. 功能2
3. ...
## 🚀 快速开始
```bash
~/.hermes/skills/{category}/{skill-name}/scripts/install.sh
(如有风险,列出安全注意事项)
#### 11. 验证自动加载
测试 Smart Skill Router 是否正确识别:
```bash
python3 ~/.hermes/hooks/skill-router.py "测试关键词"
预期输出:
{
"recommended_skills": ["skill-name"],
"context": "[Skill Router] 检测到相关领域..."
}
实际验证示例(FluxA Agent Wallet):
# 测试触发词识别
python3 ~/.hermes/hooks/skill-router.py "转账USDC"
# 预期输出:
# {
# "recommended_skills": ["fluxa-agent-wallet", "engineering-solidity-smart-contract-engineer"],
# "context": "[Skill Router] 检测到 crypto 领域..."
# }
成功标志:
示例:FluxA Agent Wallet 完整封装(已验证 ✅)
关键经验:
适用场景:
核心痛点: 传统无头浏览器(Playwright、Puppeteer)容易被网站识别:
解决方案:Camofox Browser
技术特点:
集成流程:
# 克隆仓库
cd ~/projects
git clone https://github.com/jo-inc/camofox-browser
cd camofox-browser
# 安装依赖
npm install
# 启动服务(后台运行)
nohup npm start > ~/logs/camofox.log 2>&1 &
# 验证服务
curl http://localhost:9377/health
# 预期输出: {"status": "ok", "service": "camofox-browser"}
编辑 ~/.hermes/config.yaml:
browser:
camofox:
url: http://localhost:9377
managed_persistence: true # 启用登录态持久化
| 能力 | 说明 | 价值 |
|---|---|---|
| 登录态持久化 | 按 userId 隔离 session | 像长期使用的工作浏览器 |
| Accessibility Snapshot | 页面压缩 90% | 模型低成本理解页面 |
| Stable Element Refs | @e1、@e2 元素引用 | 点击稳定,不因 DOM 变化失效 |
| 本地部署 | 所有状态在自己机器 | 敏感登录态不交给第三方 |
| 工具 | 功能 | 示例 |
|---|---|---|
browser_navigate | 打开网页 | browser_navigate("https://example.com") |
browser_snapshot | 读取页面结构 | 返回 accessibility tree(小 90%) |
browser_click | 点击元素 | browser_click("@e1") |
browser_type | 输入文本 | browser_type("@e2", "搜索内容") |
browser_scroll | 滚动页面 | browser_scroll("down") |
场景A:访问登录后的资料库
场景B:操作复杂后台
场景C:读取高风控网页
场景D:配合现有工具
iwencai-integration: 问财接口登录后查看完整数据grid-trading-monitor: ETF 监控访问券商网站避免频繁登录import requests
CAMOFOX_URL = "http://localhost:9377"
# 测试打开网页
resp = requests.post(f"{CAMOFOX_URL}/browser_navigate",
json={"url": "https://example.com"})
print("状态:", resp.json()["status"])
# 测试获取快照
snapshot = requests.post(f"{CAMOFOX_URL}/browser_snapshot").json()
print("快照大小:", len(snapshot["content"]), "字符")
# 测试元素引用
print("可点击元素:", [e for e in snapshot["elements"] if e["clickable"]])
✅ 适用场景:
❌ 不适用场景:
安全原则:
工具矩阵升级:
| 工具 | 适用场景 | Camofox 加入后 |
|---|---|---|
| Jina Reader | 普通文章、新闻 | 不变(公开网页) |
| Crawl4AI | 批量整站抓取 | 不变(公开网页) |
| Scrapling | 反爬网站 | 不变(单次抓取) |
| CamouFox | 反检测 Python 库 | 不变(代码调用) |
| Camofox Browser | 登录态、长期状态 | 新增(服务调用) |
决策树更新:
是否需要登录?
├─ 是 → 使用 Camofox Browser(长期状态管理)
└─ 否 → 继续判断
是否有反爬?
├─ 是 → 使用 Scrapling
└─ 否 → 继续判断
单页还是多页?
├─ 单页 → Jina Reader
└─ 多页 → Crawl4AI
Q: Camofox 和 CamouFox 有什么区别?
| 项目 | 类型 | 定位 |
|---|---|---|
| CamouFox | Python 库 | 反检测浏览器库,代码调用 |
| Camofox Browser | Node.js 服务 | 浏览器服务器,API 调用 |
Q: 如何处理验证码?
Q: 登录态能保持多久?
完整案例:Camofox Browser 集成(2026-05-03)
references/camofox-browser-integration.md工具仓库不全: 未覆盖所有可用工具
# 多源搜索
# 1. GitHub: topic:hermes-skill, topic:mcp-server
# 2. PyPI: 搜索 hermes-*
# 3. NPM: 搜索 @hermes/*
# 4. Awesome Lists: awesome-ai-agents
工具质量参差不齐: 缺少质量评估
# 评估维度
# 1. GitHub Stars > 100
# 2. 最近更新 < 6 个月
# 3. 有文档和示例
# 4. 有测试覆盖
# 5. 开源许可证
依赖冲突: 工具依赖与 Hermes 冲突
# 使用虚拟环境
python3 -m venv ~/.hermes/venv
source ~/.hermes/venv/bin/activate
pip install tool-name
权限问题: 无法写入安装目录
# 检查权限
ls -la ~/.hermes/tools
# 修复权限
chmod -R u+rw ~/.hermes/tools
Hermes 版本不兼容: 工具需要特定版本
# 检查 Hermes 版本
hermes --version
# 查看工具要求
cat tool/requirements.txt | grep hermes
Python 版本冲突: 工具需要不同 Python
# 使用 pyenv 管理多版本
pyenv install 3.10.13
pyenv shell 3.10.13