研究工具#

工具是通过 Anthropic 工具调用 API 暴露给智能体的可调用函数。每个工具包含名称、描述、输入模式和异步 call() 方法。

工具架构#

class BaseTool(ABC):
    name: ClassVar[str]
    description: ClassVar[str]

    def input_schema(self) -> dict: ...    # JSON Schema for inputs
    async def call(self, **kwargs) -> str: ...   # returns JSON string
    def to_anthropic_tool_def(self) -> dict: ... # format for API

工具存储在 ToolRegistry 中。默认注册表(build_default_registry())包含 7 个内置工具。领域插件可通过 DomainPlugin.register_tools() 添加额外工具。


内置工具#




lean4_verify#

文件: eurekaclaw/tools/lean4.py

功能: 使用 Lean4 定理证明器对证明进行形式化验证。

输入:

参数

类型

默认值

说明

proof_code

string

必填

Lean4 证明代码

theorem_name

string

""

可选的定理名称(用于报告)

输出:

{
  "verified": true,
  "theorem": "my_theorem",
  "message": "Proof checked successfully"
}

失败时:

{
  "verified": false,
  "lean4_output": "error: ...",
  "message": "Verification failed"
}

外部依赖: LEAN4_BIN 路径下的 Lean4 二进制文件(默认:lean)。导入 Mathlib 和 Aesop。超时:120 秒。最大心跳数:400,000。


execute_python (开发中)#

警告

安全的沙箱化代码执行属于未来工作。在未正确配置 Docker 的情况下,此工具会直接在宿主子进程中运行 LLM 生成的 Python 代码,没有任何文件系统或网络隔离。在未来版本添加适当的沙箱支持之前,请勿启用 EXPERIMENT_MODE

文件: eurekaclaw/tools/code_exec.py

功能: 执行 Python 代码以进行数值实验和合理性检验。

输入:

参数

类型

默认值

说明

code

string

必填

要执行的 Python 代码

requirements

list[string]

[]

运行前需额外安装的包

输出:

{"output": "stdout + stderr from execution"}

出错时:

{"error": "exception message"}

沙箱: 带有 30 秒超时的子进程。设置 USE_DOCKER_SANDBOX=true 可在 Docker 容器(python:3.11-slim,512 MB 内存,禁用网络)中运行,而非在宿主机上。若 Docker 不可用,则静默回退到宿主子进程。包安装使用 uv pip(回退到 pip)。


wolfram_alpha#

文件: eurekaclaw/tools/wolfram.py

功能: 符号计算、公式化简和界的验证。

输入:

参数

类型

默认值

说明

query

string

必填

自然语言或符号查询

输出: Wolfram Alpha pod 的 JSON 数组:

[{"title": "Result", "result": "..."}]

外部依赖: Wolfram Alpha API v2。需要 WOLFRAM_APP_ID


citation_manager#

文件: eurekaclaw/tools/citation.py

功能: 生成 BibTeX 条目并统一格式化引用键。

操作:

操作

说明

generate_bibtex

从论文元数据生成 BibTeX 条目

format_cite

返回论文的 \cite{key} 命令

list_entries

列出当前会话中所有引用条目

输出: 包含 cite_keybibtex 字符串的 JSON。

说明: 使用与 main.py_generate_bibtex 相同的键生成算法,确保 Writer 的 \cite{} 命令与 .bib 文件保持一致。


ToolRegistry#

文件: eurekaclaw/tools/registry.py

class ToolRegistry:
    def register(tool: BaseTool) -> None
    def get(name: str) -> BaseTool | None
    def all_definitions() -> list[dict]         # all tools as Anthropic defs
    def definitions_for(names: list[str]) -> list[dict]  # subset
    async def call(name: str, inputs: dict) -> str
    def __contains__(name: str) -> bool
    def __len__() -> int

def build_default_registry() -> ToolRegistry   # create with all 7 built-in tools

领域特定工具#

领域插件可通过 DomainPlugin.register_tools(registry) 注册额外工具。

MAB 领域:run_bandit_experiment#

文件: eurekaclaw/domains/mab/tools/bandit_tool.py

功能: 运行多臂赌博机模拟,对遗憾界进行实证验证。

输入:

参数

类型

说明

algorithm

string

ucb1thompson_sampling

n_arms

integer

臂数 K

n_rounds

integer

时间跨度 T

distribution

string

gaussianbernoulli

n_trials

integer

用于平均的蒙特卡洛试验次数

输出: 包含实验遗憾、每臂统计数据及与理论界对比的 JSON。

支持模块:

  • domains/mab/envs/stochastic.pyGaussianBanditBernoulliBandit

  • domains/mab/envs/runner.pyrun_experiment()sweep_T()

  • domains/mab/tools/concentration.py — Hoeffding、Bernstein、次高斯界

  • domains/mab/tools/regret.py — 遗憾分解、Lai-Robbins 下界

  • domains/mab/tools/information.py — KL(Bernoulli)、KL(Gaussian)、Fano 不等式