Skip to main content

hermes-agent-framework

Hermes Agent framework by Nous Research - self-improving AI agent with built-in learning loop, three-layer memory, and automatic skill evolution

跳到安装

来源信息

仓库
reason-machines/hermes-skills
最近来源活动
2026年5月16日 16:48
检测到的 SKILL.md 语言
英语
星标
5
分支
0

安装方式

默认使用会先检查来源的 Prompt;你也可以切换为直接命令,或下载本地副本。

检查来源文件

决定是否安装前,请先阅读 SKILL.md,以及 SkillsMP 当前展示的配套文件。

正在显示 SKILL.md

SKILL.md
来源说明 · 只读预览
name
hermes-agent-framework
description
Hermes Agent framework by Nous Research - self-improving AI agent with built-in learning loop, three-layer memory, and automatic skill evolution
triggers
["help me set up Hermes Agent","how do I use the Hermes framework","create a Hermes agent with custom skills","configure Hermes memory system","build an AI agent with Hermes","how does Hermes learning loop work","integrate tools with Hermes Agent","customize Hermes agent behavior"]
# Hermes Agent Framework > Skill by [ara.so](https://ara.so) — Hermes Skills collection. Hermes Agent is an open-source AI Agent framework by Nous Research that features a built-in self-improving learning loop, three-layer memory system (episodic, semantic, procedural), and automatic Skill creation and evolution. Unlike traditional agentic frameworks, Hermes continuously learns from interactions and builds up capabilities over time. ## Installation ### Prerequisites - Python 3.9+ - API key for LLM provider (OpenAI, Anthropic, etc.) ### Basic Installation ```bash # Clone the repository git clone https://github.com/NousResearch/hermes-agent.git cd hermes-agent # Install dependencies pip install -r requirements.txt # Or install via pip (if published) pip install hermes-agent ``` ### Configuration Create a `.env` file in the project root: ```bash # LLM Provider Configuration OPENAI_API_KEY=your_openai_key_here ANTHROPIC_API_KEY=your_anthropic_key_here # Agent Configuration HERMES_MODEL=gpt-4 HERMES_MEMORY_PATH=./memory HERMES_SKILLS_PATH=./skills ``` ## Core Concepts ### Three-Layer Memory System 1. **Episodic Memory**: Stores conversation history and interaction sequences 2. **Semantic Memory**: Long-term knowledge and facts extracted from experiences 3. **Procedural Memory**: Skills and learned procedures (how to do things) ### Learning Loop Hermes operates in a continuous cycle: 1. **Perceive**: Receive user input and context 2. **Reflect**: Analyze what happened and extract learnings 3. **Learn**: Update memory systems and create/modify Skills 4. **Act**: Execute tasks using available tools and Skills ### Skills Skills are reusable capabilities that Hermes creates and refines automatically. They're stored as structured modules in the procedural memory. ## Basic Usage ### Starting a Hermes Agent ```python from hermes_agent import HermesAgent, Config # Initialize configuration config = Config( model="gpt-4", memory_path="./memory", skills_path="./skills", temperature=0.7 ) # Create agent instance agent = HermesAgent(config) # Start conversation response = agent.chat("Help me analyze this CSV file and create visualizations") print(response) ``` ### With Custom System Prompt ```python from hermes_agent import HermesAgent, Config config = Config( model="claude-3-5-sonnet-20241022", system_prompt="""You are a specialized data analysis agent. Focus on statistical rigor and clear visualizations. Always explain your analytical choices.""" ) agent = HermesAgent(config) ``` ### Enabling Memory Persistence ```python from hermes_agent import HermesAgent, Config, MemoryConfig memory_config = MemoryConfig( episodic_enabled=True, semantic_enabled=True, procedural_enabled=True, retention_days=90, auto_consolidate=True ) config = Config( model="gpt-4", memory_config=memory_config ) agent = HermesAgent(config) # Memory is automatically saved and loaded agent.chat("Remember that I prefer Python over JavaScript") # Later sessions will recall this preference ``` ## Working with Skills ### Creating a Custom Skill ```python from hermes_agent import Skill, SkillParameter # Define a custom skill web_scraper_skill = Skill( name="web_scraper", description="Scrape and extract structured data from websites", parameters=[ SkillParameter(name="url", type="string", required=True), SkillParameter(name="selectors", type="object", required=False) ], implementation=""" import requests from bs4 import BeautifulSoup def execute(url, selectors=None): response = requests.get(url) soup = BeautifulSoup(response.content, 'html.parser') if selectors: results = {} for key, selector in selectors.items(): results[key] = soup.select(selector) return results return soup.get_text() """ ) # Register skill with agent agent.register_skill(web_scraper_skill) ``` ### Loading Skills from Directory ```python from hermes_agent import HermesAgent, Config config = Config( model="gpt-4", skills_path="./my_custom_skills" ) agent = HermesAgent(config) # Agent automatically loads all skills from directory # Skills are available for use in conversations ``` ### Skill Auto-Evolution ```python from hermes_agent import HermesAgent, Config, LearningConfig learning_config = LearningConfig( auto_create_skills=True, skill_refinement=True, min_usage_for_creation=3 # Create skill after pattern used 3+ times ) config = Config( model="gpt-4", learning_config=learning_config ) agent = HermesAgent(config) # As agent performs repeated tasks, it automatically creates reusable skills agent.chat("Convert this JSON to CSV format") agent.chat("Convert this other JSON to CSV") agent.chat("And convert this JSON to CSV too") # After 3rd usage, Hermes creates a "json_to_csv" skill automatically ``` ## Tool Integration ### Registering External Tools ```python from hermes_agent import HermesAgent, Tool def search_api(query: str) -> dict: """Search using external API""" import os import requests api_key = os.getenv("SEARCH_API_KEY") response = requests.get( "https://api.example.com/search", params={"q": query, "key": api_key} ) return response.json() # Register as tool search_tool = Tool( name="web_search", description="Search the web for current information", function=search_api, parameters={ "query": {"type": "string", "description": "Search query"} } ) agent = HermesAgent(config) agent.register_tool(search_tool) ``` ### Built-in Tool Categories ```python from hermes_agent import HermesAgent, Config, ToolConfig tool_config = ToolConfig( enable_file_operations=True, enable_web_browsing=True, enable_code_execution=True, enable_shell_commands=False, # Disabled by default for security allowed_domains=["*.example.com", "api.trusted.com"] ) config = Config( model="gpt-4", tool_config=tool_config ) agent = HermesAgent(config) ``` ## Multi-Agent Orchestration ### Creating Agent Teams ```python from hermes_agent import HermesAgent, AgentTeam, Config # Create specialized agents researcher = HermesAgent(Config( model="gpt-4", system_prompt="You are a research specialist. Focus on gathering and analyzing information." )) coder = HermesAgent(Config( model="claude-3-5-sonnet-20241022", system_prompt="You are a coding specialist. Write clean, efficient code." )) writer = HermesAgent(Config( model="gpt-4", system_prompt="You are a technical writer. Create clear documentation." )) # Create team team = AgentTeam( agents=[researcher, coder, writer], coordinator=HermesAgent(Config( model="gpt-4", system_prompt="Coordinate agent activities and synthesize results." )) ) # Execute team task result = team.execute( "Research best practices for API design, implement a sample API, and document it" ) ``` ### Agent Communication ```python from hermes_agent import HermesAgent, AgentChannel # Create communication channel channel = AgentChannel() agent_a = HermesAgent(config) agent_b = HermesAgent(config) # Connect agents to channel agent_a.connect(channel) agent_b.connect(channel) # Agents can now share context and learnings agent_a.chat("Learn about Python async patterns") # agent_b automatically has access to what agent_a learned agent_b.chat("Use async patterns to build a web scraper") ``` ## Advanced Configuration ### Feedback Loop Customization ```python from hermes_agent import HermesAgent, Config, FeedbackConfig feedback_config = FeedbackConfig( enable_self_critique=True, reflection_frequency="after_task", # or "periodic", "never" quality_threshold=0.8, auto_correction=True ) config = Config( model="gpt-4", feedback_config=feedback_config ) agent = HermesAgent(config) ``` ### Constraints and Safety ```python from hermes_agent import HermesAgent, Config, ConstraintConfig constraints = ConstraintConfig( max_iterations=10, timeout_seconds=300, max_tool_calls_per_turn=5, blocked_operations=["rm -rf", "DROP TABLE"], require_approval_for=["file_delete", "api_payment"] ) config = Config( model="gpt-4", constraint_config=constraints ) agent = HermesAgent(config) ``` ### Memory Management ```python from hermes_agent import HermesAgent, Config config = Config(model="gpt-4") agent = HermesAgent(config) # Inspect memory episodic = agent.memory.get_episodic(last_n=10) semantic = agent.memory.get_semantic(topic="python programming") skills = agent.memory.get_skills() # Clear specific memory types agent.memory.clear_episodic() # Clear conversation history agent.memory.clear_semantic(topic="outdated_info") # Export/Import memory agent.memory.export("backup.json") agent.memory.import_from("backup.json") ``` ## Real-World Examples ### Personal Knowledge Assistant ```python from hermes_agent import HermesAgent, Config, MemoryConfig, ToolConfig memory_config = MemoryConfig( episodic_enabled=True, semantic_enabled=True, retention_days=365, auto_consolidate=True ) tool_config = ToolConfig( enable_file_operations=True, enable_web_browsing=True ) config = Config( model="gpt-4", memory_config=memory_config, tool_config=tool_config, system_prompt="""You are a personal knowledge assistant. Learn from all our interactions and help me recall information, make connections, and build on past conversations.""" ) agent = HermesAgent(config) # Over time, agent builds up knowledge about user preferences, projects, etc. agent.chat("I'm working on a new Python project for data analysis") # Days later... agent.chat("What was that project I mentioned last week?") ``` ### Development Automation Agent ```python from hermes_agent import HermesAgent, Config, ToolConfig, LearningConfig tool_config = ToolConfig( enable_code_execution=True, enable_file_operations=True, enable_shell_commands=True ) learning_config = LearningConfig( auto_create_skills=True, skill_refinement=True ) config = Config( model="claude-3-5-sonnet-20241022", tool_config=tool_config, learning_config=learning_config, system_prompt="You are a development automation specialist." ) agent = HermesAgent(config) # Agent learns common development patterns and creates skills agent.chat("Set up a new FastAPI project with PostgreSQL") agent.chat("Add authentication with JWT") agent.chat("Create CRUD endpoints for a User model") # Agent creates reusable skills for these common patterns ``` ### Content Creation Pipeline ```python from hermes_agent import HermesAgent, AgentTeam, Config researcher = HermesAgent(Config( model="gpt-4", system_prompt="Research topics and gather information.", tool_config=ToolConfig(enable_web_browsing=True) )) writer = HermesAgent(Config( model="claude-3-5-sonnet-20241022", system_prompt="Create engaging, well-structured content." )) editor = HermesAgent(Config( model="gpt-4", system_prompt="Review and refine content for clarity and quality." )) team = AgentTeam(agents=[researcher, writer, editor]) # Automated content pipeline result = team.execute( "Create a comprehensive blog post about Hermes Agent framework" ) ``` ## CLI Usage If Hermes provides a command-line interface: ```bash # Start interactive session hermes chat # With specific model hermes chat --model gpt-4 # Load skills from directory hermes chat --skills ./my_skills # Enable debug mode hermes chat --debug # One-off command hermes exec "analyze this CSV: data.csv" # Manage memory hermes memory export backup.json hermes memory import backup.json hermes memory clear --episodic # List learned skills hermes skills list # Export a skill hermes skills export web_scraper > web_scraper.py ``` ## Troubleshooting ### Memory Not Persisting ```python # Ensure memory path is writable import os from hermes_agent import HermesAgent, Config memory_path = "./hermes_memory" os.makedirs(memory_path, exist_ok=True) config = Config( model="gpt-4", memory_path=memory_path, auto_save=True # Enable automatic saving ) agent = HermesAgent(config) ``` ### Skills Not Loading ```python # Verify skills directory structure from hermes_agent import HermesAgent, Config config = Config( model="gpt-4", skills_path="./skills", debug=True # Enable debug logging ) agent = HermesAgent(config) # Check loaded skills print(agent.list_skills()) ``` ### High Token Usage ```python from hermes_agent import HermesAgent, Config, MemoryConfig # Optimize memory retrieval memory_config = MemoryConfig( max_episodic_context=5, # Limit conversation history semantic_relevance_threshold=0.7, # Only retrieve relevant memories consolidation_frequency="daily" # Compress old memories )
在 GitHub 查看
这个 SKILL.md 很大,SkillsMP 这里只预览前一段内容。 在 GitHub 查看