能力标签
开源AI工作流
⚙️
Agent工作流

开源AI工作流

基于 Rust · 无代码搭建完整 AI 自动化流程
英文名:opencrabs
⭐ 770 Stars 🍴 74 Forks 💻 Rust 📄 MIT 🏷 AI 8.0分
8.0AI 综合评分
agent-orchestrationagentic-aiautonomous-agents
✦ AI Skill Hub 推荐

经 AI Skill Hub 精选评估,开源AI工作流 获评「强烈推荐」。这款Agent工作流在功能完整性、社区活跃度和易用性方面表现出色,AI 评分 8.0 分,适合有一定技术背景的用户使用。

📚 深度解析

开源AI工作流 是一套完整的 AI Agent 自动化工作流方案。随着 AI 能力的不断提升,基于 Agent 的自动化工作流正在成为提升个人和团队效率的核心方式。区别于传统的 RPA 自动化(模拟鼠标键盘操作),AI Agent 工作流通过理解任务意图、动态规划执行路径,能够处理更复杂的非结构化任务。

开源AI工作流 工作流的设计遵循"最小配置,最大复用"原则:核心逻辑已经封装好,用户只需配置自己的 API Key 和业务参数即可快速上手。工作流内置错误处理和重试机制,在网络波动或 API 限速等情况下仍能稳定运行,适合作为生产环境的自动化基础设施。

在实际部署时,建议先在测试环境中运行 3-5 次,验证各个环节的输出结果符合预期,再部署到生产环境。AI Skill Hub 评分 8.0 分,是同类 Agent 工作流中的精选推荐。

📋 工具概览

开源AI工作流 是一套完整的 AI Agent 自动化工作流方案。通过可视化的节点编排,将复杂的多步骤任务拆解为清晰的自动化流程,实现全程无人值守的智能处理。支持与数百种外部服务和 API 无缝集成,适合构建数据处理管线、业务自动化和 AI 辅助决策系统。

GitHub Stars
⭐ 770
开发语言
Rust
支持平台
Windows / macOS / Linux
维护状态
正常维护,社区驱动
开源协议
MIT
AI 综合评分
8.0 分
工具类型
Agent工作流
Forks
74

📖 中文文档

以下内容由 AI Skill Hub 根据项目信息自动整理,如需查看完整原始文档请访问底部「原始来源」。

开源AI工作流 是一套完整的 AI Agent 自动化工作流方案。通过可视化的节点编排,将复杂的多步骤任务拆解为清晰的自动化流程,实现全程无人值守的智能处理。支持与数百种外部服务和 API 无缝集成,适合构建数据处理管线、业务自动化和 AI 辅助决策系统。

📌 核心特色
  • 可视化 Agent 工作流编排,无需编写复杂代码
  • 支持多步骤自动化任务链,实现全流程无人值守
  • 与外部 API、数据库和第三方服务无缝集成
  • 内置错误处理与自动重试机制,保障稳定运行
  • 提供可复用的自动化模板,快速在同类场景部署
🎯 主要使用场景
  • 自动化日常重复性工作,将精力集中于创造性任务
  • 构建数据采集 → 处理 → 输出的完整自动化管线
  • 实现跨平台、跨系统的数据流转和业务协同
以下安装命令基于项目开发语言和类型自动生成,实际以官方 README 为准。
安装命令
# 方式一:cargo install(推荐)
cargo install opencrabs

# 方式二:从源码编译
git clone https://github.com/adolfousier/opencrabs
cd opencrabs
cargo build --release
# 二进制在 ./target/release/opencrabs
📋 安装步骤说明
  1. 访问 GitHub 仓库获取工作流文件
  2. 在对应平台(Dify / Flowise / Make 等)中找到「导入工作流」功能
  3. 上传工作流文件
  4. 按照提示配置必要的环境变量和 API Key
  5. 运行测试确认流程正常后投入使用
以下用法示例由 AI Skill Hub 整理,涵盖最常见的使用场景。
常用命令 / 代码示例
# 查看帮助
opencrabs --help

# 基本运行
opencrabs [options] <input>

# 详细使用说明请查阅文档
# https://github.com/adolfousier/opencrabs
以下配置示例基于典型使用场景生成,具体参数请参照官方文档调整。
配置示例
# opencrabs 配置说明
# 查看配置选项
opencrabs --config-example > config.yml

# 常见配置项
# output_dir: ./output
# log_level: info
# workers: 4

# 环境变量(覆盖配置文件)
export OPENCRABS_CONFIG="/path/to/config.yml"
📑 README 深度解析 真实文档 完整度 74/100 查看 GitHub 原文 →
以下内容由系统直接从 GitHub README 解析整理,保留代码块、表格与列表结构。

简介

Rust Rust Edition Ratatui Docker CI GitHub Stars

<a href="https://trendshift.io/repositories/22468?utm_source=trendshift-badge&amp;utm_medium=badge&amp;utm_campaign=badge-trendshift-22468" target="_blank" rel="noopener noreferrer"><img src="https://trendshift.io/api/badge/trendshift/repositories/22468/daily?language=Rust" alt="adolfousier/opencrabs — Trendshift #3 Repository Of The Day, Rust" width="250" height="55"/></a> <a href="https://trendshift.io/repositories/22468?utm_source=trendshift-badge&amp;utm_medium=badge&amp;utm_campaign=badge-trendshift-22468" target="_blank" rel="noopener noreferrer"><img src="https://trendshift.io/api/badge/trendshift/repositories/22468/weekly?language=Rust" alt="adolfousier/opencrabs — Trendshift #20 Repository Of The Week, Rust" width="250" height="55"/></a>

🎯 Core Features

Agent Capabilities

FeatureDescription
| **Full Terminal Access** | 30+ built-in tools (file I/O, glob, grep, web search, code execution, image gen/analysis, memory search,

Getting Started

Latency (criterion, release build)

cargo bench --bench memory, in-memory SQLite: FTS search 2.57 ms at 50 docs, vector search 1.02 ms, hybrid RRF fusion 3.49 ms, indexing 214 µs per file. Full tables in the Development section.

---

🎬 Demo

https://github.com/user-attachments/assets/7f45c5f8-acdf-48d5-b6a4-0e4811a9ee23

config.toml

[image.vision] enabled = true model = "gemini-3.1-flash-image-preview" provider = "openrouter" # Optional: force vision to use a specific provider (bypasses enabled gate)

toml

keys.toml ← the Gemini key MUST live here, NOT in config.toml

[image] api_key = "YOUR_GEMINI_KEY"


> **Gotcha:** `[image.vision] api_key = "..."` in `config.toml` is silently ignored — the field carries `#[serde(skip)]` for security. Use `keys.toml` `[image]` section, or `[providers.image.gemini]` in config.toml + the key in keys.toml.

> **Pinning vision to a provider:** set `[providers.fallback] vision = ["name"]` to try that provider first for `analyze_image` and `analyze_video`, regardless of its `enabled` flag (vision needs only `vision_model` plus a key). Names follow the same rule as every other provider key: the bare section name, so `[providers.custom.myprovider]` is `"myprovider"`. An entry that does not resolve is skipped with a warning and resolution falls through to the normal provider scan. There is no `[image.vision] provider` key; that section configures the Gemini backend only.

**Diagnostic:** when vision is unavailable for any reason, `is_vision_available` logs the exact cause at INFO level in `~/.opencrabs/logs/opencrabs.YYYY-MM-DD` — search for `target=vision`.

#### Context window & auto-compaction (effectively unlimited memory)

OpenCrabs never makes you start a fresh session to "clear context." Instead it auto-compacts: as a session's history approaches the model's context window, it summarizes the older turns in place and keeps going. Two tiers:

- **65% — soft trigger:** spawns a background LLM compaction that summarizes history back down to ~65% of the budget. Non-blocking — the conversation keeps streaming.
- **90% — hard trigger:** synchronous compaction before the next request, so a single turn can never overflow the window.

The triggers are **percentages of the effective window**, so they scale to whatever you set: at the 200k default compaction kicks in around 130k; at a 1M window, around 650k.

It's **transparent** — most of the time you won't notice it happen at all. Occasionally you'll catch a brief inline notice while it summarizes (the agent tends to mention it dynamically, in its own voice), then the conversation carries on with the older turns condensed. You never have to start over or manually clear anything.

**The budget defaults to 200,000 tokens** — the battle-tested sweet spot: large enough for long sessions, small enough to keep each request fast and cheap. Override it **per provider** in `config.toml`:
toml [providers.xiaomi] context_window = 1000000 # raise the budget; compaction still triggers at 65% / 90% of it

[providers.anthropic] context_window = 1000000 # native providers too — Anthropic, Gemini, and the CLI providers


This override works for **every provider** — OpenAI-compatible (custom, xiaomi, qwen, openrouter, minimax, …) and the native Anthropic, Gemini, and CLI providers. A provider with no override inherits the 200k default.

> **Sizing guidance.** 200k is the battle-tested sweet spot for essentially **every cloud model**. Going bigger has two real downsides — **cost** and **context loss**:
>
> - **Cost** is the lesser one, and it's softened by caching: OpenCrabs uses prompt caching across every caching-capable provider (currently averaging ~87% efficiency), and a long context is mostly an unchanged prefix served from cache — so a bigger window costs far less than the raw token count suggests.
> - **Context loss** is the one to watch: most models degrade as the window fills — they lose track of the middle and recall less reliably. Only the latest SOTA models hold large context robustly: closed (Opus 4.7 / 4.8, Fable 5, GPT-5.5, Gemini 3.1, …) or open (Qwen 3.7, Kimi K2.7, MiMo V2.5, GLM 5.2, DeepSeek V4, and the newer releases that keep coming from these and other labs). So raise `context_window` mainly on those frontier models; on anything older or smaller, staying near 200k keeps answers sharper.
>
> **Local models want less:** 128k is a good sweet spot — go **lower** if your machine is tight on resources or you start noticing hallucinations/fabrications, and **higher** only if you have more than 32GB of RAM and have tested your model at a larger window. Not sure what fits your setup? Reach out to Adolfo for suggestions/support, or open a [GitHub discussion](https://github.com/adolfousier/opencrabs/discussions).
>
> **Leave auto-compaction on** — it's been battle-tested over months and needs no babysitting. Only run a *manual* compaction (the `/compact` command) if you have a specific, strong reason to summarize early; otherwise let it manage itself.

#### Prompt caching (every caching-capable provider)

A long context is mostly a **stable prefix** — system prompt, brain files, earlier turns rarely change between requests. OpenCrabs caches that prefix wherever the provider supports it, so you pay full price for it once and a fraction on every reuse. Across real usage it's currently averaging **~87% cache efficiency**, which you can watch live in the **Cache Efficiency** card of `/usage`. This is the main reason a larger `context_window` costs far less than its raw token count suggests.

How it turns on depends on the provider:

- **Anthropic** — native prompt caching, on by default: the `cache_control: ephemeral` markers and the caching beta header are added automatically to the system prompt and tools.
- **OpenAI / OpenAI-compatible** — OpenAI caches automatically server-side. **OpenRouter caches by default too** — OpenCrabs enables it automatically, so there's no flag to discover; set `cache_enabled = false` only if you specifically want to opt out.
- **Qwen / Alibaba** — auto-enabled, zero-config (detected by endpoint or a `qwen-` model name; unlocks Alibaba's explicit context cache, ~90% off on hits). See the Qwen note further below.
- **Xiaomi (MiMo)** — caches automatically server-side; nothing to configure.
toml [providers.openrouter] enabled = true

Reference

Messaging Integrations

FeatureDescription
**Telegram Bot**Full-featured Telegram bot — owner DMs share TUI session, groups get isolated per-group sessions (keyed by chat ID). Photo/voice support (STT transcribes incoming voice notes; TTS replies as OGG/Opus voice notes via send_voice when input was audio). Allowed user IDs, allowed chat/group IDs, per-group allow lists ([channels.telegram.groups.<id>]), respond_to filter (all/dm_only/mention/auto, global or per-group). Passive group message capture — all messages stored for context even when bot isn't mentioned
**Telegram Userbot (experimental)**Feature-gated, opt-in, receive-only MTProto companion. Experimental: merged from #1209 without a maintainer-side live login yet; expect rough edges. Local QR/code/2FA login; allowlisted text is passively stored under telegram-userbot for explicit retrieval through channel_search. Empty allowed_chats is dry mode. It does not invoke the agent or send/edit/react as the user.
**WhatsApp**Pair by scanning a QR code from the TUI: first-run onboarding, or /onboard:channels then select WhatsApp. The QR is shown in the terminal. You run the bot AS whatever account you scan — your own number (talk via "Message Yourself") or any other number you own, including a WhatsApp Business account, to serve that account's incoming DMs. response_policy (auto/owner_only/allowlist/open) decides who it answers; the paired account's self-chat and bot_owner operator are always allowed. Text + image + voice (STT transcribes incoming voice notes; TTS replies as voice notes when input was audio and tts_enabled=true). Per-phone sessions, session persists across restarts
**Discord**Full Discord bot — text + image + voice. Owner DMs share TUI session, guild channels get isolated per-channel sessions. Allowed user IDs, allowed channel IDs, respond_to filter. Tool calls render as ONE grouped message per turn, collapsed to a summary with an Expand/Collapse button, edited in place as tools run — Slack parity. Reacting to a bot message becomes an agent turn (approval emoji = keep going with a silent react-back, stop emoji = pause and ask), and the agent reacts back via its <<react:EMOJI>> marker. Multiple generated files batch into one gallery-style message. Interactive components: select menus (discord_send with action=select_menu), modal forms (action=modal), component TTL with auto-cleanup, role-based access control, forum thread creation. Full proactive control via discord_send (17 actions): send, reply, react, unreact, edit, delete, pin, unpin, create_thread, send_embed, get_messages, list_channels, add_role, remove_role, kick, ban, send_file. Generated images sent as native Discord file attachments
**Slack**Full Slack bot via Socket Mode — owner DMs share TUI session, channels get isolated per-channel sessions. Text + image + voice (STT transcribes incoming audio attachments; TTS replies upload an OGG/Opus audio file via Slack's external upload flow — renders inline with waveform UI — when input was audio and tts_enabled=true). Allowed user IDs, allowed channel IDs, respond_to filter. Tool calls render as ONE grouped message per turn, collapsed to a summary with an Expand/Collapse button (Block Kit), edited in place as tools run — Telegram parity. Reacting to a bot message becomes an agent turn (approval emoji = keep going with a silent react-back, stop emoji = pause and ask), and the agent reacts back via its <<react:EMOJI>> marker. All file uploads (generated docs/images, TTS audio) use Slack's supported external upload flow (files.getUploadURLExternal + completeUploadExternal) with real MIME types. Full proactive control via slack_send (17 actions): send, reply, react, unreact, edit, delete, pin, unpin, get_messages, get_channel, list_channels, get_user, list_members, kick_user, set_topic, send_blocks, send_file. Generated images sent as native Slack file uploads. Bot token + app token from api.slack.com/apps (Socket Mode required). **Required Bot Token Scopes:** chat:write, channels:history, groups:history, im:history, mpim:history, users:read, files:read, files:write, reactions:write, app_mentions:read
**Trello**Tool-only by default — the AI acts on Trello only when explicitly asked via trello_send. Opt-in polling via poll_interval_secs in config; when enabled, only @bot_username mentions from allowed users trigger a response. Full card management via trello_send (22 actions): add_comment, create_card, move_card, find_cards, list_boards, get_card, get_card_comments, update_card, archive_card, add_member_to_card, remove_member_from_card, add_label_to_card, remove_label_from_card, add_checklist, add_checklist_item, complete_checklist_item, list_lists, get_board_members, search, get_notifications, mark_notifications_read, add_attachment. API Key + Token from trello.com/power-ups/admin, board IDs and member-ID allowlist configurable

File & Media Input Support

When users send files, images, or documents across any channel, the agent receives the content automatically — no manual forwarding needed. Example: a user uploads a dashboard screenshot to a Trello card with the comment "I'm seeing this error" — the agent fetches the attachment, passes it through the vision pipeline, and responds with full context.

ChannelImages (in)Text files (in)Documents (in)Audio (in)Audio reply (out)Image gen (out)
**Telegram**✅ vision pipeline✅ extracted inline✅ / PDF note✅ STT✅ TTS via send_voice (OGG/Opus)✅ native photo
**WhatsApp**✅ vision pipeline✅ extracted inline✅ / PDF note✅ STT✅ TTS via upload + audio_message (OGG/Opus, ptt=true)✅ native image
**Discord**✅ vision pipeline✅ extracted inline✅ / PDF note✅ STT✅ TTS as response.ogg attachment✅ file attachment
**Slack**✅ vision pipeline✅ extracted inline✅ / PDF note✅ STT✅ TTS via external upload flow (OGG/Opus, inline waveform)✅ file upload
**Trello**✅ card attachments → vision✅ extracted inline✅ card attachment + embed
**TUI**✅ paste path → vision✅ paste path → inline✅ STT— (terminal has no native audio)[IMG: name] display

Images are passed to the active model's vision pipeline if it supports multimodal input, or routed to the analyze_image tool (Google Gemini vision) otherwise. Text files (.txt, .md, .json, .csv, source code, etc.) are extracted as UTF-8 and included inline up to 8 000 characters — in the TUI simply paste or type the file path.

Videos uploaded on any channel (mp4, m4v, mov, webm, mkv, avi, 3gp, flv) auto-route to analyze_video when image.vision.enabled = true with a Gemini API key. The TUI also detects pasted video paths and labels them Video #N in the attachment indicator. Provider-side limits to keep in mind: Gemini's inline-bytes mode caps at ~20 MB (we use ≤18 MB), and the resumable Files API supports up to 2 GB / ~1 hour videos. Channel-side limits are tighter — Telegram's Bot API hard-caps getFile downloads at 20 MB even though chats accept larger uploads, so videos over that size will get a friendly "compress to under 20 MB and resend" reply. Slack file downloads use the bot token (files:read scope) and inherit the workspace's per-file upload cap. Frame-extraction fallback for non-Gemini providers is not yet wired — without a Gemini key, video uploads return an "unsupported" notice.

Telegram rich message formatting

When a Telegram reply carries structured Markdown (tables, headings, lists, - [ ] task lists, fenced code, or math), OpenCrabs can render it natively using Telegram's rich messages (Bot API 10.1) — real tables, real section headings, real checkboxes — instead of plain text or basic HTML.

This is on by default via channels.telegram.rich_messages. The one caveat: native rich messages are unreadable on Telegram Web and older clients — those show a "this message is not supported, update Telegram" placeholder, and the rich API has no text fallback. If your audience runs outdated clients, disable it in the onboarding dialog (the "Rich text experience" checkbox) or ask the agent: /onboard:channels telegram richtext off. With the flag off, the universal HTML rendering is used — tables come out as aligned monospace grids, task items as /, with proper paragraph spacing, so structured replies look decent on every client.

When enabled, native rich applies to the agent's reply (sent as a fresh rich message so it renders cleanly) and to proactive telegram_send messages. Plain-prose replies are left untouched, so incidental characters like a stray * or # are never reinterpreted. If the rich send fails for any reason, OpenCrabs falls back silently to HTML, so a message is never dropped.

Flow logs (processing-log messages showing tool calls and intermediate text) also use the rich API when enabled, supporting 32K characters instead of HTML's 4K limit. Long tool chains fit in a single message without splitting. If the rich send fails, flow logs fall back to HTML rendering. The block auto-freezes at 30K characters to stay within limits.

/cowork — Telegram-only workspace creation

The /cowork command creates a team workspace directly from Telegram. It is Telegram-only because it relies on Telegram-specific primitives: group creation via ?startgroup deep links, invite links, QR codes from t.me URLs, and new_chat_members service messages for auto-registration. None of these exist in Discord, Slack, or WhatsApp.

Prerequisite: Telegram must be configured (bot token set via /onboard:channels telegram or manual config.toml setup).

Flow: 1. Owner sends /cowork in DM (owner-only command) → bot replies with an Add to Group inline button 2. Owner taps it → Telegram's native group picker opens. The deep link requests admin rights inline (?startgroup=cowork_<id>&admin=invite_users+delete_messages+pin_messages+manage_chat), so the bot is added already promoted to admin — no manual promotion step. Always keep the bot as admin: an admin bot reads every message regardless of privacy mode and can create invite links. 3. On joining via cowork, the bot sets that group's open = true (persisted) so every member is allowed — existing and new, no per-user step — and posts a short welcome. If it somehow landed without admin, the welcome also nudges the owner to promote it. 4. Members are auto-registered in an open group: joining members are added to the group's own allowlist ([channels.telegram.groups.<chat_id>].allowed_users) on join, and anyone who was already in the group before the bot can send /start to be tracked. This is group-scoped only — members can chat in that group (@mention the bot) but cannot DM it privately unless also on the global allowed_users or bot_owner. Already in the group and want to open it without re-adding the bot? Send /cowork inside the group (owner-only). 5. /start in a DM never auto-registers (DMs are invite-only): the bot just returns the sender's Telegram ID so they can share it with the owner to be added (or add it to config.toml when self-hosting). /start in a non-open group likewise returns the ID and points the user to ask the owner to run /cowork. The owner's own /start in a group is silent — they are already allowed everywhere.

Cross-channel behavior: /cowork works from any surface. In Telegram DMs, the native flow activates directly. From the TUI, Discord, Slack, or WhatsApp, the agent calls the cowork_connect tool which mints a session, registers it with the bot, and returns the t.me deep link plus a scannable QR code PNG. The TUI shows the clickable link; channels deliver the QR as a photo.

Telegram group security model

When allowed_users is configured, the bot enforces a strict allowlist on all incoming messages. The behavior differs between DMs and groups:

In DMs: - Non-allowed users always get a reply: "You are not authorized. Send /start to get your user ID." — so they know what to do.

In groups: - Non-allowed users get silently dropped (no reply, no processing) for normal messages. - If the user explicitly @mentions or replies to the bot, they get the "not authorized" reply — so they know they need to be added. - /start in an open group (open = true, see Per-group access control) registers the sender into that group's allowlist and confirms. In a non-open group it returns the sender's ID and tells them to ask the owner to run /cowork or add them — it never silently self-adds. The owner's /start (which Telegram auto-fires when the bot is added) is silent.

This prevents the bot from spamming "not authorized" in active groups where most members aren't on the allowlist. The bot only engages with non-allowed users when they explicitly reach out.

Config:

[channels.telegram]
allowed_users = ["123456789"]    # Only these users can interact
respond_to = "mention"           # Bot only responds to @mentions in groups
silence_group_start = true       # Silently ignore /start from non-allowed users in groups

Bot owner and owner-only commands

Every channel has a bot_owner field ([channels.telegram], [channels.discord], [channels.slack], [channels.whatsapp], [channels.trello]). It names the user ID(s) (phone for WhatsApp) treated as the bot owner. On first-run setup the owner is seeded automatically from the first entry in your allow list (allowed_users, or allowed_phones for WhatsApp), and existing configs are migrated on load. Set bot_owner explicitly to pin the owner instead of relying on list order.

The owner gets access that other allowlisted users do not. All channel commands except /new are owner-only: /compact, /doctor, /evolve, /help, /models, /rtk, /sessions, /stop, /usage, /profiles, /goal, /mission-control, /rename, /cd, /respond_to, /redact, /restart, /exit. /new stays open for session recovery (bugged/hallucinated sessions). Non-owners who try get a short "owner only" notice.

Deny-by-default access model: if neither allowed_users nor bot_owner is configured, the bot refuses all interactions — unconfigured installs are locked down by default. Set at least one to unlock access. This prevents open-mode footguns on fresh deployments.

```toml [channels.telegram] allowed_users = ["123456789"] # who may interact

OpenCrabs vs Node.js Agent Frameworks

**OpenCrabs** (Rust)**Node.js Frameworks** (e.g. Open Claw)
**Binary size****34–36 MB** single binary, zero dependencies**1 GB+** node_modules with hundreds of transitive packages
**Runtime**None — runs nativelyRequires Node.js runtime + npm install
**Attack surface**Zero network listeners. Outbound HTTPS onlyServer infrastructure: open ports, auth layers, middleware
**API key security**Keys on your machine only. zeroize clears them from RAM on drop, [REDACTED] in all debug outputKeys in env vars or config. GC doesn't guarantee memory clearing. Heap dumps can leak secrets
**Data residency**100% local — SQLite DB, embeddings, brain files, all in ~/.opencrabs/Server-side storage, potential multi-tenant data, network transit
**Supply chain**Single compiled binary. Rust's type system prevents buffer overflows, use-after-free, data races at compile timenpm ecosystem: typosquatting, dependency confusion, prototype pollution
**Memory safety**Compile-time guarantees — no GC, no null pointers, no data racesGC-managed, prototype pollution, type coercion bugs
**Concurrency**tokio async + Rust ownership = zero data races guaranteedSingle-threaded event loop, worker threads share memory unsafely
**Native TTS/STT**Built-in local speech-to-text (whisper.cpp) and text-to-speech — ~130 MB total stack, fully offlineNo native voice. Requires external APIs (Google, AWS, Azure) or heavy Python dependencies (PyTorch, ~5 GB+)
**Telemetry**Zero. No analytics, no tracking, no remote loggingServer infra typically includes monitoring, logging pipelines, APM
🇨🇳 中文文档镜像 AI 翻译 2026-05-30
英文原文章节由系统翻译为中文摘要,便于快速理解。完整原文见上方 "📑 README 深度解析"。
📌 简介

opencrabs 是一个基于 Rust 开发的高性能 AI Agent 项目,利用 Ratatui 构建了极具交互性的终端用户界面(TUI)。它旨在为开发者提供一个强大的自动化助手,能够深度集成到开发工作流中,通过高效的命令行交互实现复杂的任务自动化。

⚡ 功能介绍

opencrabs 具备强大的 Agent 能力,不仅内置了超过 30 种工具(如文件 I/O、grep、Web Search、代码执行及图像分析),还能通过 bash 直接调用系统中的任何 CLI 工具,包括 Docker、GitHub CLI、SSH、Python 和 Node 等。此外,它还具备 RTK Token 优化功能,通过自动优化 bash 输出,显著降低 API 调用成本。

🛠 安装步骤(Docker/pip/源码)

opencrabs 支持作为系统服务进行安装与管理。在 macOS 上可以使用 launchd,在 Linux 上可以使用 systemd。用户可以通过执行 `opencrabs -p hermes service install` 进行服务安装,并使用 `service start` 命令启动服务,确保 Agent 在后台稳定运行。

🚀 使用教程

项目提供了快速启动示例。初次使用时,建议通过 `/onboard:image` 命令或进入 Advanced mode 进行初始化配置。用户可以通过交互式指令快速上手,体验 Agent 在终端环境下的自动化操作能力。

⚙️ 配置说明(含 MCP / env)

用户可以通过修改 `keys.toml` 和 `config.toml` 进行深度定制。支持配置 Google AI Studio 的 API key 以启用 Gemini 模型进行图像生成与视觉识别。对于本地模型(如 Ollama、LM Studio),只需设置 `base_url` 即可免 Key 使用;对于 Grox 或 Together 等远程 API,也可在 `keys.toml` 中添加对应的 provider 配置。此外,用户可以在配置中列出可用模型,通过 `/models` 命令实现无缝切换。

🔌 API 说明

opencrabs 提供了标准化的 API 接口。通过 `/.well-known/agent.json` 端点,客户端可以发现 Agent 的技能、能力及支持的内容类型;`/a2a/v1` 端点基于 JSON-RPC 2.0 协议,支持 `message/send`、`message/stream` (SSE) 以及任务管理(`tasks/get`、`tasks/cancel`)等核心功能;`/a2a/health` 用于监控服务健康状态。

🔄 工作流/模块

opencrabs 支持多种消息集成工作流,例如 Telegram Bot 模式。它提供了功能完备的 Telegram 机器人支持:所有者可以通过私聊共享 TUI 会话,而群组则会根据 chat ID 实现隔离的独立会话。此外,它还支持多模态交互,能够通过 STT 将语音笔记转为文本,并利用 TTS 将回复转换为 OGG/Opus 格式的语音消息。

🎯 aiskill88 AI 点评 A 级 2026-05-30

高质量的AI工作流项目,值得关注

📚 实用指南(长尾问题)
适合谁
  • 需要让 Claude / Cursor 操作本地工具的 AI 工程师
  • 构建多智能体协作系统的 Agent 开发者
  • 构建企业知识库 / RAG 检索应用的团队
  • 做语音类 AI 产品的开发者
最佳实践
  • 配置 MCP 服务器时建议使用 stdio 传输 + JSON-RPC,避免暴露公网
  • 生产部署优先使用 Docker Compose 隔离依赖,并挂载 volume 持久化数据
  • 本地部署优先选 GGUF 量化模型,节省显存并保持响应速度
  • Agent 任务先做 dry-run 验证工具调用链,再开启自主执行
常见错误
  • API key 直接提交到 git 仓库(请用 .env 并加入 .gitignore)
  • MCP 配置路径拼错或权限不足,重启 Claude Desktop 才生效
  • 容器内无法访问宿主机 localhost — 使用 host.docker.internal
  • 显存不足直接 OOM — 优先降低 context 或换更小的量化模型
部署方案
  • Docker:opencrabs 提供官方镜像,docker compose up 一键启动
  • CLI:直接 npm install -g / pip install,命令行调用
  • 本地部署:CPU 8GB 起,GPU 推荐 16GB+ 显存
  • 云端托管:可放在 Vercel / Railway / Fly.io 等 PaaS 平台
相关搜索
opencrabs 中文教程opencrabs 安装报错怎么办opencrabs MCP 配置opencrabs Docker 部署opencrabs Agent 工作流opencrabs 与同类工具对比opencrabs 最佳实践opencrabs 适合谁用

⚡ 核心功能

👥 适合谁
  • 需要让 Claude / Cursor 操作本地工具的 AI 工程师
  • 构建多智能体协作系统的 Agent 开发者
  • 构建企业知识库 / RAG 检索应用的团队
  • 做语音类 AI 产品的开发者
⭐ 最佳实践
  • 配置 MCP 服务器时建议使用 stdio 传输 + JSON-RPC,避免暴露公网
  • 生产部署优先使用 Docker Compose 隔离依赖,并挂载 volume 持久化数据
  • 本地部署优先选 GGUF 量化模型,节省显存并保持响应速度
  • Agent 任务先做 dry-run 验证工具调用链,再开启自主执行
⚠️ 常见错误
  • API key 直接提交到 git 仓库(请用 .env 并加入 .gitignore)
  • MCP 配置路径拼错或权限不足,重启 Claude Desktop 才生效
  • 容器内无法访问宿主机 localhost — 使用 host.docker.internal
  • 显存不足直接 OOM — 优先降低 context 或换更小的量化模型

👥 适合人群

自动化工程师和运维人员项目经理和业务分析师希望减少重复性工作的专业人士数字化转型团队

🎯 使用场景

  • 自动化日常重复性工作,将精力集中于创造性任务
  • 构建数据采集 → 处理 → 输出的完整自动化管线
  • 实现跨平台、跨系统的数据流转和业务协同

⚖️ 优点与不足

✅ 优点
  • +MIT 协议,可免费商用
  • +大幅减少重复性人工操作
  • +可视化流程,清晰直观
  • +可扩展性强,支持复杂场景
⚠️ 不足
  • 初始配置和调试需投入一定时间
  • 强依赖外部服务的稳定性
  • 复杂场景需具备一定技术基础
⚠️ 使用须知

AI Skill Hub 为第三方内容聚合平台,本页面信息基于公开数据整理,不对工具功能和质量作任何法律背书。

建议在沙箱或测试环境中充分验证后,再部署至生产环境,并做好必要的安全评估。

📄 License 说明

✅ MIT 协议 — 最宽松的开源协议之一,可自由商用、修改、分发,仅需保留版权声明。

🔗 相关工具推荐

📰 相关 AI 新闻
🍿 AI 圈相关吃瓜
🗺️ 相关解决方案
🧩 你可能还需要
基于当前 Skill 的能力图谱,自动补全的工具组合

❓ 常见问题 FAQ

opencrabs 是一款Rust开发的AI辅助工具。开源AI工作流:The self-improving all channels AI agent. Self-healing. Fully autonomous. Single。⭐770 · Rust 主要应用场景包括:自动化工作流管理。
💡 AI Skill Hub 点评

AI Skill Hub 点评:开源AI工作流 的核心功能完整,质量优秀。对于自动化工程师和运维人员来说,这是一个值得纳入个人工具库的选择。建议先在非生产环境试用,再逐步推广。

⬇️ 获取与下载
⬇ 下载源码 ZIP

✅ MIT 协议 · 可免费商用 · 直接从 aiskill88 服务器下载,无需跳转 GitHub

📚 深入学习 开源AI工作流
查看分步骤安装教程和完整使用指南,快速上手这款工具
🌐 原始信息
原始名称 opencrabs
原始描述 开源AI工作流:The self-improving all channels AI agent. Self-healing. Fully autonomous. Single。⭐770 · Rust
Topics agent-orchestrationagentic-aiautonomous-agents
GitHub https://github.com/adolfousier/opencrabs
License MIT
语言 Rust
🔗 原始来源
🐙 GitHub 仓库  https://github.com/adolfousier/opencrabs 🌐 官方网站  https://opencrabs.com

收录时间:2026-05-30 · 更新时间:2026-05-30 · License:MIT · AI Skill Hub 不对第三方内容的准确性作法律背书。

📺 订阅 AI Skill Hub Daily Telegram 频道
每天 8 条精选 AI Skill、MCP、Agent 与自动化工具推送
加入频道 →