Agena 是 AI Skill Hub 本期精选Agent工作流之一。综合评分 8.0 分,整体质量较高。我们强烈推荐将其纳入你的 AI 工具库,帮助提升工作效率。
Agena 是一套完整的 AI Agent 自动化工作流方案。通过可视化的节点编排,将复杂的多步骤任务拆解为清晰的自动化流程,实现全程无人值守的智能处理。支持与数百种外部服务和 API 无缝集成,适合构建数据处理管线、业务自动化和 AI 辅助决策系统。
Agena 是一套完整的 AI Agent 自动化工作流方案。通过可视化的节点编排,将复杂的多步骤任务拆解为清晰的自动化流程,实现全程无人值守的智能处理。支持与数百种外部服务和 API 无缝集成,适合构建数据处理管线、业务自动化和 AI 辅助决策系统。
# 方式一:npm 全局安装 npm install -g agena # 方式二:npx 直接运行(无需安装) npx agena --help # 方式三:项目依赖安装 npm install agena # 方式四:从源码运行 git clone https://github.com/aozyildirim/Agena cd Agena npm install npm start
# 命令行使用
agena --help
# 基本用法
agena [options] <input>
# Node.js 代码中使用
const agena = require('agena');
const result = await agena.run(options);
console.log(result);
# agena 配置说明 # 查看配置选项 agena --config-example > config.yml # 常见配置项 # output_dir: ./output # log_level: info # workers: 4 # 环境变量(覆盖配置文件) export AGENA_CONFIG="/path/to/config.yml"
AI Pipeline - Autonomous PM → Planner → Developer → Reviewer → Finalizer workflow - CrewAI role-based agents + LangGraph state machine orchestration - Prompt Studio — edit system prompts at runtime without code deploy - Vector memory (Qdrant) — learns from previous tasks for better context
History-Grounded Sprint Refinement - Index closed Azure / Jira work items (with final SPs, assignees, PR titles, branches) into a per-org Qdrant collection - For every new item, the LLM receives the top-5 similar past items and anchors its SP suggestion on your team's real distribution — naming which item it resembles and who did the prior work - See docs/REFINEMENT.md for the full flow and tuning knobs
Team Skill Catalog
Skills are AGENA's compounding-knowledge layer. Every completed task gets distilled into a reusable pattern; every new task pulls the closest patterns into its agent prompt. Past solutions are not re-discovered — they get re-applied.
- Auto extraction. When a task completes, the Skill Librarian asks the LLM (Claude CLI / Codex CLI / OpenAI / Gemini, whichever you're using) to summarise the task's title + description + reviewed code into `{ name, pattern_type, tags, touched_files, approach_summary, prompt_fragment }`. Skipped automatically when the LLM's confidence is < 50%, so one-off oddities don't pollute the catalog.
- Vector retrieval. Each skill is embedded into Qdrant (org-scoped, kind='skill') alongside a MySQL row that drives the catalog UI and usage counters.
- Prompt injection. Before any agent runs, the top-3 skills above the relevance threshold are prepended to the system prompt as a RELEVANT TEAM SKILLS block. Works in Claude CLI, Codex CLI, Gemini, OpenAI, and the classic CrewAI pipeline — same retrieval, four transports.
- Concrete payoff. After ~50 tasks, a Flo-sized team's catalog carries 20+ codebase-specific patterns:
┌─ "Stock allocator pattern" ──────────────────────────────────┐
│ pattern_type: refactor │
│ tags: [stock, multi-site, allocation] │
│ touched_files: │
│ app/Library/Stock/SiteBasedAllocator.php │
│ app/Services/V1/StockService.php │
│ prompt_fragment: │
│ "When site-based stock allocation is needed, use the │
│ SiteBasedAllocator class. Don't compute it inline — the │
│ allocator already handles overflow, fallback sites, and │
│ the per-SKU lock." │
└───────────────────────────────────────────────────────────────┘
Next time someone files a stock-related task, the agent gets that fragment in its prompt — no senior tap on the shoulder needed.
- Manual edits welcome. Hit /dashboard/skills and the "Yeni Skill" button to seed your team's pattern library directly. Useful for encoding "don't do this again" lessons (e.g. "httpx params={} silently strips the URL's query string — always pass None") before AGENA has accumulated enough completed tasks to extract them on its own.
- See docs/SKILLS.md for the extraction + retrieval flow, tuning knobs, and the comparison vs Refinement's similar-past index.
Runtimes Registry - Every compute environment that can execute agent tasks (host CLI bridge, teammate's laptop, cloud daemon) registers as a Runtime - Auto-enrollment: bridge-server.mjs picks up AGENA_JWT + AGENA_TENANT_SLUG from env and calls /runtimes/register on startup, then heartbeats every 30s with its current CLI availability - /dashboard/runtimes shows the live list with status dots, CLI badges, heartbeat age, and daemon version - See docs/RUNTIMES.md for the enrollment + heartbeat + security model
Multi-Repo Orchestration - Assign a single task to multiple repositories simultaneously - Each repo runs its own AI pipeline in parallel — independent branches and PRs - Per-repo locking prevents concurrent conflicts - Unified dashboard shows all PRs and their status in one view
Task Dependencies & Auto-Queue - Define execution order: Task B depends on Task A - Worker checks dependencies before running — blocked tasks wait automatically - When a dependency completes, dependent tasks auto-queue and start - Cycle detection prevents circular dependency chains - Visual dependency flow in the dashboard: A ✓ → B ✓ → C (waiting)
DevOps Automation - Auto-generates branches, commits, and pull requests (GitHub + Azure DevOps) - Sprint import from Jira and Azure DevOps - DORA metrics dashboard (deployment frequency, lead time, change failure rate, MTTR) - Team health symptom analysis (knowledge silos, bus factor, stale PRs, etc.)
Shareable Task Links - One-click "Share" on any task — picks a duration (1–30 days) and a use cap (1–25 imports), gets back a tokenised public URL - Recipients without an account can read the task (description, comments and inline images proxied through the sender's PAT so screenshots still load) and click "Import to my org" to copy the task — including attachments — into their own workspace - Built-in share buttons for WhatsApp, Microsoft Teams, Slack, Telegram, Email and X next to the link, so the URL never has to leave the modal manually - Tokens are revocable, time-limited and use-capped; expired or spent links return a friendly "this link is no longer active" page
Multi-Tenant SaaS - Organization isolation with subdomain routing - JWT auth + RBAC (owner, admin, member, viewer) - Free/Pro/Enterprise plans with usage quotas - Stripe billing integration
AI-powered Sprint Nudges - Every blocked Azure DevOps or Jira work item gets a "Ping" button - Checks the last comment timestamp — if >24h silent, fires a nudge - LLM-generated, single-paragraph, language-picked-per-ping (7 locales) - Pick the generator at send time: Claude CLI (subscription, via host bridge), Codex CLI (subscription), OpenAI, Gemini, or HAL. Claude CLI failures auto-fall-back to Codex CLI on the same bridge. - Posts back with an <at>@Display Name</at> mention so Azure renders it as a real tag, plus a signed "written by Agena via {model}" line for transparency - 48h cooldown + DB-persisted history prevents spam; UI badges already-nudged items with "Agena pinged Xh ago"
Dashboard - Boss Mode — pixel-art office where you manage AI agents visually - Visual flow builder — drag-and-drop automation pipelines - Sprint performance tracking with risk scoring - Real-time task monitoring with live logs and WebSocket updates - Guided tour onboarding for new users - 7 languages (TR, EN, ES, ZH, IT, DE, JA)
Cross-Source Insights (module: insights, default off) - Correlation engine that ties PR merges + deploys + Sentry / NewRelic / Datadog / AppDynamics / Jira / Azure events into one timeline - Confidence-scored clusters (0-100); ≥ 70 surfaces on /dashboard/insights with a one-sentence narrative + full timeline - "Which deploy caused this bug?" answered in seconds — replaces the 20-minute tab-hop during incidents - Confirm / False positive / Undo triage; Confirm can open a one-click rollback PR for the suspected commit - Poller runs every 5 minutes, no extra integration setup — re-uses the data the existing AGENA clients already cache - Marketing page: /cross-source-insights
Stale Ticket Triage (module: triage, source-side scan, AI verdicts) - Source-side scan, not local mirror. Hits Jira's /rest/api/3/search/jql (the new endpoint — the deprecated /search one is gone) with cursor pagination, and Azure DevOps WIQL across every project the org has access to. No internal task table fan-out — the truth lives at the source, and so does the scan. - Background task + progress polling. Scan runs as a strong-ref asyncio task; the dashboard polls /triage/scan/status every 2s for per-row progress so the UI never blocks on a 10-minute crawl. - AI verdict per ticket. The reviewer agent (Claude CLI / Codex CLI / hosted OpenAI — whichever the org configured, never an env fallback) reads title, description, last comment + ticket age and emits one of close / snooze / keep plus a one-sentence reason. - source_updated_at cache. If a ticket's source-side timestamp hasn't moved since the last scan, we skip the LLM call and just backfill any new metadata fields. Fresh decisions only when the source actually changed. - Look-back window. triage_max_age_days caps how far back the scan reaches — useful when you want "only the last 12 months," not history all the way to 2018. - Filters baked in. Source (Jira / Azure), project, state, and status chips. Cancelled / Won't Fix / Rejected excluded by default on both the WIQL query and a defensive Python filter on read. - Confirm-before-apply modal. "Apply all AI suggestions" never fires silently — you see the count, the breakdown, and click to commit. Audit trail per decision in triage_decisions. - Marketing page: /stale-ticket-triage
Review Backlog Killer (module: review_backlog, multi-channel, AI-aware) - Five nudge channels, comma-selectable. Slack DM, WhatsApp, email, Telegram, and a comment posted directly on the PR thread itself (GitHub pulls/{n}/comments or Azure {org}/{project}/_apis/git/repositories/{repo}/pullRequests/{n}/threads — Azure URL needs the project segment, not just the repo guid). - AI-generated comment body, optional. Toggle on and the reviewer agent reads the actual diff (GitHub Accept: application/vnd.github.v3.diff or Azure iterations/{n}/changes) and writes a polite, diff-specific question — not a generic "still around?" template. - Comment language picker — 7 languages. Set the org's preferred tone in nudge_comment_language (en/tr/de/es/it/ja/zh); both static templates and the AI prompt swap accordingly. - Auto-nudge worker (opt-in). Off by default — backlog_auto_nudge boolean toggle. When on, the 30-minute worker poller auto-posts to the configured channels with a hard 24h interval floor (max(24, backlog_nudge_interval_hours)) so nobody ever gets spammed by accident. - Azure deletion detection. Before counting a row as "already nudged," we verify the existing Agena comment still lives on the PR. If a reviewer wiped the comment, last_nudged_at resets and the nudge becomes available again — same logic the production detector uses to dodge stale state. - Per-row cooldown that's actually delivery-aware. Status return is sent / rate_limited / comment_failed; we only stamp last_nudged_at on sent, so a 400 from Azure doesn't lock the row for 6 hours. - Searchbox + chip-tag exempt-repo picker. No more 80-row alt-alta toggle list. Type, autocomplete, click to add as a chip — same UX as Jira/Azure label pickers elsewhere in the app. - Marketing page: /review-backlog-killer
---
agena-core ← no internal deps (foundation)
agena-models ← depends on agena-core
agena-services ← depends on agena-core, agena-models
agena-agents ← depends on agena-core, agena-models, agena-services
agena-api ← depends on all above
agena-worker ← depends on agena-core, agena-models, agena-services
The only hard requirement is the JWT signing secret — everything else (LLM provider, GitHub / Azure DevOps / Jira credentials) is configured per-organization through the dashboard at /dashboard/integrations once the stack is running, so the same deployment can serve teams that use OpenAI alongside teams that use Claude CLI.
```env JWT_SECRET_KEY=your-secret-key
pip install -e packages/core
pip install -e packages/models
pip install -e packages/agents # includes CrewAI + LangGraph
---
| Service | Container | Port | Description |
|---|---|---|---|
backend | ai_agent_api | 8010 | FastAPI + auto-reload |
worker | ai_agent_worker | — | Redis queue consumer |
cli-bridge | (host process) | 9876 | Claude/Codex CLI bridge (runs on host, not Docker) |
frontend | ai_agent_frontend | 3010 | Next.js (dev) |
frontend_blue | ai_agent_frontend_blue | 3011 | Next.js (blue, prod) |
frontend_green | ai_agent_frontend_green | 3012 | Next.js (green, prod) |
mysql | ai_agent_mysql | 3307 | MySQL 8.0 |
redis | ai_agent_redis | 6380 | Redis 7 |
qdrant | ai_agent_qdrant | 6333 | Qdrant vector DB |
docker-compose up -d --build backend
```bash python3.11 -m venv .venv source .venv/bin/activate
pip install -r requirements.txt pip install -e packages/core \ -e packages/models \ -e packages/services \ -e packages/agents \ -e packages/api \ -e packages/worker
Frontend runs as blue/green production containers. Code is NOT volume-mounted.
```bash
./scripts/deploy-frontend.sh
For backend changes, hot-reload works via volume mount:bash docker-compose restart backend worker ```
---
Drag-and-drop flow editor with nodes for PM Analysis, Technical Plan, Development, and QA Test. Includes approval gates, run history, version control, and flow templates.

git clone https://github.com/aozyildirim/Agena.git
cd Agena
cp .env.example .env
cp frontend/.env.example frontend/.env.local
```bash
All configuration is via environment variables. See .env.example for the full list. Key ones:
| Variable | Description | Required |
|---|---|---|
JWT_SECRET_KEY | JWT signing secret | Yes |
OPENAI_API_KEY | OpenAI API key — global default if set | No (per-org override available in UI) |
GEMINI_API_KEY | Google Gemini API key — global default if set | No (per-org override available in UI) |
MYSQL_HOST | MySQL host | Default: mysql |
MYSQL_DATABASE | Database name | Default: ai_agent_db |
GitHub, Azure DevOps, Jira, New Relic and Sentry credentials are not read from environment variables. They live in integration_configs and are managed per-organization from /dashboard/integrations so each team can connect its own accounts. A single Agena deployment can host many orgs without rebuilding the container.
For Claude / Codex CLI usage the host bridge (docker/bridge-server.mjs, auto-started by start.sh) reuses the system keychain — no API key required at all if you sign in once with claude auth login or codex auth login on the host. | REDIS_URL | Redis connection URL | Default: redis://redis:6379 | | QDRANT_ENABLED | Enable vector memory | Default: false | | QDRANT_URL | Qdrant server URL | Default: http://qdrant:6333 | | LLM_MODEL | Default LLM model | Default: gpt-4o | | LLM_LARGE_MODEL | Model for complex tasks | Default: gpt-5 | | LLM_SMALL_MODEL | Model for simple tasks | Default: gpt-4o-mini | | MAX_WORKERS | Concurrent worker tasks | Default: 3 |
---
agena daemon start|stop|status|logs agena runtime list|status <id>
```
The CLI bridge runs on the host (not in Docker) so it can access Claude/Codex CLI authentication (macOS Keychain, browser OAuth). start.sh handles this automatically.
```bash
uvicorn agena_api.api.main:app --reload --host 0.0.0.0 --port 8010
The backend is split into 6 independent, pip-installable packages:
packages/
├── core/ # agena-core
│ └── src/agena_core/
│ ├── settings.py # Pydantic BaseSettings (67 env vars)
│ ├── database.py # SQLAlchemy async engine + sessions
│ ├── rbac.py # Role-based access control matrix
│ ├── plans.py # Subscription plan definitions
│ ├── http.py # Corporate SSL patch
│ ├── logging.py # Logging configuration
│ ├── db/base.py # SQLAlchemy DeclarativeBase
│ ├── security/ # JWT + bcrypt password hashing
│ └── config/ # App-wide configuration
│
├── models/ # agena-models
│ └── src/agena_models/
│ ├── models/ # 25 SQLAlchemy ORM models
│ │ ├── user.py, organization.py, task_record.py
│ │ ├── flow_run.py, flow_assets.py
│ │ ├── git_commit.py, git_pull_request.py, git_deployment.py
│ │ ├── prompt.py, prompt_override.py
│ │ └── ... (notification, billing, usage, etc.)
│ └── schemas/ # 9 Pydantic request/response schemas
│ ├── agent.py, auth.py, task.py, github.py
│ └── ... (billing, integration, org, refinement)
│
├── services/ # agena-services
│ └── src/agena_services/
│ ├── services/ # 31 business logic modules
│ │ ├── orchestration_service.py # Core task execution
│ │ ├── task_service.py # Task CRUD + queue
│ │ ├── flow_executor.py # LangGraph flow runner
│ │ ├── prompt_service.py # DB-backed prompt loader
│ │ ├── github_service.py # GitHub API operations
│ │ ├── azure_pr_service.py # Azure DevOps PR creation
│ │ ├── dora_service.py # DORA metrics calculation
│ │ ├── analytics_service.py # Team health + analytics
│ │ ├── queue_service.py # Redis queue management
│ │ ├── auth_service.py # User auth + signup
│ │ ├── billing_service.py # Stripe integration
│ │ ├── notification_service.py # Push + in-app notifications
│ │ ├── llm/ # LLM provider abstraction
│ │ │ ├── provider.py # OpenAI + Gemini routing
│ │ │ ├── cost_tracker.py # Token cost calculation
│ │ │ └── cache.py # Redis prompt cache
│ │ └── ...
│ └── integrations/ # Third-party API clients
│ ├── azure_client.py, github_client.py
│ ├── jira_client.py, qdrant_memory.py
│ └── llm_client.py
│
├── agents/ # agena-agents
│ └── src/agena_agents/
│ ├── agents/ # AI agent orchestration
│ │ ├── orchestrator.py # AgentOrchestrator (main coordinator)
│ │ ├── crewai_agents.py # CrewAI agent runners (8 roles)
│ │ ├── langgraph_flow.py # LangGraph state graph (5 nodes)
│ │ └── prompts.py # Default prompt templates
│ └── memory/ # Vector memory abstraction
│ ├── base.py # Abstract memory interface
│ └── qdrant.py # Qdrant implementation
│
├── api/ # agena-api
│ └── src/agena_api/
│ └── api/
│ ├── main.py # FastAPI app bootstrap
│ ├── dependencies.py # Auth, tenant, RBAC injection
│ ├── middleware/ # Rate limit, logging, tenant
│ └── routes/ # 18 route modules
│ ├── agents.py, tasks.py, flows.py
│ ├── auth.py, org.py, billing.py
│ ├── analytics.py, github.py, integrations.py
│ ├── preferences.py, notifications.py
│ └── ... (memory, refinement, usage, webhooks, ws)
│
└── worker/ # agena-worker
└── src/agena_worker/
└── workers/
└── redis_worker.py # Redis queue consumer + task executor
Other root-level directories:
alembic/ # Database migrations (24 versions)
db/init.sql # MySQL bootstrap script
docker/ # Dockerfiles + SSL certificate
docs/ # Architecture Decision Records
frontend/ # Next.js 14 app (React 18, TypeScript)
mobile/ # Mobile app
scripts/ # Utility scripts (import rewriter, locale translator)
tests/ # Test suite
| Method | Path | Description |
|---|---|---|
| PUT | /integrations/azure | Configure Azure DevOps |
| PUT | /integrations/jira | Configure Jira |
| PUT | /integrations/github | Configure GitHub |
| GET | /integrations | List all configs |
They're complementary: use Copilot for creative work, AGENA for well-defined tasks. Read more: AGENA vs GitHub Copilot
高质量的开源AI工作流平台,值得关注
AI Skill Hub 为第三方内容聚合平台,本页面信息基于公开数据整理,不对工具功能和质量作任何法律背书。
建议在沙箱或测试环境中充分验证后,再部署至生产环境,并做好必要的安全评估。
✅ MIT 协议 — 最宽松的开源协议之一,可自由商用、修改、分发,仅需保留版权声明。
经综合评估,Agena 在Agent工作流赛道中表现稳健,质量优秀。如果你已有明确的使用需求,可以直接上手体验;如果还在评估阶段,建议对比同类工具后再做决策。
| 原始名称 | Agena |
| Topics | agentic-aiai-agentstypescript |
| GitHub | https://github.com/aozyildirim/Agena |
| License | MIT |
| 语言 | TypeScript |
收录时间:2026-06-01 · 更新时间:2026-06-01 · License:MIT · AI Skill Hub 不对第三方内容的准确性作法律背书。
选择 Agent 类型,复制安装指令后粘贴到对应客户端