feat: add Docker Compose support for Discord bot deployment
- Add Dockerfile with multi-stage build for picoclaw - Add docker-compose.discord.yml for Discord bot service - Add docker-compose.yml for agent mode service - Add .env.example with environment variable template - Add .dockerignore for optimized builds - Update README.md with Docker Compose section and language switch - Add README.ja.md (Japanese documentation) - Update .gitignore with Docker-related entries
This commit is contained in:
committed by
lxowalle
parent
d165fde011
commit
1b45195acb
10
.dockerignore
Normal file
10
.dockerignore
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
.git
|
||||||
|
.gitignore
|
||||||
|
build/
|
||||||
|
.picoclaw/
|
||||||
|
config/
|
||||||
|
.env
|
||||||
|
.env.example
|
||||||
|
*.md
|
||||||
|
LICENSE
|
||||||
|
assets/
|
||||||
17
.env.example
Normal file
17
.env.example
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
# ── LLM Provider ──────────────────────────
|
||||||
|
# Uncomment and set the API key for your provider
|
||||||
|
# OPENROUTER_API_KEY=sk-or-v1-xxx
|
||||||
|
# ZHIPU_API_KEY=xxx
|
||||||
|
# ANTHROPIC_API_KEY=sk-ant-xxx
|
||||||
|
# OPENAI_API_KEY=sk-xxx
|
||||||
|
# GEMINI_API_KEY=xxx
|
||||||
|
|
||||||
|
# ── Chat Channel ──────────────────────────
|
||||||
|
# TELEGRAM_BOT_TOKEN=123456:ABC...
|
||||||
|
# DISCORD_BOT_TOKEN=xxx
|
||||||
|
|
||||||
|
# ── Web Search (optional) ────────────────
|
||||||
|
# BRAVE_SEARCH_API_KEY=BSA...
|
||||||
|
|
||||||
|
# ── Timezone ──────────────────────────────
|
||||||
|
TZ=Asia/Tokyo
|
||||||
10
.gitignore
vendored
10
.gitignore
vendored
@@ -1,5 +1,7 @@
|
|||||||
# Binaries
|
# Binaries
|
||||||
|
# Go build artifacts
|
||||||
bin/
|
bin/
|
||||||
|
build/
|
||||||
*.exe
|
*.exe
|
||||||
*.dll
|
*.dll
|
||||||
*.so
|
*.so
|
||||||
@@ -10,12 +12,20 @@ bin/
|
|||||||
/picoclaw-test
|
/picoclaw-test
|
||||||
|
|
||||||
# Picoclaw specific
|
# Picoclaw specific
|
||||||
|
|
||||||
|
# PicoClaw
|
||||||
.picoclaw/
|
.picoclaw/
|
||||||
config.json
|
config.json
|
||||||
sessions/
|
sessions/
|
||||||
build/
|
build/
|
||||||
|
|
||||||
# Coverage
|
# Coverage
|
||||||
|
|
||||||
|
# Secrets & Config (keep templates, ignore actual secrets)
|
||||||
|
.env
|
||||||
|
config/config.json
|
||||||
|
|
||||||
|
# Test
|
||||||
coverage.txt
|
coverage.txt
|
||||||
coverage.html
|
coverage.html
|
||||||
|
|
||||||
|
|||||||
36
Dockerfile
Normal file
36
Dockerfile
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
# ============================================================
|
||||||
|
# Stage 1: Build the picoclaw binary
|
||||||
|
# ============================================================
|
||||||
|
FROM golang:1.24-alpine AS builder
|
||||||
|
|
||||||
|
RUN apk add --no-cache git make
|
||||||
|
|
||||||
|
WORKDIR /src
|
||||||
|
|
||||||
|
# Cache dependencies
|
||||||
|
COPY go.mod go.sum ./
|
||||||
|
RUN go mod download
|
||||||
|
|
||||||
|
# Copy source and build
|
||||||
|
COPY . .
|
||||||
|
RUN make build
|
||||||
|
|
||||||
|
# ============================================================
|
||||||
|
# Stage 2: Minimal runtime image
|
||||||
|
# ============================================================
|
||||||
|
FROM alpine:3.21
|
||||||
|
|
||||||
|
RUN apk add --no-cache ca-certificates tzdata
|
||||||
|
|
||||||
|
# Copy binary
|
||||||
|
COPY --from=builder /src/build/picoclaw /usr/local/bin/picoclaw
|
||||||
|
|
||||||
|
# Copy builtin skills
|
||||||
|
COPY --from=builder /src/skills /opt/picoclaw/skills
|
||||||
|
|
||||||
|
# Create picoclaw home directory
|
||||||
|
RUN mkdir -p /root/.picoclaw/workspace/skills && \
|
||||||
|
cp -r /opt/picoclaw/skills/* /root/.picoclaw/workspace/skills/ 2>/dev/null || true
|
||||||
|
|
||||||
|
ENTRYPOINT ["picoclaw"]
|
||||||
|
CMD ["gateway"]
|
||||||
475
README.ja.md
Normal file
475
README.ja.md
Normal file
@@ -0,0 +1,475 @@
|
|||||||
|
<div align="center">
|
||||||
|
<img src="assets/logo.jpg" alt="PicoClaw" width="512">
|
||||||
|
|
||||||
|
<h1>PicoClaw: Go で書かれた超効率 AI アシスタント</h1>
|
||||||
|
|
||||||
|
<h3>$10 ハードウェア · 10MB RAM · 1秒起動 · 皮皮虾,我们走!</h3>
|
||||||
|
<h3></h3>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
<img src="https://img.shields.io/badge/Go-1.21+-00ADD8?style=flat&logo=go&logoColor=white" alt="Go">
|
||||||
|
<img src="https://img.shields.io/badge/Arch-x86__64%2C%20ARM64%2C%20RISC--V-blue" alt="Hardware">
|
||||||
|
<img src="https://img.shields.io/badge/license-MIT-green" alt="License">
|
||||||
|
</p>
|
||||||
|
|
||||||
|
**日本語** | [English](README.md)
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
🦐 PicoClaw は [nanobot](https://github.com/HKUDS/nanobot) にインスパイアされた超軽量パーソナル AI アシスタントです。Go でゼロからリファクタリングされ、AI エージェント自身がアーキテクチャの移行とコード最適化を推進するセルフブートストラッピングプロセスで構築されました。
|
||||||
|
|
||||||
|
⚡️ $10 のハードウェアで 10MB 未満の RAM で動作:OpenClaw より 99% 少ないメモリ、Mac mini より 98% 安い!
|
||||||
|
|
||||||
|
<table align="center">
|
||||||
|
<tr align="center">
|
||||||
|
<td align="center" valign="top">
|
||||||
|
<p align="center">
|
||||||
|
<img src="assets/picoclaw_mem.gif" width="360" height="240">
|
||||||
|
</p>
|
||||||
|
</td>
|
||||||
|
<td align="center" valign="top">
|
||||||
|
<p align="center">
|
||||||
|
<img src="assets/licheervnano.png" width="400" height="240">
|
||||||
|
</p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
## 📢 ニュース
|
||||||
|
2026-02-09 🎉 PicoClaw リリース!$10 ハードウェアで 10MB 未満の RAM で動く AI エージェントを 1 日で構築。🦐 皮皮虾,我们走!
|
||||||
|
|
||||||
|
## ✨ 特徴
|
||||||
|
|
||||||
|
🪶 **超軽量**: メモリフットプリント 10MB 未満 — Clawdbot のコア機能より 99% 小さい。
|
||||||
|
|
||||||
|
💰 **最小コスト**: $10 ハードウェアで動作 — Mac mini より 98% 安い。
|
||||||
|
|
||||||
|
⚡️ **超高速**: 起動時間 400 倍高速、0.6GHz シングルコアでも 1 秒で起動。
|
||||||
|
|
||||||
|
🌍 **真のポータビリティ**: RISC-V、ARM、x86 対応の単一バイナリ。ワンクリックで Go!
|
||||||
|
|
||||||
|
🤖 **AI ブートストラップ**: 自律的な Go ネイティブ実装 — コアの 95% が AI 生成、人間によるレビュー付き。
|
||||||
|
|
||||||
|
| | OpenClaw | NanoBot | **PicoClaw** |
|
||||||
|
| --- | --- | --- |--- |
|
||||||
|
| **言語** | TypeScript | Python | **Go** |
|
||||||
|
| **RAM** | >1GB |>100MB| **< 10MB** |
|
||||||
|
| **起動時間**</br>(0.8GHz コア) | >500秒 | >30秒 | **<1秒** |
|
||||||
|
| **コスト** | Mac Mini 599$ | 大半の Linux SBC </br>~50$ |**あらゆる Linux ボード**</br>**最安 10$** |
|
||||||
|
<img src="assets/compare.jpg" alt="PicoClaw" width="512">
|
||||||
|
|
||||||
|
|
||||||
|
## 🦾 デモンストレーション
|
||||||
|
### 🛠️ スタンダードアシスタントワークフロー
|
||||||
|
<table align="center">
|
||||||
|
<tr align="center">
|
||||||
|
<th><p align="center">🧩 フルスタックエンジニア</p></th>
|
||||||
|
<th><p align="center">🗂️ ログ&計画管理</p></th>
|
||||||
|
<th><p align="center">🔎 Web 検索&学習</p></th>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center"><p align="center"><img src="assets/picoclaw_code.gif" width="240" height="180"></p></td>
|
||||||
|
<td align="center"><p align="center"><img src="assets/picoclaw_memory.gif" width="240" height="180"></p></td>
|
||||||
|
<td align="center"><p align="center"><img src="assets/picoclaw_search.gif" width="240" height="180"></p></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center">開発 · デプロイ · スケール</td>
|
||||||
|
<td align="center">スケジュール · 自動化 · メモリ</td>
|
||||||
|
<td align="center">発見 · インサイト · トレンド</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
### 🐜 革新的な省フットプリントデプロイ
|
||||||
|
PicoClaw はほぼすべての Linux デバイスにデプロイできます!
|
||||||
|
|
||||||
|
- $9.9 [LicheeRV-Nano](https://www.aliexpress.com/item/1005006519668532.html) E(Ethernet) または W(WiFi6) バージョン、最小ホームアシスタントに
|
||||||
|
- $30~50 [NanoKVM](https://www.aliexpress.com/item/1005007369816019.html) または $100 [NanoKVM-Pro](https://www.aliexpress.com/item/1005010048471263.html) サーバー自動メンテナンスに
|
||||||
|
- $50 [MaixCAM](https://www.aliexpress.com/item/1005008053333693.html) または $100 [MaixCAM2](https://www.kickstarter.com/projects/zepan/maixcam2-build-your-next-gen-4k-ai-camera) スマート監視に
|
||||||
|
|
||||||
|
https://private-user-images.githubusercontent.com/83055338/547056448-e7b031ff-d6f5-4468-bcca-5726b6fecb5c.mp4
|
||||||
|
|
||||||
|
🌟 もっと多くのデプロイ事例が待っています!
|
||||||
|
|
||||||
|
## 📦 インストール
|
||||||
|
|
||||||
|
### コンパイル済みバイナリでインストール
|
||||||
|
|
||||||
|
[リリースページ](https://github.com/sipeed/picoclaw/releases) からお使いのプラットフォーム用のファームウェアをダウンロードしてください。
|
||||||
|
|
||||||
|
### ソースからインストール(最新機能、開発向け推奨)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git clone https://github.com/sipeed/picoclaw.git
|
||||||
|
|
||||||
|
cd picoclaw
|
||||||
|
make deps
|
||||||
|
|
||||||
|
# ビルド(インストール不要)
|
||||||
|
make build
|
||||||
|
|
||||||
|
# 複数プラットフォーム向けビルド
|
||||||
|
make build-all
|
||||||
|
|
||||||
|
# ビルドとインストール
|
||||||
|
make install
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🐳 Docker Compose
|
||||||
|
|
||||||
|
Docker Compose を使えば、ローカルにインストールせずに PicoClaw を実行できます。
|
||||||
|
|
||||||
|
### クイックスタート(Discord Bot)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 1. リポジトリをクローン
|
||||||
|
git clone https://github.com/Sunwood-AI-OSS-Hub/picoclaw.git
|
||||||
|
cd picoclaw
|
||||||
|
|
||||||
|
# 2. API キーを設定
|
||||||
|
cp .env.example .env
|
||||||
|
vim .env # DISCORD_BOT_TOKEN, OPENROUTER_API_KEY などを設定
|
||||||
|
vim config/config.json # プロバイダーの API キーを設定
|
||||||
|
|
||||||
|
# 3. ビルドと起動
|
||||||
|
docker compose -f docker-compose.discord.yml up -d
|
||||||
|
|
||||||
|
# 4. ログ確認
|
||||||
|
docker compose -f docker-compose.discord.yml logs -f picoclaw
|
||||||
|
|
||||||
|
# 5. 停止
|
||||||
|
docker compose -f docker-compose.discord.yml down
|
||||||
|
```
|
||||||
|
|
||||||
|
### Agent モード(ワンショット)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 質問を投げる
|
||||||
|
docker compose run --rm picoclaw-agent -m "What is 2+2?"
|
||||||
|
|
||||||
|
# インタラクティブモード
|
||||||
|
docker compose run --rm picoclaw-agent
|
||||||
|
```
|
||||||
|
|
||||||
|
### リビルド
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker compose -f docker-compose.discord.yml build --no-cache
|
||||||
|
docker compose -f docker-compose.discord.yml up -d
|
||||||
|
```
|
||||||
|
|
||||||
|
### 🚀 クイックスタート(ネイティブ)
|
||||||
|
|
||||||
|
> [!TIP]
|
||||||
|
> `~/.picoclaw/config.json` に API キーを設定してください。
|
||||||
|
> API キーの取得先: [OpenRouter](https://openrouter.ai/keys) (LLM) · [Zhipu](https://open.bigmodel.cn/usercenter/proj-mgmt/apikeys) (LLM)
|
||||||
|
> Web 検索は **任意** です - 無料の [Brave Search API](https://brave.com/search/api) (月 2000 クエリ無料)
|
||||||
|
|
||||||
|
**1. 初期化**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
picoclaw onboard
|
||||||
|
```
|
||||||
|
|
||||||
|
**2. 設定** (`~/.picoclaw/config.json`)
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"agents": {
|
||||||
|
"defaults": {
|
||||||
|
"workspace": "~/.picoclaw/workspace",
|
||||||
|
"model": "glm-4.7",
|
||||||
|
"max_tokens": 8192,
|
||||||
|
"temperature": 0.7,
|
||||||
|
"max_tool_iterations": 20
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"providers": {
|
||||||
|
"openrouter": {
|
||||||
|
"api_key": "xxx",
|
||||||
|
"api_base": "https://open.bigmodel.cn/api/paas/v4"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tools": {
|
||||||
|
"web": {
|
||||||
|
"search": {
|
||||||
|
"api_key": "YOUR_BRAVE_API_KEY",
|
||||||
|
"max_results": 5
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
**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)
|
||||||
|
- **Web 検索**(任意): [Brave Search](https://brave.com/search/api) - 無料枠あり(月 2000 リクエスト)
|
||||||
|
|
||||||
|
> **注意**: 完全な設定テンプレートは `config.example.json` を参照してください。
|
||||||
|
|
||||||
|
**3. チャット**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
picoclaw agent -m "What is 2+2?"
|
||||||
|
```
|
||||||
|
|
||||||
|
これだけです!2 分で AI アシスタントが動きます。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 💬 チャットアプリ
|
||||||
|
|
||||||
|
Telegram で PicoClaw と会話できます
|
||||||
|
|
||||||
|
| チャネル | セットアップ |
|
||||||
|
|---------|------------|
|
||||||
|
| **Telegram** | 簡単(トークンのみ) |
|
||||||
|
| **Discord** | 簡単(Bot トークン + Intents) |
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary><b>Telegram</b>(推奨)</summary>
|
||||||
|
|
||||||
|
**1. Bot を作成**
|
||||||
|
|
||||||
|
- Telegram を開き、`@BotFather` を検索
|
||||||
|
- `/newbot` を送信、プロンプトに従う
|
||||||
|
- トークンをコピー
|
||||||
|
|
||||||
|
**2. 設定**
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"channels": {
|
||||||
|
"telegram": {
|
||||||
|
"enabled": true,
|
||||||
|
"token": "YOUR_BOT_TOKEN",
|
||||||
|
"allowFrom": ["YOUR_USER_ID"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
> ユーザー ID は Telegram の `@userinfobot` から取得できます。
|
||||||
|
|
||||||
|
**3. 起動**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
picoclaw gateway
|
||||||
|
```
|
||||||
|
</details>
|
||||||
|
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary><b>Discord</b></summary>
|
||||||
|
|
||||||
|
**1. Bot を作成**
|
||||||
|
- https://discord.com/developers/applications にアクセス
|
||||||
|
- アプリケーションを作成 → Bot → Add Bot
|
||||||
|
- Bot トークンをコピー
|
||||||
|
|
||||||
|
**2. Intents を有効化**
|
||||||
|
- Bot の設定画面で **MESSAGE CONTENT INTENT** を有効化
|
||||||
|
- (任意)**SERVER MEMBERS INTENT** も有効化
|
||||||
|
|
||||||
|
**3. ユーザー ID を取得**
|
||||||
|
- Discord 設定 → 詳細設定 → **開発者モード** を有効化
|
||||||
|
- 自分のアバターを右クリック → **ユーザーIDをコピー**
|
||||||
|
|
||||||
|
**4. 設定**
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"channels": {
|
||||||
|
"discord": {
|
||||||
|
"enabled": true,
|
||||||
|
"token": "YOUR_BOT_TOKEN",
|
||||||
|
"allowFrom": ["YOUR_USER_ID"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
**5. Bot を招待**
|
||||||
|
- OAuth2 → URL Generator
|
||||||
|
- Scopes: `bot`
|
||||||
|
- Bot Permissions: `Send Messages`, `Read Message History`
|
||||||
|
- 生成された招待 URL を開き、サーバーに Bot を追加
|
||||||
|
|
||||||
|
**6. 起動**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
picoclaw gateway
|
||||||
|
```
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
## ⚙️ 設定
|
||||||
|
|
||||||
|
設定ファイル: `~/.picoclaw/config.json`
|
||||||
|
|
||||||
|
### プロバイダー
|
||||||
|
|
||||||
|
> [!NOTE]
|
||||||
|
> Groq は Whisper 経由の無料音声文字起こしを提供します。設定すると、Telegram の音声メッセージが自動的に文字起こしされます。
|
||||||
|
|
||||||
|
| プロバイダー | 用途 | API キー取得先 |
|
||||||
|
|-------------|------|---------------|
|
||||||
|
| `gemini` | LLM (Gemini 直接) | [aistudio.google.com](https://aistudio.google.com) |
|
||||||
|
| `zhipu` | LLM (Zhipu 直接) | [bigmodel.cn](bigmodel.cn) |
|
||||||
|
| `openrouter(テスト中)` | LLM(推奨、全モデルアクセス) | [openrouter.ai](https://openrouter.ai) |
|
||||||
|
| `anthropic(テスト中)` | LLM (Claude 直接) | [console.anthropic.com](https://console.anthropic.com) |
|
||||||
|
| `openai(テスト中)` | LLM (GPT 直接) | [platform.openai.com](https://platform.openai.com) |
|
||||||
|
| `deepseek(テスト中)` | LLM (DeepSeek 直接) | [platform.deepseek.com](https://platform.deepseek.com) |
|
||||||
|
| `groq` | LLM + **音声文字起こし** (Whisper) | [console.groq.com](https://console.groq.com) |
|
||||||
|
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary><b>Zhipu</b></summary>
|
||||||
|
|
||||||
|
**1. API キーとベース URL を取得**
|
||||||
|
- [API キー](https://bigmodel.cn/usercenter/proj-mgmt/apikeys) を取得
|
||||||
|
|
||||||
|
**2. 設定**
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"agents": {
|
||||||
|
"defaults": {
|
||||||
|
"workspace": "~/.picoclaw/workspace",
|
||||||
|
"model": "glm-4.7",
|
||||||
|
"max_tokens": 8192,
|
||||||
|
"temperature": 0.7,
|
||||||
|
"max_tool_iterations": 20
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"providers": {
|
||||||
|
"zhipu": {
|
||||||
|
"api_key": "Your API Key",
|
||||||
|
"api_base": "https://open.bigmodel.cn/api/paas/v4"
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
**3. 実行**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
picoclaw agent -m "Hello"
|
||||||
|
```
|
||||||
|
</details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary><b>完全な設定例</b></summary>
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"agents": {
|
||||||
|
"defaults": {
|
||||||
|
"model": "anthropic/claude-opus-4-5"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"providers": {
|
||||||
|
"openrouter": {
|
||||||
|
"apiKey": "sk-or-v1-xxx"
|
||||||
|
},
|
||||||
|
"groq": {
|
||||||
|
"apiKey": "gsk_xxx"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"channels": {
|
||||||
|
"telegram": {
|
||||||
|
"enabled": true,
|
||||||
|
"token": "123456:ABC...",
|
||||||
|
"allowFrom": ["123456789"]
|
||||||
|
},
|
||||||
|
"discord": {
|
||||||
|
"enabled": true,
|
||||||
|
"token": "",
|
||||||
|
"allow_from": [""]
|
||||||
|
},
|
||||||
|
"whatsapp": {
|
||||||
|
"enabled": false
|
||||||
|
},
|
||||||
|
"feishu": {
|
||||||
|
"enabled": false,
|
||||||
|
"appId": "cli_xxx",
|
||||||
|
"appSecret": "xxx",
|
||||||
|
"encryptKey": "",
|
||||||
|
"verificationToken": "",
|
||||||
|
"allowFrom": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tools": {
|
||||||
|
"web": {
|
||||||
|
"search": {
|
||||||
|
"apiKey": "BSA..."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
## CLI リファレンス
|
||||||
|
|
||||||
|
| コマンド | 説明 |
|
||||||
|
|---------|------|
|
||||||
|
| `picoclaw onboard` | 設定&ワークスペースの初期化 |
|
||||||
|
| `picoclaw agent -m "..."` | エージェントとチャット |
|
||||||
|
| `picoclaw agent` | インタラクティブチャットモード |
|
||||||
|
| `picoclaw gateway` | ゲートウェイを起動 |
|
||||||
|
| `picoclaw status` | ステータスを表示 |
|
||||||
|
|
||||||
|
## 🤝 コントリビュート&ロードマップ
|
||||||
|
|
||||||
|
PR 歓迎!コードベースは意図的に小さく読みやすくしています。🤗
|
||||||
|
|
||||||
|
Discord: https://discord.gg/V4sAZ9XWpN
|
||||||
|
|
||||||
|
<img src="assets/wechat.png" alt="PicoClaw" width="512">
|
||||||
|
|
||||||
|
|
||||||
|
## 🐛 トラブルシューティング
|
||||||
|
|
||||||
|
### Web 検索で「API 配置问题」と表示される
|
||||||
|
|
||||||
|
検索 API キーをまだ設定していない場合、これは正常です。PicoClaw は手動検索用の便利なリンクを提供します。
|
||||||
|
|
||||||
|
Web 検索を有効にするには:
|
||||||
|
1. [https://brave.com/search/api](https://brave.com/search/api) で無料の API キーを取得(月 2000 クエリ無料)
|
||||||
|
2. `~/.picoclaw/config.json` に追加:
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"tools": {
|
||||||
|
"web": {
|
||||||
|
"search": {
|
||||||
|
"api_key": "YOUR_BRAVE_API_KEY",
|
||||||
|
"max_results": 5
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### コンテンツフィルタリングエラーが出る
|
||||||
|
|
||||||
|
一部のプロバイダー(Zhipu など)にはコンテンツフィルタリングがあります。クエリを言い換えるか、別のモデルを使用してください。
|
||||||
|
|
||||||
|
### Telegram Bot で「Conflict: terminated by other getUpdates」と表示される
|
||||||
|
|
||||||
|
別のインスタンスが実行中の場合に発生します。`picoclaw gateway` が 1 つだけ実行されていることを確認してください。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📝 API キー比較
|
||||||
|
|
||||||
|
| サービス | 無料枠 | ユースケース |
|
||||||
|
|---------|--------|------------|
|
||||||
|
| **OpenRouter** | 月 200K トークン | 複数モデル(Claude, GPT-4 など) |
|
||||||
|
| **Zhipu** | 月 200K トークン | 中国ユーザー向け最適 |
|
||||||
|
| **Brave Search** | 月 2000 クエリ | Web 検索機能 |
|
||||||
|
| **Groq** | 無料枠あり | 高速推論(Llama, Mixtral) |
|
||||||
45
README.md
45
README.md
@@ -12,6 +12,8 @@
|
|||||||
<img src="https://img.shields.io/badge/license-MIT-green" alt="License">
|
<img src="https://img.shields.io/badge/license-MIT-green" alt="License">
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
[日本語](README.ja.md) | **English**
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
---
|
---
|
||||||
@@ -118,6 +120,49 @@ make build-all
|
|||||||
make install
|
make install
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## 🐳 Docker Compose
|
||||||
|
|
||||||
|
You can also run PicoClaw using Docker Compose without installing anything locally.
|
||||||
|
|
||||||
|
### Quick Start (Discord Bot)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 1. Clone this repo
|
||||||
|
git clone https://github.com/Sunwood-AI-OSS-Hub/picoclaw.git
|
||||||
|
cd picoclaw
|
||||||
|
|
||||||
|
# 2. Set your API keys
|
||||||
|
cp .env.example .env
|
||||||
|
vim .env # Set DISCORD_BOT_TOKEN, OPENROUTER_API_KEY, etc.
|
||||||
|
vim config/config.json # Set provider API keys
|
||||||
|
|
||||||
|
# 3. Build & Start
|
||||||
|
docker compose -f docker-compose.discord.yml up -d
|
||||||
|
|
||||||
|
# 4. Check logs
|
||||||
|
docker compose -f docker-compose.discord.yml logs -f picoclaw
|
||||||
|
|
||||||
|
# 5. Stop
|
||||||
|
docker compose -f docker-compose.discord.yml down
|
||||||
|
```
|
||||||
|
|
||||||
|
### Agent Mode (One-shot)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Ask a question
|
||||||
|
docker compose run --rm picoclaw-agent -m "What is 2+2?"
|
||||||
|
|
||||||
|
# Interactive mode
|
||||||
|
docker compose run --rm picoclaw-agent
|
||||||
|
```
|
||||||
|
|
||||||
|
### Rebuild
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker compose -f docker-compose.discord.yml build --no-cache
|
||||||
|
docker compose -f docker-compose.discord.yml up -d
|
||||||
|
```
|
||||||
|
|
||||||
### 🚀 Quick Start
|
### 🚀 Quick Start
|
||||||
|
|
||||||
> [!TIP]
|
> [!TIP]
|
||||||
|
|||||||
24
docker-compose.discord.yml
Normal file
24
docker-compose.discord.yml
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
services:
|
||||||
|
# ─────────────────────────────────────────────
|
||||||
|
# PicoClaw Discord Bot
|
||||||
|
# ─────────────────────────────────────────────
|
||||||
|
picoclaw:
|
||||||
|
build:
|
||||||
|
context: .
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
container_name: picoclaw-discord
|
||||||
|
restart: unless-stopped
|
||||||
|
env_file:
|
||||||
|
- .env
|
||||||
|
environment:
|
||||||
|
- PICOCLAW_CHANNELS_DISCORD_ENABLED=true
|
||||||
|
- PICOCLAW_CHANNELS_DISCORD_TOKEN=${DISCORD_BOT_TOKEN}
|
||||||
|
volumes:
|
||||||
|
# Configuration file
|
||||||
|
- ./config/config.json:/root/.picoclaw/config.json:ro
|
||||||
|
# Persistent workspace (sessions, memory, logs)
|
||||||
|
- picoclaw-workspace:/root/.picoclaw/workspace
|
||||||
|
command: ["gateway"]
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
picoclaw-workspace:
|
||||||
25
docker-compose.yml
Normal file
25
docker-compose.yml
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
services:
|
||||||
|
|
||||||
|
|
||||||
|
# ─────────────────────────────────────────────
|
||||||
|
# PicoClaw Agent (one-shot query)
|
||||||
|
# docker compose run --rm picoclaw-agent -m "Hello"
|
||||||
|
# ─────────────────────────────────────────────
|
||||||
|
picoclaw-agent:
|
||||||
|
build:
|
||||||
|
context: .
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
container_name: picoclaw-agent
|
||||||
|
profiles:
|
||||||
|
- agent
|
||||||
|
env_file:
|
||||||
|
- .env
|
||||||
|
volumes:
|
||||||
|
- ./config/config.json:/root/.picoclaw/config.json:ro
|
||||||
|
- picoclaw-workspace:/root/.picoclaw/workspace
|
||||||
|
entrypoint: ["picoclaw", "agent"]
|
||||||
|
stdin_open: true
|
||||||
|
tty: true
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
picoclaw-workspace:
|
||||||
Reference in New Issue
Block a user