Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NovaAgent

Project Introduction / 项目介绍

English: NovaAgent is a lightweight, extensible multi-agent AI framework with built-in tools, memory, and planning. It is designed for building single-agent assistants, coordinated agent teams, and agent-powered web workflows with minimal setup.

中文: NovaAgent 是一个轻量、可扩展的多智能体 AI 框架,内置工具调用、记忆系统和任务规划能力。它适合快速构建单智能体助手、多智能体协作团队,以及由智能体驱动的 Web 工作流。

Architecture

nova-agent/
├── src/nova_agent/
│   ├── core/          # Agent, Orchestrator, Message types
│   ├── llm/           # LLM abstraction (OpenAI + Anthropic)
│   ├── tools/         # Tool system (search, code, HTTP, files)
│   ├── memory/        # Short-term + long-term memory backends
│   ├── planning/      # Task decomposition & execution plans
│   ├── cli/           # Interactive CLI (nova chat / team / plan)
│   └── web/           # FastAPI web UI
├── examples/          # Usage examples
└── tests/             # Test suite

Features

  • Multi-Agent Orchestration — Sequential, Parallel, Debate, Hierarchical modes
  • Tool System — Web search, code executor, HTTP client, file operations, plus custom tools
  • Memory — Short-term (sliding window) and long-term (persistent keyword search) backends
  • Task Planning — LLM-driven task decomposition with dependency tracking
  • Multi-Provider — OpenAI and Anthropic support out of the box
  • Web UI — Built-in FastAPI + Jinja2 interface

Quick Start

# Install
cd nova-agent
pip install -e .

# Set API keys
export OPENAI_API_KEY=sk-xxx

# Interactive chat
nova chat

# Web UI
nova serve
# Open http://localhost:8080

Usage

Single Agent

from nova_agent.core.agent import Agent, AgentConfig
from nova_agent.llm.openai import OpenAILLM
from nova_agent.tools.registry import ToolRegistry
from nova_agent.tools.web_search import WebSearchTool

llm = OpenAILLM(model="gpt-4o", api_key="sk-xxx")
tools = ToolRegistry()
tools.register(WebSearchTool())

agent = Agent(llm=llm, config=AgentConfig(name="my-agent"), tools=tools)

response = await agent.run("What is the latest Python version?")
print(response.content)

Multi-Agent Team

from nova_agent.core.orchestrator import Orchestrator, OrchestrationMode

orchestrator = Orchestrator(llm=llm, tools=tools)
orchestrator.create_agent(AgentConfig(name="researcher"))
orchestrator.create_agent(AgentConfig(name="coder"))
orchestrator.create_agent(AgentConfig(name="analyst"))

results = await orchestrator.run(
    "Analyze Python vs JavaScript performance",
    mode=OrchestrationMode.SEQUENTIAL,
)

Custom Tool

from nova_agent.tools.base import BaseTool, ToolResult

class MyTool(BaseTool):
    @property
    def name(self): return "my_tool"
    @property
    def description(self): return "Does something useful."
    @property
    def parameters(self):
        return {"input": {"type": "string", "description": "The input."}}

    async def execute(self, input: str = "", **kwargs):
        return ToolResult.ok(f"Processed: {input}")

CLI Commands

nova chat              # Interactive chat with a single agent
nova team "your task"  # Run a task with a team of agents
nova team --mode debate "your task"
nova plan "your task"  # Generate a task execution plan
nova serve             # Start the web UI

Running Tests

pip install -e ".[dev]"
pytest tests/ -v

License

MIT — see LICENSE.

About

Lightweight extensible multi-agent AI framework / 轻量可扩展的多智能体 AI 框架

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors