Documentation
¶
Index ¶
- Constants
- func DefaultSkillConfigPath() string
- func DiscoverSkillsFromDir(dir string) []types.Skill
- func GetBaseDir() string
- func GetReportsDir() string
- func GetSkillsDir() string
- func LoadSkills(reqSkills []types.Skill, skillsDir string) []types.Skill
- func MergeSkills(base []types.Skill, extras []types.Skill) []types.Skill
- func NewHtmlInterpreterTool(workDir, reportsDir, reportsURL string) *htmlInterpreterTool
- func NewPptxInterpreterTool(workDir, reportsDir, reportsURL string) *pptxInterpreterTool
- type ConversationPattern
- type CreateSkillInput
- type CreateSkillTool
- type CsvDataAnalysisReportPlaceholders
- type ExecutionPlan
- type ExecutionStage
- type SkillConfigManager
- func (m *SkillConfigManager) Get(skillName string, key string) string
- func (m *SkillConfigManager) GetAll(skillName string) map[string]string
- func (m *SkillConfigManager) Load(configPath string) error
- func (m *SkillConfigManager) Merge(skillName string, overrides map[string]string)
- func (m *SkillConfigManager) Parse(data []byte) error
- func (m *SkillConfigManager) Set(skillName, key, value string)
- func (m *SkillConfigManager) ToEnvVars(skillName string) map[string]string
- type SkillDraft
- type SkillExecution
- type SkillGenerator
- func (g *SkillGenerator) AnalyzeToolCalls(toolCalls []ToolCall) *ConversationPattern
- func (g *SkillGenerator) CreateSkillFromPattern(pattern *ConversationPattern) (string, error)
- func (g *SkillGenerator) GenerateSkillDraft(pattern *ConversationPattern) *SkillDraft
- func (g *SkillGenerator) ListPatterns() []ConversationPattern
- func (g *SkillGenerator) LoadPatterns(path string) error
- func (g *SkillGenerator) SavePatterns(path string) error
- func (g *SkillGenerator) SaveSkillDraft(draft *SkillDraft) (string, error)
- func (g *SkillGenerator) ShouldCreateSkill(pattern *ConversationPattern) bool
- type SkillMount
- type SkillPlanner
- type SkillRunner
- func (r *SkillRunner) BuildLoadSkillTool() tool.BaseTool
- func (r *SkillRunner) BuildSkillOrchestratorTool(planner *SkillPlanner) tool.BaseTool
- func (r *SkillRunner) BuildSkillTool() tool.BaseTool
- func (r *SkillRunner) GetAutoData(sessionID string) map[string]string
- func (r *SkillRunner) RunSkill(ctx context.Context, name string, input map[string]any, sessionID string) (string, error)
- func (r *SkillRunner) SetAutoData(sessionID string, key string, value string)
- func (r *SkillRunner) SkillListText() string
- type SkillSandboxEnv
- type SlideConfig
- type ToolCall
Constants ¶
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 ¶
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 ¶
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 ¶
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) 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 ¶
func (p *CsvDataAnalysisReportPlaceholders) ToMap() map[string]any
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 设置配置(用于运行时修改)
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 SkillGenerator ¶
type SkillGenerator struct {
// contains filtered or unexported fields
}
SkillGenerator 技能生成器
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 幻灯片配置