tools

package
v0.3.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 23, 2026 License: MIT Imports: 11 Imported by: 0

README

AGGO 工具系统

tools/ 提供可直接注册到 Eino Agent 的工具集合。顶层 github.com/CoolBanHub/aggo/tools 包是便捷入口;生产代码也可以直接导入 子包获得更细的配置能力。

工具包

工具 说明
tools/knowledge load_documents, search_documents 文档加载与知识库检索。
tools/knowledge knowledge_think, knowledge_search, knowledge_analysis 面向多步知识检索的推理辅助工具。
tools/database database_execute 通用 GORM SQL 工具,默认只读。
tools/shell shell_execute Shell 命令执行工具,默认限制工作目录、拒绝高危命令并截断长输出。
tools/cron cron 定时任务添加、查看、删除、启用和禁用。
tools/memory search_user_memory 支持事件检索的记忆 provider 可注册该工具。

使用示例

import (
    cronPkg "github.com/CoolBanHub/aggo/cron"
    aggotools "github.com/CoolBanHub/aggo/tools"
    "github.com/CoolBanHub/aggo/tools/database"
    "github.com/CoolBanHub/aggo/tools/shell"
    "github.com/cloudwego/eino/components/tool"
)

knowledgeTools := aggotools.GetKnowledgeTools(indexer, retriever, retrieverOptions)
reasoningTools := aggotools.GetKnowledgeReasoningTools(retriever, retrieverOptionsList)

// database_execute 默认只允许只读查询。
dbTools := aggotools.GetDatabaseTools(gormDB)

// 写 SQL 需要由工具创建方显式开启。
writeDBTools := aggotools.GetDatabaseTools(gormDB, database.WithAllowWrite(true))

// shell_execute 默认拒绝 rm、sudo 等高危命令,并将 workingDir 限制在进程启动目录内。
shellTools := aggotools.GetShellTools(
    shell.WithAllowedCommands("ls", "pwd", "cat"),
)

service := cronPkg.NewCronService(cronPkg.NewFileStore("cron_jobs.json"), nil)
cronTools := aggotools.GetCronTools(service)

allTools := append([]tool.BaseTool{}, knowledgeTools...)
allTools = append(allTools, reasoningTools...)
allTools = append(allTools, dbTools...)
allTools = append(allTools, shellTools...)
allTools = append(allTools, cronTools...)

安全边界

  • database_execute 默认只允许 SELECTSHOWDESCRIBEEXPLAINPRAGMAWITH 等只读语句。需要写操作时使用 database.WithAllowWrite(true)
  • shell_execute 默认工作目录根为当前进程启动目录。需要修改根目录时使用 shell.WithWorkingDirRoot(...);确需关闭限制时使用 shell.WithUnrestrictedWorkingDir()
  • shell_execute 默认拒绝高危命令,并可用 shell.WithAllowedCommands(...) 将可执行命令收敛到白名单。
  • 对会产生大量结果的工具,应配置行数、输出长度或检索数量上限,避免把过多数据送入模型上下文。

开发约定

  • 新工具应放在对应领域子包内,再按需通过 tools/tools.go 暴露便捷入口。
  • 工具参数结构体应提供清晰的 jsonschema 描述,便于模型正确调用。
  • 有外部副作用的工具必须有默认安全策略,并提供显式选项放宽限制。
  • 新增工具时至少补一组参数校验或安全策略测试。

Documentation

Overview

Package tools 提供 AI Agent 工具的统一入口。

建议直接导入子 package 使用:

import "github.com/CoolBanHub/aggo/tools/knowledge"
import "github.com/CoolBanHub/aggo/tools/shell"
import "github.com/CoolBanHub/aggo/tools/cron"

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func GetCronTools added in v0.0.15

func GetCronTools(service *cronPkg.CronService, opts ...cron.CronOption) []tool.BaseTool

GetCronTools 获取定时任务工具

func GetDatabaseTools added in v0.0.15

func GetDatabaseTools(db *gorm.DB, opts ...database.Option) []tool.BaseTool

GetDatabaseTools 获取通用数据库执行工具(支持所有gorm兼容的数据库,如MySQL, PostgreSQL等)

func GetExecuteTools added in v0.0.15

func GetExecuteTools(opts ...shell.Option) []tool.BaseTool

GetExecuteTools 获取命令执行工具

func GetKnowledgeReasoningTools

func GetKnowledgeReasoningTools(r retriever.Retriever, retrieverOptions []retriever.Option) []tool.BaseTool

GetKnowledgeReasoningTools 获取知识推理工具

func GetKnowledgeTools

func GetKnowledgeTools(indexer indexer.Indexer, retriever retriever.Retriever, retrieverOptions *retriever.Options) []tool.BaseTool

GetKnowledgeTools 获取知识库管理工具

func GetShellTools added in v0.0.15

func GetShellTools(opts ...shell.Option) []tool.BaseTool

GetShellTools 获取全部 Shell 工具

func GetUserMemorySearchTool added in v0.3.0

func GetUserMemorySearchTool(provider any) (tool.BaseTool, error)

GetUserMemorySearchTool 获取按事件检索用户长期记忆的工具。 入参可以是 memory.MemoryProvider 也可以直接是 UserMemoryEventSearcher; 如果传入的 provider 不支持事件检索(例如 mem0/memu),返回 nil 工具与无错误,由调用方决定是否注册。

Types

This section is empty.

Directories

Path Synopsis
Package memory 提供与 aggo memory 模块配套使用的 Agent 工具。
Package memory 提供与 aggo memory 模块配套使用的 Agent 工具。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL