plugins

package
v0.1.1 Latest Latest
Warning

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

Go to latest
Published: Jul 29, 2026 License: Apache-2.0 Imports: 20 Imported by: 0

Documentation

Index

Constants

View Source
const MaxSkillDescChars = 250

SkillListText 生成 Layer 1 的简短 skill 列表 每个 skill 的描述限制在 MaxSkillDescChars 字符内(参考 Claude Code 的 MAX_LISTING_DESC_CHARS = 250)

Variables

This section is empty.

Functions

func DefaultSkillConfigPath

func DefaultSkillConfigPath() string

DefaultSkillConfigPath 返回默认的 skill 配置路径

func DiscoverSkillsFromDir

func DiscoverSkillsFromDir(dir string) []types.Skill

DiscoverSkillsFromDir scans a directory for skill folders. Each immediate subdirectory that contains a SKILL.md is registered as a skill; its metadata is derived from the SKILL.md YAML frontmatter and its layout on disk.

func GetBaseDir

func GetBaseDir() string

GetBaseDir returns the unified base directory used for skills, reports and other runtime data.

Priority: AGENT_RUNTIME_HOME > XQL_BASE_DIR > ~/.agent-runtime

func GetReportsDir

func GetReportsDir() string

GetReportsDir returns the directory where generated HTML/PPTX reports are stored.

func GetSkillsDir

func GetSkillsDir() string

GetSkillsDir returns the directory that holds skill asset folders (each containing a SKILL.md plus scripts/templates/references).

Priority: SKILLS_DIR (env) > <baseDir>/skills

func LoadSkills

func LoadSkills(reqSkills []types.Skill, skillsDir string) []types.Skill

LoadSkills builds the effective skill set for a run. It starts from the skills declared on the request (filling in an empty Instruction from the skill's SKILL.md on disk when available) and then augments the set with any skills auto-discovered under skillsDir. Request skills take precedence over discovered skills with the same ID.

func MergeSkills

func MergeSkills(base []types.Skill, extras []types.Skill) []types.Skill

MergeSkills appends extras that are not already present (by ID) into base and returns the combined slice. base entries take precedence.

func NewHtmlInterpreterTool

func NewHtmlInterpreterTool(workDir, reportsDir, reportsURL string) *htmlInterpreterTool

NewHtmlInterpreterTool 创建 HTML 解释器工具 reportsDir: 报告保存的目录(通常是 uploads/sessionID) reportsURL: 报告访问的 URL 基础路径

func NewPptxInterpreterTool

func NewPptxInterpreterTool(workDir, reportsDir, reportsURL string) *pptxInterpreterTool

NewPptxInterpreterTool 创建PPT解释器工具

Types

type ConversationPattern

type ConversationPattern struct {
	Name        string    `json:"name"`        // 模式名称
	Description string    `json:"description"` // 模式描述
	ToolSeq     []string  `json:"tool_seq"`    // 工具调用序列
	Frequency   int       `json:"frequency"`   // 出现频率
	Examples    []string  `json:"examples"`    // 示例
	CreatedAt   time.Time `json:"created_at"`
}

ConversationPattern 对话模式

type CreateSkillInput

type CreateSkillInput struct {
	Name        string `json:"name"`        // 技能名称(必须,文件系统安全)
	Content     string `json:"content"`     // 完整的 SKILL.md 内容(必须,包含 frontmatter + 正文)
	Category    string `json:"category"`    // 分类(可选)
	Description string `json:"description"` // 简短描述(可选)
}

CreateSkillInput create_skill 工具输入

type CreateSkillTool

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

CreateSkillTool 主动创建技能工具 允许 Agent 在完成任务后主动创建可复用的技能

func NewCreateSkillTool

func NewCreateSkillTool() *CreateSkillTool

NewCreateSkillTool 创建 create_skill 工具

func NewCreateSkillToolForDir

func NewCreateSkillToolForDir(skillsDir string) *CreateSkillTool

NewCreateSkillToolForDir keeps newly created skills in the same directory used for discovery, so they become available on the next request.

func (*CreateSkillTool) Info

Info 返回工具信息

func (*CreateSkillTool) InvokableRun

func (t *CreateSkillTool) InvokableRun(ctx context.Context, argumentsInJSON string, opt ...tool.Option) (string, error)

InvokableRun 执行创建技能

type CsvDataAnalysisReportPlaceholders

type CsvDataAnalysisReportPlaceholders struct {
	LANG                 string
	ReportTitle          string
	ReportSubtitle       string
	ExecSummary          string
	DistributionInsights string
	CorrelationInsights  string
	CategoricalInsights  string
	TimeSeriesInsights   string
	Conclusions          string
	ChartDataJSON        string
}

CsvDataAnalysisReportPlaceholders csv-data-analysis 报告模板的占位符

func ExtractCsvInsightsFromRawText

func ExtractCsvInsightsFromRawText(rawText string) *CsvDataAnalysisReportPlaceholders

ExtractCsvInsightsFromRawText 从原始文本中提取 csv-data-analysis 报告所需的数据 当 inner agent 直接输出 csv_analyzer 的原始结果(包含 ###CHART_DATA_JSON_START###...###CHART_DATA_JSON_END### 标记)时 使用此函数提取报告所需的数据

func (*CsvDataAnalysisReportPlaceholders) ToMap

ToMap 将 CsvDataAnalysisReportPlaceholders 转换为 map[string]any

type ExecutionPlan

type ExecutionPlan struct {
	Stages []ExecutionStage // 分阶段执行,每阶段内可并行
}

ExecutionPlan 执行计划

type ExecutionStage

type ExecutionStage struct {
	Skills []SkillExecution // 该阶段内并行执行的 skill
}

type SkillConfigManager

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

SkillConfigManager 管理 skill 的全局配置

func NewSkillConfigManager

func NewSkillConfigManager(configPath string) (*SkillConfigManager, error)

NewSkillConfigManager 创建配置管理器

func (*SkillConfigManager) Get

func (m *SkillConfigManager) Get(skillName string, key string) string

Get 获取 skill 的配置

func (*SkillConfigManager) GetAll

func (m *SkillConfigManager) GetAll(skillName string) map[string]string

GetAll 获取 skill 的所有配置

func (*SkillConfigManager) Load

func (m *SkillConfigManager) Load(configPath string) error

Load 从文件加载配置

func (*SkillConfigManager) Merge

func (m *SkillConfigManager) Merge(skillName string, overrides map[string]string)

Merge 合并配置

func (*SkillConfigManager) Parse

func (m *SkillConfigManager) Parse(data []byte) error

Parse 解析配置数据

func (*SkillConfigManager) Set

func (m *SkillConfigManager) Set(skillName, key, value string)

Set 设置配置(用于运行时修改)

func (*SkillConfigManager) ToEnvVars

func (m *SkillConfigManager) ToEnvVars(skillName string) map[string]string

ToEnvVars 转换为环境变量格式

type SkillDraft

type SkillDraft struct {
	Name        string               `json:"name"`        // 技能名称
	Description string               `json:"description"` // 触发描述
	Trigger     string               `json:"trigger"`     // 触发关键词
	Version     string               `json:"version"`
	Content     string               `json:"content"`           // SKILL.md 内容
	Pattern     *ConversationPattern `json:"pattern,omitempty"` // 来源模式
}

SkillDraft 技能草稿

type SkillExecution

type SkillExecution struct {
	Skill    types.Skill
	InputCtx map[string]any // 该 skill 的输入上下文 (从上游 skill 结果获取)
}

type SkillGenerator

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

SkillGenerator 技能生成器

func NewSkillGenerator

func NewSkillGenerator() *SkillGenerator

NewSkillGenerator 创建技能生成器

func NewSkillGeneratorWithDir

func NewSkillGeneratorWithDir(skillsDir string) *SkillGenerator

NewSkillGeneratorWithDir creates a generator targeting the effective skills directory.

func (*SkillGenerator) AnalyzeToolCalls

func (g *SkillGenerator) AnalyzeToolCalls(toolCalls []ToolCall) *ConversationPattern

AnalyzeToolCalls 分析工具调用序列,检测可复用模式

func (*SkillGenerator) CreateSkillFromPattern

func (g *SkillGenerator) CreateSkillFromPattern(pattern *ConversationPattern) (string, error)

CreateSkillFromPattern 从模式创建技能

func (*SkillGenerator) GenerateSkillDraft

func (g *SkillGenerator) GenerateSkillDraft(pattern *ConversationPattern) *SkillDraft

GenerateSkillDraft 生成技能草稿

func (*SkillGenerator) ListPatterns

func (g *SkillGenerator) ListPatterns() []ConversationPattern

ListPatterns 列出所有检测到的模式

func (*SkillGenerator) LoadPatterns

func (g *SkillGenerator) LoadPatterns(path string) error

LoadPatterns 从文件加载模式

func (*SkillGenerator) SavePatterns

func (g *SkillGenerator) SavePatterns(path string) error

SavePatterns 保存模式到文件

func (*SkillGenerator) SaveSkillDraft

func (g *SkillGenerator) SaveSkillDraft(draft *SkillDraft) (string, error)

SaveSkillDraft 保存技能草稿到文件

func (*SkillGenerator) ShouldCreateSkill

func (g *SkillGenerator) ShouldCreateSkill(pattern *ConversationPattern) bool

ShouldCreateSkill 判断是否应该创建技能

type SkillMount

type SkillMount struct {
	Source   string `yaml:"source"`
	Target   string `yaml:"target"`
	ReadOnly bool   `yaml:"read_only"`
}

SkillMount 文件挂载配置

type SkillPlanner

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

SkillPlanner 技能规划器 - LLM 驱动

func NewSkillPlanner

func NewSkillPlanner(skills []types.Skill, skillRunner *SkillRunner, model model.ToolCallingChatModel) *SkillPlanner

NewSkillPlanner 创建技能规划器

func (*SkillPlanner) Execute

func (p *SkillPlanner) Execute(ctx context.Context, plan *ExecutionPlan) (map[string]any, error)

Execute 执行计划

func (*SkillPlanner) PlanWithLLM

func (p *SkillPlanner) PlanWithLLM(ctx context.Context, userMessage string, contextData map[string]any) (*ExecutionPlan, error)

PlanWithLLM 使用 LLM 分析上下文,自主决定需要执行哪些 skill 以及顺序

type SkillRunner

type SkillRunner struct {

	// CurrentSessionID 由 dispatcher 设置,标识当前请求的 session
	CurrentSessionID string
	// contains filtered or unexported fields
}

SkillRunner runs skills progressively with sliding-window approach

func NewSkillRunner

func NewSkillRunner(skills []types.Skill, skillsDir string, sandboxCfg *types.SandboxConfig, model model.ToolCallingChatModel, configMgr *SkillConfigManager, uploadsBaseDir string) *SkillRunner

NewSkillRunner creates a new skill runner

func (*SkillRunner) BuildLoadSkillTool

func (r *SkillRunner) BuildLoadSkillTool() tool.BaseTool

BuildLoadSkillTool creates a tool for loading skill details on-demand

func (*SkillRunner) BuildSkillOrchestratorTool

func (r *SkillRunner) BuildSkillOrchestratorTool(planner *SkillPlanner) tool.BaseTool

BuildSkillOrchestratorTool creates a tool for orchestrating multiple skills with LLM planning

func (*SkillRunner) BuildSkillTool

func (r *SkillRunner) BuildSkillTool() tool.BaseTool

BuildSkillTool creates a tool for running skills

func (*SkillRunner) GetAutoData

func (r *SkillRunner) GetAutoData(sessionID string) map[string]string

GetAutoData 获取存储的 marker 数据

func (*SkillRunner) RunSkill

func (r *SkillRunner) RunSkill(ctx context.Context, name string, input map[string]any, sessionID string) (string, error)

RunSkill runs a skill with given input using sliding-window approach sessionID 用于标识同一个请求中的多次 skill 调用,实现工作目录共享

func (*SkillRunner) SetAutoData

func (r *SkillRunner) SetAutoData(sessionID string, key string, value string)

SetAutoData 存储脚本输出的 marker 数据

func (*SkillRunner) SkillListText

func (r *SkillRunner) SkillListText() string

type SkillSandboxEnv

type SkillSandboxEnv struct {
	// Env 要传递给沙箱的环境变量
	Env map[string]string `yaml:"env"`
	// Mounts 要挂载到沙箱的文件
	Mounts []SkillMount `yaml:"mounts"`
}

SkillSandboxEnv skill 沙箱环境变量配置

func GetSkillSandboxEnv

func GetSkillSandboxEnv(skillName string, configPath string) *SkillSandboxEnv

GetSkillSandboxEnv 获取 skill 的沙箱环境配置

type SlideConfig

type SlideConfig struct {
	Title        string `json:"title"`
	Content      string `json:"content"`
	Bg           string `json:"bg"`
	TitleColor   string `json:"title_color"`
	ContentColor string `json:"content_color"`
	TitleSize    int    `json:"title_size"`
	ContentSize  int    `json:"content_size"`
}

SlideConfig 幻灯片配置

type ToolCall

type ToolCall struct {
	ToolName string    `json:"tool_name"`
	Args     string    `json:"args"`
	Result   string    `json:"result"`
	Duration int64     `json:"duration_ms"`
	Time     time.Time `json:"time"`
}

ToolCall 工具调用记录

Jump to

Keyboard shortcuts

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