Documentation
¶
Overview ¶
包 artifacts 为智能体提供产物的生成、存储与生命周期管理能力。
概述 ¶
artifacts 解决的核心问题是:智能体在执行过程中产生的文件、数据、 代码片段、模型输出等中间或最终产物,需要统一的存储、检索、版本控制 与自动清理机制。本包提供从创建到归档的完整生命周期管理。
核心接口 ¶
- ArtifactStore:产物存储抽象接口,定义 Save / Load / Delete / List / Archive 等操作,支持可插拔的后端实现
- Artifact:产物元数据模型,包含 ID、类型、状态、校验和、 标签、版本号、过期时间等完整描述信息
主要能力 ¶
- 类型化存储:支持 file / data / image / code / output / model 六种产物类型,通过 ArtifactType 枚举区分
- 生命周期状态:pending → uploading → ready → archived → deleted, 由 ArtifactStatus 驱动状态流转
- 版本管理:通过 CreateVersion 基于已有产物创建新版本, 自动维护 ParentID 与 Version 链
- 自动清理:Manager.Cleanup 定期扫描并删除过期产物, 基于 TTL 与 ExpiresAt 判定
- 查询过滤:ArtifactQuery 支持按 SessionID、Type、Status、 Tags、CreatedBy 等维度组合检索
- Functional Options:通过 WithMetadata / WithTags / WithTTL 等选项灵活配置产物创建参数
内置实现 ¶
FileStore 提供基于本地文件系统的 ArtifactStore 实现, 每个产物存储为独立目录(含 data 文件与 metadata.json), 并维护全局 index.json 索引。适用于单机部署与开发调试场景。
与其他包协同 ¶
artifacts 通常由 Agent 执行流程中的工具调用产生, Manager 作为统一入口注入到 Agent 运行时, 使得产物管理与业务逻辑解耦。
Index ¶
- type Artifact
- type ArtifactQuery
- type ArtifactStatus
- type ArtifactStore
- type ArtifactType
- type CreateOption
- type FileStore
- func (s *FileStore) Archive(ctx context.Context, artifactID string) error
- func (s *FileStore) Delete(ctx context.Context, artifactID string) error
- func (s *FileStore) GetMetadata(ctx context.Context, artifactID string) (*Artifact, error)
- func (s *FileStore) List(ctx context.Context, query ArtifactQuery) ([]*Artifact, error)
- func (s *FileStore) Load(ctx context.Context, artifactID string) (*Artifact, io.ReadCloser, error)
- func (s *FileStore) Save(ctx context.Context, artifact *Artifact, data io.Reader) error
- type Manager
- func (m *Manager) Archive(ctx context.Context, artifactID string) error
- func (m *Manager) Cleanup(ctx context.Context) (int, error)
- func (m *Manager) Create(ctx context.Context, name string, artifactType ArtifactType, data io.Reader, ...) (*Artifact, error)
- func (m *Manager) CreateVersion(ctx context.Context, parentID string, data io.Reader) (*Artifact, error)
- func (m *Manager) Delete(ctx context.Context, artifactID string) error
- func (m *Manager) Get(ctx context.Context, artifactID string) (*Artifact, io.ReadCloser, error)
- func (m *Manager) GetMetadata(ctx context.Context, artifactID string) (*Artifact, error)
- func (m *Manager) List(ctx context.Context, query ArtifactQuery) ([]*Artifact, error)
- type ManagerConfig
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Artifact ¶
type Artifact struct {
ID string `json:"id"`
Name string `json:"name"`
Type ArtifactType `json:"type"`
Status ArtifactStatus `json:"status"`
MimeType string `json:"mime_type,omitempty"`
Size int64 `json:"size"`
Checksum string `json:"checksum"`
StoragePath string `json:"storage_path"`
URL string `json:"url,omitempty"`
Metadata map[string]any `json:"metadata,omitempty"`
Tags []string `json:"tags,omitempty"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
ExpiresAt *time.Time `json:"expires_at,omitempty"`
CreatedBy string `json:"created_by"`
SessionID string `json:"session_id,omitempty"`
ParentID string `json:"parent_id,omitempty"`
Version int `json:"version"`
}
人工活性代表系统中的受管文物.
type ArtifactQuery ¶
type ArtifactQuery struct {
SessionID string `json:"session_id,omitempty"`
Type ArtifactType `json:"type,omitempty"`
Status ArtifactStatus `json:"status,omitempty"`
Tags []string `json:"tags,omitempty"`
CreatedBy string `json:"created_by,omitempty"`
Limit int `json:"limit,omitempty"`
Offset int `json:"offset,omitempty"`
}
ArtifactQuery定义了列出文物的查询参数.
type ArtifactStatus ¶
type ArtifactStatus string
人工活性状态代表文物的生命周期状态。
const ( StatusPending ArtifactStatus = "pending" StatusUploading ArtifactStatus = "uploading" StatusReady ArtifactStatus = "ready" StatusArchived ArtifactStatus = "archived" StatusDeleted ArtifactStatus = "deleted" )
type ArtifactStore ¶
type ArtifactStore interface {
Save(ctx context.Context, artifact *Artifact, data io.Reader) error
Load(ctx context.Context, artifactID string) (*Artifact, io.ReadCloser, error)
GetMetadata(ctx context.Context, artifactID string) (*Artifact, error)
Delete(ctx context.Context, artifactID string) error
List(ctx context.Context, query ArtifactQuery) ([]*Artifact, error)
Archive(ctx context.Context, artifactID string) error
}
ArtifactStore定义了文物的存储界面.
type ArtifactType ¶
type ArtifactType string
工艺品Type定义了文物的类型.
const ( ArtifactTypeFile ArtifactType = "file" ArtifactTypeData ArtifactType = "data" ArtifactTypeImage ArtifactType = "image" ArtifactTypeCode ArtifactType = "code" ArtifactTypeOutput ArtifactType = "output" ArtifactTypeModel ArtifactType = "model" )
type CreateOption ¶
type CreateOption func(*createOptions)
创建可选配置文物创建 。
func WithCreatedBy ¶
func WithCreatedBy(createdBy string) CreateOption
func WithMetadata ¶
func WithMetadata(metadata map[string]any) CreateOption
func WithMimeType ¶
func WithMimeType(mimeType string) CreateOption
func WithSessionID ¶
func WithSessionID(sessionID string) CreateOption
func WithTTL ¶
func WithTTL(ttl time.Duration) CreateOption
func WithTags ¶
func WithTags(tags ...string) CreateOption
type FileStore ¶
type FileStore struct {
// contains filtered or unexported fields
}
FileStore使用本地文件系统执行ArtifactStore.
func NewFileStore ¶
NewFileStore创建了一个新的基于文件的文物商店.
func (*FileStore) GetMetadata ¶
type Manager ¶
type Manager struct {
// contains filtered or unexported fields
}
经理处理文物生命周期管理.
func NewManager ¶
func NewManager(config ManagerConfig, store ArtifactStore, logger *zap.Logger) *Manager
NewManager创建了新的文物管理器.
func (*Manager) Create ¶
func (m *Manager) Create(ctx context.Context, name string, artifactType ArtifactType, data io.Reader, opts ...CreateOption) (*Artifact, error)
从数据创建出新的文物 。
func (*Manager) CreateVersion ¶
func (m *Manager) CreateVersion(ctx context.Context, parentID string, data io.Reader) (*Artifact, error)
CreateVersion 创建了新版本的已有文物.
func (*Manager) GetMetadata ¶
GetMetadata检索没有数据的文物元数据.
Click to show internal directories.
Click to hide internal directories.