restored picoclaw
This commit is contained in:
parent
31951c093c
commit
5c18393665
12 changed files with 66 additions and 17 deletions
|
|
@ -181,7 +181,7 @@ func refreshMainMenu(menu *Menu, s *appState) {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Label: "Start Talk",
|
Label: "Start Talk",
|
||||||
Description: "Open aldo agent in terminal",
|
Description: "Open picoclaw agent in terminal",
|
||||||
Action: func() {
|
Action: func() {
|
||||||
s.requestStartTalk()
|
s.requestStartTalk()
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ import (
|
||||||
"github.com/sipeed/picoclaw/pkg/config"
|
"github.com/sipeed/picoclaw/pkg/config"
|
||||||
)
|
)
|
||||||
|
|
||||||
const Logo = "🤖"
|
const Logo = "🦞"
|
||||||
|
|
||||||
var (
|
var (
|
||||||
version = "dev"
|
version = "dev"
|
||||||
|
|
|
||||||
|
|
@ -33,7 +33,7 @@ func onboard() {
|
||||||
workspace := cfg.WorkspacePath()
|
workspace := cfg.WorkspacePath()
|
||||||
createWorkspaceTemplates(workspace)
|
createWorkspaceTemplates(workspace)
|
||||||
|
|
||||||
fmt.Printf("%s aldo is ready!\n", internal.Logo)
|
fmt.Printf("%s picoclaw is ready!\n", internal.Logo)
|
||||||
fmt.Println("\nNext steps:")
|
fmt.Println("\nNext steps:")
|
||||||
fmt.Println(" 1. Add your API key to", configPath)
|
fmt.Println(" 1. Add your API key to", configPath)
|
||||||
fmt.Println("")
|
fmt.Println("")
|
||||||
|
|
@ -43,7 +43,7 @@ func onboard() {
|
||||||
fmt.Println("")
|
fmt.Println("")
|
||||||
fmt.Println(" See README.md for 17+ supported providers.")
|
fmt.Println(" See README.md for 17+ supported providers.")
|
||||||
fmt.Println("")
|
fmt.Println("")
|
||||||
fmt.Println(" 2. Chat: aldo agent -m \"Hello!\"")
|
fmt.Println(" 2. Chat: picoclaw agent -m \"Hello!\"")
|
||||||
}
|
}
|
||||||
|
|
||||||
func createWorkspaceTemplates(workspace string) {
|
func createWorkspaceTemplates(workspace string) {
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ func statusCmd() {
|
||||||
|
|
||||||
configPath := internal.GetConfigPath()
|
configPath := internal.GetConfigPath()
|
||||||
|
|
||||||
fmt.Printf("%s aldo Status\n", internal.Logo)
|
fmt.Printf("%s picoclaw Status\n", internal.Logo)
|
||||||
fmt.Printf("Version: %s\n", internal.FormatVersion())
|
fmt.Printf("Version: %s\n", internal.FormatVersion())
|
||||||
build, _ := internal.FormatBuildInfo()
|
build, _ := internal.FormatBuildInfo()
|
||||||
if build != "" {
|
if build != "" {
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,7 @@ func NewVersionCommand() *cobra.Command {
|
||||||
}
|
}
|
||||||
|
|
||||||
func printVersion() {
|
func printVersion() {
|
||||||
fmt.Printf("%s aldo %s\n", internal.Logo, internal.FormatVersion())
|
fmt.Printf("%s picoclaw %s\n", internal.Logo, internal.FormatVersion())
|
||||||
build, goVer := internal.FormatBuildInfo()
|
build, goVer := internal.FormatBuildInfo()
|
||||||
if build != "" {
|
if build != "" {
|
||||||
fmt.Printf(" Build: %s\n", build)
|
fmt.Printf(" Build: %s\n", build)
|
||||||
|
|
|
||||||
|
|
@ -25,12 +25,12 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
func NewPicoclawCommand() *cobra.Command {
|
func NewPicoclawCommand() *cobra.Command {
|
||||||
short := fmt.Sprintf("%s aldo - Personal AI Assistant v%s\n\n", internal.Logo, internal.GetVersion())
|
short := fmt.Sprintf("%s picoclaw - Personal AI Assistant v%s\n\n", internal.Logo, internal.GetVersion())
|
||||||
|
|
||||||
cmd := &cobra.Command{
|
cmd := &cobra.Command{
|
||||||
Use: "aldo",
|
Use: "picoclaw",
|
||||||
Short: short,
|
Short: short,
|
||||||
Example: "aldo list",
|
Example: "picoclaw list",
|
||||||
}
|
}
|
||||||
|
|
||||||
cmd.AddCommand(
|
cmd.AddCommand(
|
||||||
|
|
|
||||||
|
|
@ -61,9 +61,9 @@ func NewContextBuilder(workspace string) *ContextBuilder {
|
||||||
func (cb *ContextBuilder) getIdentity() string {
|
func (cb *ContextBuilder) getIdentity() string {
|
||||||
workspacePath, _ := filepath.Abs(filepath.Join(cb.workspace))
|
workspacePath, _ := filepath.Abs(filepath.Join(cb.workspace))
|
||||||
|
|
||||||
return fmt.Sprintf(`# aldo 🤖
|
return fmt.Sprintf(`# picoclaw 🦞
|
||||||
|
|
||||||
You are aldo, a helpful AI assistant.
|
You are picoclaw, a helpful AI assistant.
|
||||||
|
|
||||||
## Workspace
|
## Workspace
|
||||||
Your workspace is at: %s
|
Your workspace is at: %s
|
||||||
|
|
|
||||||
|
|
@ -46,7 +46,7 @@ func DownloadToFile(ctx context.Context, client *http.Client, req *http.Request,
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create temp file.
|
// Create temp file.
|
||||||
tmpFile, err := os.CreateTemp("", "aldo-dl-*")
|
tmpFile, err := os.CreateTemp("", "picoclaw-dl-*")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", fmt.Errorf("failed to create temp file: %w", err)
|
return "", fmt.Errorf("failed to create temp file: %w", err)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -65,7 +65,7 @@ func DownloadFile(url, filename string, opts DownloadOptions) string {
|
||||||
opts.LoggerPrefix = "utils"
|
opts.LoggerPrefix = "utils"
|
||||||
}
|
}
|
||||||
|
|
||||||
mediaDir := filepath.Join(os.TempDir(), "aldo_media")
|
mediaDir := filepath.Join(os.TempDir(), "picoclaw_media")
|
||||||
if err := os.MkdirAll(mediaDir, 0o700); err != nil {
|
if err := os.MkdirAll(mediaDir, 0o700); err != nil {
|
||||||
logger.ErrorCF(opts.LoggerPrefix, "Failed to create media directory", map[string]any{
|
logger.ErrorCF(opts.LoggerPrefix, "Failed to create media directory", map[string]any{
|
||||||
"error": err.Error(),
|
"error": err.Error(),
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,56 @@
|
||||||
# Identity
|
# Identity
|
||||||
|
|
||||||
## Name
|
## Name
|
||||||
Aldo 🤖
|
PicoClaw 🦞
|
||||||
|
|
||||||
## Description
|
## Description
|
||||||
Personal AI assistant, based on picoclaw.
|
Ultra-lightweight personal AI assistant written in Go, inspired by nanobot.
|
||||||
|
|
||||||
|
## Version
|
||||||
|
0.1.0
|
||||||
|
|
||||||
|
## Purpose
|
||||||
|
- Provide intelligent AI assistance with minimal resource usage
|
||||||
|
- Support multiple LLM providers (OpenAI, Anthropic, Zhipu, etc.)
|
||||||
|
- Enable easy customization through skills system
|
||||||
|
- Run on minimal hardware ($10 boards, <10MB RAM)
|
||||||
|
|
||||||
|
## Capabilities
|
||||||
|
|
||||||
|
- Web search and content fetching
|
||||||
|
- File system operations (read, write, edit)
|
||||||
|
- Shell command execution
|
||||||
|
- Multi-channel messaging (Telegram, WhatsApp, Feishu)
|
||||||
|
- Skill-based extensibility
|
||||||
|
- Memory and context management
|
||||||
|
|
||||||
|
## Philosophy
|
||||||
|
|
||||||
|
- Simplicity over complexity
|
||||||
|
- Performance over features
|
||||||
|
- User control and privacy
|
||||||
|
- Transparent operation
|
||||||
|
- Community-driven development
|
||||||
|
|
||||||
|
## Goals
|
||||||
|
|
||||||
|
- Provide a fast, lightweight AI assistant
|
||||||
|
- Support offline-first operation where possible
|
||||||
|
- Enable easy customization and extension
|
||||||
|
- Maintain high quality responses
|
||||||
|
- Run efficiently on constrained hardware
|
||||||
|
|
||||||
|
## License
|
||||||
|
MIT License - Free and open source
|
||||||
|
|
||||||
|
## Repository
|
||||||
|
https://github.com/sipeed/picoclaw
|
||||||
|
|
||||||
|
## Contact
|
||||||
|
Issues: https://github.com/sipeed/picoclaw/issues
|
||||||
|
Discussions: https://github.com/sipeed/picoclaw/discussions
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
"Every bit helps, every bit matters."
|
||||||
|
- Picoclaw
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
# Soul
|
# Soul
|
||||||
|
|
||||||
I am aldo, a lightweight AI assistant powered by AI.
|
I am picoclaw, a lightweight AI assistant powered by AI.
|
||||||
|
|
||||||
## Personality
|
## Personality
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -126,6 +126,6 @@ I2C adapter numbers can change between boots depending on driver load order. Alw
|
||||||
|
|
||||||
### Permissions
|
### Permissions
|
||||||
`/dev/i2c-*` and `/dev/spidev*` typically require root access. Options:
|
`/dev/i2c-*` and `/dev/spidev*` typically require root access. Options:
|
||||||
- Run aldo as root
|
- Run picoclaw as root
|
||||||
- Add user to `i2c` and `spi` groups
|
- Add user to `i2c` and `spi` groups
|
||||||
- Create udev rules: `SUBSYSTEM=="i2c-dev", MODE="0666"`
|
- Create udev rules: `SUBSYSTEM=="i2c-dev", MODE="0666"`
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue