multica-ai/multica · error
load skill bundle cache: %w
Error message
load skill bundle cache: %w
What it means
Error "load skill bundle cache: %w" thrown in multica-ai/multica.
Source
Thrown at server/internal/daemon/daemon.go:5871
func (d *Daemon) ensureTaskSkillBundles(ctx context.Context, task *Task) error {
if task == nil || task.Agent == nil || len(task.Agent.SkillRefs) == 0 {
return nil
}
resolved := make(map[string]SkillData, len(task.Agent.SkillRefs))
misses := make([]SkillRefData, 0)
for _, ref := range task.Agent.SkillRefs {
ref := ref
var bundle SkillData
if err := d.skillCache.WithRefLock(task.WorkspaceID, ref, func() error {
if cached, ok := d.skillCache.Load(task.WorkspaceID, ref); ok {
bundle = cached
return nil
}
misses = append(misses, ref)
return nil
}); err != nil {
return fmt.Errorf("load skill bundle cache: %w", err)
}
if bundle.ID != "" {
resolved[skillRefKey(ref.Source, ref.ID)] = bundle
}
}
// Resolve each missing bundle in its own request, caching it the moment it
// arrives. The download is the slow part on jittery links, so fetching the
// whole set in one atomic body read meant a single timeout discarded all
// progress and the cache never converged — every dispatch re-downloaded
// everything and timed out again. Per-skill, each download fits its own
// size-scaled deadline and is persisted independently, so even a dispatch
// that ultimately fails leaves the skills it did fetch cached for the next
// one. (GitHub #4505 / MUL-3650)
for _, ref := range misses {
started := time.Now()
bundle, err := d.resolveSkillBundle(ctx, task, ref)
if err != nil {View on GitHub (pinned to 2c0912b6ec)
Solutions
- Clear or rebuild the skill bundle cache and retry.
When it happens
Trigger: Thrown at server/internal/daemon/daemon.go:5871 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of multica-ai/multica@2c0912b6ec (2026-08-15).
Data as JSON: /api/errors/e07973bc695a43fe.
Report an issue: GitHub.