toolcall

package
v0.7.3 Latest Latest
Warning

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

Go to latest
Published: Apr 3, 2026 License: Apache-2.0 Imports: 27 Imported by: 0

Documentation

Overview

Package toolcall provides toolcall framework

Example (SkillUsage)

ExampleSkillUsage 示例:如何使用Skills系统

{
	// 这个示例展示了Skills系统的基本用法

	// 1. 连接到数据库
	dbPath := "/home/nanjj/.dscli/sqlite.db"
	db, err := sqlite.OpenDB(dbPath)
	if err != nil {
		fmt.Printf("连接数据库失败: %v\n", err)
		return
	}
	defer db.Close()

	// 2. 查询技能
	rows, err := db.Query(`
		SELECT name, description, category, priority
		FROM skills 
		WHERE is_global = 1 
		ORDER BY priority DESC
	`)
	if err != nil {
		fmt.Printf("查询技能失败: %v\n", err)
		return
	}
	defer rows.Close()

	// 3. 显示技能
	fmt.Println("全局技能列表:")
	for rows.Next() {
		var name, description, category string
		var priority int
		err := rows.Scan(&name, &description, &category, &priority)
		if err != nil {
			fmt.Printf("读取技能失败: %v\n", err)
			continue
		}
		fmt.Printf("  - %s (%s): %s (优先级: %d)\n",
			name, category, description, priority)
	}

	// 输出:
	// 全局技能列表:
	//   - Go测试规范 (go): Go语言测试最佳实践 (优先级: 90)
	//   - Git提交规范 (git): Git提交信息编写规范 (优先级: 85)
	//   - Markdown到Org转换 (markdown): Markdown到Org模式转换规则 (优先级: 80)
}

Index

Examples

Constants

This section is empty.

Variables

View Source
var DefaultToolResultTruncator = &ToolResultTruncator{
	MaxRunes:         8000,
	MaxBytes:         16000,
	KeepBothEnds:     true,
	TruncationMarker: "\n\n[...内容已截断...]\n\n",
}

DefaultToolResultTruncator 默认工具结果截断器

View Source
var SegmentExamples = map[string]string{

	"programming_general": `## 编程指导原则
1. 编写清晰、可维护的代码
2. 遵循{{if .IsGoProject}}Go语言{{else}}项目{{end}}的最佳实践
3. 添加必要的注释和文档
4. 考虑边界条件和错误处理`,

	"go_specific": `## Go项目特定要求
{{if .IsGoProject}}
1. 遵循Go的代码规范(gofmt, go vet)
2. 使用适当的错误处理模式
3. 编写可测试的代码
4. 合理使用接口和组合
{{else}}
(此指导仅适用于Go项目)
{{end}}`,

	"git_workflow": `## Git工作流程
{{if .GitUserName}}
当前用户:{{.GitUserName}}
{{end}}
{{if .IsGitClean}}
✅ 工作区干净,可以开始新任务
{{else}}
⚠️  工作区有未提交的更改,建议先提交或暂存
{{end}}

最佳实践:
1. 提交前运行测试
2. 编写有意义的提交信息
3. 保持提交小而专注`,

	"project_context": `## 项目上下文
项目:{{.ProjectName}} ({{.ProjectType}})
日期:{{.FormatDate}}
{{if .WorkingDirectory}}
工作目录:{{.WorkingDirectory}}
{{end}}

注意事项:
1. 了解项目结构和约定
2. 遵循团队编码规范
3. 考虑项目特定的约束条件`,

	"code_review": `## 代码审查指导
审查代码时关注:
1. 功能正确性
2. 代码可读性
3. 性能影响
4. 安全性考虑
5. 测试覆盖率

{{if .IsGoProject}}
Go特定审查点:
- 错误处理是否恰当
- 并发安全性
- 内存管理
- 接口设计
{{end}}`,

	"debugging_help": `## 调试指导
调试步骤:
1. 重现问题
2. 定位问题范围
3. 分析根本原因
4. 验证修复方案

可用工具:
{{if .IsGoProject}}
- go test -v (测试)
- go vet (静态分析)
- delve (调试器)
- pprof (性能分析)
{{else}}
- 项目特定的测试工具
- 日志分析
- 调试器
{{end}}`,

	"documentation": `## 文档编写指导
编写高质量文档:
1. 明确目标读者
2. 结构清晰
3. 示例丰富
4. 及时更新

{{if .ProjectName}}
**{{.ProjectName}}** 项目文档应包含:
- README.md(项目概述)
- API文档
- 使用示例
- 贡献指南
{{end}}`,
}

SegmentExamples 段落示例

Functions

func AllExampleNames

func AllExampleNames() []string

AllExampleNames 获取所有示例名称

func ArrangeArgs

func ArrangeArgs(ctx context.Context, cacheFile string) (context.Context, bool)

func ContentLikePattern

func ContentLikePattern(maxLength int) string

func CreateOrGetSessionID

func CreateOrGetSessionID(ctx context.Context) (sessionID int64, err error)

CreateOrGetSessionID 获取或创建会话ID

func CreateProjectSkill

func CreateProjectSkill(ctx context.Context, id int64) (err error)

func CreateSegment

func CreateSegment(domainID, modelID int64, name, content string, sortOrder int) (err error)

CreateSegment 创建新段落

func CreateSkill

func CreateSkill(ctx context.Context, skill *Skill) error

CreateSkill 创建新技能

func Error

func Error(err error) string

func ExampleUsage

func ExampleUsage() string

ExampleUsage 示例使用方式

func FixBrokenJSON

func FixBrokenJSON(broken string) (result string)

func GetCurrentDomainID

func GetCurrentDomainID(ctx context.Context) int64

GetCurrentDomainID 获取当前项目的领域ID

func GetCurrentModelID

func GetCurrentModelID(ctx context.Context) int64

GetCurrentModelID 获取当前模型ID

func GetCurrentSessionID

func GetCurrentSessionID(ctx context.Context) (sessionID int64)

func GetEnhancedSystemPrompt

func GetEnhancedSystemPrompt(ctx context.Context) string

GetEnhancedSystemPrompt 获取增强的系统提示词

func GetExampleSegment

func GetExampleSegment(name string) string

GetExampleSegment 获取示例段落

func GetOrCreateCacheFile

func GetOrCreateCacheFile(ctx context.Context, script string) (cacheFile string, err error)

func GetOrCreateTool

func GetOrCreateTool(name, description, category string) (int64, error)

GetOrCreateTool 获取或创建工具

func GetSystemPrompt

func GetSystemPrompt(ctx context.Context) string

GetSystemPrompt 获取系统提示词

func GetTemplateSystemPrompt

func GetTemplateSystemPrompt(ctx context.Context) string

GetTemplateSystemPrompt 获取模板化的系统提示词(兼容旧代码)

func GetTokenFromNetrc

func GetTokenFromNetrc(host string) (string, error)

GetTokenFromNetrc 从.netrc文件获取指定主机的token

func GetToolDisplayName

func GetToolDisplayName(name string) string

func GuessLanguage

func GuessLanguage(path string) string

guessLanguage 根据文件扩展名猜测语言

func HandleToolCall

func HandleToolCall(ctx context.Context, toolName string, argsRaw string) (result string, user string, err error)

HandleToolCall 处理工具调用(带统计和超时)

func JudgeHistory

func JudgeHistory(messages []*Message)

JudgeHistory - Cleanup the history

func OpenEditor

func OpenEditor(ctx context.Context, initialContent string) (content string, err error)

func RecordSkillUsage

func RecordSkillUsage(skillID int64, projectPath string) error

RecordSkillUsage 记录技能使用

func RecordToolUsage

func RecordToolUsage(ctx context.Context, toolID int64, success bool, errorMsg string) error

RecordToolUsage 记录工具使用

func RegisterTool

func RegisterTool(tool ToolDef)

RegisterTool 注册工具

func RunShell

func RunShell(ctx context.Context, script string) (result string, err error)

func SafeAsyncRecordUsage

func SafeAsyncRecordUsage(skillID int64, projectPath string)

safeAsyncRecordUsage 安全的异步记录技能使用

func SaveMessages

func SaveMessages(ctx context.Context, msgs ...Message) error

SaveMessages 保存消息(事务)

func Shebang

func Shebang(script string) (name string, arg []string)

func ShellExec

func ShellExec(ctx context.Context, script string) (out string, err error)

ShellExec 是混合实现的 Shell 执行函数 对于 shell 命令使用新的 internal/shell 包 对于非 shell 命令回退到原始的 os/exec 实现

func ShortenShellScript

func ShortenShellScript(ctx context.Context, script string) string

ShortenShellScript 生成脚本的简短摘要

func TitleLikePattern

func TitleLikePattern(maxLength int) string

func ToArrayType

func ToArrayType[T PrimitiveType](anyValues []any, anyValuesLen int) []T

func ToSQLNullString

func ToSQLNullString(tcs []ToolCall) (toolCalls sql.NullString)

func ToolArgsValue

func ToolArgsValue[T Primitive](args ToolArgs, key string, defaultValue T) T

ToolArgsValue 安全获取类型化参数值

func ToolCallsID

func ToolCallsID(tcs []ToolCall) string

func TruncateHead

func TruncateHead(s string, maxLen int) string

TruncateHead 截取字符串头部,超出部分用省略号代替。 若原字符串长度 <= maxLen,直接返回原串。 若 maxLen <= 省略号长度,返回省略号的前 maxLen 个字符。 否则返回 "原串前若干字符" + "..."

func TruncateHeadTail

func TruncateHeadTail(s string, maxLen int) string

TruncateHeadTail 截取字符串头部和尾部,中间用省略号连接。 若原字符串长度 <= maxLen,直接返回原串。 若 maxLen <= 省略号长度,返回省略号的前 maxLen 个字符。 否则将可用字符数(maxLen - 省略号长度)平均分配给头尾(尾部可能多一个字符),返回 "头" + "..." + "尾"

func TruncateJSON

func TruncateJSON(content string, maxRunes int) string

TruncateJSON 截断JSON内容

func TruncateMarkdown

func TruncateMarkdown(content string, maxRunes int) string

TruncateMarkdown 截断Markdown内容

func TruncateString

func TruncateString(s string, maxLen int) string

TruncateString 截断字符串,并在末尾添加省略号 参数:

s: 要截断的字符串
maxLen: 截断后的最大字符数(包括省略号)

返回值:

截断后的字符串。如果字符串长度不超过maxLen,则返回原字符串。
如果maxLen小于3,返回空字符串。
否则返回前(maxLen-3)个字符加上"..."。

注意:

  • 使用[]rune处理Unicode字符,避免截断时出现乱码
  • 省略号"..."占用3个字符位置
  • 当maxLen < 3时,无法添加省略号,返回空字符串

示例:

TruncateString("Hello World", 8)  // 返回 "Hello..."
TruncateString("你好世界", 4)      // 返回 "你好世界"
TruncateString("Test", 2)         // 返回 "" (maxLen < 3)

func TruncateSummary

func TruncateSummary(result string, maxRunes int) string

TruncateSummary 智能截断并添加摘要

func TruncateTail

func TruncateTail(s string, maxLen int) string

TruncateTail 截取字符串尾部,超出部分用省略号代替。 若原字符串长度 <= maxLen,直接返回原串。 若 maxLen <= 省略号长度,返回省略号的前 maxLen 个字符。 否则返回 "..." + "原串后若干字符"

func TruncateToolResult

func TruncateToolResult(result string) string

TruncateToolResult 截断工具执行结果

func UpdateContent

func UpdateContent(ctx context.Context, id int64, content string) (err error)

UpdateContent update message content

func UpdateHistory

func UpdateHistory(ctx context.Context, id int64) (err error)

UpdateHistory update message session_id to 0

func UpdateSegmentContent

func UpdateSegmentContent(id int64, content string) (err error)

UpdateSegmentContent 更新段落内容(支持模板)

func UpdateToolCalls

func UpdateToolCalls(ctx context.Context, id int64, tcs []ToolCall) (err error)

UpdateToolCalls update message content

Types

type ArrayType

type ArrayType interface {
	~[]string | ~[]float64 | ~[]float32 | ~[]int64 | ~[]int32 | ~[]int | ~[]bool
}

type Domain

type Domain struct {
	ID          int64     `json:"id"`
	Name        string    `json:"name"`
	Description string    `json:"description"`
	CreatedAt   time.Time `json:"created_at"`
}

Domain 领域定义

type FileStructure

type FileStructure struct {
	Language  string    `json:"language"`
	FilePath  string    `json:"file_path"`
	Package   string    `json:"package,omitempty"`
	Functions []*Symbol `json:"functions"`
	Classes   []*Symbol `json:"classes"`
	Imports   []string  `json:"imports"`
	Errors    []string  `json:"errors,omitempty"`
}

FileStructure 表示文件结构

func ParseFileStructure

func ParseFileStructure(ctx context.Context, filePath string) (*FileStructure, error)

ParseFileStructure 公共接口:解析文件结构

func ParseFileStructure0

func ParseFileStructure0(ctx context.Context, filePath, lang string, usePython bool) (*FileStructure, error)

ParseFileStructure0 解析文件结构

type Function

type Function struct {
	Name        string         `json:"name"`
	Description string         `json:"description"`
	Strict      bool           `json:"strict,omitempty"`
	Parameters  map[string]any `json:"parameters"` // JSON Schema 对象
}

type Message

type Message struct {
	ID               int64      `json:"-"`
	SessionID        int64      `json:"-"`
	ModelID          int64      `json:"-"`
	Role             string     `json:"role"`
	ReasoningContent string     `json:"reasoning_content,omitempty"`
	Content          string     `json:"content"`                // 始终输出,即使为空字符串
	ToolCalls        []ToolCall `json:"tool_calls,omitempty"`   // 仅当有工具调用时输出
	ToolCallID       string     `json:"tool_call_id,omitempty"` // 仅当 role="tool" 时输出
	CreatedAt        time.Time  `json:"-"`

	OK bool `json:"-"`
	// contains filtered or unexported fields
}

Message 扩展,支持工具调用(注意:Content 字段不再使用 omitempty)

func BuildSystemMessages

func BuildSystemMessages(ctx context.Context) ([]Message, error)

BuildSystemMessages 构建系统消息

func BuildSystemMessagesWithSegments

func BuildSystemMessagesWithSegments(ctx context.Context) ([]Message, error)

BuildSystemMessagesWithSegments 构建包含段落的系统消息

func CleanupReverse

func CleanupReverse(messages []Message) (cleaned []Message)

CleanupReverse - make the messages clean, remove the mistake message

func HandleToolCalls

func HandleToolCalls(ctx context.Context, tcs []ToolCall) (inputs []Message)

HandleToolCalls 处理工具调用(带统计)

func ListHistory

func ListHistory(ctx context.Context) ([]*Message, error)

ListHistory 加载指定会话的所有历史消息,按时间升序返回

func LoadEnhancedPrompts

func LoadEnhancedPrompts(ctx context.Context) ([]Message, error)

LoadEnhancedPrompts 加载增强的提示词

func LoadHistory

func LoadHistory(ctx context.Context) ([]Message, error)

LoadHistory 加载指定会话的所有历史消息,按时间升序返回

func LoadPrompts

func LoadPrompts(ctx context.Context) ([]Message, error)

LoadPrompts 加载提示词

func LoadSkills

func LoadSkills(ctx context.Context) (messages []Message, err error)

LoadSkills 加载技能到系统提示词中

func ShowMessage

func ShowMessage(ctx context.Context, id int64) (message *Message, err error)

func (*Message) GetTokens

func (m *Message) GetTokens() int

type NetrcEntry

type NetrcEntry struct {
	Machine  string
	Login    string
	Password string
}

NetrcEntry 表示.netrc文件中的一个条目

func ParseNetrc

func ParseNetrc(path string) ([]NetrcEntry, error)

ParseNetrc 解析.netrc文件,支持单行格式:machine host login user password token

type Primitive

type Primitive interface {
	PrimitiveType | ArrayType
}

type PrimitiveType

type PrimitiveType interface {
	~string | ~float64 | ~float32 | ~int64 | ~int32 | ~int | ~bool
}

type ProjectDomain

type ProjectDomain struct {
	ID          int64     `json:"id"`
	ProjectRoot string    `json:"project_path"`
	DomainID    int64     `json:"domain_id"`
	CreatedAt   time.Time `json:"created_at"`
}

ProjectDomain 项目领域关联

type ProjectSkill

type ProjectSkill struct {
	ProjectPath string
	SkillID     int64
	IsEnabled   bool
	EnabledAt   time.Time
	LastUsed    sql.NullTime
}

ProjectSkill 表示项目与技能的关联

type PromptSegment

type PromptSegment struct {
	ID        int64     `json:"id"`
	DomainID  int64     `json:"domain_id"`
	ModelID   int64     `json:"model_id"` // -1=通用, 0=deepseek-chat, 1=deepseek-reasoner
	Name      string    `json:"name"`
	Content   string    `json:"content"`
	SortOrder int       `json:"sort_order"`
	Enabled   bool      `json:"enabled"`
	CreatedAt time.Time `json:"created_at"`
	UpdatedAt time.Time `json:"updated_at"`
}

PromptSegment 提示词段落

type SegmentManager

type SegmentManager struct{}

SegmentManager 段落管理器

func NewSegmentManager

func NewSegmentManager() *SegmentManager

NewSegmentManager 创建段落管理器

func (*SegmentManager) CreateSegment

func (sm *SegmentManager) CreateSegment(ctx context.Context, domainID, modelID int64, name, content string, sortOrder int) error

CreateSegment 创建段落

func (*SegmentManager) DeleteSegment

func (sm *SegmentManager) DeleteSegment(ctx context.Context, id int64) error

DeleteSegment 删除段落

func (*SegmentManager) GetDomainByID

func (sm *SegmentManager) GetDomainByID(ctx context.Context, id int64) (*Domain, error)

GetDomainByID 根据ID获取领域

func (*SegmentManager) GetSegmentByID

func (sm *SegmentManager) GetSegmentByID(ctx context.Context, id int64) (*PromptSegment, error)

GetSegmentByID 根据ID获取段落

func (*SegmentManager) GetSegmentsForPrompt

func (sm *SegmentManager) GetSegmentsForPrompt(ctx context.Context, modelID int64, domainID int64) ([]PromptSegment, error)

GetSegmentsForPrompt 获取用于生成提示词的段落

func (*SegmentManager) GetSystemPrompt

func (sm *SegmentManager) GetSystemPrompt(ctx context.Context, modelID int64, domainID int64) (string, error)

GetSystemPrompt 获取系统提示词

func (*SegmentManager) ListDomains

func (sm *SegmentManager) ListDomains(ctx context.Context) ([]Domain, error)

ListDomains 列出所有领域

func (*SegmentManager) ListSegments

func (sm *SegmentManager) ListSegments(ctx context.Context) ([]PromptSegment, error)

ListSegments 列出所有段落

func (*SegmentManager) RenderSystemPrompt

func (sm *SegmentManager) RenderSystemPrompt(ctx context.Context, modelID int64, domainID int64, config *SystemPromptConfig) (string, error)

RenderSystemPrompt 渲染系统提示词

func (*SegmentManager) UpdateSegment

func (sm *SegmentManager) UpdateSegment(ctx context.Context, id int64, name, content string, sortOrder int, enabled bool) error

UpdateSegment 更新段落

type SegmentTemplateRenderer

type SegmentTemplateRenderer struct {
	// contains filtered or unexported fields
}

SegmentTemplateRenderer 段落模板渲染器

func NewSegmentTemplateRenderer

func NewSegmentTemplateRenderer(ctx context.Context) *SegmentTemplateRenderer

NewSegmentTemplateRenderer 创建段落模板渲染器

func (*SegmentTemplateRenderer) GetSegmentsForProject

func (r *SegmentTemplateRenderer) GetSegmentsForProject() (segment []PromptSegment, err error)

GetSegmentsForProject 获取项目的提示词段落

func (*SegmentTemplateRenderer) RenderAllSegments

func (r *SegmentTemplateRenderer) RenderAllSegments() (string, error)

RenderAllSegments 渲染所有段落

func (*SegmentTemplateRenderer) RenderSegment

func (r *SegmentTemplateRenderer) RenderSegment(content string) (string, error)

RenderSegment 渲染单个段落

type Skill

type Skill struct {
	ID          int64
	Name        string
	Description string
	Content     string
	Category    string
	Priority    int
	IsGlobal    bool
	UsageCount  int
	CreatedAt   time.Time
	UpdatedAt   time.Time
}

Skill 表示一个技能

func GetProjectSkills

func GetProjectSkills(ctx context.Context) (skills []*Skill, err error)

func GetSkillByID

func GetSkillByID(id int64) (*Skill, error)

GetSkillByID 根据ID获取技能

func GetSkillByName

func GetSkillByName(name string) (*Skill, error)

GetSkillByName 根据名称获取技能

type Symbol

type Symbol struct {
	Name      string `json:"name"`
	Type      string `json:"type"` // "function", "method", "struct", "interface", "type"
	Line      int    `json:"line"`
	Column    int    `json:"column"`
	EndLine   int    `json:"end_line"`
	EndColumn int    `json:"end_column"`
	Signature string `json:"signature,omitempty"` // 函数签名
	Receiver  string `json:"receiver,omitempty"`  // 方法接收者
}

Symbol 表示一个代码符号(函数/类)

type SystemPromptConfig

type SystemPromptConfig struct {
	// 基础信息
	CurrentDate string
	ProjectRoot string
	ConfigDir   string

	// Git信息
	GitUserName  string
	GitUserEmail string
	GitBranch    string
	GitStatus    string

	// 项目信息
	ProjectName string
	ProjectType string

	// 环境信息
	WorkingDirectory string
	Hostname         string
	Username         string

	// 模型特定配置
	ModelID int64
}

SystemPromptConfig 系统提示词配置

func GetSystemPromptConfig

func GetSystemPromptConfig(ctx context.Context) *SystemPromptConfig

GetSystemPromptConfig 获取系统提示词配置

func NewSystemPromptConfig

func NewSystemPromptConfig(ctx context.Context) *SystemPromptConfig

NewSystemPromptConfig 创建系统提示词配置

func (*SystemPromptConfig) FormatDate

func (c *SystemPromptConfig) FormatDate() string

辅助函数:在模板中可用的函数

func (*SystemPromptConfig) GeneratePrompt

func (c *SystemPromptConfig) GeneratePrompt() string

GeneratePrompt 生成系统提示词(已弃用,请使用GeneratePromptWithTemplate)

func (*SystemPromptConfig) GeneratePromptWithTemplate

func (c *SystemPromptConfig) GeneratePromptWithTemplate() string

GeneratePromptWithTemplate 使用模板生成提示词

func (*SystemPromptConfig) IsGitClean

func (c *SystemPromptConfig) IsGitClean() bool

func (*SystemPromptConfig) IsGoProject

func (c *SystemPromptConfig) IsGoProject() bool

type SystemPromptTemplate

type SystemPromptTemplate struct {
	// 模板内容
	Template string
	// 模板名称(用于缓存)
	Name string
}

SystemPromptTemplate 系统提示词模板

func GetTemplateForModel

func GetTemplateForModel(modelID int64) *SystemPromptTemplate

GetTemplateForModel 获取指定模型的模板

func (*SystemPromptTemplate) Render

func (t *SystemPromptTemplate) Render(data *TemplateData) (string, error)

Render 渲染模板

type TemplateData

type TemplateData struct {
	// 基础信息
	CurrentDate string
	ProjectRoot string
	ConfigDir   string

	// Git信息
	GitUserName  string
	GitUserEmail string
	GitBranch    string
	GitStatus    string

	// 项目信息
	ProjectName string
	ProjectType string

	// 环境信息
	WorkingDirectory string
	Hostname         string
	Username         string

	// 模型特定配置
	ModelID int64
}

TemplateData 模板数据

func NewTemplateData

func NewTemplateData(config *SystemPromptConfig) *TemplateData

NewTemplateData 从SystemPromptConfig创建模板数据

type TemplateVariable

type TemplateVariable struct {
	Name        string
	Description string
	Example     string
}

TemplateVariable 模板变量信息

func GetTemplateVariables

func GetTemplateVariables() []TemplateVariable

GetTemplateVariables 获取可用的模板变量

type Tool

type Tool struct {
	Type     string   `json:"type"`
	Function Function `json:"function"`
	// contains filtered or unexported fields
}

Tool 定义可调用的工具

func GetAllTools

func GetAllTools(ctx context.Context) []Tool

GetAllTools 获取所有工具定义(用于API调用)

func (*Tool) GetTokens

func (t *Tool) GetTokens() int

type ToolArgs

type ToolArgs map[string]any

ToolArgs 参数定义

type ToolCall

type ToolCall struct {
	ID       string           `json:"id"`
	Type     string           `json:"type"`
	Function ToolCallFunction `json:"function"`
}

type ToolCallFunction

type ToolCallFunction struct {
	Name      string `json:"name"`
	Arguments string `json:"arguments"` // JSON 字符串
}

type ToolContent

type ToolContent struct {
	Result     string `json:"result,omitzero"`
	Error      string `json:"error,omitzero"`
	Suggestion string `json:"suggestion,omitzero"`
}

func (*ToolContent) String

func (tc *ToolContent) String() (content string)

type ToolDef

type ToolDef struct {
	Name        string
	DisplayName string
	Description string
	Strict      bool
	Parameters  map[string]any
	Category    string
	Timeout     time.Duration // 工具执行超时时间
	Handler     func(ctx context.Context, args ToolArgs) (string, string, error)
}

ToolDef 工具定义

func GetToolDef

func GetToolDef(ctx context.Context, toolName string) (tool ToolDef, ok bool)

type ToolDesc

type ToolDesc struct {
	ID          int64
	Name        string
	Description string
	Category    string
	UsageCount  int
	CreatedAt   time.Time
	UpdatedAt   time.Time
}

ToolDesc 表示一个工具

func GetTool

func GetTool(id int64) (*ToolDesc, error)

GetTool 根据ID获取工具

func GetToolByName

func GetToolByName(name string) (*ToolDesc, error)

GetToolByName 根据名称获取工具

func ListTools

func ListTools(category string) ([]ToolDesc, error)

ListTools 列出所有工具(可按分类过滤)

type ToolResultTruncator

type ToolResultTruncator struct {
	// 最大字符数(rune数量)
	MaxRunes int
	// 最大字节数
	MaxBytes int
	// 是否保留开头和结尾
	KeepBothEnds bool
	// 截断标记
	TruncationMarker string
}

ToolResultTruncator 工具结果截断器

func (*ToolResultTruncator) Truncate

func (t *ToolResultTruncator) Truncate(result string) string

Truncate 截断字符串

type ToolUsage

type ToolUsage struct {
	ID          int64
	ProjectPath string
	ToolID      int64
	UsedAt      time.Time
	Success     bool
	ErrorMsg    string
}

ToolUsage 表示工具使用记录

type ToolUsageStat

type ToolUsageStat struct {
	Name        string
	UsageCount  int
	SuccessRate float64
	LastUsed    time.Time
}

func GetProjectToolUsage

func GetProjectToolUsage(ctx context.Context, days int) ([]ToolUsageStat, error,
)

GetProjectToolUsage 获取项目工具使用情况

func GetToolUsageStats

func GetToolUsageStats(days int) ([]ToolUsageStat, error)

GetToolUsageStats 获取工具使用统计

Source Files

  • editor.go
  • message.go
  • netrc.go
  • parse.go
  • prompt.go
  • segment.go
  • segment_examples.go
  • segment_init.go
  • segment_manager.go
  • segment_template.go
  • session.go
  • shell.go
  • skill.go
  • skill_sql.go
  • system_prompt.go
  • system_prompt_template.go
  • tool.go
  • tool_def.go
  • truncate.go

Directories

Path Synopsis
Package alltools to load all tools
Package alltools to load all tools
Package file provides file ops tool calls
Package file provides file ops tool calls
Package git provides git tool for LLM to use.
Package git provides git tool for LLM to use.
Package issue to address issue create, list, show, assign, close
Package issue to address issue create, list, show, assign, close
Package shell for shell tools like shell and python
Package shell for shell tools like shell and python

Jump to

Keyboard shortcuts

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