From c56fcedcb14ce284e12c70bce7d5d1a76d1f2714 Mon Sep 17 00:00:00 2001 From: mosir Date: Tue, 24 Feb 2026 13:22:52 +0800 Subject: [PATCH 01/14] refactor(pkg/utils): add unified atomic file write utility --- pkg/agent/memory.go | 13 +++-- pkg/auth/store.go | 11 ++--- pkg/config/config.go | 10 ++-- pkg/cron/service.go | 10 ++-- pkg/heartbeat/service.go | 3 +- pkg/skills/installer.go | 6 ++- pkg/state/state.go | 27 +++-------- pkg/tools/filesystem.go | 57 ++++++++++++---------- pkg/tools/skills_install.go | 3 +- pkg/utils/file.go | 97 +++++++++++++++++++++++++++++++++++++ 10 files changed, 166 insertions(+), 71 deletions(-) create mode 100644 pkg/utils/file.go diff --git a/pkg/agent/memory.go b/pkg/agent/memory.go index dd5f4441c..7e952be55 100644 --- a/pkg/agent/memory.go +++ b/pkg/agent/memory.go @@ -12,6 +12,8 @@ import ( "path/filepath" "strings" "time" + + "github.com/sipeed/picoclaw/pkg/utils" ) // MemoryStore manages persistent memory for the agent. @@ -58,7 +60,9 @@ func (ms *MemoryStore) ReadLongTerm() string { // WriteLongTerm writes content to the long-term memory file (MEMORY.md). func (ms *MemoryStore) WriteLongTerm(content string) error { - return os.WriteFile(ms.memoryFile, []byte(content), 0o644) + // Use unified atomic write utility with explicit sync for flash storage reliability. + // Using 0o600 (owner read/write only) for secure default permissions. + return utils.WriteFileAtomic(ms.memoryFile, []byte(content), 0o600) } // ReadToday reads today's daily note. @@ -78,7 +82,9 @@ func (ms *MemoryStore) AppendToday(content string) error { // Ensure month directory exists monthDir := filepath.Dir(todayFile) - os.MkdirAll(monthDir, 0o755) + if err := os.MkdirAll(monthDir, 0o755); err != nil { + return err + } var existingContent string if data, err := os.ReadFile(todayFile); err == nil { @@ -95,7 +101,8 @@ func (ms *MemoryStore) AppendToday(content string) error { newContent = existingContent + "\n" + content } - return os.WriteFile(todayFile, []byte(newContent), 0o644) + // Use unified atomic write utility with explicit sync for flash storage reliability. + return utils.WriteFileAtomic(todayFile, []byte(newContent), 0o600) } // GetRecentDailyNotes returns daily notes from the last N days. diff --git a/pkg/auth/store.go b/pkg/auth/store.go index 64708421b..34d7d8a3f 100644 --- a/pkg/auth/store.go +++ b/pkg/auth/store.go @@ -5,6 +5,8 @@ import ( "os" "path/filepath" "time" + + "github.com/sipeed/picoclaw/pkg/utils" ) type AuthCredential struct { @@ -63,16 +65,13 @@ func LoadStore() (*AuthStore, error) { func SaveStore(store *AuthStore) error { path := authFilePath() - dir := filepath.Dir(path) - if err := os.MkdirAll(dir, 0o755); err != nil { - return err - } - data, err := json.MarshalIndent(store, "", " ") if err != nil { return err } - return os.WriteFile(path, data, 0o600) + + // Use unified atomic write utility with explicit sync for flash storage reliability. + return utils.WriteFileAtomic(path, data, 0o600) } func GetCredential(provider string) (*AuthCredential, error) { diff --git a/pkg/config/config.go b/pkg/config/config.go index 2595398c7..9d2860407 100644 --- a/pkg/config/config.go +++ b/pkg/config/config.go @@ -4,10 +4,10 @@ import ( "encoding/json" "fmt" "os" - "path/filepath" "sync/atomic" "github.com/caarlos0/env/v11" + "github.com/sipeed/picoclaw/pkg/utils" ) // rrCounter is a global counter for round-robin load balancing across models. @@ -526,12 +526,8 @@ func SaveConfig(path string, cfg *Config) error { return err } - dir := filepath.Dir(path) - if err := os.MkdirAll(dir, 0o755); err != nil { - return err - } - - return os.WriteFile(path, data, 0o600) + // Use unified atomic write utility with explicit sync for flash storage reliability. + return utils.WriteFileAtomic(path, data, 0o600) } func (c *Config) WorkspacePath() string { diff --git a/pkg/cron/service.go b/pkg/cron/service.go index e699a44b5..7501117f5 100644 --- a/pkg/cron/service.go +++ b/pkg/cron/service.go @@ -7,11 +7,11 @@ import ( "fmt" "log" "os" - "path/filepath" "sync" "time" "github.com/adhocore/gronx" + "github.com/sipeed/picoclaw/pkg/utils" ) type CronSchedule struct { @@ -330,17 +330,13 @@ func (cs *CronService) loadStore() error { } func (cs *CronService) saveStoreUnsafe() error { - dir := filepath.Dir(cs.storePath) - if err := os.MkdirAll(dir, 0o755); err != nil { - return err - } - data, err := json.MarshalIndent(cs.store, "", " ") if err != nil { return err } - return os.WriteFile(cs.storePath, data, 0o600) + // Use unified atomic write utility with explicit sync for flash storage reliability. + return utils.WriteFileAtomic(cs.storePath, data, 0o600) } func (cs *CronService) AddJob( diff --git a/pkg/heartbeat/service.go b/pkg/heartbeat/service.go index 75d6248b9..2108fbf8c 100644 --- a/pkg/heartbeat/service.go +++ b/pkg/heartbeat/service.go @@ -19,6 +19,7 @@ import ( "github.com/sipeed/picoclaw/pkg/logger" "github.com/sipeed/picoclaw/pkg/state" "github.com/sipeed/picoclaw/pkg/tools" + "github.com/sipeed/picoclaw/pkg/utils" ) const ( @@ -275,7 +276,7 @@ This file contains tasks for the heartbeat service to check periodically. Add your heartbeat tasks below this line: ` - if err := os.WriteFile(heartbeatPath, []byte(defaultContent), 0o644); err != nil { + if err := utils.WriteFileAtomic(heartbeatPath, []byte(defaultContent), 0o644); err != nil { hs.logError("Failed to create default HEARTBEAT.md: %v", err) } else { hs.logInfo("Created default HEARTBEAT.md template") diff --git a/pkg/skills/installer.go b/pkg/skills/installer.go index 3210509df..12ffe33e6 100644 --- a/pkg/skills/installer.go +++ b/pkg/skills/installer.go @@ -9,6 +9,8 @@ import ( "os" "path/filepath" "time" + + "github.com/sipeed/picoclaw/pkg/utils" ) type SkillInstaller struct { @@ -64,7 +66,9 @@ func (si *SkillInstaller) InstallFromGitHub(ctx context.Context, repo string) er } skillPath := filepath.Join(skillDir, "SKILL.md") - if err := os.WriteFile(skillPath, body, 0o644); err != nil { + + // Use unified atomic write utility with explicit sync for flash storage reliability. + if err := utils.WriteFileAtomic(skillPath, body, 0o600); err != nil { return fmt.Errorf("failed to write skill file: %w", err) } diff --git a/pkg/state/state.go b/pkg/state/state.go index 1a92f82ed..efccc9332 100644 --- a/pkg/state/state.go +++ b/pkg/state/state.go @@ -8,6 +8,8 @@ import ( "path/filepath" "sync" "time" + + "github.com/sipeed/picoclaw/pkg/utils" ) // State represents the persistent state for a workspace. @@ -124,33 +126,20 @@ func (sm *Manager) GetTimestamp() time.Time { // saveAtomic performs an atomic save using temp file + rename. // This ensures that the state file is never corrupted: // 1. Write to a temp file -// 2. Rename temp file to target (atomic on POSIX systems) -// 3. If rename fails, cleanup the temp file +// 2. Sync to disk (critical for SD cards/flash storage) +// 3. Rename temp file to target (atomic on POSIX systems) +// 4. If rename fails, cleanup the temp file // // Must be called with the lock held. func (sm *Manager) saveAtomic() error { - // Create temp file in the same directory as the target - tempFile := sm.stateFile + ".tmp" - - // Marshal state to JSON + // Use unified atomic write utility with explicit sync for flash storage reliability. + // Using 0o600 (owner read/write only) for secure default permissions. data, err := json.MarshalIndent(sm.state, "", " ") if err != nil { return fmt.Errorf("failed to marshal state: %w", err) } - // Write to temp file - if err := os.WriteFile(tempFile, data, 0o644); err != nil { - return fmt.Errorf("failed to write temp file: %w", err) - } - - // Atomic rename from temp to target - if err := os.Rename(tempFile, sm.stateFile); err != nil { - // Cleanup temp file if rename fails - os.Remove(tempFile) - return fmt.Errorf("failed to rename temp file: %w", err) - } - - return nil + return utils.WriteFileAtomic(sm.stateFile, data, 0o600) } // load loads the state from disk. diff --git a/pkg/tools/filesystem.go b/pkg/tools/filesystem.go index 37db8b4ae..649707617 100644 --- a/pkg/tools/filesystem.go +++ b/pkg/tools/filesystem.go @@ -8,6 +8,8 @@ import ( "path/filepath" "strings" "time" + + "github.com/sipeed/picoclaw/pkg/utils" ) // validatePath ensures the given path is within the workspace if restrict is true. @@ -276,25 +278,9 @@ func (h *hostFs) ReadDir(path string) ([]os.DirEntry, error) { } func (h *hostFs) WriteFile(path string, data []byte) error { - dir := filepath.Dir(path) - if err := os.MkdirAll(dir, 0o755); err != nil { - return fmt.Errorf("failed to create parent directories: %w", err) - } - - // We use a "write-then-rename" pattern here to ensure an atomic write. - // This prevents the target file from being left in a truncated or partial state - // if the operation is interrupted, as the rename operation is atomic on Linux. - tmpPath := fmt.Sprintf("%s.%d.tmp", path, time.Now().UnixNano()) - if err := os.WriteFile(tmpPath, data, 0o644); err != nil { - os.Remove(tmpPath) // Ensure cleanup of partial/empty temp file - return fmt.Errorf("failed to write temp file: %w", err) - } - - if err := os.Rename(tmpPath, path); err != nil { - os.Remove(tmpPath) - return fmt.Errorf("failed to replace original file: %w", err) - } - return nil + // Use unified atomic write utility with explicit sync for flash storage reliability. + // Using 0o600 (owner read/write only) for secure default permissions. + return utils.WriteFileAtomic(path, data, 0o600) } // sandboxFs is a sandboxed fileSystem that operates within a strictly defined workspace using os.Root. @@ -351,14 +337,33 @@ func (r *sandboxFs) WriteFile(path string, data []byte) error { } } - // We use a "write-then-rename" pattern here to ensure an atomic write. - // This prevents the target file from being left in a truncated or partial state - // if the operation is interrupted, as the rename operation is atomic on Linux. - tmpRelPath := fmt.Sprintf("%s.%d.tmp", relPath, time.Now().UnixNano()) + // Use atomic write pattern with explicit sync for flash storage reliability. + // Using 0o600 (owner read/write only) for secure default permissions. + tmpRelPath := fmt.Sprintf(".tmp-%d.tmp", time.Now().UnixNano()) - if err := root.WriteFile(tmpRelPath, data, 0o644); err != nil { - root.Remove(tmpRelPath) // Ensure cleanup of partial/empty temp file - return fmt.Errorf("failed to write to temp file: %w", err) + tmpFile, err := root.OpenFile(tmpRelPath, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0o600) + if err != nil { + root.Remove(tmpRelPath) + return fmt.Errorf("failed to open temp file: %w", err) + } + + if _, err := tmpFile.Write(data); err != nil { + tmpFile.Close() + root.Remove(tmpRelPath) + return fmt.Errorf("failed to write temp file: %w", err) + } + + // CRITICAL: Force sync to storage medium before rename. + // This ensures data is physically written to disk, not just cached. + if err := tmpFile.Sync(); err != nil { + tmpFile.Close() + root.Remove(tmpRelPath) + return fmt.Errorf("failed to sync temp file: %w", err) + } + + if err := tmpFile.Close(); err != nil { + root.Remove(tmpRelPath) + return fmt.Errorf("failed to close temp file: %w", err) } if err := root.Rename(tmpRelPath, relPath); err != nil { diff --git a/pkg/tools/skills_install.go b/pkg/tools/skills_install.go index 55c0b678d..57d29f355 100644 --- a/pkg/tools/skills_install.go +++ b/pkg/tools/skills_install.go @@ -197,5 +197,6 @@ func writeOriginMeta(targetDir, registryName, slug, version string) error { return err } - return os.WriteFile(filepath.Join(targetDir, ".skill-origin.json"), data, 0o644) + // Use unified atomic write utility with explicit sync for flash storage reliability. + return utils.WriteFileAtomic(filepath.Join(targetDir, ".skill-origin.json"), data, 0o600) } diff --git a/pkg/utils/file.go b/pkg/utils/file.go new file mode 100644 index 000000000..74a83712a --- /dev/null +++ b/pkg/utils/file.go @@ -0,0 +1,97 @@ +// PicoClaw - Ultra-lightweight personal AI agent +// Inspired by and based on nanobot: https://github.com/HKUDS/nanobot +// License: MIT +// +// Copyright (c) 2026 PicoClaw contributors + +package utils + +import ( + "fmt" + "os" + "path/filepath" +) + +// WriteFileAtomic atomically writes data to a file using a temp file + rename pattern. +// +// This guarantees that the target file is either: +// - Completely written with the new data +// - Unchanged (if write fails or power loss during write) +// +// The function: +// 1. Creates a temp file in the same directory +// 2. Writes data to temp file +// 3. Syncs to disk (critical for SD cards/flash storage) +// 4. Sets file permissions +// 5. Atomically renames temp file to target path +// +// Parameters: +// - path: Target file path +// - data: Data to write +// - perm: File permission mode (e.g., 0o600 for secure, 0o644 for readable) +// +// Returns: +// - Error if any step fails, nil on success +// +// Example: +// +// // Secure config file (owner read/write only) +// err := utils.WriteFileAtomic("config.json", data, 0o600) +// +// // Public readable file +// err := utils.WriteFileAtomic("public.txt", data, 0o644) +func WriteFileAtomic(path string, data []byte, perm os.FileMode) error { + dir := filepath.Dir(path) + if err := os.MkdirAll(dir, 0o755); err != nil { + return fmt.Errorf("failed to create directory: %w", err) + } + + // Create temp file in the same directory (ensures atomic rename works) + tmpFile, err := os.CreateTemp(dir, ".tmp-*.tmp") + if err != nil { + return fmt.Errorf("failed to create temp file: %w", err) + } + tmpPath := tmpFile.Name() + + // Cleanup on error: ensure temp file is removed if anything fails + cleanup := true + defer func() { + if cleanup { + _ = os.Remove(tmpPath) + } + }() + + // Write data to temp file + if _, err := tmpFile.Write(data); err != nil { + tmpFile.Close() + return fmt.Errorf("failed to write temp file: %w", err) + } + + // CRITICAL: Force sync to storage medium before rename. + // This ensures data is physically written to disk, not just cached. + // Essential for SD cards, eMMC, and other flash storage on edge devices. + if err := tmpFile.Sync(); err != nil { + tmpFile.Close() + return fmt.Errorf("failed to sync temp file: %w", err) + } + + // Set file permissions + if err := tmpFile.Chmod(perm); err != nil { + tmpFile.Close() + return fmt.Errorf("failed to set permissions: %w", err) + } + + // Close file before rename + if err := tmpFile.Close(); err != nil { + return fmt.Errorf("failed to close temp file: %w", err) + } + + // Atomic rename: temp file becomes the target + if err := os.Rename(tmpPath, path); err != nil { + return fmt.Errorf("failed to rename temp file: %w", err) + } + + // Success: skip cleanup + cleanup = false + return nil +} From 4aed3591e762c61a5d1a27220ea7b70ff98031fa Mon Sep 17 00:00:00 2001 From: mosir Date: Tue, 24 Feb 2026 23:49:40 +0800 Subject: [PATCH 02/14] refactor(pkg/utils): improve WriteFileAtomic with stronger durability guarantees --- pkg/tools/filesystem.go | 11 +++++++-- pkg/utils/file.go | 49 +++++++++++++++++++++++++++++------------ 2 files changed, 44 insertions(+), 16 deletions(-) diff --git a/pkg/tools/filesystem.go b/pkg/tools/filesystem.go index 649707617..e40782ab6 100644 --- a/pkg/tools/filesystem.go +++ b/pkg/tools/filesystem.go @@ -339,9 +339,9 @@ func (r *sandboxFs) WriteFile(path string, data []byte) error { // Use atomic write pattern with explicit sync for flash storage reliability. // Using 0o600 (owner read/write only) for secure default permissions. - tmpRelPath := fmt.Sprintf(".tmp-%d.tmp", time.Now().UnixNano()) + tmpRelPath := fmt.Sprintf(".tmp-%d-%d", os.Getpid(), time.Now().UnixNano()) - tmpFile, err := root.OpenFile(tmpRelPath, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0o600) + tmpFile, err := root.OpenFile(tmpRelPath, os.O_WRONLY|os.O_CREATE|os.O_EXCL, 0o600) if err != nil { root.Remove(tmpRelPath) return fmt.Errorf("failed to open temp file: %w", err) @@ -370,6 +370,13 @@ func (r *sandboxFs) WriteFile(path string, data []byte) error { root.Remove(tmpRelPath) return fmt.Errorf("failed to rename temp file over target: %w", err) } + + // Sync directory to ensure rename is durable + if dirFile, err := root.Open("."); err == nil { + _ = dirFile.Sync() + dirFile.Close() + } + return nil }) } diff --git a/pkg/utils/file.go b/pkg/utils/file.go index 74a83712a..e7c2675e4 100644 --- a/pkg/utils/file.go +++ b/pkg/utils/file.go @@ -10,20 +10,28 @@ import ( "fmt" "os" "path/filepath" + "time" ) // WriteFileAtomic atomically writes data to a file using a temp file + rename pattern. // // This guarantees that the target file is either: // - Completely written with the new data -// - Unchanged (if write fails or power loss during write) +// - Unchanged (if any step fails before rename) // // The function: -// 1. Creates a temp file in the same directory +// 1. Creates a temp file in the same directory (original untouched) // 2. Writes data to temp file -// 3. Syncs to disk (critical for SD cards/flash storage) +// 3. Syncs data to disk (critical for SD cards/flash storage) // 4. Sets file permissions -// 5. Atomically renames temp file to target path +// 5. Syncs directory metadata (ensures rename is durable) +// 6. Atomically renames temp file to target path +// +// Safety guarantees: +// - Original file is NEVER modified until successful rename +// - Temp file is always cleaned up on error +// - Data is flushed to physical storage before rename +// - Directory entry is synced to prevent orphaned inodes // // Parameters: // - path: Target file path @@ -47,51 +55,64 @@ func WriteFileAtomic(path string, data []byte, perm os.FileMode) error { } // Create temp file in the same directory (ensures atomic rename works) - tmpFile, err := os.CreateTemp(dir, ".tmp-*.tmp") + // Using a hidden prefix (.tmp-) to avoid issues with some tools + tmpFile, err := os.OpenFile( + filepath.Join(dir, fmt.Sprintf(".tmp-%d-%d", os.Getpid(), time.Now().UnixNano())), + os.O_WRONLY|os.O_CREATE|os.O_EXCL, + perm, + ) if err != nil { return fmt.Errorf("failed to create temp file: %w", err) } - tmpPath := tmpFile.Name() - // Cleanup on error: ensure temp file is removed if anything fails + tmpPath := tmpFile.Name() cleanup := true + defer func() { if cleanup { + tmpFile.Close() _ = os.Remove(tmpPath) } }() // Write data to temp file + // Note: Original file is untouched at this point if _, err := tmpFile.Write(data); err != nil { - tmpFile.Close() return fmt.Errorf("failed to write temp file: %w", err) } - // CRITICAL: Force sync to storage medium before rename. + // CRITICAL: Force sync to storage medium before any other operations. // This ensures data is physically written to disk, not just cached. // Essential for SD cards, eMMC, and other flash storage on edge devices. if err := tmpFile.Sync(); err != nil { - tmpFile.Close() return fmt.Errorf("failed to sync temp file: %w", err) } - // Set file permissions + // Set file permissions before closing if err := tmpFile.Chmod(perm); err != nil { - tmpFile.Close() return fmt.Errorf("failed to set permissions: %w", err) } - // Close file before rename + // Close file before rename (required on Windows) if err := tmpFile.Close(); err != nil { return fmt.Errorf("failed to close temp file: %w", err) } // Atomic rename: temp file becomes the target + // On POSIX: rename() is atomic + // On Windows: Rename() is atomic for files if err := os.Rename(tmpPath, path); err != nil { return fmt.Errorf("failed to rename temp file: %w", err) } - // Success: skip cleanup + // Sync directory to ensure rename is durable + // This prevents the renamed file from disappearing after a crash + if dirFile, err := os.Open(dir); err == nil { + _ = dirFile.Sync() + dirFile.Close() + } + + // Success: skip cleanup (file was renamed, no temp to remove) cleanup = false return nil } From 11996f1a0b7cdc91a2f6978c4ca06c2dda7f9bd3 Mon Sep 17 00:00:00 2001 From: mosir Date: Tue, 24 Feb 2026 23:57:13 +0800 Subject: [PATCH 03/14] refactor(pkg): move atomic file write to dedicated fileutil package --- pkg/agent/memory.go | 6 +++--- pkg/auth/store.go | 4 ++-- pkg/config/config.go | 4 ++-- pkg/cron/service.go | 4 ++-- pkg/{utils => fileutil}/file.go | 3 ++- pkg/heartbeat/service.go | 4 ++-- pkg/skills/installer.go | 4 ++-- pkg/state/state.go | 4 ++-- pkg/tools/filesystem.go | 4 ++-- pkg/tools/skills_install.go | 3 ++- 10 files changed, 21 insertions(+), 19 deletions(-) rename pkg/{utils => fileutil}/file.go (97%) diff --git a/pkg/agent/memory.go b/pkg/agent/memory.go index 7e952be55..87a687479 100644 --- a/pkg/agent/memory.go +++ b/pkg/agent/memory.go @@ -13,7 +13,7 @@ import ( "strings" "time" - "github.com/sipeed/picoclaw/pkg/utils" + "github.com/sipeed/picoclaw/pkg/fileutil" ) // MemoryStore manages persistent memory for the agent. @@ -62,7 +62,7 @@ func (ms *MemoryStore) ReadLongTerm() string { func (ms *MemoryStore) WriteLongTerm(content string) error { // Use unified atomic write utility with explicit sync for flash storage reliability. // Using 0o600 (owner read/write only) for secure default permissions. - return utils.WriteFileAtomic(ms.memoryFile, []byte(content), 0o600) + return fileutil.WriteFileAtomic(ms.memoryFile, []byte(content), 0o600) } // ReadToday reads today's daily note. @@ -102,7 +102,7 @@ func (ms *MemoryStore) AppendToday(content string) error { } // Use unified atomic write utility with explicit sync for flash storage reliability. - return utils.WriteFileAtomic(todayFile, []byte(newContent), 0o600) + return fileutil.WriteFileAtomic(todayFile, []byte(newContent), 0o600) } // GetRecentDailyNotes returns daily notes from the last N days. diff --git a/pkg/auth/store.go b/pkg/auth/store.go index 34d7d8a3f..283dc6977 100644 --- a/pkg/auth/store.go +++ b/pkg/auth/store.go @@ -6,7 +6,7 @@ import ( "path/filepath" "time" - "github.com/sipeed/picoclaw/pkg/utils" + "github.com/sipeed/picoclaw/pkg/fileutil" ) type AuthCredential struct { @@ -71,7 +71,7 @@ func SaveStore(store *AuthStore) error { } // Use unified atomic write utility with explicit sync for flash storage reliability. - return utils.WriteFileAtomic(path, data, 0o600) + return fileutil.WriteFileAtomic(path, data, 0o600) } func GetCredential(provider string) (*AuthCredential, error) { diff --git a/pkg/config/config.go b/pkg/config/config.go index 9d2860407..67b71cfda 100644 --- a/pkg/config/config.go +++ b/pkg/config/config.go @@ -7,7 +7,7 @@ import ( "sync/atomic" "github.com/caarlos0/env/v11" - "github.com/sipeed/picoclaw/pkg/utils" + "github.com/sipeed/picoclaw/pkg/fileutil" ) // rrCounter is a global counter for round-robin load balancing across models. @@ -527,7 +527,7 @@ func SaveConfig(path string, cfg *Config) error { } // Use unified atomic write utility with explicit sync for flash storage reliability. - return utils.WriteFileAtomic(path, data, 0o600) + return fileutil.WriteFileAtomic(path, data, 0o600) } func (c *Config) WorkspacePath() string { diff --git a/pkg/cron/service.go b/pkg/cron/service.go index 7501117f5..f14d86bcb 100644 --- a/pkg/cron/service.go +++ b/pkg/cron/service.go @@ -11,7 +11,7 @@ import ( "time" "github.com/adhocore/gronx" - "github.com/sipeed/picoclaw/pkg/utils" + "github.com/sipeed/picoclaw/pkg/fileutil" ) type CronSchedule struct { @@ -336,7 +336,7 @@ func (cs *CronService) saveStoreUnsafe() error { } // Use unified atomic write utility with explicit sync for flash storage reliability. - return utils.WriteFileAtomic(cs.storePath, data, 0o600) + return fileutil.WriteFileAtomic(cs.storePath, data, 0o600) } func (cs *CronService) AddJob( diff --git a/pkg/utils/file.go b/pkg/fileutil/file.go similarity index 97% rename from pkg/utils/file.go rename to pkg/fileutil/file.go index e7c2675e4..7ca872374 100644 --- a/pkg/utils/file.go +++ b/pkg/fileutil/file.go @@ -4,7 +4,8 @@ // // Copyright (c) 2026 PicoClaw contributors -package utils +// Package fileutil provides file manipulation utilities. +package fileutil import ( "fmt" diff --git a/pkg/heartbeat/service.go b/pkg/heartbeat/service.go index 2108fbf8c..3aeca6188 100644 --- a/pkg/heartbeat/service.go +++ b/pkg/heartbeat/service.go @@ -19,7 +19,7 @@ import ( "github.com/sipeed/picoclaw/pkg/logger" "github.com/sipeed/picoclaw/pkg/state" "github.com/sipeed/picoclaw/pkg/tools" - "github.com/sipeed/picoclaw/pkg/utils" + "github.com/sipeed/picoclaw/pkg/fileutil" ) const ( @@ -276,7 +276,7 @@ This file contains tasks for the heartbeat service to check periodically. Add your heartbeat tasks below this line: ` - if err := utils.WriteFileAtomic(heartbeatPath, []byte(defaultContent), 0o644); err != nil { + if err := fileutil.WriteFileAtomic(heartbeatPath, []byte(defaultContent), 0o644); err != nil { hs.logError("Failed to create default HEARTBEAT.md: %v", err) } else { hs.logInfo("Created default HEARTBEAT.md template") diff --git a/pkg/skills/installer.go b/pkg/skills/installer.go index 12ffe33e6..d6ff5f3a3 100644 --- a/pkg/skills/installer.go +++ b/pkg/skills/installer.go @@ -10,7 +10,7 @@ import ( "path/filepath" "time" - "github.com/sipeed/picoclaw/pkg/utils" + "github.com/sipeed/picoclaw/pkg/fileutil" ) type SkillInstaller struct { @@ -68,7 +68,7 @@ func (si *SkillInstaller) InstallFromGitHub(ctx context.Context, repo string) er skillPath := filepath.Join(skillDir, "SKILL.md") // Use unified atomic write utility with explicit sync for flash storage reliability. - if err := utils.WriteFileAtomic(skillPath, body, 0o600); err != nil { + if err := fileutil.WriteFileAtomic(skillPath, body, 0o600); err != nil { return fmt.Errorf("failed to write skill file: %w", err) } diff --git a/pkg/state/state.go b/pkg/state/state.go index efccc9332..1663faa4c 100644 --- a/pkg/state/state.go +++ b/pkg/state/state.go @@ -9,7 +9,7 @@ import ( "sync" "time" - "github.com/sipeed/picoclaw/pkg/utils" + "github.com/sipeed/picoclaw/pkg/fileutil" ) // State represents the persistent state for a workspace. @@ -139,7 +139,7 @@ func (sm *Manager) saveAtomic() error { return fmt.Errorf("failed to marshal state: %w", err) } - return utils.WriteFileAtomic(sm.stateFile, data, 0o600) + return fileutil.WriteFileAtomic(sm.stateFile, data, 0o600) } // load loads the state from disk. diff --git a/pkg/tools/filesystem.go b/pkg/tools/filesystem.go index e40782ab6..03d461dcc 100644 --- a/pkg/tools/filesystem.go +++ b/pkg/tools/filesystem.go @@ -9,7 +9,7 @@ import ( "strings" "time" - "github.com/sipeed/picoclaw/pkg/utils" + "github.com/sipeed/picoclaw/pkg/fileutil" ) // validatePath ensures the given path is within the workspace if restrict is true. @@ -280,7 +280,7 @@ func (h *hostFs) ReadDir(path string) ([]os.DirEntry, error) { func (h *hostFs) WriteFile(path string, data []byte) error { // Use unified atomic write utility with explicit sync for flash storage reliability. // Using 0o600 (owner read/write only) for secure default permissions. - return utils.WriteFileAtomic(path, data, 0o600) + return fileutil.WriteFileAtomic(path, data, 0o600) } // sandboxFs is a sandboxed fileSystem that operates within a strictly defined workspace using os.Root. diff --git a/pkg/tools/skills_install.go b/pkg/tools/skills_install.go index 57d29f355..71bfe730b 100644 --- a/pkg/tools/skills_install.go +++ b/pkg/tools/skills_install.go @@ -9,6 +9,7 @@ import ( "sync" "time" + "github.com/sipeed/picoclaw/pkg/fileutil" "github.com/sipeed/picoclaw/pkg/logger" "github.com/sipeed/picoclaw/pkg/skills" "github.com/sipeed/picoclaw/pkg/utils" @@ -198,5 +199,5 @@ func writeOriginMeta(targetDir, registryName, slug, version string) error { } // Use unified atomic write utility with explicit sync for flash storage reliability. - return utils.WriteFileAtomic(filepath.Join(targetDir, ".skill-origin.json"), data, 0o600) + return fileutil.WriteFileAtomic(filepath.Join(targetDir, ".skill-origin.json"), data, 0o600) } From 81c8c07b791b08c0ea35da6a6a476e1294cf2ad2 Mon Sep 17 00:00:00 2001 From: penglp Date: Wed, 25 Feb 2026 14:44:49 +0800 Subject: [PATCH 04/14] fix:Openrouter in providers and modellist --- pkg/providers/legacy_provider.go | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/pkg/providers/legacy_provider.go b/pkg/providers/legacy_provider.go index 23f137538..26905159f 100644 --- a/pkg/providers/legacy_provider.go +++ b/pkg/providers/legacy_provider.go @@ -18,9 +18,21 @@ import ( func CreateProvider(cfg *config.Config) (LLMProvider, string, error) { model := cfg.Agents.Defaults.GetModelName() - // Ensure model_list is populated (should be done by LoadConfig, but handle edge cases) - if len(cfg.ModelList) == 0 && cfg.HasProvidersConfig() { - cfg.ModelList = config.ConvertProvidersToModelList(cfg) + // Ensure model_list is populated from providers config if needed + // This handles two cases: + // 1. ModelList is empty - convert all providers + // 2. ModelList has some entries but not all providers - merge missing ones + if cfg.HasProvidersConfig() { + providerModels := config.ConvertProvidersToModelList(cfg) + existingModelNames := make(map[string]bool) + for _, m := range cfg.ModelList { + existingModelNames[m.ModelName] = true + } + for _, pm := range providerModels { + if !existingModelNames[pm.ModelName] { + cfg.ModelList = append(cfg.ModelList, pm) + } + } } // Must have model_list at this point From a5cc4db5149e6493fe432076cbd9d46e9f4ca3f1 Mon Sep 17 00:00:00 2001 From: Guoguo <16666742+imguoguo@users.noreply.github.com> Date: Thu, 26 Feb 2026 14:53:10 +0800 Subject: [PATCH 05/14] ci: remove version from rpm and deb file name (#804) Signed-off-by: Guoguo --- .goreleaser.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/.goreleaser.yaml b/.goreleaser.yaml index 23e422ab1..69bf1fae3 100644 --- a/.goreleaser.yaml +++ b/.goreleaser.yaml @@ -73,7 +73,6 @@ nfpms: package_name: picoclaw file_name_template: >- {{ .PackageName }}_ - {{- .Version }}_ {{- if eq .Arch "amd64" }}x86_64 {{- else if eq .Arch "arm64" }}aarch64 {{- else if eq .Arch "arm" }}armv{{ .Arm }} From 6a4116b8a0953ed21ecd8714189e86abc4f99275 Mon Sep 17 00:00:00 2001 From: Guoguo <16666742+imguoguo@users.noreply.github.com> Date: Thu, 26 Feb 2026 16:03:58 +0800 Subject: [PATCH 06/14] ci: fix go generate not running in subdirectories (#807) Changed `go generate ./cmd/picoclaw` to `go generate ./cmd/picoclaw/...` so that the workspace embed in cmd/picoclaw/internal/onboard is correctly generated before building. Co-authored-by: Claude Sonnet 4.6 --- .goreleaser.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.goreleaser.yaml b/.goreleaser.yaml index 69bf1fae3..af26509e6 100644 --- a/.goreleaser.yaml +++ b/.goreleaser.yaml @@ -5,7 +5,7 @@ version: 2 before: hooks: - go mod tidy - - go generate ./cmd/picoclaw + - go generate ./cmd/picoclaw/... builds: - id: picoclaw From 438f764c7ac0d7aa851bae45b04d2fdf5299f257 Mon Sep 17 00:00:00 2001 From: Yiliu <3838688+0xYiliu@users.noreply.github.com> Date: Thu, 26 Feb 2026 16:08:19 +0800 Subject: [PATCH 07/14] fix(providers): support per-model request_timeout in model_list (#733) * fix(providers): support per-model request_timeout in model_list * fix(lint): format provider constructors for golines * refactor(providers): adopt functional options and preserve timeout migration * docs(readme): sync request_timeout guidance across translated docs --------- Co-authored-by: Yiliu --- README.fr.md | 15 ++ README.ja.md | 15 ++ README.md | 7 +- README.pt-br.md | 15 ++ README.vi.md | 15 ++ README.zh.md | 7 +- docs/migration/model-list-migration.md | 1 + pkg/config/config.go | 12 +- pkg/config/migration.go | 180 ++++++++++--------- pkg/config/migration_test.go | 21 +++ pkg/config/model_config_test.go | 35 ++++ pkg/providers/factory_provider.go | 24 ++- pkg/providers/factory_provider_test.go | 43 +++++ pkg/providers/http_provider.go | 16 +- pkg/providers/openai_compat/provider.go | 56 +++++- pkg/providers/openai_compat/provider_test.go | 36 ++++ 16 files changed, 394 insertions(+), 104 deletions(-) diff --git a/README.fr.md b/README.fr.md index f59807739..f1d4f848e 100644 --- a/README.fr.md +++ b/README.fr.md @@ -221,6 +221,7 @@ picoclaw onboard "model_name": "gpt4", "model": "openai/gpt-5.2", "api_key": "sk-your-openai-key", + "request_timeout": 300, "api_base": "https://api.openai.com/v1" } ], @@ -252,6 +253,9 @@ picoclaw onboard } ``` +> **Nouveau** : Le format de configuration `model_list` permet d'ajouter des fournisseurs sans modifier le code. Voir [Configuration de Modèle](#configuration-de-modèle-model_list) pour plus de détails. +> `request_timeout` est optionnel et s'exprime en secondes. S'il est omis ou défini à `<= 0`, PicoClaw utilise le délai d'expiration par défaut (120s). + **3. Obtenir des Clés API** * **Fournisseur LLM** : [OpenRouter](https://openrouter.ai/keys) · [Zhipu](https://open.bigmodel.cn/usercenter/proj-mgmt/apikeys) · [Anthropic](https://console.anthropic.com) · [OpenAI](https://platform.openai.com) · [Gemini](https://aistudio.google.com/api-keys) @@ -979,6 +983,17 @@ Cette conception permet également le **support multi-agent** avec une sélectio ``` > Exécutez `picoclaw auth login --provider anthropic` pour configurer les identifiants OAuth. +**Proxy/API personnalisée** +```json +{ + "model_name": "my-custom-model", + "model": "openai/custom-model", + "api_base": "https://my-proxy.com/v1", + "api_key": "sk-...", + "request_timeout": 300 +} +``` + #### Équilibrage de Charge Configurez plusieurs points de terminaison pour le même nom de modèle—PicoClaw utilisera automatiquement le round-robin entre eux : diff --git a/README.ja.md b/README.ja.md index 5a7bb8542..48fb89fe3 100644 --- a/README.ja.md +++ b/README.ja.md @@ -183,6 +183,7 @@ picoclaw onboard "model_name": "gpt4", "model": "openai/gpt-5.2", "api_key": "sk-your-openai-key", + "request_timeout": 300, "api_base": "https://api.openai.com/v1" } ], @@ -221,6 +222,9 @@ picoclaw onboard } ``` +> **新機能**: `model_list` 形式により、プロバイダーをコード変更なしで追加できます。詳細は [モデル設定](#モデル設定-model_list) を参照してください。 +> `request_timeout` は任意の秒単位設定です。省略または `<= 0` の場合、PicoClaw はデフォルトのタイムアウト(120秒)を使用します。 + **3. API キーの取得** - **LLM プロバイダー**: [OpenRouter](https://openrouter.ai/keys) · [Zhipu](https://open.bigmodel.cn/usercenter/proj-mgmt/apikeys) · [Anthropic](https://console.anthropic.com) · [OpenAI](https://platform.openai.com) · [Gemini](https://aistudio.google.com/api-keys) @@ -918,6 +922,17 @@ HEARTBEAT_OK 応答 ユーザーが直接結果を受け取る ``` > OAuth認証を設定するには、`picoclaw auth login --provider anthropic` を実行してください。 +**カスタムプロキシ/API** +```json +{ + "model_name": "my-custom-model", + "model": "openai/custom-model", + "api_base": "https://my-proxy.com/v1", + "api_key": "sk-...", + "request_timeout": 300 +} +``` + #### ロードバランシング 同じモデル名で複数のエンドポイントを設定すると、PicoClaw が自動的にラウンドロビンで分散します: diff --git a/README.md b/README.md index aa7b0719a..72a933b6f 100644 --- a/README.md +++ b/README.md @@ -232,7 +232,8 @@ picoclaw onboard { "model_name": "gpt4", "model": "openai/gpt-5.2", - "api_key": "your-api-key" + "api_key": "your-api-key", + "request_timeout": 300 }, { "model_name": "claude-sonnet-4.6", @@ -262,6 +263,7 @@ picoclaw onboard ``` > **New**: The `model_list` configuration format allows zero-code provider addition. See [Model Configuration](#model-configuration-model_list) for details. +> `request_timeout` is optional and uses seconds. If omitted or set to `<= 0`, PicoClaw uses the default timeout (120s). **3. Get API Keys** @@ -915,7 +917,8 @@ This design also enables **multi-agent support** with flexible provider selectio "model_name": "my-custom-model", "model": "openai/custom-model", "api_base": "https://my-proxy.com/v1", - "api_key": "sk-..." + "api_key": "sk-...", + "request_timeout": 300 } ``` diff --git a/README.pt-br.md b/README.pt-br.md index 0115b7f89..1dbee5201 100644 --- a/README.pt-br.md +++ b/README.pt-br.md @@ -222,6 +222,7 @@ picoclaw onboard "model_name": "gpt4", "model": "openai/gpt-5.2", "api_key": "sk-your-openai-key", + "request_timeout": 300, "api_base": "https://api.openai.com/v1" } ], @@ -246,6 +247,9 @@ picoclaw onboard } ``` +> **Novo**: O formato de configuração `model_list` permite adicionar provedores sem alterar código. Veja [Configuração de Modelo](#configuração-de-modelo-model_list) para detalhes. +> `request_timeout` é opcional e usa segundos. Se omitido ou definido como `<= 0`, o PicoClaw usa o timeout padrão (120s). + **3. Obter API Keys** * **Provedor de LLM**: [OpenRouter](https://openrouter.ai/keys) · [Zhipu](https://open.bigmodel.cn/usercenter/proj-mgmt/apikeys) · [Anthropic](https://console.anthropic.com) · [OpenAI](https://platform.openai.com) · [Gemini](https://aistudio.google.com/api-keys) @@ -973,6 +977,17 @@ Este design também possibilita o **suporte multi-agent** com seleção flexíve ``` > Execute `picoclaw auth login --provider anthropic` para configurar credenciais OAuth. +**Proxy/API personalizada** +```json +{ + "model_name": "my-custom-model", + "model": "openai/custom-model", + "api_base": "https://my-proxy.com/v1", + "api_key": "sk-...", + "request_timeout": 300 +} +``` + #### Balanceamento de Carga Configure vários endpoints para o mesmo nome de modelo—PicoClaw fará round-robin automaticamente entre eles: diff --git a/README.vi.md b/README.vi.md index 015bc264e..0dd4994c2 100644 --- a/README.vi.md +++ b/README.vi.md @@ -202,6 +202,7 @@ picoclaw onboard "model_name": "gpt4", "model": "openai/gpt-5.2", "api_key": "sk-your-openai-key", + "request_timeout": 300, "api_base": "https://api.openai.com/v1" } ], @@ -220,6 +221,9 @@ picoclaw onboard } ``` +> **Mới**: Định dạng cấu hình `model_list` cho phép thêm nhà cung cấp mà không cần thay đổi mã nguồn. Xem [Cấu hình Mô hình](#cấu-hình-mô-hình-model_list) để biết chi tiết. +> `request_timeout` là tùy chọn và dùng đơn vị giây. Nếu bỏ qua hoặc đặt `<= 0`, PicoClaw sẽ dùng timeout mặc định (120s). + **3. Lấy API Key** * **Nhà cung cấp LLM**: [OpenRouter](https://openrouter.ai/keys) · [Zhipu](https://open.bigmodel.cn/usercenter/proj-mgmt/apikeys) · [Anthropic](https://console.anthropic.com) · [OpenAI](https://platform.openai.com) · [Gemini](https://aistudio.google.com/api-keys) @@ -944,6 +948,17 @@ Thiết kế này cũng cho phép **hỗ trợ đa tác nhân** với lựa ch ``` > Chạy `picoclaw auth login --provider anthropic` để thiết lập thông tin xác thực OAuth. +**Proxy/API tùy chỉnh** +```json +{ + "model_name": "my-custom-model", + "model": "openai/custom-model", + "api_base": "https://my-proxy.com/v1", + "api_key": "sk-...", + "request_timeout": 300 +} +``` + #### Cân bằng Tải tải Định cấu hình nhiều endpoint cho cùng một tên mô hình—PicoClaw sẽ tự động phân phối round-robin giữa chúng: diff --git a/README.zh.md b/README.zh.md index 4f4bde46a..8ce1ad2ee 100644 --- a/README.zh.md +++ b/README.zh.md @@ -234,7 +234,8 @@ picoclaw onboard { "model_name": "gpt4", "model": "openai/gpt-5.2", - "api_key": "your-api-key" + "api_key": "your-api-key", + "request_timeout": 300 }, { "model_name": "claude-sonnet-4.6", @@ -263,6 +264,7 @@ picoclaw onboard ``` > **新功能**: `model_list` 配置格式支持零代码添加 provider。详见[模型配置](#模型配置-model_list)章节。 +> `request_timeout` 为可选项,单位为秒。若省略或设置为 `<= 0`,PicoClaw 使用默认超时(120 秒)。 **3. 获取 API Key** @@ -550,7 +552,8 @@ Agent 读取 HEARTBEAT.md "model_name": "my-custom-model", "model": "openai/custom-model", "api_base": "https://my-proxy.com/v1", - "api_key": "sk-..." + "api_key": "sk-...", + "request_timeout": 300 } ``` diff --git a/docs/migration/model-list-migration.md b/docs/migration/model-list-migration.md index 589dfc043..0d4af719c 100644 --- a/docs/migration/model-list-migration.md +++ b/docs/migration/model-list-migration.md @@ -117,6 +117,7 @@ The `model` field uses a protocol prefix format: `[protocol/]model-identifier` | `connect_mode` | No | Connection mode for CLI providers: `stdio`, `grpc` | | `rpm` | No | Requests per minute limit | | `max_tokens_field` | No | Field name for max tokens | +| `request_timeout` | No | HTTP request timeout in seconds; `<=0` uses default `120s` | *`api_key` is required for HTTP-based protocols unless `api_base` points to a local server. diff --git a/pkg/config/config.go b/pkg/config/config.go index 6f76614cf..16559a2df 100644 --- a/pkg/config/config.go +++ b/pkg/config/config.go @@ -371,11 +371,12 @@ func (p ProvidersConfig) MarshalJSON() ([]byte, error) { } type ProviderConfig struct { - APIKey string `json:"api_key" env:"PICOCLAW_PROVIDERS_{{.Name}}_API_KEY"` - APIBase string `json:"api_base" env:"PICOCLAW_PROVIDERS_{{.Name}}_API_BASE"` - Proxy string `json:"proxy,omitempty" env:"PICOCLAW_PROVIDERS_{{.Name}}_PROXY"` - AuthMethod string `json:"auth_method,omitempty" env:"PICOCLAW_PROVIDERS_{{.Name}}_AUTH_METHOD"` - ConnectMode string `json:"connect_mode,omitempty" env:"PICOCLAW_PROVIDERS_{{.Name}}_CONNECT_MODE"` // only for Github Copilot, `stdio` or `grpc` + APIKey string `json:"api_key" env:"PICOCLAW_PROVIDERS_{{.Name}}_API_KEY"` + APIBase string `json:"api_base" env:"PICOCLAW_PROVIDERS_{{.Name}}_API_BASE"` + Proxy string `json:"proxy,omitempty" env:"PICOCLAW_PROVIDERS_{{.Name}}_PROXY"` + RequestTimeout int `json:"request_timeout,omitempty" env:"PICOCLAW_PROVIDERS_{{.Name}}_REQUEST_TIMEOUT"` + AuthMethod string `json:"auth_method,omitempty" env:"PICOCLAW_PROVIDERS_{{.Name}}_AUTH_METHOD"` + ConnectMode string `json:"connect_mode,omitempty" env:"PICOCLAW_PROVIDERS_{{.Name}}_CONNECT_MODE"` // only for Github Copilot, `stdio` or `grpc` } type OpenAIProviderConfig struct { @@ -406,6 +407,7 @@ type ModelConfig struct { // Optional optimizations RPM int `json:"rpm,omitempty"` // Requests per minute limit MaxTokensField string `json:"max_tokens_field,omitempty"` // Field name for max tokens (e.g., "max_completion_tokens") + RequestTimeout int `json:"request_timeout,omitempty"` } // Validate checks if the ModelConfig has all required fields. diff --git a/pkg/config/migration.go b/pkg/config/migration.go index 70e1de438..5deb09270 100644 --- a/pkg/config/migration.go +++ b/pkg/config/migration.go @@ -60,12 +60,13 @@ func ConvertProvidersToModelList(cfg *Config) []ModelConfig { return ModelConfig{}, false } return ModelConfig{ - ModelName: "openai", - Model: "openai/gpt-5.2", - APIKey: p.OpenAI.APIKey, - APIBase: p.OpenAI.APIBase, - Proxy: p.OpenAI.Proxy, - AuthMethod: p.OpenAI.AuthMethod, + ModelName: "openai", + Model: "openai/gpt-5.2", + APIKey: p.OpenAI.APIKey, + APIBase: p.OpenAI.APIBase, + Proxy: p.OpenAI.Proxy, + RequestTimeout: p.OpenAI.RequestTimeout, + AuthMethod: p.OpenAI.AuthMethod, }, true }, }, @@ -77,12 +78,13 @@ func ConvertProvidersToModelList(cfg *Config) []ModelConfig { return ModelConfig{}, false } return ModelConfig{ - ModelName: "anthropic", - Model: "anthropic/claude-sonnet-4.6", - APIKey: p.Anthropic.APIKey, - APIBase: p.Anthropic.APIBase, - Proxy: p.Anthropic.Proxy, - AuthMethod: p.Anthropic.AuthMethod, + ModelName: "anthropic", + Model: "anthropic/claude-sonnet-4.6", + APIKey: p.Anthropic.APIKey, + APIBase: p.Anthropic.APIBase, + Proxy: p.Anthropic.Proxy, + RequestTimeout: p.Anthropic.RequestTimeout, + AuthMethod: p.Anthropic.AuthMethod, }, true }, }, @@ -94,11 +96,12 @@ func ConvertProvidersToModelList(cfg *Config) []ModelConfig { return ModelConfig{}, false } return ModelConfig{ - ModelName: "openrouter", - Model: "openrouter/auto", - APIKey: p.OpenRouter.APIKey, - APIBase: p.OpenRouter.APIBase, - Proxy: p.OpenRouter.Proxy, + ModelName: "openrouter", + Model: "openrouter/auto", + APIKey: p.OpenRouter.APIKey, + APIBase: p.OpenRouter.APIBase, + Proxy: p.OpenRouter.Proxy, + RequestTimeout: p.OpenRouter.RequestTimeout, }, true }, }, @@ -110,11 +113,12 @@ func ConvertProvidersToModelList(cfg *Config) []ModelConfig { return ModelConfig{}, false } return ModelConfig{ - ModelName: "groq", - Model: "groq/llama-3.1-70b-versatile", - APIKey: p.Groq.APIKey, - APIBase: p.Groq.APIBase, - Proxy: p.Groq.Proxy, + ModelName: "groq", + Model: "groq/llama-3.1-70b-versatile", + APIKey: p.Groq.APIKey, + APIBase: p.Groq.APIBase, + Proxy: p.Groq.Proxy, + RequestTimeout: p.Groq.RequestTimeout, }, true }, }, @@ -126,11 +130,12 @@ func ConvertProvidersToModelList(cfg *Config) []ModelConfig { return ModelConfig{}, false } return ModelConfig{ - ModelName: "zhipu", - Model: "zhipu/glm-4", - APIKey: p.Zhipu.APIKey, - APIBase: p.Zhipu.APIBase, - Proxy: p.Zhipu.Proxy, + ModelName: "zhipu", + Model: "zhipu/glm-4", + APIKey: p.Zhipu.APIKey, + APIBase: p.Zhipu.APIBase, + Proxy: p.Zhipu.Proxy, + RequestTimeout: p.Zhipu.RequestTimeout, }, true }, }, @@ -142,11 +147,12 @@ func ConvertProvidersToModelList(cfg *Config) []ModelConfig { return ModelConfig{}, false } return ModelConfig{ - ModelName: "vllm", - Model: "vllm/auto", - APIKey: p.VLLM.APIKey, - APIBase: p.VLLM.APIBase, - Proxy: p.VLLM.Proxy, + ModelName: "vllm", + Model: "vllm/auto", + APIKey: p.VLLM.APIKey, + APIBase: p.VLLM.APIBase, + Proxy: p.VLLM.Proxy, + RequestTimeout: p.VLLM.RequestTimeout, }, true }, }, @@ -158,11 +164,12 @@ func ConvertProvidersToModelList(cfg *Config) []ModelConfig { return ModelConfig{}, false } return ModelConfig{ - ModelName: "gemini", - Model: "gemini/gemini-pro", - APIKey: p.Gemini.APIKey, - APIBase: p.Gemini.APIBase, - Proxy: p.Gemini.Proxy, + ModelName: "gemini", + Model: "gemini/gemini-pro", + APIKey: p.Gemini.APIKey, + APIBase: p.Gemini.APIBase, + Proxy: p.Gemini.Proxy, + RequestTimeout: p.Gemini.RequestTimeout, }, true }, }, @@ -174,11 +181,12 @@ func ConvertProvidersToModelList(cfg *Config) []ModelConfig { return ModelConfig{}, false } return ModelConfig{ - ModelName: "nvidia", - Model: "nvidia/meta/llama-3.1-8b-instruct", - APIKey: p.Nvidia.APIKey, - APIBase: p.Nvidia.APIBase, - Proxy: p.Nvidia.Proxy, + ModelName: "nvidia", + Model: "nvidia/meta/llama-3.1-8b-instruct", + APIKey: p.Nvidia.APIKey, + APIBase: p.Nvidia.APIBase, + Proxy: p.Nvidia.Proxy, + RequestTimeout: p.Nvidia.RequestTimeout, }, true }, }, @@ -190,11 +198,12 @@ func ConvertProvidersToModelList(cfg *Config) []ModelConfig { return ModelConfig{}, false } return ModelConfig{ - ModelName: "ollama", - Model: "ollama/llama3", - APIKey: p.Ollama.APIKey, - APIBase: p.Ollama.APIBase, - Proxy: p.Ollama.Proxy, + ModelName: "ollama", + Model: "ollama/llama3", + APIKey: p.Ollama.APIKey, + APIBase: p.Ollama.APIBase, + Proxy: p.Ollama.Proxy, + RequestTimeout: p.Ollama.RequestTimeout, }, true }, }, @@ -206,11 +215,12 @@ func ConvertProvidersToModelList(cfg *Config) []ModelConfig { return ModelConfig{}, false } return ModelConfig{ - ModelName: "moonshot", - Model: "moonshot/kimi", - APIKey: p.Moonshot.APIKey, - APIBase: p.Moonshot.APIBase, - Proxy: p.Moonshot.Proxy, + ModelName: "moonshot", + Model: "moonshot/kimi", + APIKey: p.Moonshot.APIKey, + APIBase: p.Moonshot.APIBase, + Proxy: p.Moonshot.Proxy, + RequestTimeout: p.Moonshot.RequestTimeout, }, true }, }, @@ -222,11 +232,12 @@ func ConvertProvidersToModelList(cfg *Config) []ModelConfig { return ModelConfig{}, false } return ModelConfig{ - ModelName: "shengsuanyun", - Model: "shengsuanyun/auto", - APIKey: p.ShengSuanYun.APIKey, - APIBase: p.ShengSuanYun.APIBase, - Proxy: p.ShengSuanYun.Proxy, + ModelName: "shengsuanyun", + Model: "shengsuanyun/auto", + APIKey: p.ShengSuanYun.APIKey, + APIBase: p.ShengSuanYun.APIBase, + Proxy: p.ShengSuanYun.Proxy, + RequestTimeout: p.ShengSuanYun.RequestTimeout, }, true }, }, @@ -238,11 +249,12 @@ func ConvertProvidersToModelList(cfg *Config) []ModelConfig { return ModelConfig{}, false } return ModelConfig{ - ModelName: "deepseek", - Model: "deepseek/deepseek-chat", - APIKey: p.DeepSeek.APIKey, - APIBase: p.DeepSeek.APIBase, - Proxy: p.DeepSeek.Proxy, + ModelName: "deepseek", + Model: "deepseek/deepseek-chat", + APIKey: p.DeepSeek.APIKey, + APIBase: p.DeepSeek.APIBase, + Proxy: p.DeepSeek.Proxy, + RequestTimeout: p.DeepSeek.RequestTimeout, }, true }, }, @@ -254,11 +266,12 @@ func ConvertProvidersToModelList(cfg *Config) []ModelConfig { return ModelConfig{}, false } return ModelConfig{ - ModelName: "cerebras", - Model: "cerebras/llama-3.3-70b", - APIKey: p.Cerebras.APIKey, - APIBase: p.Cerebras.APIBase, - Proxy: p.Cerebras.Proxy, + ModelName: "cerebras", + Model: "cerebras/llama-3.3-70b", + APIKey: p.Cerebras.APIKey, + APIBase: p.Cerebras.APIBase, + Proxy: p.Cerebras.Proxy, + RequestTimeout: p.Cerebras.RequestTimeout, }, true }, }, @@ -270,11 +283,12 @@ func ConvertProvidersToModelList(cfg *Config) []ModelConfig { return ModelConfig{}, false } return ModelConfig{ - ModelName: "volcengine", - Model: "volcengine/doubao-pro", - APIKey: p.VolcEngine.APIKey, - APIBase: p.VolcEngine.APIBase, - Proxy: p.VolcEngine.Proxy, + ModelName: "volcengine", + Model: "volcengine/doubao-pro", + APIKey: p.VolcEngine.APIKey, + APIBase: p.VolcEngine.APIBase, + Proxy: p.VolcEngine.Proxy, + RequestTimeout: p.VolcEngine.RequestTimeout, }, true }, }, @@ -316,11 +330,12 @@ func ConvertProvidersToModelList(cfg *Config) []ModelConfig { return ModelConfig{}, false } return ModelConfig{ - ModelName: "qwen", - Model: "qwen/qwen-max", - APIKey: p.Qwen.APIKey, - APIBase: p.Qwen.APIBase, - Proxy: p.Qwen.Proxy, + ModelName: "qwen", + Model: "qwen/qwen-max", + APIKey: p.Qwen.APIKey, + APIBase: p.Qwen.APIBase, + Proxy: p.Qwen.Proxy, + RequestTimeout: p.Qwen.RequestTimeout, }, true }, }, @@ -332,11 +347,12 @@ func ConvertProvidersToModelList(cfg *Config) []ModelConfig { return ModelConfig{}, false } return ModelConfig{ - ModelName: "mistral", - Model: "mistral/mistral-small-latest", - APIKey: p.Mistral.APIKey, - APIBase: p.Mistral.APIBase, - Proxy: p.Mistral.Proxy, + ModelName: "mistral", + Model: "mistral/mistral-small-latest", + APIKey: p.Mistral.APIKey, + APIBase: p.Mistral.APIBase, + Proxy: p.Mistral.Proxy, + RequestTimeout: p.Mistral.RequestTimeout, }, true }, }, diff --git a/pkg/config/migration_test.go b/pkg/config/migration_test.go index 42165cb71..db8f4657d 100644 --- a/pkg/config/migration_test.go +++ b/pkg/config/migration_test.go @@ -166,6 +166,27 @@ func TestConvertProvidersToModelList_Proxy(t *testing.T) { } } +func TestConvertProvidersToModelList_RequestTimeout(t *testing.T) { + cfg := &Config{ + Providers: ProvidersConfig{ + Ollama: ProviderConfig{ + APIKey: "ollama-key", + RequestTimeout: 300, + }, + }, + } + + result := ConvertProvidersToModelList(cfg) + + if len(result) != 1 { + t.Fatalf("len(result) = %d, want 1", len(result)) + } + + if result[0].RequestTimeout != 300 { + t.Errorf("RequestTimeout = %d, want %d", result[0].RequestTimeout, 300) + } +} + func TestConvertProvidersToModelList_AuthMethod(t *testing.T) { cfg := &Config{ Providers: ProvidersConfig{ diff --git a/pkg/config/model_config_test.go b/pkg/config/model_config_test.go index 99eea2782..084f50a82 100644 --- a/pkg/config/model_config_test.go +++ b/pkg/config/model_config_test.go @@ -365,3 +365,38 @@ func TestConfig_ValidateModelList(t *testing.T) { }) } } + +func TestModelConfig_RequestTimeoutParsing(t *testing.T) { + jsonData := `{ + "model_name": "slow-local", + "model": "openai/local-model", + "api_base": "http://localhost:11434/v1", + "request_timeout": 300 + }` + + var cfg ModelConfig + if err := json.Unmarshal([]byte(jsonData), &cfg); err != nil { + t.Fatalf("Unmarshal() error = %v", err) + } + + if cfg.RequestTimeout != 300 { + t.Fatalf("RequestTimeout = %d, want 300", cfg.RequestTimeout) + } +} + +func TestModelConfig_RequestTimeoutDefaultZeroValue(t *testing.T) { + jsonData := `{ + "model_name": "default-timeout", + "model": "openai/gpt-4o", + "api_key": "test-key" + }` + + var cfg ModelConfig + if err := json.Unmarshal([]byte(jsonData), &cfg); err != nil { + t.Fatalf("Unmarshal() error = %v", err) + } + + if cfg.RequestTimeout != 0 { + t.Fatalf("RequestTimeout = %d, want 0", cfg.RequestTimeout) + } +} diff --git a/pkg/providers/factory_provider.go b/pkg/providers/factory_provider.go index 7d5566eef..53f7a08a0 100644 --- a/pkg/providers/factory_provider.go +++ b/pkg/providers/factory_provider.go @@ -84,7 +84,13 @@ func CreateProviderFromConfig(cfg *config.ModelConfig) (LLMProvider, string, err if apiBase == "" { apiBase = getDefaultAPIBase(protocol) } - return NewHTTPProviderWithMaxTokensField(cfg.APIKey, apiBase, cfg.Proxy, cfg.MaxTokensField), modelID, nil + return NewHTTPProviderWithMaxTokensFieldAndRequestTimeout( + cfg.APIKey, + apiBase, + cfg.Proxy, + cfg.MaxTokensField, + cfg.RequestTimeout, + ), modelID, nil case "openrouter", "groq", "zhipu", "gemini", "nvidia", "ollama", "moonshot", "shengsuanyun", "deepseek", "cerebras", @@ -97,7 +103,13 @@ func CreateProviderFromConfig(cfg *config.ModelConfig) (LLMProvider, string, err if apiBase == "" { apiBase = getDefaultAPIBase(protocol) } - return NewHTTPProviderWithMaxTokensField(cfg.APIKey, apiBase, cfg.Proxy, cfg.MaxTokensField), modelID, nil + return NewHTTPProviderWithMaxTokensFieldAndRequestTimeout( + cfg.APIKey, + apiBase, + cfg.Proxy, + cfg.MaxTokensField, + cfg.RequestTimeout, + ), modelID, nil case "anthropic": if cfg.AuthMethod == "oauth" || cfg.AuthMethod == "token" { @@ -116,7 +128,13 @@ func CreateProviderFromConfig(cfg *config.ModelConfig) (LLMProvider, string, err if cfg.APIKey == "" { return nil, "", fmt.Errorf("api_key is required for anthropic protocol (model: %s)", cfg.Model) } - return NewHTTPProviderWithMaxTokensField(cfg.APIKey, apiBase, cfg.Proxy, cfg.MaxTokensField), modelID, nil + return NewHTTPProviderWithMaxTokensFieldAndRequestTimeout( + cfg.APIKey, + apiBase, + cfg.Proxy, + cfg.MaxTokensField, + cfg.RequestTimeout, + ), modelID, nil case "antigravity": return NewAntigravityProvider(), modelID, nil diff --git a/pkg/providers/factory_provider_test.go b/pkg/providers/factory_provider_test.go index 6b133101a..e0c0eddef 100644 --- a/pkg/providers/factory_provider_test.go +++ b/pkg/providers/factory_provider_test.go @@ -6,7 +6,11 @@ package providers import ( + "net/http" + "net/http/httptest" + "strings" "testing" + "time" "github.com/sipeed/picoclaw/pkg/config" ) @@ -247,3 +251,42 @@ func TestCreateProviderFromConfig_EmptyModel(t *testing.T) { t.Fatal("CreateProviderFromConfig() expected error for empty model") } } + +func TestCreateProviderFromConfig_RequestTimeoutPropagation(t *testing.T) { + server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + time.Sleep(1500 * time.Millisecond) + w.Header().Set("Content-Type", "application/json") + _, _ = w.Write([]byte(`{"choices":[{"message":{"content":"ok"},"finish_reason":"stop"}]}`)) + })) + defer server.Close() + + cfg := &config.ModelConfig{ + ModelName: "test-timeout", + Model: "openai/gpt-4o", + APIBase: server.URL, + RequestTimeout: 1, + } + + provider, modelID, err := CreateProviderFromConfig(cfg) + if err != nil { + t.Fatalf("CreateProviderFromConfig() error = %v", err) + } + if modelID != "gpt-4o" { + t.Fatalf("modelID = %q, want %q", modelID, "gpt-4o") + } + + _, err = provider.Chat( + t.Context(), + []Message{{Role: "user", Content: "hi"}}, + nil, + modelID, + nil, + ) + if err == nil { + t.Fatal("Chat() expected timeout error, got nil") + } + errMsg := err.Error() + if !strings.Contains(errMsg, "context deadline exceeded") && !strings.Contains(errMsg, "Client.Timeout exceeded") { + t.Fatalf("Chat() error = %q, want timeout-related error", errMsg) + } +} diff --git a/pkg/providers/http_provider.go b/pkg/providers/http_provider.go index d0c4344f3..5c328f418 100644 --- a/pkg/providers/http_provider.go +++ b/pkg/providers/http_provider.go @@ -8,6 +8,7 @@ package providers import ( "context" + "time" "github.com/sipeed/picoclaw/pkg/providers/openai_compat" ) @@ -23,8 +24,21 @@ func NewHTTPProvider(apiKey, apiBase, proxy string) *HTTPProvider { } func NewHTTPProviderWithMaxTokensField(apiKey, apiBase, proxy, maxTokensField string) *HTTPProvider { + return NewHTTPProviderWithMaxTokensFieldAndRequestTimeout(apiKey, apiBase, proxy, maxTokensField, 0) +} + +func NewHTTPProviderWithMaxTokensFieldAndRequestTimeout( + apiKey, apiBase, proxy, maxTokensField string, + requestTimeoutSeconds int, +) *HTTPProvider { return &HTTPProvider{ - delegate: openai_compat.NewProviderWithMaxTokensField(apiKey, apiBase, proxy, maxTokensField), + delegate: openai_compat.NewProvider( + apiKey, + apiBase, + proxy, + openai_compat.WithMaxTokensField(maxTokensField), + openai_compat.WithRequestTimeout(time.Duration(requestTimeoutSeconds)*time.Second), + ), } } diff --git a/pkg/providers/openai_compat/provider.go b/pkg/providers/openai_compat/provider.go index 087d3506e..7dace71f2 100644 --- a/pkg/providers/openai_compat/provider.go +++ b/pkg/providers/openai_compat/provider.go @@ -34,13 +34,27 @@ type Provider struct { httpClient *http.Client } -func NewProvider(apiKey, apiBase, proxy string) *Provider { - return NewProviderWithMaxTokensField(apiKey, apiBase, proxy, "") +type Option func(*Provider) + +const defaultRequestTimeout = 120 * time.Second + +func WithMaxTokensField(maxTokensField string) Option { + return func(p *Provider) { + p.maxTokensField = maxTokensField + } } -func NewProviderWithMaxTokensField(apiKey, apiBase, proxy, maxTokensField string) *Provider { +func WithRequestTimeout(timeout time.Duration) Option { + return func(p *Provider) { + if timeout > 0 { + p.httpClient.Timeout = timeout + } + } +} + +func NewProvider(apiKey, apiBase, proxy string, opts ...Option) *Provider { client := &http.Client{ - Timeout: 120 * time.Second, + Timeout: defaultRequestTimeout, } if proxy != "" { @@ -54,12 +68,36 @@ func NewProviderWithMaxTokensField(apiKey, apiBase, proxy, maxTokensField string } } - return &Provider{ - apiKey: apiKey, - apiBase: strings.TrimRight(apiBase, "/"), - maxTokensField: maxTokensField, - httpClient: client, + p := &Provider{ + apiKey: apiKey, + apiBase: strings.TrimRight(apiBase, "/"), + httpClient: client, } + + for _, opt := range opts { + if opt != nil { + opt(p) + } + } + + return p +} + +func NewProviderWithMaxTokensField(apiKey, apiBase, proxy, maxTokensField string) *Provider { + return NewProvider(apiKey, apiBase, proxy, WithMaxTokensField(maxTokensField)) +} + +func NewProviderWithMaxTokensFieldAndTimeout( + apiKey, apiBase, proxy, maxTokensField string, + requestTimeoutSeconds int, +) *Provider { + return NewProvider( + apiKey, + apiBase, + proxy, + WithMaxTokensField(maxTokensField), + WithRequestTimeout(time.Duration(requestTimeoutSeconds)*time.Second), + ) } func (p *Provider) Chat( diff --git a/pkg/providers/openai_compat/provider_test.go b/pkg/providers/openai_compat/provider_test.go index 594a48213..7247fea3e 100644 --- a/pkg/providers/openai_compat/provider_test.go +++ b/pkg/providers/openai_compat/provider_test.go @@ -6,6 +6,7 @@ import ( "net/http/httptest" "net/url" "testing" + "time" ) func TestProviderChat_UsesMaxCompletionTokensForGLM(t *testing.T) { @@ -325,3 +326,38 @@ func TestNormalizeModel_UsesAPIBase(t *testing.T) { t.Fatalf("normalizeModel(openrouter) = %q, want %q", got, "openrouter/auto") } } + +func TestProvider_RequestTimeoutDefault(t *testing.T) { + p := NewProviderWithMaxTokensFieldAndTimeout("key", "https://example.com/v1", "", "", 0) + if p.httpClient.Timeout != defaultRequestTimeout { + t.Fatalf("http timeout = %v, want %v", p.httpClient.Timeout, defaultRequestTimeout) + } +} + +func TestProvider_RequestTimeoutOverride(t *testing.T) { + p := NewProviderWithMaxTokensFieldAndTimeout("key", "https://example.com/v1", "", "", 300) + if p.httpClient.Timeout != 300*time.Second { + t.Fatalf("http timeout = %v, want %v", p.httpClient.Timeout, 300*time.Second) + } +} + +func TestProvider_FunctionalOptionMaxTokensField(t *testing.T) { + p := NewProvider("key", "https://example.com/v1", "", WithMaxTokensField("max_completion_tokens")) + if p.maxTokensField != "max_completion_tokens" { + t.Fatalf("maxTokensField = %q, want %q", p.maxTokensField, "max_completion_tokens") + } +} + +func TestProvider_FunctionalOptionRequestTimeout(t *testing.T) { + p := NewProvider("key", "https://example.com/v1", "", WithRequestTimeout(45*time.Second)) + if p.httpClient.Timeout != 45*time.Second { + t.Fatalf("http timeout = %v, want %v", p.httpClient.Timeout, 45*time.Second) + } +} + +func TestProvider_FunctionalOptionRequestTimeoutNonPositive(t *testing.T) { + p := NewProvider("key", "https://example.com/v1", "", WithRequestTimeout(-1*time.Second)) + if p.httpClient.Timeout != defaultRequestTimeout { + t.Fatalf("http timeout = %v, want %v", p.httpClient.Timeout, defaultRequestTimeout) + } +} From 21654f1335aa8039edbacc8ed84a9cd4c04793b2 Mon Sep 17 00:00:00 2001 From: Hoshina Date: Thu, 26 Feb 2026 16:51:11 +0800 Subject: [PATCH 08/14] config: change default dm_scope to per-channel-peer Change the default value of session.dm_scope from "main" to "per-channel-peer" to provide better conversation isolation by default. This prevents context leakage between different users and channels. --- pkg/config/config_test.go | 9 +++++++++ pkg/config/defaults.go | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/pkg/config/config_test.go b/pkg/config/config_test.go index 223ac798d..bf56b7f34 100644 --- a/pkg/config/config_test.go +++ b/pkg/config/config_test.go @@ -413,3 +413,12 @@ func TestLoadConfig_WebToolsProxy(t *testing.T) { t.Fatalf("Tools.Web.Proxy = %q, want %q", cfg.Tools.Web.Proxy, "http://127.0.0.1:7890") } } + +// TestDefaultConfig_DMScope verifies the default dm_scope value +func TestDefaultConfig_DMScope(t *testing.T) { + cfg := DefaultConfig() + + if cfg.Session.DMScope != "per-channel-peer" { + t.Errorf("Session.DMScope = %q, want 'per-channel-peer'", cfg.Session.DMScope) + } +} diff --git a/pkg/config/defaults.go b/pkg/config/defaults.go index cc6de9399..cf799140d 100644 --- a/pkg/config/defaults.go +++ b/pkg/config/defaults.go @@ -21,7 +21,7 @@ func DefaultConfig() *Config { }, Bindings: []AgentBinding{}, Session: SessionConfig{ - DMScope: "main", + DMScope: "per-channel-peer", }, Channels: ChannelsConfig{ WhatsApp: WhatsAppConfig{ From f3c1162001fd2562e9f75024d9e33120d753d709 Mon Sep 17 00:00:00 2001 From: ian <141902143+yumosx@users.noreply.github.com> Date: Thu, 26 Feb 2026 17:35:26 +0800 Subject: [PATCH 09/14] feat(skills): add retry for HTTP requests in skill installer (#261) * feat(skills): add retry mechanism for HTTP requests Implement a retry mechanism with exponential backoff for HTTP requests in the skill installer. This improves reliability when fetching skills from GitHub by automatically retrying failed requests up to 3 times. Add comprehensive tests to verify retry behavior under different scenarios including success on different attempts and proper delay between retries. * fix: improve http request retry logic with status code checks Add shouldRetry helper function to determine retryable status codes. Close response body between retry attempts and break early for non-retryable status codes. * refactor: remove unused BuiltinSkill struct The struct was not being used anywhere in the codebase, so it's safe to remove it to reduce clutter and improve maintainability. * refactor(http): move retry logic to utils package Extract HTTP retry functionality from skills package to utils for better reusability Add context-aware sleep function and comprehensive tests * refactor(http): extract retry delay unit to variable Extract hardcoded retry delay unit to a variable for better testability and flexibility. Update tests to use milliseconds for faster execution while maintaining the same behavior. * test(http_retry): remove t.Parallel from test cases * test(http_retry): remove redundant test cases for retry success The removed test cases for success on second and third attempts were redundant since the retry logic is already covered by other tests. This simplifies the test suite while maintaining coverage. --- pkg/skills/installer.go | 6 +- pkg/utils/http_retry.go | 57 +++++++++++++++++ pkg/utils/http_retry_test.go | 118 +++++++++++++++++++++++++++++++++++ 3 files changed, 179 insertions(+), 2 deletions(-) create mode 100644 pkg/utils/http_retry.go create mode 100644 pkg/utils/http_retry_test.go diff --git a/pkg/skills/installer.go b/pkg/skills/installer.go index 3210509df..f9b5705f1 100644 --- a/pkg/skills/installer.go +++ b/pkg/skills/installer.go @@ -9,6 +9,8 @@ import ( "os" "path/filepath" "time" + + "github.com/sipeed/picoclaw/pkg/utils" ) type SkillInstaller struct { @@ -44,7 +46,7 @@ func (si *SkillInstaller) InstallFromGitHub(ctx context.Context, repo string) er return fmt.Errorf("failed to create request: %w", err) } - resp, err := client.Do(req) + resp, err := utils.DoRequestWithRetry(client, req) if err != nil { return fmt.Errorf("failed to fetch skill: %w", err) } @@ -94,7 +96,7 @@ func (si *SkillInstaller) ListAvailableSkills(ctx context.Context) ([]AvailableS return nil, fmt.Errorf("failed to create request: %w", err) } - resp, err := client.Do(req) + resp, err := utils.DoRequestWithRetry(client, req) if err != nil { return nil, fmt.Errorf("failed to fetch skills list: %w", err) } diff --git a/pkg/utils/http_retry.go b/pkg/utils/http_retry.go new file mode 100644 index 000000000..e90fa2129 --- /dev/null +++ b/pkg/utils/http_retry.go @@ -0,0 +1,57 @@ +package utils + +import ( + "context" + "fmt" + "net/http" + "time" +) + +const maxRetries = 3 + +var retryDelayUnit = time.Second + +func shouldRetry(statusCode int) bool { + return statusCode == http.StatusTooManyRequests || + statusCode >= 500 +} + +func DoRequestWithRetry(client *http.Client, req *http.Request) (*http.Response, error) { + var resp *http.Response + var err error + + for i := range maxRetries { + if i > 0 && resp != nil { + resp.Body.Close() + } + + resp, err = client.Do(req) + if err == nil { + if resp.StatusCode == http.StatusOK { + break + } + if !shouldRetry(resp.StatusCode) { + break + } + } + + if i < maxRetries-1 { + if err = sleepWithCtx(req.Context(), retryDelayUnit*time.Duration(i+1)); err != nil { + return nil, fmt.Errorf("failed to sleep: %w", err) + } + } + } + return resp, err +} + +func sleepWithCtx(ctx context.Context, d time.Duration) error { + timer := time.NewTimer(d) + defer timer.Stop() + + select { + case <-ctx.Done(): + return ctx.Err() + case <-timer.C: + return nil + } +} diff --git a/pkg/utils/http_retry_test.go b/pkg/utils/http_retry_test.go new file mode 100644 index 000000000..1c2dbe115 --- /dev/null +++ b/pkg/utils/http_retry_test.go @@ -0,0 +1,118 @@ +package utils + +import ( + "net/http" + "net/http/httptest" + "testing" + "time" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +func TestDoRequestWithRetry(t *testing.T) { + retryDelayUnit = time.Millisecond + t.Cleanup(func() { retryDelayUnit = time.Second }) + + testcases := []struct { + name string + serverBehavior func(*httptest.Server) int + wantSuccess bool + wantAttempts int + }{ + { + name: "success-on-first-attempt", + serverBehavior: func(server *httptest.Server) int { + return 0 + }, + wantSuccess: true, + wantAttempts: 1, + }, + { + name: "fail-all-attempts", + serverBehavior: func(server *httptest.Server) int { + return 4 + }, + wantSuccess: false, + wantAttempts: 3, + }, + } + + for _, tc := range testcases { + t.Run(tc.name, func(t *testing.T) { + attempts := 0 + server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + attempts++ + if attempts <= tc.serverBehavior(nil) { + w.WriteHeader(http.StatusInternalServerError) + return + } + w.WriteHeader(http.StatusOK) + w.Write([]byte("success")) + })) + + t.Cleanup(func() { + server.Close() + }) + + client := &http.Client{Timeout: 5 * time.Second} + req, err := http.NewRequest(http.MethodGet, server.URL, nil) + require.NoError(t, err) + + resp, err := DoRequestWithRetry(client, req) + + if tc.wantSuccess { + require.NoError(t, err) + require.NotNil(t, resp) + assert.Equal(t, http.StatusOK, resp.StatusCode) + resp.Body.Close() + } else { + require.NotNil(t, resp) + assert.Equal(t, http.StatusInternalServerError, resp.StatusCode) + resp.Body.Close() + } + + assert.Equal(t, tc.wantAttempts, attempts) + }) + } +} + +func TestDoRequestWithRetry_Delay(t *testing.T) { + retryDelayUnit = time.Millisecond + t.Cleanup(func() { retryDelayUnit = time.Second }) + + var start time.Time + delays := []time.Duration{} + server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + if len(delays) == 0 { + delays = append(delays, 0) + w.WriteHeader(http.StatusInternalServerError) + return + } + if len(delays) == 1 { + start = time.Now() + delays = append(delays, 0) + w.WriteHeader(http.StatusInternalServerError) + return + } + if len(delays) == 2 { + elapsed := time.Since(start) + delays = append(delays, elapsed) + w.WriteHeader(http.StatusOK) + w.Write([]byte("success")) + } + })) + defer server.Close() + + client := &http.Client{Timeout: 10 * time.Second} + req, err := http.NewRequest(http.MethodGet, server.URL, nil) + require.NoError(t, err) + + resp, err := DoRequestWithRetry(client, req) + require.NoError(t, err) + require.NotNil(t, resp) + assert.Equal(t, http.StatusOK, resp.StatusCode) + resp.Body.Close() + + assert.GreaterOrEqual(t, delays[2], time.Millisecond) +} From cb3191c8c129250103c75fae626e218296a183d0 Mon Sep 17 00:00:00 2001 From: ztechenbo <39621703+ztechenbo@users.noreply.github.com> Date: Thu, 26 Feb 2026 17:41:01 +0800 Subject: [PATCH 10/14] build: support armv81 arch in Makefile (#776) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: 陈波0668000637 --- Makefile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Makefile b/Makefile index c59c414f3..a14723616 100644 --- a/Makefile +++ b/Makefile @@ -44,6 +44,8 @@ ifeq ($(UNAME_S),Linux) ARCH=amd64 else ifeq ($(UNAME_M),aarch64) ARCH=arm64 + else ifeq ($(UNAME_M),armv81) + ARCH=arm64 else ifeq ($(UNAME_M),loongarch64) ARCH=loong64 else ifeq ($(UNAME_M),riscv64) From 8a1fb03974628c0629072d76f10994d89b978b20 Mon Sep 17 00:00:00 2001 From: mattn Date: Thu, 26 Feb 2026 18:44:03 +0900 Subject: [PATCH 11/14] Perf/precompile regex (#687) * perf: pre-compile regexes at package level Move regexp.MustCompile calls from inside methods to package-level variables in web.go (7 regexes) and loader.go (2 regexes). This avoids repeated compilation on every invocation. Amp-Thread-ID: https://ampcode.com/threads/T-019c79c3-ea1c-7471-b09d-be90ba0e1ca0 Co-authored-by: Amp * perf: pre-compile regexes at package level * retain the helpful comment --------- Co-authored-by: Amp --- pkg/channels/telegram.go | 38 ++++++++++++++++++++++++-------------- pkg/skills/loader.go | 18 +++++++----------- pkg/tools/web.go | 37 +++++++++++++++++++++---------------- 3 files changed, 52 insertions(+), 41 deletions(-) diff --git a/pkg/channels/telegram.go b/pkg/channels/telegram.go index 524494849..6592d9bc0 100644 --- a/pkg/channels/telegram.go +++ b/pkg/channels/telegram.go @@ -23,6 +23,19 @@ import ( "github.com/sipeed/picoclaw/pkg/voice" ) +var ( + reHeading = regexp.MustCompile(`^#{1,6}\s+(.+)$`) + reBlockquote = regexp.MustCompile(`^>\s*(.*)$`) + reLink = regexp.MustCompile(`\[([^\]]+)\]\(([^)]+)\)`) + reBoldStar = regexp.MustCompile(`\*\*(.+?)\*\*`) + reBoldUnder = regexp.MustCompile(`__(.+?)__`) + reItalic = regexp.MustCompile(`_([^_]+)_`) + reStrike = regexp.MustCompile(`~~(.+?)~~`) + reListItem = regexp.MustCompile(`^[-*]\s+`) + reCodeBlock = regexp.MustCompile("```[\\w]*\\n?([\\s\\S]*?)```") + reInlineCode = regexp.MustCompile("`([^`]+)`") +) + type TelegramChannel struct { *BaseChannel bot *telego.Bot @@ -431,19 +444,18 @@ func markdownToTelegramHTML(text string) string { inlineCodes := extractInlineCodes(text) text = inlineCodes.text - text = regexp.MustCompile(`^#{1,6}\s+(.+)$`).ReplaceAllString(text, "$1") + text = reHeading.ReplaceAllString(text, "$1") - text = regexp.MustCompile(`^>\s*(.*)$`).ReplaceAllString(text, "$1") + text = reBlockquote.ReplaceAllString(text, "$1") text = escapeHTML(text) - text = regexp.MustCompile(`\[([^\]]+)\]\(([^)]+)\)`).ReplaceAllString(text, `$1`) + text = reLink.ReplaceAllString(text, `$1`) - text = regexp.MustCompile(`\*\*(.+?)\*\*`).ReplaceAllString(text, "$1") + text = reBoldStar.ReplaceAllString(text, "$1") - text = regexp.MustCompile(`__(.+?)__`).ReplaceAllString(text, "$1") + text = reBoldUnder.ReplaceAllString(text, "$1") - reItalic := regexp.MustCompile(`_([^_]+)_`) text = reItalic.ReplaceAllStringFunc(text, func(s string) string { match := reItalic.FindStringSubmatch(s) if len(match) < 2 { @@ -452,9 +464,9 @@ func markdownToTelegramHTML(text string) string { return "" + match[1] + "" }) - text = regexp.MustCompile(`~~(.+?)~~`).ReplaceAllString(text, "$1") + text = reStrike.ReplaceAllString(text, "$1") - text = regexp.MustCompile(`^[-*]\s+`).ReplaceAllString(text, "• ") + text = reListItem.ReplaceAllString(text, "• ") for i, code := range inlineCodes.codes { escaped := escapeHTML(code) @@ -479,8 +491,7 @@ type codeBlockMatch struct { } func extractCodeBlocks(text string) codeBlockMatch { - re := regexp.MustCompile("```[\\w]*\\n?([\\s\\S]*?)```") - matches := re.FindAllStringSubmatch(text, -1) + matches := reCodeBlock.FindAllStringSubmatch(text, -1) codes := make([]string, 0, len(matches)) for _, match := range matches { @@ -488,7 +499,7 @@ func extractCodeBlocks(text string) codeBlockMatch { } i := 0 - text = re.ReplaceAllStringFunc(text, func(m string) string { + text = reCodeBlock.ReplaceAllStringFunc(text, func(m string) string { placeholder := fmt.Sprintf("\x00CB%d\x00", i) i++ return placeholder @@ -503,8 +514,7 @@ type inlineCodeMatch struct { } func extractInlineCodes(text string) inlineCodeMatch { - re := regexp.MustCompile("`([^`]+)`") - matches := re.FindAllStringSubmatch(text, -1) + matches := reInlineCode.FindAllStringSubmatch(text, -1) codes := make([]string, 0, len(matches)) for _, match := range matches { @@ -512,7 +522,7 @@ func extractInlineCodes(text string) inlineCodeMatch { } i := 0 - text = re.ReplaceAllStringFunc(text, func(m string) string { + text = reInlineCode.ReplaceAllStringFunc(text, func(m string) string { placeholder := fmt.Sprintf("\x00IC%d\x00", i) i++ return placeholder diff --git a/pkg/skills/loader.go b/pkg/skills/loader.go index 5749d8983..67d3e70e0 100644 --- a/pkg/skills/loader.go +++ b/pkg/skills/loader.go @@ -13,7 +13,11 @@ import ( "github.com/sipeed/picoclaw/pkg/logger" ) -var namePattern = regexp.MustCompile(`^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$`) +var ( + namePattern = regexp.MustCompile(`^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$`) + reFrontmatter = regexp.MustCompile(`(?s)^---(?:\r\n|\n|\r)(.*?)(?:\r\n|\n|\r)---`) + reStripFrontmatter = regexp.MustCompile(`(?s)^---(?:\r\n|\n|\r)(.*?)(?:\r\n|\n|\r)---(?:\r\n|\n|\r)*`) +) const ( MaxNameLength = 64 @@ -257,10 +261,7 @@ func (sl *SkillsLoader) parseSimpleYAML(content string) map[string]string { func (sl *SkillsLoader) extractFrontmatter(content string) string { // Support \n (Unix), \r\n (Windows), and \r (classic Mac) line endings for frontmatter blocks - // (?s) enables DOTALL so . matches newlines; - // ^--- at start, then ... --- at start of line, honoring all three line ending types - re := regexp.MustCompile(`(?s)^---(?:\r\n|\n|\r)(.*?)(?:\r\n|\n|\r)---`) - match := re.FindStringSubmatch(content) + match := reFrontmatter.FindStringSubmatch(content) if len(match) > 1 { return match[1] } @@ -268,12 +269,7 @@ func (sl *SkillsLoader) extractFrontmatter(content string) string { } func (sl *SkillsLoader) stripFrontmatter(content string) string { - // Support \n (Unix), \r\n (Windows), and \r (classic Mac) line endings for frontmatter blocks - // (?s) enables DOTALL so . matches newlines; - // ^--- at start, then ... --- at start of line, honoring all three line ending types - // Match zero or more trailing line endings after closing --- (handles both with and without blank lines) - re := regexp.MustCompile(`(?s)^---(?:\r\n|\n|\r)(.*?)(?:\r\n|\n|\r)---(?:\r\n|\n|\r)*`) - return re.ReplaceAllString(content, "") + return reStripFrontmatter.ReplaceAllString(content, "") } func escapeXML(s string) string { diff --git a/pkg/tools/web.go b/pkg/tools/web.go index 44df28215..8ba2a723a 100644 --- a/pkg/tools/web.go +++ b/pkg/tools/web.go @@ -17,6 +17,19 @@ const ( userAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36" ) +// Pre-compiled regexes for HTML text extraction +var ( + reScript = regexp.MustCompile(``) + reStyle = regexp.MustCompile(``) + reTags = regexp.MustCompile(`<[^>]+>`) + reWhitespace = regexp.MustCompile(`[^\S\n]+`) + reBlankLines = regexp.MustCompile(`\n{3,}`) + + // DuckDuckGo result extraction + reDDGLink = regexp.MustCompile(`]*class="[^"]*result__a[^"]*"[^>]*href="([^"]+)"[^>]*>([\s\S]*?)`) + reDDGSnippet = regexp.MustCompile(`([\s\S]*?)`) +) + // createHTTPClient creates an HTTP client with optional proxy support func createHTTPClient(proxyURL string, timeout time.Duration) (*http.Client, error) { client := &http.Client{ @@ -251,8 +264,7 @@ func (p *DuckDuckGoSearchProvider) extractResults(html string, count int, query // Try finding the result links directly first, as they are the most critical // Pattern: Title // The previous regex was a bit strict. Let's make it more flexible for attributes order/content - reLink := regexp.MustCompile(`]*class="[^"]*result__a[^"]*"[^>]*href="([^"]+)"[^>]*>([\s\S]*?)`) - matches := reLink.FindAllStringSubmatch(html, count+5) + matches := reDDGLink.FindAllStringSubmatch(html, count+5) if len(matches) == 0 { return fmt.Sprintf("No results found or extraction failed. Query: %s", query), nil @@ -269,8 +281,7 @@ func (p *DuckDuckGoSearchProvider) extractResults(html string, count int, query // A better regex approach: iterate through text and find matches in order // But for now, let's grab all snippets too - reSnippet := regexp.MustCompile(`([\s\S]*?)`) - snippetMatches := reSnippet.FindAllStringSubmatch(html, count+5) + snippetMatches := reDDGSnippet.FindAllStringSubmatch(html, count+5) maxItems := min(len(matches), count) @@ -305,8 +316,7 @@ func (p *DuckDuckGoSearchProvider) extractResults(html string, count int, query } func stripTags(content string) string { - re := regexp.MustCompile(`<[^>]+>`) - return re.ReplaceAllString(content, "") + return reTags.ReplaceAllString(content, "") } type PerplexitySearchProvider struct { @@ -654,19 +664,14 @@ func (t *WebFetchTool) Execute(ctx context.Context, args map[string]any) *ToolRe } func (t *WebFetchTool) extractText(htmlContent string) string { - re := regexp.MustCompile(``) - result := re.ReplaceAllLiteralString(htmlContent, "") - re = regexp.MustCompile(``) - result = re.ReplaceAllLiteralString(result, "") - re = regexp.MustCompile(`<[^>]+>`) - result = re.ReplaceAllLiteralString(result, "") + result := reScript.ReplaceAllLiteralString(htmlContent, "") + result = reStyle.ReplaceAllLiteralString(result, "") + result = reTags.ReplaceAllLiteralString(result, "") result = strings.TrimSpace(result) - re = regexp.MustCompile(`[^\S\n]+`) - result = re.ReplaceAllString(result, " ") - re = regexp.MustCompile(`\n{3,}`) - result = re.ReplaceAllString(result, "\n\n") + result = reWhitespace.ReplaceAllString(result, " ") + result = reBlankLines.ReplaceAllString(result, "\n\n") lines := strings.Split(result, "\n") var cleanLines []string From 433af435a9b27112b0bab7e8e206aede55c8164a Mon Sep 17 00:00:00 2001 From: mosir Date: Thu, 26 Feb 2026 20:38:11 +0800 Subject: [PATCH 12/14] style: fix gci import grouping in config, cron, and skills installer --- pkg/config/config.go | 1 + pkg/cron/service.go | 1 + pkg/skills/installer.go | 3 +-- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/pkg/config/config.go b/pkg/config/config.go index ddfa35dc9..ca5803c35 100644 --- a/pkg/config/config.go +++ b/pkg/config/config.go @@ -7,6 +7,7 @@ import ( "sync/atomic" "github.com/caarlos0/env/v11" + "github.com/sipeed/picoclaw/pkg/fileutil" ) diff --git a/pkg/cron/service.go b/pkg/cron/service.go index f14d86bcb..6962041c1 100644 --- a/pkg/cron/service.go +++ b/pkg/cron/service.go @@ -11,6 +11,7 @@ import ( "time" "github.com/adhocore/gronx" + "github.com/sipeed/picoclaw/pkg/fileutil" ) diff --git a/pkg/skills/installer.go b/pkg/skills/installer.go index 31b5a3dbd..20f6a49d9 100644 --- a/pkg/skills/installer.go +++ b/pkg/skills/installer.go @@ -10,9 +10,8 @@ import ( "path/filepath" "time" - "github.com/sipeed/picoclaw/pkg/utils" - "github.com/sipeed/picoclaw/pkg/fileutil" + "github.com/sipeed/picoclaw/pkg/utils" ) type SkillInstaller struct { From a5c8179fa854c67450e5a681282d8e459ab04d69 Mon Sep 17 00:00:00 2001 From: Guoguo <16666742+imguoguo@users.noreply.github.com> Date: Fri, 27 Feb 2026 10:10:17 +0800 Subject: [PATCH 13/14] chore(docker): reorganize docker files and add first-run entrypoint (#812) * chore(docker): move Dockerfile into docker/ directory Co-Authored-By: Claude Sonnet 4.6 * feat(docker): add entrypoint script to goreleaser Dockerfile - entrypoint.sh: on first run (config and workspace both absent) runs picoclaw onboard then exits for the user to configure; subsequent starts exec picoclaw gateway directly - Dockerfile.goreleaser: copy and use entrypoint.sh, run as root - .goreleaser.yaml: update dockerfile path, add entrypoint.sh to extra_files so it is included in the docker build context Co-Authored-By: Claude Sonnet 4.6 * chore(docker): update docker-compose to use pre-built image and bind mount - Use docker.io/sipeed/picoclaw:latest instead of building locally - Replace named volume with bind mount ./data:/root/.picoclaw - Move docker-compose.yml into docker/ directory Co-Authored-By: Claude Sonnet 4.6 * docs: update Docker Compose section to reflect new docker/ layout - Use docker compose -f docker/docker-compose.yml for all commands - Update setup flow: first run generates docker/data/config.json, container exits, user edits config, then restarts - Replace "Rebuild" section with "Update" (docker pull) since the compose file now uses the pre-built sipeed/picoclaw image - Apply same changes to README.zh.md Co-Authored-By: Claude Sonnet 4.6 * fix(docker): use restart: on-failure to prevent restart after first-run setup unless-stopped restarts the container regardless of exit code, causing an infinite loop when entrypoint exits 0 after the initial onboard. on-failure only restarts on non-zero exit (i.e. crashes), so the container stays stopped after setup until the user restarts it manually. Co-Authored-By: Claude Sonnet 4.6 * docs: sync Docker Compose section across all language READMEs Apply the same updates as the English/Chinese READMEs: - Use docker compose -f docker/docker-compose.yml for all commands - Update setup flow to first-run auto-config pattern - Replace build/rebuild section with update via docker pull - Affected: README.fr.md, README.ja.md, README.pt-br.md, README.vi.md Co-Authored-By: Claude Sonnet 4.6 --------- Co-authored-by: Claude Sonnet 4.6 --- .goreleaser.yaml | 4 +- README.fr.md | 34 +++++++++-------- README.ja.md | 34 +++++++++-------- README.md | 34 +++++++++-------- README.pt-br.md | 34 +++++++++-------- README.vi.md | 34 +++++++++-------- README.zh.md | 38 ++++++++++--------- Dockerfile => docker/Dockerfile | 0 .../Dockerfile.goreleaser | 6 ++- .../docker-compose.yml | 26 ++++--------- docker/entrypoint.sh | 15 ++++++++ 11 files changed, 144 insertions(+), 115 deletions(-) rename Dockerfile => docker/Dockerfile (100%) rename Dockerfile.goreleaser => docker/Dockerfile.goreleaser (58%) rename docker-compose.yml => docker/docker-compose.yml (64%) create mode 100644 docker/entrypoint.sh diff --git a/.goreleaser.yaml b/.goreleaser.yaml index af26509e6..49d230506 100644 --- a/.goreleaser.yaml +++ b/.goreleaser.yaml @@ -39,7 +39,9 @@ builds: dockers_v2: - id: picoclaw - dockerfile: Dockerfile.goreleaser + dockerfile: docker/Dockerfile.goreleaser + extra_files: + - docker/entrypoint.sh ids: - picoclaw images: diff --git a/README.fr.md b/README.fr.md index f1d4f848e..c452b71ac 100644 --- a/README.fr.md +++ b/README.fr.md @@ -164,39 +164,43 @@ Vous pouvez également exécuter PicoClaw avec Docker Compose sans rien installe git clone https://github.com/sipeed/picoclaw.git cd picoclaw -# 2. Configurez vos clés API -cp config/config.example.json config/config.json -vim config/config.json # Configurez DISCORD_BOT_TOKEN, clés API, etc. +# 2. Premier lancement — génère docker/data/config.json puis s'arrête +docker compose -f docker/docker-compose.yml --profile gateway up +# Le conteneur affiche "First-run setup complete." puis s'arrête. -# 3. Compiler & Démarrer -docker compose --profile gateway up -d +# 3. Configurez vos clés API +vim docker/data/config.json # Clés API du fournisseur, tokens de bot, etc. + +# 4. Démarrer +docker compose -f docker/docker-compose.yml --profile gateway up -d +``` > [!TIP] > **Utilisateurs Docker** : Par défaut, le Gateway écoute sur `127.0.0.1`, ce qui n'est pas accessible depuis l'hôte. Si vous avez besoin d'accéder aux endpoints de santé ou d'exposer des ports, définissez `PICOCLAW_GATEWAY_HOST=0.0.0.0` dans votre environnement ou mettez à jour `config.json`. +```bash +# 5. Voir les logs +docker compose -f docker/docker-compose.yml logs -f picoclaw-gateway -# 4. Voir les logs -docker compose logs -f picoclaw-gateway - -# 5. Arrêter -docker compose --profile gateway down +# 6. Arrêter +docker compose -f docker/docker-compose.yml --profile gateway down ``` ### Mode Agent (exécution unique) ```bash # Poser une question -docker compose run --rm picoclaw-agent -m "Combien font 2+2 ?" +docker compose -f docker/docker-compose.yml run --rm picoclaw-agent -m "Combien font 2+2 ?" # Mode interactif -docker compose run --rm picoclaw-agent +docker compose -f docker/docker-compose.yml run --rm picoclaw-agent ``` -### Recompiler +### Mettre à jour ```bash -docker compose --profile gateway build --no-cache -docker compose --profile gateway up -d +docker compose -f docker/docker-compose.yml pull +docker compose -f docker/docker-compose.yml --profile gateway up -d ``` ### 🚀 Démarrage Rapide diff --git a/README.ja.md b/README.ja.md index 48fb89fe3..6d5d09451 100644 --- a/README.ja.md +++ b/README.ja.md @@ -126,39 +126,43 @@ Docker Compose を使えば、ローカルにインストールせずに PicoCla git clone https://github.com/sipeed/picoclaw.git cd picoclaw -# 2. API キーを設定 -cp config/config.example.json config/config.json -vim config/config.json # DISCORD_BOT_TOKEN, プロバイダーの API キーを設定 +# 2. 初回起動 — docker/data/config.json を自動生成して終了 +docker compose -f docker/docker-compose.yml --profile gateway up +# コンテナが "First-run setup complete." を表示して停止します。 -# 3. ビルドと起動 -docker compose --profile gateway up -d +# 3. API キーを設定 +vim docker/data/config.json # プロバイダー API キー、Bot トークンなどを設定 + +# 4. 起動 +docker compose -f docker/docker-compose.yml --profile gateway up -d +``` > [!TIP] > **Docker ユーザー**: デフォルトでは、Gateway は `127.0.0.1` でリッスンしており、ホストからアクセスできません。ヘルスチェックエンドポイントにアクセスしたり、ポートを公開したりする必要がある場合は、環境変数で `PICOCLAW_GATEWAY_HOST=0.0.0.0` を設定するか、`config.json` を更新してください。 +```bash +# 5. ログ確認 +docker compose -f docker/docker-compose.yml logs -f picoclaw-gateway -# 4. ログ確認 -docker compose logs -f picoclaw-gateway - -# 5. 停止 -docker compose --profile gateway down +# 6. 停止 +docker compose -f docker/docker-compose.yml --profile gateway down ``` ### Agent モード(ワンショット) ```bash # 質問を投げる -docker compose run --rm picoclaw-agent -m "What is 2+2?" +docker compose -f docker/docker-compose.yml run --rm picoclaw-agent -m "What is 2+2?" # インタラクティブモード -docker compose run --rm picoclaw-agent +docker compose -f docker/docker-compose.yml run --rm picoclaw-agent ``` -### リビルド +### アップデート ```bash -docker compose --profile gateway build --no-cache -docker compose --profile gateway up -d +docker compose -f docker/docker-compose.yml pull +docker compose -f docker/docker-compose.yml --profile gateway up -d ``` ### 🚀 クイックスタート(ネイティブ) diff --git a/README.md b/README.md index 72a933b6f..6f5cce4d0 100644 --- a/README.md +++ b/README.md @@ -167,39 +167,43 @@ You can also run PicoClaw using Docker Compose without installing anything local git clone https://github.com/sipeed/picoclaw.git cd picoclaw -# 2. Set your API keys -cp config/config.example.json config/config.json -vim config/config.json # Set DISCORD_BOT_TOKEN, API keys, etc. +# 2. First run — auto-generates docker/data/config.json then exits +docker compose -f docker/docker-compose.yml --profile gateway up +# The container prints "First-run setup complete." and stops. -# 3. Build & Start -docker compose --profile gateway up -d +# 3. Set your API keys +vim docker/data/config.json # Set provider API keys, bot tokens, etc. + +# 4. Start +docker compose -f docker/docker-compose.yml --profile gateway up -d +``` > [!TIP] > **Docker Users**: By default, the Gateway listens on `127.0.0.1` which is not accessible from the host. If you need to access the health endpoints or expose ports, set `PICOCLAW_GATEWAY_HOST=0.0.0.0` in your environment or update `config.json`. +```bash +# 5. Check logs +docker compose -f docker/docker-compose.yml logs -f picoclaw-gateway -# 4. Check logs -docker compose logs -f picoclaw-gateway - -# 5. Stop -docker compose --profile gateway down +# 6. Stop +docker compose -f docker/docker-compose.yml --profile gateway down ``` ### Agent Mode (One-shot) ```bash # Ask a question -docker compose run --rm picoclaw-agent -m "What is 2+2?" +docker compose -f docker/docker-compose.yml run --rm picoclaw-agent -m "What is 2+2?" # Interactive mode -docker compose run --rm picoclaw-agent +docker compose -f docker/docker-compose.yml run --rm picoclaw-agent ``` -### Rebuild +### Update ```bash -docker compose --profile gateway build --no-cache -docker compose --profile gateway up -d +docker compose -f docker/docker-compose.yml pull +docker compose -f docker/docker-compose.yml --profile gateway up -d ``` ### 🚀 Quick Start diff --git a/README.pt-br.md b/README.pt-br.md index 1dbee5201..61663e363 100644 --- a/README.pt-br.md +++ b/README.pt-br.md @@ -165,39 +165,43 @@ Você tambêm pode rodar o PicoClaw usando Docker Compose sem instalar nada loca git clone https://github.com/sipeed/picoclaw.git cd picoclaw -# 2. Configure suas API keys -cp config/config.example.json config/config.json -vim config/config.json # Configure DISCORD_BOT_TOKEN, API keys, etc. +# 2. Primeiro uso — gera docker/data/config.json automaticamente e para +docker compose -f docker/docker-compose.yml --profile gateway up +# O contêiner exibe "First-run setup complete." e para. -# 3. Build & Iniciar -docker compose --profile gateway up -d +# 3. Configure suas API keys +vim docker/data/config.json # Chaves de API do provedor, tokens de bot, etc. + +# 4. Iniciar +docker compose -f docker/docker-compose.yml --profile gateway up -d +``` > [!TIP] > **Usuários Docker**: Por padrão, o Gateway ouve em `127.0.0.1`, o que não é acessível a partir do host. Se você precisar acessar os endpoints de integridade ou expor portas, defina `PICOCLAW_GATEWAY_HOST=0.0.0.0` em seu ambiente ou atualize o `config.json`. +```bash +# 5. Ver logs +docker compose -f docker/docker-compose.yml logs -f picoclaw-gateway -# 4. Ver logs -docker compose logs -f picoclaw-gateway - -# 5. Parar -docker compose --profile gateway down +# 6. Parar +docker compose -f docker/docker-compose.yml --profile gateway down ``` ### Modo Agente (Execução única) ```bash # Fazer uma pergunta -docker compose run --rm picoclaw-agent -m "Quanto e 2+2?" +docker compose -f docker/docker-compose.yml run --rm picoclaw-agent -m "Quanto e 2+2?" # Modo interativo -docker compose run --rm picoclaw-agent +docker compose -f docker/docker-compose.yml run --rm picoclaw-agent ``` -### Rebuild +### Atualizar ```bash -docker compose --profile gateway build --no-cache -docker compose --profile gateway up -d +docker compose -f docker/docker-compose.yml pull +docker compose -f docker/docker-compose.yml --profile gateway up -d ``` ### 🚀 Início Rápido diff --git a/README.vi.md b/README.vi.md index 0dd4994c2..f8ece7eda 100644 --- a/README.vi.md +++ b/README.vi.md @@ -145,39 +145,43 @@ Bạn cũng có thể chạy PicoClaw bằng Docker Compose mà không cần cà git clone https://github.com/sipeed/picoclaw.git cd picoclaw -# 2. Thiết lập API Key -cp config/config.example.json config/config.json -vim config/config.json # Thiết lập DISCORD_BOT_TOKEN, API keys, v.v. +# 2. Lần chạy đầu tiên — tự tạo docker/data/config.json rồi dừng lại +docker compose -f docker/docker-compose.yml --profile gateway up +# Container hiển thị "First-run setup complete." rồi tự dừng. -# 3. Build & Khởi động -docker compose --profile gateway up -d +# 3. Thiết lập API Key +vim docker/data/config.json # API key của provider, bot token, v.v. + +# 4. Khởi động +docker compose -f docker/docker-compose.yml --profile gateway up -d +``` > [!TIP] > **Người dùng Docker**: Theo mặc định, Gateway lắng nghe trên `127.0.0.1`, không thể truy cập từ máy chủ. Nếu bạn cần truy cập các endpoint kiểm tra sức khỏe hoặc mở cổng, hãy đặt `PICOCLAW_GATEWAY_HOST=0.0.0.0` trong môi trường của bạn hoặc cập nhật `config.json`. +```bash +# 5. Xem logs +docker compose -f docker/docker-compose.yml logs -f picoclaw-gateway -# 4. Xem logs -docker compose logs -f picoclaw-gateway - -# 5. Dừng -docker compose --profile gateway down +# 6. Dừng +docker compose -f docker/docker-compose.yml --profile gateway down ``` ### Chế độ Agent (chạy một lần) ```bash # Đặt câu hỏi -docker compose run --rm picoclaw-agent -m "2+2 bằng mấy?" +docker compose -f docker/docker-compose.yml run --rm picoclaw-agent -m "2+2 bằng mấy?" # Chế độ tương tác -docker compose run --rm picoclaw-agent +docker compose -f docker/docker-compose.yml run --rm picoclaw-agent ``` -### Build lại +### Cập nhật ```bash -docker compose --profile gateway build --no-cache -docker compose --profile gateway up -d +docker compose -f docker/docker-compose.yml pull +docker compose -f docker/docker-compose.yml --profile gateway up -d ``` ### 🚀 Bắt đầu nhanh diff --git a/README.zh.md b/README.zh.md index 8ce1ad2ee..7c9351cb4 100644 --- a/README.zh.md +++ b/README.zh.md @@ -166,41 +166,43 @@ make install git clone https://github.com/sipeed/picoclaw.git cd picoclaw -# 2. 设置 API Key -cp config/config.example.json config/config.json -vim config/config.json # 设置 DISCORD_BOT_TOKEN, API keys 等 +# 2. 首次运行 — 自动生成 docker/data/config.json 后退出 +docker compose -f docker/docker-compose.yml --profile gateway up +# 容器打印 "First-run setup complete." 后自动停止 -# 3. 构建并启动 -docker compose --profile gateway up -d +# 3. 填写 API Key 等配置 +vim docker/data/config.json # 设置 provider API key、Bot Token 等 + +# 4. 正式启动 +docker compose -f docker/docker-compose.yml --profile gateway up -d +``` > [!TIP] -**Docker 用户**: 默认情况下, Gateway监听 `127.0.0.1`,这使得这个端口未暴露到容器外。如果你需要通过端口映射访问健康检查接口, 请在环境变量中设置 `PICOCLAW_GATEWAY_HOST=0.0.0.0` 或修改 `config.json`。 +> **Docker 用户**: 默认情况下, Gateway 监听 `127.0.0.1`,该端口不会暴露到容器外。如果需要通过端口映射访问健康检查接口,请在环境变量中设置 `PICOCLAW_GATEWAY_HOST=0.0.0.0` 或修改 `config.json`。 -# 4. 查看日志 -docker compose logs -f picoclaw-gateway - -# 5. 停止 -docker compose --profile gateway down +```bash +# 5. 查看日志 +docker compose -f docker/docker-compose.yml logs -f picoclaw-gateway +# 6. 停止 +docker compose -f docker/docker-compose.yml --profile gateway down ``` ### Agent 模式 (一次性运行) ```bash # 提问 -docker compose run --rm picoclaw-agent -m "2+2 等于几?" +docker compose -f docker/docker-compose.yml run --rm picoclaw-agent -m "2+2 等于几?" # 交互模式 -docker compose run --rm picoclaw-agent - +docker compose -f docker/docker-compose.yml run --rm picoclaw-agent ``` -### 重新构建 +### 更新镜像 ```bash -docker compose --profile gateway build --no-cache -docker compose --profile gateway up -d - +docker compose -f docker/docker-compose.yml pull +docker compose -f docker/docker-compose.yml --profile gateway up -d ``` ### 🚀 快速开始 diff --git a/Dockerfile b/docker/Dockerfile similarity index 100% rename from Dockerfile rename to docker/Dockerfile diff --git a/Dockerfile.goreleaser b/docker/Dockerfile.goreleaser similarity index 58% rename from Dockerfile.goreleaser rename to docker/Dockerfile.goreleaser index 0cdc8c6bd..68a02aae8 100644 --- a/Dockerfile.goreleaser +++ b/docker/Dockerfile.goreleaser @@ -5,6 +5,8 @@ ARG TARGETPLATFORM RUN apk add --no-cache ca-certificates tzdata COPY $TARGETPLATFORM/picoclaw /usr/local/bin/picoclaw +COPY docker/entrypoint.sh /entrypoint.sh -ENTRYPOINT ["picoclaw"] -CMD ["gateway"] +RUN chmod +x /entrypoint.sh + +ENTRYPOINT ["/entrypoint.sh"] diff --git a/docker-compose.yml b/docker/docker-compose.yml similarity index 64% rename from docker-compose.yml rename to docker/docker-compose.yml index c268b01cd..9ec71abab 100644 --- a/docker-compose.yml +++ b/docker/docker-compose.yml @@ -1,12 +1,10 @@ services: # ───────────────────────────────────────────── # PicoClaw Agent (one-shot query) - # docker compose run --rm picoclaw-agent -m "Hello" + # docker compose -f docker/docker-compose.yml run --rm picoclaw-agent -m "Hello" # ───────────────────────────────────────────── picoclaw-agent: - build: - context: . - dockerfile: Dockerfile + image: docker.io/sipeed/picoclaw:latest container_name: picoclaw-agent profiles: - agent @@ -14,33 +12,23 @@ services: #extra_hosts: # - "host.docker.internal:host-gateway" volumes: - - ./config/config.json:/home/picoclaw/.picoclaw/config.json:ro - - picoclaw-workspace:/home/picoclaw/.picoclaw/workspace + - ./data:/root/.picoclaw entrypoint: ["picoclaw", "agent"] stdin_open: true tty: true # ───────────────────────────────────────────── # PicoClaw Gateway (Long-running Bot) - # docker compose up picoclaw-gateway + # docker compose -f docker/docker-compose.yml up picoclaw-gateway # ───────────────────────────────────────────── picoclaw-gateway: - build: - context: . - dockerfile: Dockerfile + image: docker.io/sipeed/picoclaw:latest container_name: picoclaw-gateway - restart: unless-stopped + restart: on-failure profiles: - gateway # Uncomment to access host network; leave commented unless needed. #extra_hosts: # - "host.docker.internal:host-gateway" volumes: - # Configuration file - - ./config/config.json:/home/picoclaw/.picoclaw/config.json:ro - # Persistent workspace (sessions, memory, logs) - - picoclaw-workspace:/home/picoclaw/.picoclaw/workspace - command: ["gateway"] - -volumes: - picoclaw-workspace: + - ./data:/root/.picoclaw diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh new file mode 100644 index 000000000..b6fc724b5 --- /dev/null +++ b/docker/entrypoint.sh @@ -0,0 +1,15 @@ +#!/bin/sh +set -e + +# First-run: neither config nor workspace exists. +# If config.json is already mounted but workspace is missing we skip onboard to +# avoid the interactive "Overwrite? (y/n)" prompt hanging in a non-TTY container. +if [ ! -d "${HOME}/.picoclaw/workspace" ] && [ ! -f "${HOME}/.picoclaw/config.json" ]; then + picoclaw onboard + echo "" + echo "First-run setup complete." + echo "Edit ${HOME}/.picoclaw/config.json (add your API key, etc.) then restart the container." + exit 0 +fi + +exec picoclaw gateway "$@" From 7592ccdab25d38c07dc8337fc09b441c5391400d Mon Sep 17 00:00:00 2001 From: Guoguo <16666742+imguoguo@users.noreply.github.com> Date: Fri, 27 Feb 2026 10:52:45 +0800 Subject: [PATCH 14/14] Revert "docs: update wechat qrcode (#767)" This reverts commit d1d19b12ce3b817524382f32b827e0bdb917f3cd. --- assets/wechat.png | Bin 143877 -> 150574 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/assets/wechat.png b/assets/wechat.png index 776c07885dc495cb25e0b43c18f4e94b23b98511..e30c34e4ed81210338d63ee4486c4356d01ae30b 100644 GIT binary patch literal 150574 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

2JA~)ZE}P+I0<7b%`D8TU5P6?<3PC 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%0Al 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