skill

package
v0.5.12 Latest Latest
Warning

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

Go to latest
Published: Aug 13, 2026 License: Apache-2.0 Imports: 7 Imported by: 0

Documentation

Overview

Package skill 提供 Skill(技能)注册、发现和执行系统

Skill 是可复用的 Agent 能力单元,支持:

  • 动态注册和注销
  • 按名称/标签/描述搜索
  • 启用/禁用控制
  • 签名验证确保安全
  • 变更钩子通知

使用示例:

registry := skill.NewRegistry()
registry.Register(&skill.Skill{
    Name:        "translate",
    Description: "多语言翻译",
    Handler: func(ctx context.Context, input map[string]any) (map[string]any, error) {
        return map[string]any{"result": "translated"}, nil
    },
})
result, err := registry.Execute(ctx, "translate", input)

Package skill 的签名验证模块

提供技能签名验证能力,确保技能来源可信:

  • HMAC-SHA256 签名
  • 通用 Verifier 接口(可扩展 Ed25519 等)

使用示例:

signer := skill.NewHMACSigner([]byte("secret"))
sig := signer.Sign([]byte("data"))
err := signer.Verify([]byte("data"), sig)

Index

Constants

This section is empty.

Variables

View Source
var (
	// ErrSkillNotFound 技能未找到
	ErrSkillNotFound = errors.New("skill: 技能未找到")

	// ErrSkillExists 技能已存在
	ErrSkillExists = errors.New("skill: 技能已存在")

	// ErrSkillDisabled 技能已禁用
	ErrSkillDisabled = errors.New("skill: 技能已禁用")

	// ErrInvalidSkill 无效的技能定义
	ErrInvalidSkill = errors.New("skill: 无效的技能定义")
)
View Source
var (
	// ErrInvalidSignature 签名验证失败
	ErrInvalidSignature = errors.New("skill: 签名验证失败")

	// ErrNoVerifier 未配置签名验证器
	ErrNoVerifier = errors.New("skill: 未配置签名验证器")
)

Functions

func VerifySkill

func VerifySkill(s *Skill, sig *SkillSignature, verifier Verifier) error

VerifySkill 验证技能签名

Types

type HMACSigner

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

HMACSigner 基于 HMAC-SHA256 的签名器

func NewHMACSigner

func NewHMACSigner(secret []byte) *HMACSigner

NewHMACSigner 创建 HMAC-SHA256 签名器

secret 会被拷贝,调用方后续修改不影响签名器。

func (*HMACSigner) Algorithm

func (h *HMACSigner) Algorithm() string

Algorithm 返回算法名称

func (*HMACSigner) Sign

func (h *HMACSigner) Sign(data []byte) []byte

Sign 计算 HMAC-SHA256 签名

func (*HMACSigner) Verify

func (h *HMACSigner) Verify(data []byte, signature []byte) error

Verify 验证 HMAC-SHA256 签名

type Hook

type Hook func(event HookEvent, skill *Skill)

Hook 变更钩子函数

type HookEvent

type HookEvent string

HookEvent 钩子事件类型

const (
	// EventRegistered 技能已注册
	EventRegistered HookEvent = "registered"

	// EventUnregistered 技能已注销
	EventUnregistered HookEvent = "unregistered"

	// EventEnabled 技能已启用
	EventEnabled HookEvent = "enabled"

	// EventDisabled 技能已禁用
	EventDisabled HookEvent = "disabled"
)

type Registry

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

Registry 技能注册中心

管理所有已注册的 Skill,提供增删改查和执行能力。 线程安全。

func NewRegistry

func NewRegistry() *Registry

NewRegistry 创建技能注册中心

func (*Registry) Count

func (r *Registry) Count() int

Count 返回已注册技能数量

func (*Registry) Disable

func (r *Registry) Disable(name string) error

Disable 禁用技能

func (*Registry) Enable

func (r *Registry) Enable(name string) error

Enable 启用技能

func (*Registry) Execute

func (r *Registry) Execute(ctx context.Context, name string, input map[string]any) (map[string]any, error)

Execute 查找并执行技能

func (*Registry) Get

func (r *Registry) Get(name string) (*Skill, error)

Get 获取技能(返回副本,不会泄露内部指针)

func (*Registry) List

func (r *Registry) List() []*Skill

List 列出所有已启用的技能(返回副本)

func (*Registry) ListAll

func (r *Registry) ListAll() []*Skill

ListAll 列出所有技能(包括已禁用的,返回副本)

func (*Registry) OnChange

func (r *Registry) OnChange(hook Hook)

OnChange 注册变更钩子

func (*Registry) Register

func (r *Registry) Register(s *Skill) error

Register 注册技能

要求 Name 非空且唯一。若 Skill 为首次注册则自动设置 CreatedAt 和 Enabled。

func (*Registry) Search

func (r *Registry) Search(query string) []*Skill

Search 搜索技能(返回副本)

在名称、描述和标签中进行大小写不敏感的子串匹配。

func (*Registry) Unregister

func (r *Registry) Unregister(name string) error

Unregister 注销技能

type Signer

type Signer interface {
	Verifier

	// Sign 对数据签名
	Sign(data []byte) []byte
}

Signer 签名器接口(同时具备签名和验证能力)

type Skill

type Skill struct {
	// Name 技能名称(唯一标识)
	Name string `json:"name"`

	// Description 技能描述
	Description string `json:"description"`

	// Version 版本号
	Version string `json:"version"`

	// Author 作者
	Author string `json:"author,omitempty"`

	// Tags 标签列表(用于分类和搜索)
	Tags []string `json:"tags,omitempty"`

	// Schema 输入参数 Schema(JSON Schema 格式)
	Schema map[string]any `json:"schema,omitempty"`

	// Handler 执行处理函数
	Handler func(ctx context.Context, input map[string]any) (map[string]any, error) `json:"-"`

	// CreatedAt 注册时间
	CreatedAt time.Time `json:"created_at"`

	// Enabled 是否启用
	Enabled bool `json:"enabled"`
}

Skill 技能定义

type SkillSignature

type SkillSignature struct {
	// SkillName 技能名称
	SkillName string

	// Version 技能版本
	Version string

	// Signature 签名数据
	Signature []byte
}

SkillSignature 技能签名信息

func SignSkill

func SignSkill(s *Skill, signer Signer) *SkillSignature

SignSkill 对技能进行签名

将技能的 Name+Version 序列化后计算签名。

type Verifier

type Verifier interface {
	// Verify 验证数据签名
	Verify(data []byte, signature []byte) error

	// Algorithm 返回签名算法名称
	Algorithm() string
}

Verifier 签名验证器接口

Jump to

Keyboard shortcuts

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