集成新的Beaver后端服务到应用实例中,替换原有的nanobot实现。 主要变更包括: - 在Dockerfile和环境配置中添加Beaver相关路径和配置变量 - 更新工作目录结构从.nanobot到.beaver - 实现Beaver引擎加载器,支持配置文件加载和工具组装 - 添加内置工具如ListDirectoryTool、ReadFileTool、SearchFilesTool - 更新消息处理流程,支持通道适配器和网关模式 - 重构技能系统,支持显式工具提示和嵌入式检索 - 改进错误处理和生命周期管理 此变更使应用实例能够使用统一的Beaver后端进行AI代理运行时管理。
61 lines
1.7 KiB
Python
61 lines
1.7 KiB
Python
"""CLI entry for Beaver."""
|
|
|
|
try:
|
|
import typer
|
|
except ModuleNotFoundError: # pragma: no cover - fallback for skeleton-only environments
|
|
class _FallbackTyper:
|
|
def __init__(self, *_args, **_kwargs) -> None:
|
|
pass
|
|
|
|
def command(self):
|
|
def decorator(func):
|
|
return func
|
|
|
|
return decorator
|
|
|
|
def __call__(self) -> None:
|
|
raise RuntimeError("typer is not installed")
|
|
|
|
@staticmethod
|
|
def echo(message: str) -> None:
|
|
print(message)
|
|
|
|
@staticmethod
|
|
def Option(default=None, *_args, **_kwargs):
|
|
return default
|
|
|
|
typer = _FallbackTyper() # type: ignore[assignment]
|
|
|
|
from beaver.services.agent_service import AgentService
|
|
|
|
app = typer.Typer(help="Beaver backend CLI") if hasattr(typer, "Typer") else typer
|
|
|
|
|
|
@app.command()
|
|
def run(
|
|
message: str | None = typer.Option(None, "--message", "-m", help="Run one direct Beaver request."),
|
|
workspace: str | None = typer.Option(None, "--workspace", help="Workspace root for this run."),
|
|
config: str | None = typer.Option(None, "--config", help="Backend config path for this run."),
|
|
) -> None:
|
|
"""Thin CLI wrapper around AgentService.
|
|
|
|
CLI 现在不再自己维护执行逻辑,只负责:
|
|
1. 解析命令行参数
|
|
2. 调 AgentService
|
|
3. 打印结果
|
|
"""
|
|
|
|
service = AgentService(workspace=workspace, config_path=config)
|
|
if not message:
|
|
service.create_loop()
|
|
typer.echo("Beaver engine booted.")
|
|
return
|
|
|
|
result = service.run_direct(message, source="cli")
|
|
typer.echo(result.output_text)
|
|
|
|
|
|
def main() -> None:
|
|
"""Project script entrypoint."""
|
|
app()
|