任务 ID: task-t038p21-c1c082  |  文件: task.md  |  最后修改: 2026-03-01 19:56:47

Task task-t038p21-c1c082 — 清理 agent-reach 遗留(T038-P2.1)

文件路径

原始需求

彻底清除所有 agent-reach / agent_reach / AgentReach 遗留引用,全部统一为 ai-search / ai_search / AISearch。不保留任何兼容层。


执行链

coder → reviewer → 爱衣质检


各 Agent 职责


Ai.Dev 💻(session key: agent:coder:main

任务:彻底清理所有 agent-reach 遗留,统一为 ai-search。

⚠️ 核心原则:删干净,不留兼容层。

1. 删除 agent_reach/ 整个旧目录

cd /srv/projects/agent-reach
rm -rf agent_reach/

2. 清理 ai_search/ 内残留引用

# 查找所有残留
grep -rn "agent_reach\|agent.reach\|AgentReach" ai_search/ --include="*.py" --include="*.md"

逐个修改:
- ai_search/core.py:删除 AgentReach = AISearch 别名,类名只保留 AISearch
- ai_search/cli.py:所有 "Agent Reach" 文本改为 "AI Search"(版本号显示、help 文本等)
- ai_search/__init__.py:如有 AgentReach 导出,删除
- ai_search/channels/*.py:检查每个 channel 文件内是否有残留的 agent_reach import 或字符串
- ai_search/integrations/mcp_server.py:改引用
- ai_search/config.py:改引用
- ai_search/doctor.py:改引用
- ai_search/cookie_extract.py:改引用
- ai_search/skill/SKILL.md:改为 ai-search
- ai_search/guides/*.md:所有 agent-reach 改为 ai-search

3. 修改 pyproject.toml

4. 修改 tests/

grep -rn "agent_reach\|agent.reach\|AgentReach" tests/

全部改为 ai_search / AISearch。

5. 修改项目文档

6. 修改外部引用

OpenClaw skill(最重要)

# 查看当前 skill
cat ~/.openclaw/skills/agent-reach/SKILL.md

TOOLS.md

grep -n "agent.reach\|agent_reach" ~/.openclaw/workspace/TOOLS.md

全部改为 ai-search。

7. 重新安装并验证

cd /srv/projects/agent-reach
pip install -e . --break-system-packages 2>&1 | tail -5

# 验证
ai-search version
which ai-search
which agent-reach  # 应该不存在了

# 确认没有残留
grep -r "agent_reach\|AgentReach" ai_search/ --include="*.py" | grep -v "__pycache__"
# 应该输出为空

# 功能测试
python3 -c "from ai_search.core import AISearch; print('OK')"
python3 -c "from ai_search.channels.searxng import SearXNGChannel; print(SearXNGChannel().check())"

# 确保旧 import 会报错(不再兼容)
python3 -c "from agent_reach import *" 2>&1 | head -1
# 应该 ModuleNotFoundError

开始时:

/root/.openclaw/workspace/scripts/log-to-channel.sh coder receive "T038-P2.1 清理agent-reach遗留" task-t038p21-c1c082

完成后:
1. session.md 记录所有修改和验证结果
2. bash /root/.openclaw/workspace/scripts/log-to-channel.sh coder handoff "T038-P2.1 清理agent-reach遗留" reviewer task-t038p21-c1c082
3. sessions_send 通知 reviewer(agent:reviewer:maintimeoutSeconds=0):
task_id=task-t038p21-c1c082 task=/root/.openclaw/workspace/tasks/task-t038p21-c1c082/task.md


Ai.Rev 📋(session key: agent:reviewer:main

任务:验证 agent-reach 已被彻底清除。

审查要点:

  1. 全局残留扫描
    ```bash
    # 项目内(排除 .git)
    grep -rn "agent_reach|AgentReach|agent-reach" /srv/projects/agent-reach/ \
    --include=".py" --include=".toml" --include=".md" --include=".yml" \
    | grep -v ".git/" | grep -v "pycache"
    # 应该完全为空(零匹配)

# 允许的例外:git 仓库名 agent-reach(目录名本身不改)、CHANGELOG/历史记录中的旧名
```

  1. 目录检查
    ```bash
    # agent_reach/ 目录应该不存在
    [ -d /srv/projects/agent-reach/agent_reach ] && echo "❌ 旧目录还在!" || echo "✅ 已删除"

# 旧 skill 目录应该不存在
[ -d ~/.openclaw/skills/agent-reach ] && echo "❌ 旧skill还在!" || echo "✅ 已删除"

# 新 skill 目录应该存在
[ -d ~/.openclaw/skills/ai-search ] && echo "✅ 新skill存在" || echo "❌ 新skill缺失!"
```

  1. 功能验证
    ```bash
    ai-search version
    which agent-reach 2>/dev/null && echo "❌ agent-reach还能用" || echo "✅ agent-reach已不存在"

python3 -c "from ai_search.core import AISearch; print('ai_search OK')"
python3 -c "from agent_reach import *" 2>&1 | grep -q "ModuleNotFoundError" && echo "✅ 旧import已失效" || echo "❌ 旧import还能用!"

# SearXNG 搜索
python3 -c "
import asyncio
from ai_search.core import AISearch
s = AISearch()
r = asyncio.run(s.web('test'))
print(f'web(): {len(r)} results')
"
```

  1. pyproject.toml 检查
    bash grep "agent.reach\|agent_reach" /srv/projects/agent-reach/pyproject.toml # 应该无输出

  2. 外部引用检查
    bash grep -n "agent.reach\|agent_reach" ~/.openclaw/workspace/TOOLS.md cat ~/.openclaw/skills/ai-search/SKILL.md | grep -c "agent.reach" # 均应为 0

开始时:

/root/.openclaw/workspace/scripts/log-to-channel.sh reviewer receive "T038-P2.1 清理agent-reach遗留" task-t038p21-c1c082

完成后:

/root/.openclaw/workspace/scripts/log-to-channel.sh reviewer handoff "T038-P2.1 清理agent-reach遗留" main task-t038p21-c1c082

sessions_send 通知爱衣(agent:main:maintimeoutSeconds=0


⚠️ 爱衣质检 SOP

质检要点

输出结论

通过 → log done + message 主人
不通过 → 按标准重试/上报流程