docs.rs failed to build hippox-0.5.0
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
Visit the last successful build:
hippox-0.3.9
π Quick Links
| Resource | Link |
|---|---|
| π Website | https://hippox.vercel.app/ |
| π Documentation | https://hippox-docs-en.vercel.app/ |
| π¦ Crates.io | https://crates.io/crates/hippox |
| π» GitHub | https://github.com/0xhappyboy/hippo |
Basic Usage
use ;
use ModelProvider;
async
Hippox Core Working Principle
Natural Language
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
HIPPOX NATURAL LANGUAGE ARCHITECTURE (English)
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β INPUT LAYER β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β User Input: "Calculate 2+3 and save the result to result.txt" β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β
β βΌ β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Hippox::handle_natural_language(input, callback) β β
β β β Returns task_id immediately, executes async in background β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β SCHEDULER LAYER: Skill Selection β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β SkillScheduler::select_skill(user_input) β β
β β β β
β β Method 1: Trigger Matching (keywords) β β
β β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β
β β β "calculate" β math_calculator β "save" β file_write β β β
β β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β
β β β if no match β β
β β Method 2: LLM Intelligent Selection β β
β β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β
β β β Prompt: Skills Registry + User Input β LLM β {"action": "calc"} β β β
β β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β EXECUTION LAYER: Workflow Modes β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β ββββββββββββββ ββββββββββββββ ββββββββββββββ ββββββββββββββββββ β
β β ReAct β β Batch β β Chain β β PlanAndExecute β β
β β (default) β β Parallel β β Variable β β DAG + Cond β β
β β Use for: β β Use for: β β Use for: β β Use for: β β
β β Open-endedβ β Independentβ β Pipeline β β Complex Deps β β
β ββββββββββββββ ββββββββββββββ ββββββββββββββ ββββββββββββββββββ β
β β
β This example uses ReAct mode: β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Iteration 1: Think β {"action": "math_calculator", "params": {...}} β β
β β Act β Execute β Returns "5" β β
β β Observe β Result: 5, still need to save β β
β β β β
β β Iteration 2: Think β {"action": "file_write", "params": {...}} β β
β β Act β Execute β Returns "Saved" β β
β β Observe β Task complete β β
β β β β
β β Iteration 3: Think β {"action": "done", "message": "2+3=5, saved"} β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β ATOMIC SKILLS LAYER β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β SKILL REGISTRY β β
β β βββββββββ βββββββββ βββββββββ βββββββββ βββββββββ βββββββββ β β
β β βmath_ β βfile_ β β net_ β β time_ β βsystem_β β db_ β β β
β β βcalc β βwrite β βhttp β βnow β βinfo β βquery β β β
β β βpower β βread β βping β βformat β βexec β βredis β β β
β β βstats β βdelete β βdns β βparse β βport β βk8s β β β
β β βββββββββ βββββββββ βββββββββ βββββββββ βββββββββ βββββββββ β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β Execute: registry::get_skill("math_calculator") β execute(params) β "5" β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β OUTPUT LAYER β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Final Output: "2+3=5, saved to result.txt" β β
β β β β
β β Callbacks triggered: β β
β β β’ on_step_start() β Step started β β
β β β’ on_step_success() β Step succeeded, took XXms β β
β β β’ on_workflow_complete() β Workflow done, total XXms β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Features: Async Task Pool β Priority Queue β Timeout β Pause/Resume β Retry β I18n
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
SKILL.md
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
HIPPOX SKILL.md WORKFLOW ARCHITECTURE (English)
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β INPUT LAYER: SKILL.md File β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β ./skills/web-search/SKILL.md β β
β β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β --- ββ β
β β β name: web-search ββ β
β β β description: Search the web using a search engine ββ β
β β β version: 1.0.0 ββ β
β β β author: lobster-team ββ β
β β β triggers: ββ β
β β β patterns: ["search for", "find online", "google"] ββ β
β β β case_sensitive: false ββ β
β β β allowed_tools: ["net_httprequest", "json"] ββ β
β β β parameters: ββ β
β β β - name: query ββ β
β β β type: string ββ β
β β β description: Search keywords ββ β
β β β required: true ββ β
β β β - name: limit ββ β
β β β type: integer ββ β
β β β default: 10 ββ β
β β β metadata: ββ β
β β β emoji: π ββ β
β β β os: [linux, macos, windows] ββ β
β β β --- ββ β
β β β # Search Execution Workflow ββ β
β β β ββ β
β β β 1. Parse user's search query ββ β
β β β 2. Call search API: net_httprequest ββ β
β β β 3. Parse JSON response ββ β
β β β 4. Format and return results ββ β
β β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β
β βΌ β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Hippox::handle_skill_md(path, params, callback) β β
β β β SkillLoader::load_from_path() parses YAML frontmatter + Markdown β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β PARSING LAYER: SkillFile Structure β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β pub struct SkillFile { β β
β β name: String, // "web-search" β β
β β description: String, // "Search the web..." β β
β β triggers: Option<SkillTrigger>, // Trigger configuration β β
β β allowed_tools: Vec<String>, // ["net_httprequest", "json"] β β
β β parameters: Vec<SkillParameter>, // Parameter definitions β β
β β instructions: String, // Markdown execution instructions β β
β β metadata: Option<SkillFrontmatterMetadata>, // Extended metadata β β
β β path: PathBuf, // Original file path β β
β β } β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β EXECUTION LAYER: WorkflowExecutor executes SKILL.md β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β WorkflowExecutor::execute_skill_md(skill_file, params) β β
β β β β
β β Step 1: Parameter Substitution β β
β β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β
β β β params = {"query": "Rust programming", "limit": 5} β β β
β β β {{query}} in instructions β "Rust programming" β β β
β β β {{limit}} in instructions β "5" β β β
β β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β
β β β β
β β Step 2: Build Enhanced Prompt β β
β β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β
β β β instructions + atomic skills list + instances list β full promptβ β β
β β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β
β β β β
β β Step 3: Execute based on configured workflow mode β β
β β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β
β β β match workflow_mode { β β β
β β β ReAct β execute_react() // Complex reasoning β β β
β β β Batch β execute_batch() // Parallel independent tasks β β β
β β β Chain β execute_chain() // Pipeline processing β β β
β β β PlanAndExecute β execute_plan_and_execute() // Complex depsβ β β
β β β } β β β
β β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β ATOMIC SKILLS INVOCATION LAYER β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β LLM generates calls based on instructions: β β
β β β β
β β {"action": "net_httprequest", "parameters": { β β
β β "url": "https://api.search.com?q=Rust+programming", β β
β β "method": "GET" β β
β β }} β β
β β β β
β β Executor executes β returns search results JSON β β
β β β β
β β LLM continues β formats results β β
β β β β
β β {"action": "done", "message": "Found these results about Rust:\n1. "} β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
SKILL.md Benefits: Community Contribution β Versioning β Auto-triggers β Permissions
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
How skill loaders and schedulers work
Task Pool
State Machine
Pending βββΊ Running βββΊ Completed
β β
β ββββΊ Paused βββΊ Running (resume)
β β
β ββββΊ Cancelled
β
ββββΊ Cancelled
β
ββββΊ Failed βββΊ Pending (retry)
Architecture
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Global Static (Auto-Start) β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β GLOBAL_TASK_POOL β β
β β (Initialized at program load) β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Hippox Instance β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β TaskPool (Global) β β
β β βββββββββββ βββββββββββ βββββββββββ β β
β β βTask A β βTask B β βTask C β β β
β β βPending β βRunning β βPending β β β
β β ββββββ¬βββββ ββββββ¬βββββ ββββββ¬βββββ β β
β β ββββββββββββββΌβββββββββββββ β β
β β βΌ β β
β β βββββββββββββββββββββββ β β
β β β Priority Queue β β β
β β β [Task A, Task C] β β β
β β ββββββββββββ¬βββββββββββ β β
β β β β β
β β βΌ β β
β β βββββββββββββββββββββββ β β
β β β Execution Engine β (max: 10 workers) β β
β β β ββββββ ββββββ ββββββ β β
β β β β W1 β β W2 β β W3 β ... β β
β β β ββββ¬ββ ββββ¬ββ ββββ¬ββ β β
β β β ββββββββΌβββββββ β β
β β β βΌ β β
β β β βββββββββββββββββββ β β
β β β β ExecutableTask β β β
β β β β .execute() β β β
β β β βββββββββββββββββββ β β
β β βββββββββββββββββββββββ β β
β β β² β β
β β ββββββββββββ΄βββββββββββ β β
β β β Notifier (wakeup) β β β
β β βββββββββββββββββββββββ β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β ExecutableTask Implementations β β
β β βββββββββββββββββββββββ βββββββββββββββββββββββ β β
β β β NaturalLanguageTask β β SkillMdTask β β β
β β β β’ input β β β’ path β β β
β β β β’ workflow_executor β β β’ params β β β
β β β β’ scheduler β β β’ workflow_executor β β β
β β β β’ skills_registry β β β’ scheduler β β β
β β β β’ instances_registryβ β β’ skills_registry β β β
β β βββββββββββββββββββββββ βββββββββββββββββββββββ β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β External APIs β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β handle_natural_language() β task_id (non-blocking) β
β handle_skill_md() β task_id (non-blocking) β
β get_task_status() / cancel() / pause() / resume() / retry() β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Architectural Layering
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β User Layer β
β handle_natural_language() β
β handle_skill_md() β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Workflow Layer β
β WorkflowExecutor (ReAct / Batch / Chain / PlanAndExecute) β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Scheduling Layer β
β SkillScheduler (LLM Interaction, Skill Selection, Fallback)β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Execution Layer β
β Executor (Parse LLM Response, Route to Skills) β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Registry Layer β
β Registry (Skill Registration, Instance Configs) β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Data Stream
1. Initialize Hippox
βββ Load configuration (instance configs)
βββ Generate skills_registry (cached)
βββ Generate instances_registry (cached)
βββ Generate welcome_message (cached)
2. First Conversation
βββ is_first_message = false β true
βββ Send welcome_message (includes both registries)
βββ LLM knows all skills and instances
3. Subsequent Conversations
βββ is_first_message = true β no longer sent
βββ Reuse cached registries
Workflow Model
| Mode | Enum Value | Core Features | LLM Calls | Use Cases |
|---|---|---|---|---|
| ReAct | WorkflowMode::ReAct | Think β Act β Observe loop, LLM decides next step after each execution | 1 per skill + 1 final response | Open-ended tasks, dynamic decision making, error recovery |
| Batch | WorkflowMode::Batch | Execute multiple independent skills in parallel | 1 (generates batch plan) | Independent operations, bulk processing |
| Chain | WorkflowMode::Chain | Sequential execution with variable passing ({{variable}} syntax) | 1 (generates chain) | Linear pipelines, data transformation chains |
| PlanAndExecute | WorkflowMode::PlanAndExecute | One-time planning with conditional branching, variable references ({"$ref":"var"}), error handling (retry/skip/fail) | 1 plan + optional dynamic decisions | Complex workflows, conditional logic, deterministic tasks |
Atomic Skill Unit List
| Category | Skills | Description |
|---|---|---|
| File System | 5 skills | Read, write, delete, list, copy files |
| Archive | 5 skills | Create/extract ZIP/TAR archives, compress files |
| Math | 4 skills | Expression calculator, power/root, statistics, unit conversion |
| Crypto/Random | 10 skills | MD5, SHA256, SHA512, file hash, Base64 encode/decode, random number/string/uuid/password |
| Time | 1 skill | Get current date/time |
| Network | 20 skills | HTTP requests, URL fetch, ICMP/TCP/batch ping, DNS lookup/reverse/batch/test, IP info/validate/range/local, TCP/UDP send/receive/broadcast, FTP upload/download/list/delete |
| OS Management | 18 skills | Reboot, shutdown, sleep, lock, logout, hibernate, uptime, load average, hostname, time, user info, disk/memory/CPU/network/battery info, desktop notification |
| Process | 6 skills | List, kill (by PID/name), check running, get PID, detailed process info |
| System | 7 skills | System info, exec command, port scan/lookup/test, clipboard get/set/clear |
| Document | 11 skills | Markdown, CSV, XML, Excel, PDF read/write/parse |
| Messaging | 5 skills | Email, Telegram, DingTalk, Feishu, WeCom |
| Database | 12 skills | PostgreSQL, MySQL, Redis, SQLite query/execute/list |
| Text Processing | 4 skills | Diff, sort, deduplicate, filter |
| Regex | 4 skills | Match, find, replace, extract |
| K8s | 18 skills | Pod/deployment/service/node/namespace/event/configmap/secret/ingress/statefulset management, logs, exec, scale, restart, port-forward, apply YAML, delete |
| Docker | 5 skills | List, start/stop, logs, inspect, exec |
| GitHub | 7 skills | Get repo, create/list issues, star, search, get user, list PRs |
| Task Scheduler | 3 skills | Schedule, unschedule, list tasks |
| Image Processing | 6 skills | Resize, convert, info, rotate, crop, compress |