Cortex.0 / cortex0 /agent.py
Frankenstein-Labs's picture
initial commit
c429240
Raw History Blame Contribute Delete
1.66 kB
"""Assemble the OpenHands agent whose reasoning engine is Cortex.0."""
from __future__ import annotations
from openhands.sdk import Agent, Tool
from openhands.sdk.context.condenser import LLMSummarizingCondenser
from openhands.sdk.context.agent_context import AgentContext
# Importing each tool class registers it in the SDK tool registry.
# Without these imports resolve_tool() raises "not registered".
from openhands.tools.file_editor import FileEditorTool # noqa: F401
from openhands.tools.glob import GlobTool # noqa: F401
from openhands.tools.grep import GrepTool # noqa: F401
from openhands.tools.task_tracker import TaskTrackerTool # noqa: F401
from openhands.tools.terminal import TerminalTool # noqa: F401
from cortex0.llm import build_llm
from cortex0.settings import Cortex0Settings
def build_agent(settings: Cortex0Settings) -> Agent:
"""Build an agent driven by Cortex.0.
The model is not a tool the agent calls: it is the ``llm`` the agent
reasons with on every turn of the action-perception loop. Tools are handed
to the model as its own action space.
"""
llm = build_llm(settings)
tools = [Tool(name=name) for name in settings.tools]
# Cortex.0 has a 262k window, but a long agent session still needs
# condensation so the prompt stays affordable and fast.
condenser = LLMSummarizingCondenser(llm=llm, max_size=settings.condenser_max_size)
return Agent(
llm=llm,
tools=tools,
system_prompt=settings.system_prompt(),
agent_context=AgentContext(
skills=[],
system_prompt_filename=None,
),
condenser=condenser,
)