fix(python): harden zeroclaw-tools CLI and integration ergonomics

This commit is contained in:
Chummy 2026-02-17 15:49:01 +08:00
parent e5ef8a3b62
commit f01d38be35
10 changed files with 110 additions and 27 deletions

View file

@ -2,20 +2,18 @@
Discord bot integration for ZeroClaw.
"""
import asyncio
import os
from typing import Optional, Set
try:
import discord
from discord.ext import commands
DISCORD_AVAILABLE = True
except ImportError:
DISCORD_AVAILABLE = False
discord = None
from langchain_core.messages import HumanMessage, SystemMessage
from langchain_core.messages import HumanMessage
from ..agent import create_agent
from ..tools import shell, file_read, file_write, web_search
@ -65,6 +63,18 @@ class DiscordBot:
self.model = model
self.prefix = prefix
if not self.api_key:
raise ValueError(
"API key required. Set API_KEY environment variable or pass api_key parameter."
)
self.agent = create_agent(
tools=[shell, file_read, file_write, web_search],
model=self.model,
api_key=self.api_key,
base_url=self.base_url,
)
self._histories: dict[str, list] = {}
self._max_history = 20
@ -117,13 +127,6 @@ class DiscordBot:
async def _process_message(self, content: str, user_id: str) -> str:
"""Process a message and return the response."""
agent = create_agent(
tools=[shell, file_read, file_write, web_search],
model=self.model,
api_key=self.api_key,
base_url=self.base_url,
)
messages = []
if user_id in self._histories:
@ -132,7 +135,7 @@ class DiscordBot:
messages.append(HumanMessage(content=content))
result = await agent.ainvoke({"messages": messages})
result = await self.agent.ainvoke({"messages": messages})
if user_id not in self._histories:
self._histories[user_id] = []