/root/.openclaw/workspace/tasks/task-t038p3-59f0aa/task.md/root/.openclaw/workspace/tasks/task-t038p3-59f0aa/session.md重构 ai_search/cli.py:删除安装向导等臃肿逻辑(~400行),新增 web/find/list-categories/list-engines 四个 SearXNG 命令,精简 setup。目标从 1005 行降到 ~600 行。
详细方案:/root/.openclaw/workspace/memory/docs/todo/T038-R-refactor-plan.md § 3.3
coder → reviewer → 爱衣质检
agent:coder:main)执行前必读:
1. /srv/projects/agent-reach/ai_search/cli.py — 当前完整 CLI(1005行)
2. /root/.openclaw/workspace/memory/docs/todo/T038-R-refactor-plan.md § 3.3 — CLI 重构设计
以下函数/代码段全部删除:
| 函数 | 行数 | 原因 |
|---|---|---|
_cmd_install(args) |
~90行 | 安装向导,不需要 |
_install_skill() |
~40行 | skill 安装,不需要 |
_install_system_deps() |
~100行 | 系统依赖安装,不需要 |
_install_mcporter() |
~70行 | mcporter 安装,不需要 |
_cmd_configure(args) |
~135行 | 交互式配置,不需要 |
_cmd_check_update() |
~57行 | 更新检查,不需要 |
_cmd_watch() |
~35行 | 文件监控,不需要 |
同时删除 main() 函数中对应的 subparser 注册(install、configure、check-update、watch)。
web 命令(~40行)async def _cmd_web(args):
"""通用网页搜索(SearXNG general 分类)"""
from ai_search.core import AISearch
s = AISearch()
results = await s.web(
args.query,
time_range=getattr(args, 'time', None),
language=getattr(args, 'lang', None),
limit=getattr(args, 'num', 20),
)
_print_search_results(results)
CLI 签名:
ai-search web "query" [--time day|week|month|year] [--lang zh] [-n 20]
find 命令(~50行)async def _cmd_find(args):
"""分类/引擎搜索(SearXNG)"""
from ai_search.core import AISearch
s = AISearch()
results = await s.find(
args.query,
category=getattr(args, 'cat', None),
engines=getattr(args, 'engine', None),
time_range=getattr(args, 'time', None),
language=getattr(args, 'lang', None),
limit=getattr(args, 'num', 20),
)
_print_search_results(results)
CLI 签名:
ai-search find "query" [--cat academic|medical|science|finance|pkg|...] [--engine arxiv,pubmed,...] [--time day|week|month|year] [--lang zh] [-n 20]
list-categories 命令(~25行)ai-search list-categories
调用 AISearch().list_categories(),输出分类列表。
list-engines 命令(~30行)ai-search list-engines [--cat academic]
调用 AISearch().list_engines(category=cat),输出引擎列表(名称、shortcut、分类)。
setup 命令原 _cmd_setup() 有 ~90 行交互式配置。精简为只配必要 key(Exa API key 等),删除安装步骤引用。大概 -60 行。
_print_search_results 辅助函数新旧搜索命令都需要格式化输出。如果还没有统一的输出函数,抽取一个共用的:
def _print_search_results(results):
"""统一格式化搜索结果输出"""
if not results:
print("No results found.")
return
for i, r in enumerate(results, 1):
title = r.get('title', 'Untitled')
url = r.get('url', '')
content = r.get('content', '')[:150]
print(f"\n{i}. {title}")
print(f" {url}")
if content:
print(f" {content}")
cd /srv/projects/agent-reach
pip install -e . --break-system-packages 2>&1 | tail -3
# 行数检查
wc -l ai_search/cli.py # 目标 ~600 行
# 新命令测试
ai-search web "machine learning" -n 5
ai-search find "pytorch" --cat pkg -n 5
ai-search find "diabetes" --cat medical --engine clinicaltrials -n 5
ai-search list-categories
ai-search list-engines --cat science
# 旧命令回归(确保没误删)
ai-search doctor
ai-search read https://example.com
ai-search search "test" -n 3 # Exa 语义(可能因无 key 失败,但命令本身不报错)
ai-search version
# 已删命令确认
ai-search install 2>&1 | head -1 # 应该报错 invalid choice
ai-search configure 2>&1 | head -1 # 应该报错
ai-search check-update 2>&1 | head -1 # 应该报错
ai-search watch 2>&1 | head -1 # 应该报错
开始时:
/root/.openclaw/workspace/scripts/log-to-channel.sh coder receive "T038-P3 CLI重构" task-t038p3-59f0aa
完成后:
1. session.md 记录删除/新增行数、测试结果
2. bash
/root/.openclaw/workspace/scripts/log-to-channel.sh coder handoff "T038-P3 CLI重构" reviewer task-t038p3-59f0aa
3. sessions_send 通知 reviewer(agent:reviewer:main,timeoutSeconds=0):
task_id=task-t038p3-59f0aa
task=/root/.openclaw/workspace/tasks/task-t038p3-59f0aa/task.md
agent:reviewer:main)审查要点:
行数验证
bash
wc -l /srv/projects/agent-reach/ai_search/cli.py
# 应在 550-700 行之间
删除验证 — 以下函数应不存在:
bash
grep -n "def _cmd_install\|def _install_skill\|def _install_system_deps\|def _install_mcporter\|def _cmd_configure\|def _cmd_check_update\|def _cmd_watch" /srv/projects/agent-reach/ai_search/cli.py
# 应无输出
新命令功能测试
bash
ai-search web "test" -n 3
ai-search find "bitcoin" --cat finance -n 3
ai-search find "cancer" --engine clinicaltrials -n 3
ai-search list-categories
ai-search list-engines --cat science
旧命令回归
bash
ai-search version
ai-search doctor
ai-search read https://example.com 2>&1 | head -5
# search 系列命令(至少验证 help 不报错)
ai-search search --help
ai-search search-twitter --help 2>/dev/null || true
已删命令确认
bash
for cmd in install configure check-update watch; do
ai-search $cmd 2>&1 | grep -q "invalid choice\|error\|unrecognized" && echo "$cmd: ✅ 已删" || echo "$cmd: ❌ 还在!"
done
代码质量
开始时:
/root/.openclaw/workspace/scripts/log-to-channel.sh reviewer receive "T038-P3 CLI重构" task-t038p3-59f0aa
完成后:
/root/.openclaw/workspace/scripts/log-to-channel.sh reviewer handoff "T038-P3 CLI重构" main task-t038p3-59f0aa
sessions_send 通知爱衣(agent:main:main,timeoutSeconds=0)
ai-search web/find/list-categories/list-engines 四个新命令能用?ai-search install/configure/check-update/watch 已不存在?通过 → log done + message 主人
不通过 → 标准重试流程