65ff8d69d0
update.md now handles the full update lifecycle autonomously: - Installs new CLI tools (twitter-cli, rdt-cli, xhs-cli, bili-cli) - Removes deprecated bird CLI - Updates SKILL.md + references/ with fallback - Reports changes to user install.md: update tool references (bird→twitter-cli, Exa→rdt-cli). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
139 lines
4.6 KiB
Markdown
139 lines
4.6 KiB
Markdown
# Agent Reach — Update Guide
|
||
|
||
## For Humans
|
||
|
||
Copy this to your AI Agent:
|
||
|
||
```
|
||
帮我更新 Agent Reach:https://raw.githubusercontent.com/Panniantong/agent-reach/main/docs/update.md
|
||
```
|
||
|
||
Or in English:
|
||
|
||
```
|
||
Update Agent Reach: https://raw.githubusercontent.com/Panniantong/agent-reach/main/docs/update.md
|
||
```
|
||
|
||
---
|
||
|
||
## For AI Agents
|
||
|
||
### ⚠️ Workspace Rules
|
||
|
||
**Never create files, clone repos, or run commands in the agent workspace.** Use `/tmp/` for temporary work and `~/.agent-reach/` for persistent data.
|
||
|
||
### Goal
|
||
|
||
Update Agent Reach to the latest version, install any new upstream tools, migrate from deprecated tools, and verify everything works. The user should not need to do anything manually.
|
||
|
||
### Step 1: Check current version
|
||
|
||
```bash
|
||
agent-reach check-update
|
||
```
|
||
|
||
If it says "已是最新版本", skip to Step 5 (verify). Otherwise continue.
|
||
|
||
### Step 2: Update Agent Reach package
|
||
|
||
```bash
|
||
pip install --upgrade https://github.com/Panniantong/agent-reach/archive/main.zip
|
||
```
|
||
|
||
### Step 3: Install / migrate upstream tools
|
||
|
||
Run these commands to ensure all upstream CLI tools are installed. Skip any that are already installed.
|
||
|
||
```bash
|
||
# === Required tools (core functionality) ===
|
||
|
||
# Twitter/X — twitter-cli (replaces deprecated bird CLI)
|
||
which twitter >/dev/null 2>&1 || pipx install twitter-cli 2>/dev/null || uv tool install twitter-cli 2>/dev/null
|
||
|
||
# Reddit — rdt-cli (replaces Exa-based approach)
|
||
which rdt >/dev/null 2>&1 || pipx install rdt-cli 2>/dev/null || uv tool install rdt-cli 2>/dev/null
|
||
|
||
# XiaoHongShu — xhs-cli (replaces Docker MCP)
|
||
which xhs >/dev/null 2>&1 || pipx install xiaohongshu-cli 2>/dev/null || uv tool install xiaohongshu-cli 2>/dev/null
|
||
|
||
# === Optional enhancements ===
|
||
|
||
# Bilibili — bili-cli (adds hot/rank/search on top of yt-dlp)
|
||
which bili >/dev/null 2>&1 || pipx install bilibili-cli 2>/dev/null || uv tool install bilibili-cli 2>/dev/null
|
||
|
||
# mcporter + Exa (for WeChat, web search)
|
||
which mcporter >/dev/null 2>&1 || npm install -g mcporter 2>/dev/null
|
||
|
||
# yt-dlp (YouTube + Bilibili video)
|
||
which yt-dlp >/dev/null 2>&1 || pip install yt-dlp 2>/dev/null
|
||
|
||
# gh CLI (GitHub)
|
||
which gh >/dev/null 2>&1 || echo "GitHub CLI not installed — see https://cli.github.com"
|
||
```
|
||
|
||
### Step 4: Clean up deprecated tools
|
||
|
||
```bash
|
||
# Remove bird CLI (repo deleted, replaced by twitter-cli)
|
||
which bird >/dev/null 2>&1 && npm uninstall -g @steipete/bird 2>/dev/null && echo "✅ Removed deprecated bird CLI"
|
||
|
||
# Note: browser_cookie3 is still supported as fallback, no need to remove
|
||
# Note: miku_ai is no longer needed (WeChat now uses Exa), but no harm keeping it
|
||
```
|
||
|
||
### Step 5: Verify
|
||
|
||
```bash
|
||
agent-reach version
|
||
agent-reach doctor
|
||
```
|
||
|
||
Check the doctor output:
|
||
- All channels should show ✅ or ⚠️ (with clear instructions)
|
||
- If any channel that was working before now shows ❌, investigate:
|
||
- Twitter: needs `twitter-cli` + browser cookies (run `xhs login` pattern)
|
||
- Reddit: needs `rdt-cli` (should be installed in Step 3)
|
||
- XiaoHongShu: needs `xhs-cli` + login (run `xhs login`)
|
||
- WeChat: should work via Exa (zero config)
|
||
|
||
### Step 6: Update SKILL.md (if installed)
|
||
|
||
```bash
|
||
agent-reach install --skill-only 2>/dev/null || python3 -c "
|
||
import importlib.resources, os
|
||
try:
|
||
skill_pkg = importlib.resources.files('agent_reach').joinpath('skill')
|
||
except Exception:
|
||
from pathlib import Path
|
||
skill_pkg = Path(os.path.dirname(os.path.abspath(__file__))).parent / 'agent_reach' / 'skill'
|
||
|
||
skill_md = skill_pkg.joinpath('SKILL.md').read_text(encoding='utf-8')
|
||
refs_pkg = skill_pkg.joinpath('references')
|
||
|
||
for base in [os.path.expanduser('~/.openclaw/skills/agent-reach'),
|
||
os.path.expanduser('~/.claude/skills/agent-reach'),
|
||
os.path.expanduser('~/.agents/skills/agent-reach')]:
|
||
if os.path.isdir(base):
|
||
with open(os.path.join(base, 'SKILL.md'), 'w', encoding='utf-8') as f:
|
||
f.write(skill_md)
|
||
refs_dir = os.path.join(base, 'references')
|
||
os.makedirs(refs_dir, exist_ok=True)
|
||
for ref in refs_pkg.iterdir():
|
||
name = ref.name if hasattr(ref, 'name') else str(ref).split('/')[-1]
|
||
if name.endswith('.md'):
|
||
with open(os.path.join(refs_dir, name), 'w', encoding='utf-8') as f:
|
||
f.write(ref.read_text(encoding='utf-8'))
|
||
print(f'✅ Updated skill: {base}')
|
||
"
|
||
```
|
||
|
||
### Step 7: Report to user
|
||
|
||
Tell the user:
|
||
1. What version they're now on (`agent-reach version`)
|
||
2. How many channels are available (count ✅ in doctor output)
|
||
3. Any channels that need their action (e.g., `xhs login` for XiaoHongShu, browser cookies for Twitter)
|
||
4. What changed in this update (major: Twitter/Reddit/XiaoHongShu upstream tools migrated for better stability)
|
||
|
||
Done.
|