153 lines
3.7 KiB
Markdown
153 lines
3.7 KiB
Markdown
# Agent Implementation Guide
|
|
|
|
When asked to set up auto-updates, follow this procedure.
|
|
|
|
## Step 1: Detect Installation Type
|
|
|
|
```bash
|
|
# Check if installed via npm globally
|
|
npm list -g clawdbot 2>/dev/null && echo "npm-global"
|
|
|
|
# Check if installed via source (git)
|
|
[ -d ~/.clawdbot/.git ] || [ -f /opt/clawdbot/.git/config ] && echo "source-install"
|
|
|
|
# Check pnpm
|
|
pnpm list -g clawdbot 2>/dev/null && echo "pnpm-global"
|
|
|
|
# Check bun
|
|
bun pm ls -g 2>/dev/null | grep clawdbot && echo "bun-global"
|
|
```
|
|
|
|
## Step 2: Create the Update Script (Optional)
|
|
|
|
For complex setups, create a helper script at `~/.clawdbot/scripts/auto-update.sh`:
|
|
|
|
```bash
|
|
#!/bin/bash
|
|
set -e
|
|
|
|
LOG_FILE="${HOME}/.clawdbot/logs/auto-update.log"
|
|
mkdir -p "$(dirname "$LOG_FILE")"
|
|
|
|
log() {
|
|
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" >> "$LOG_FILE"
|
|
}
|
|
|
|
log "Starting auto-update..."
|
|
|
|
# Capture starting versions
|
|
CLAWDBOT_VERSION_BEFORE=$(clawdbot --version 2>/dev/null || echo "unknown")
|
|
|
|
# Update Clawdbot
|
|
log "Updating Clawdbot..."
|
|
if command -v npm &> /dev/null && npm list -g clawdbot &> /dev/null; then
|
|
npm update -g clawdbot@latest 2>&1 | tee -a "$LOG_FILE"
|
|
elif command -v pnpm &> /dev/null && pnpm list -g clawdbot &> /dev/null; then
|
|
pnpm update -g clawdbot@latest 2>&1 | tee -a "$LOG_FILE"
|
|
elif command -v bun &> /dev/null; then
|
|
bun update -g clawdbot@latest 2>&1 | tee -a "$LOG_FILE"
|
|
else
|
|
log "Running clawdbot update (source install)"
|
|
clawdbot update 2>&1 | tee -a "$LOG_FILE" || true
|
|
fi
|
|
|
|
# Run doctor for migrations
|
|
log "Running doctor..."
|
|
clawdbot doctor --yes 2>&1 | tee -a "$LOG_FILE" || true
|
|
|
|
# Capture new version
|
|
CLAWDBOT_VERSION_AFTER=$(clawdbot --version 2>/dev/null || echo "unknown")
|
|
|
|
# Update skills
|
|
log "Updating skills via ClawdHub..."
|
|
SKILL_OUTPUT=$(clawdhub update --all 2>&1) || true
|
|
echo "$SKILL_OUTPUT" >> "$LOG_FILE"
|
|
|
|
log "Auto-update complete."
|
|
|
|
# Output summary for agent to parse
|
|
echo "---UPDATE_SUMMARY_START---"
|
|
echo "clawdbot_before: $CLAWDBOT_VERSION_BEFORE"
|
|
echo "clawdbot_after: $CLAWDBOT_VERSION_AFTER"
|
|
echo "skill_output: $SKILL_OUTPUT"
|
|
echo "---UPDATE_SUMMARY_END---"
|
|
```
|
|
|
|
## Step 3: Add Cron Job
|
|
|
|
The recommended approach is to use Clawdbot's built-in cron with an isolated session:
|
|
|
|
```bash
|
|
clawdbot cron add \
|
|
--name "Daily Auto-Update" \
|
|
--cron "0 4 * * *" \
|
|
--tz "America/Los_Angeles" \
|
|
--session isolated \
|
|
--wake now \
|
|
--deliver \
|
|
--message "Run the daily auto-update routine:
|
|
|
|
1. Check and update Clawdbot:
|
|
- For npm installs: npm update -g clawdbot@latest
|
|
- For source installs: clawdbot update
|
|
- Then run: clawdbot doctor --yes
|
|
|
|
2. Update all skills:
|
|
- Run: clawdhub update --all
|
|
|
|
3. Report back with:
|
|
- Clawdbot version before/after
|
|
- List of skills that were updated (name + old version → new version)
|
|
- Any errors encountered
|
|
|
|
Format the summary clearly for the user."
|
|
```
|
|
|
|
## Step 4: Verify Setup
|
|
|
|
```bash
|
|
# Confirm cron job was added
|
|
clawdbot cron list
|
|
|
|
# Test the update commands work
|
|
clawdbot --version
|
|
clawdhub list
|
|
```
|
|
|
|
## Customization Prompts
|
|
|
|
Users may want to customize:
|
|
|
|
**Different time:**
|
|
```bash
|
|
--cron "0 6 * * *" # 6 AM instead of 4 AM
|
|
```
|
|
|
|
**Different timezone:**
|
|
```bash
|
|
--tz "Europe/London"
|
|
```
|
|
|
|
**Specific provider delivery:**
|
|
```bash
|
|
--provider telegram --to "@username"
|
|
```
|
|
|
|
**Weekly instead of daily:**
|
|
```bash
|
|
--cron "0 4 * * 0" # Sundays at 4 AM
|
|
```
|
|
|
|
## Error Handling
|
|
|
|
If updates fail, the agent should:
|
|
|
|
1. Log the error clearly
|
|
2. Still report partial success (if skills updated but Clawdbot didn't, or vice versa)
|
|
3. Suggest manual intervention if needed
|
|
|
|
Common errors to handle:
|
|
- `EACCES`: Permission denied → suggest `sudo` or fixing permissions
|
|
- Network timeouts → retry once, then report
|
|
- Git conflicts (source installs) → suggest `clawdbot update --force`
|