diff --git a/README.md b/README.md
index 213f0e4..1a3faac 100644
--- a/README.md
+++ b/README.md
@@ -1,8 +1,8 @@
-
+
-👁️ Agent Eyes
+👁️ Agent Reach
给你的 AI Agent 一键装上互联网能力
@@ -11,7 +11,7 @@
-
+
@@ -20,7 +20,7 @@
---
-## 为什么需要 Agent Eyes?
+## 为什么需要 Agent Reach?
AI Agent 已经能访问互联网——但只是"能上网"而已。
@@ -35,10 +35,10 @@ AI Agent 已经能访问互联网——但只是"能上网"而已。
你要让 Agent 接入这些平台,就得一个一个去踩坑、装工具、调配置。
-**Agent Eyes 把这件事变成一行命令:**
+**Agent Reach 把这件事变成一行命令:**
```
-帮我安装 Agent Eyes:https://raw.githubusercontent.com/Panniantong/agent-eyes/main/docs/install.md
+帮我安装 Agent Reach:https://raw.githubusercontent.com/Panniantong/agent-reach/main/docs/install.md
```
复制给你的 Agent,30 秒后它就能读推特、搜 Reddit、看 B站了。
@@ -51,7 +51,7 @@ AI Agent 已经能访问互联网——但只是"能上网"而已。
| 🔒 **隐私安全** | Cookie 只存在你本地,不上传不外传。代码完全开源,随时可审查 |
| 🔄 **持续更新** | 底层工具(yt-dlp、birdx、Jina Reader 等)定期追踪更新到最新版,你不用自己盯 |
| 🤖 **兼容所有 Agent** | Claude Code、OpenClaw、Cursor、Windsurf……任何能跑命令行的 Agent 都能用 |
-| 🩺 **自带诊断** | `agent-eyes doctor` 一条命令告诉你哪个通、哪个不通、怎么修 |
+| 🩺 **自带诊断** | `agent-reach doctor` 一条命令告诉你哪个通、哪个不通、怎么修 |
---
@@ -78,7 +78,7 @@ AI Agent 已经能访问互联网——但只是"能上网"而已。
复制给你的 AI Agent(Claude Code、OpenClaw、Cursor 等):
```
-帮我安装 Agent Eyes:https://raw.githubusercontent.com/Panniantong/agent-eyes/main/docs/install.md
+帮我安装 Agent Reach:https://raw.githubusercontent.com/Panniantong/agent-reach/main/docs/install.md
```
Agent 自动安装、检测环境、告诉你哪些功能已经可以用。
@@ -87,8 +87,8 @@ Agent 自动安装、检测环境、告诉你哪些功能已经可以用。
手动安装
```bash
-pip install https://github.com/Panniantong/agent-eyes/archive/main.zip
-agent-eyes install --env=auto
+pip install https://github.com/Panniantong/agent-reach/archive/main.zip
+agent-reach install --env=auto
```
@@ -132,9 +132,9 @@ Reddit 和 B站封服务器 IP。买个代理(推荐 [Webshare](https://websha
## 状态一目了然
```
-$ agent-eyes doctor
+$ agent-reach doctor
-👁️ Agent Eyes 状态
+👁️ Agent Reach 状态
========================================
✅ 装好即用:
@@ -159,11 +159,11 @@ $ agent-eyes doctor
## 设计理念
-**Agent Eyes 是一个 Agent 初始化脚手架,不是框架。**
+**Agent Reach 是一个 Agent 初始化脚手架,不是框架。**
你给一个新 Agent 装环境的时候,总要花时间去找工具、装依赖、调配置——Twitter 用什么读?Reddit 怎么绕封?YouTube 字幕怎么提取?每次都要重新踩一遍。
-Agent Eyes 做的事情很简单:**帮你把这些选型和配置的活儿做完了。**
+Agent Reach 做的事情很简单:**帮你把这些选型和配置的活儿做完了。**
| 场景 | 选型 | 为什么选它 |
|------|------|-----------|
@@ -179,7 +179,7 @@ Agent Eyes 做的事情很简单:**帮你把这些选型和配置的活儿做
项目结构
```
-agent_eyes/channels/
+agent_reach/channels/
├── web.py → Jina Reader
├── twitter.py → birdx
├── youtube.py → yt-dlp
@@ -196,7 +196,7 @@ agent_eyes/channels/
## 贡献
-欢迎提 [Issue](https://github.com/Panniantong/agent-eyes/issues) 和 [PR](https://github.com/Panniantong/agent-eyes/pulls)。
+欢迎提 [Issue](https://github.com/Panniantong/agent-reach/issues) 和 [PR](https://github.com/Panniantong/agent-reach/pulls)。
想加新平台?复制任意一个 channel 文件,改改就行——每个文件只有 ~50 行。
diff --git a/agent_eyes/__init__.py b/agent_eyes/__init__.py
deleted file mode 100644
index 0ceaffc..0000000
--- a/agent_eyes/__init__.py
+++ /dev/null
@@ -1,9 +0,0 @@
-# -*- coding: utf-8 -*-
-"""Agent Eyes — Give your AI Agent eyes to see the entire internet."""
-
-__version__ = "1.0.0"
-__author__ = "Neo Reid"
-
-from agent_eyes.core import AgentEyes
-
-__all__ = ["AgentEyes"]
diff --git a/agent_eyes/integrations/skill/SKILL.md b/agent_eyes/integrations/skill/SKILL.md
deleted file mode 100644
index 20219bd..0000000
--- a/agent_eyes/integrations/skill/SKILL.md
+++ /dev/null
@@ -1,65 +0,0 @@
----
-name: agent-eyes
-description: "Give your AI Agent eyes to see the entire internet. Search + read 10+ platforms with one install."
-install: pip install git+https://github.com/Panniantong/agent-eyes.git
----
-
-# Agent Eyes — 给 Agent 装上眼睛 👁️
-
-安装后你就能搜索和阅读全网内容。
-
-## 安装
-
-```bash
-pip install git+https://github.com/Panniantong/agent-eyes.git
-```
-
-## 装完直接能用的(零配置)
-
-- `agent-eyes read ` — 读取任意网页、GitHub、B站、YouTube、RSS
-- `agent-eyes search-github "query"` — 搜索 GitHub 仓库
-- `agent-eyes doctor` — 查看所有平台状态
-
-## 解锁更多功能
-
-运行 `agent-eyes setup` 进行交互式配置,或者读取以下指南:
-
-| 功能 | 指南文件 |
-|------|---------|
-| 全网搜索 + Reddit搜索 + Twitter搜索 | `agent_eyes/guides/setup-exa.md` |
-| Reddit 完整阅读 | `agent_eyes/guides/setup-reddit.md` |
-| Twitter 高级(时间线/线程) | `agent_eyes/guides/setup-twitter.md` |
-| 小红书 | `agent_eyes/guides/setup-xiaohongshu.md` |
-| 微信公众号 | `agent_eyes/guides/setup-wechat.md` |
-| 视频语音转文字 | `agent_eyes/guides/setup-groq.md` |
-
-每个指南里有详细的步骤说明,你(Agent)可以照着做,只有需要人类操作的部分(登录、复制 key)才需要问用户。
-
-## MCP Server
-
-如果你的 Agent 平台支持 MCP:
-
-```bash
-pip install agent-eyes[mcp]
-python -m agent_eyes.integrations.mcp_server
-```
-
-提供 8 个工具:read_url, read_batch, detect_platform, search, search_reddit, search_github, search_twitter, get_status
-
-## Python API
-
-```python
-from agent_eyes import AgentEyes
-import asyncio
-
-eyes = AgentEyes()
-
-# 读取
-result = asyncio.run(eyes.read("https://github.com/openai/gpt-4"))
-
-# 搜索
-results = asyncio.run(eyes.search("AI agent framework"))
-
-# 健康检查
-print(eyes.doctor_report())
-```
diff --git a/agent_reach/__init__.py b/agent_reach/__init__.py
new file mode 100644
index 0000000..9b8bcbb
--- /dev/null
+++ b/agent_reach/__init__.py
@@ -0,0 +1,9 @@
+# -*- coding: utf-8 -*-
+"""Agent Reach — Give your AI Agent eyes to see the entire internet."""
+
+__version__ = "1.0.0"
+__author__ = "Neo Reid"
+
+from agent_reach.core import AgentReach
+
+__all__ = ["AgentReach"]
diff --git a/agent_eyes/channels/__init__.py b/agent_reach/channels/__init__.py
similarity index 96%
rename from agent_eyes/channels/__init__.py
rename to agent_reach/channels/__init__.py
index 37e964e..d70a98e 100644
--- a/agent_eyes/channels/__init__.py
+++ b/agent_reach/channels/__init__.py
@@ -2,7 +2,7 @@
"""
Channel registry — routes URLs to the right channel.
-This is the core of Agent Eyes' pluggable architecture.
+This is the core of Agent Reach' pluggable architecture.
Add a new channel: just create a file and register it here.
Swap a backend: just change the implementation inside the channel file.
"""
diff --git a/agent_eyes/channels/base.py b/agent_reach/channels/base.py
similarity index 99%
rename from agent_eyes/channels/base.py
rename to agent_reach/channels/base.py
index 7c14acf..c311750 100644
--- a/agent_eyes/channels/base.py
+++ b/agent_reach/channels/base.py
@@ -123,7 +123,7 @@ class Channel(ABC):
# Check required config
for key in self.requires_config:
if config and not config.get(key):
- return "off", f"需要配置 {key},运行 agent-eyes setup"
+ return "off", f"需要配置 {key},运行 agent-reach setup"
return "ok", f"{'、'.join(self.backends) if self.backends else '内置'}"
diff --git a/agent_eyes/channels/bilibili.py b/agent_reach/channels/bilibili.py
similarity index 95%
rename from agent_eyes/channels/bilibili.py
rename to agent_reach/channels/bilibili.py
index d1db50c..959e4c6 100644
--- a/agent_eyes/channels/bilibili.py
+++ b/agent_reach/channels/bilibili.py
@@ -34,7 +34,7 @@ class BilibiliChannel(Channel):
]
is_server = any(indicators)
if is_server:
- return "warn", "服务器 IP 可能被封,配置代理即可解决:agent-eyes configure proxy URL"
+ return "warn", "服务器 IP 可能被封,配置代理即可解决:agent-reach configure proxy URL"
return "ok", "本地直连可用"
async def read(self, url: str, config=None) -> ReadResult:
@@ -52,7 +52,7 @@ class BilibiliChannel(Channel):
if not bv_id:
# Fallback to Jina Reader
- from agent_eyes.channels.web import WebChannel
+ from agent_reach.channels.web import WebChannel
return await WebChannel().read(url, config)
# Get video info
@@ -75,7 +75,7 @@ class BilibiliChannel(Channel):
title=f"Bilibili: {bv_id}",
content=f"⚠️ Bilibili blocked this request ({msg}). "
f"This usually means the server IP is blocked. "
- f"Try: agent-eyes configure proxy http://user:pass@ip:port",
+ f"Try: agent-reach configure proxy http://user:pass@ip:port",
url=url,
platform="bilibili",
)
diff --git a/agent_eyes/channels/exa_search.py b/agent_reach/channels/exa_search.py
similarity index 95%
rename from agent_eyes/channels/exa_search.py
rename to agent_reach/channels/exa_search.py
index 55c3c28..c0feee8 100644
--- a/agent_eyes/channels/exa_search.py
+++ b/agent_reach/channels/exa_search.py
@@ -1,5 +1,5 @@
# -*- coding: utf-8 -*-
-"""Exa semantic search — the search backbone for Agent Eyes.
+"""Exa semantic search — the search backbone for Agent Reach.
Backend: Exa API (https://exa.ai) — free 1000 searches/month
Swap to: Tavily, SerpAPI, or any search API
@@ -37,7 +37,7 @@ class ExaSearchChannel(Channel):
raise ValueError(
"Exa API key not configured.\n"
"Get a free key at https://exa.ai (1000 searches/month free)\n"
- "Then run: agent-eyes setup"
+ "Then run: agent-reach setup"
)
async def search(self, query: str, config=None, **kwargs) -> List[SearchResult]:
diff --git a/agent_eyes/channels/github.py b/agent_reach/channels/github.py
similarity index 100%
rename from agent_eyes/channels/github.py
rename to agent_reach/channels/github.py
diff --git a/agent_eyes/channels/reddit.py b/agent_reach/channels/reddit.py
similarity index 94%
rename from agent_eyes/channels/reddit.py
rename to agent_reach/channels/reddit.py
index bfd4c5d..174006a 100644
--- a/agent_eyes/channels/reddit.py
+++ b/agent_reach/channels/reddit.py
@@ -31,9 +31,9 @@ class RedditChannel(Channel):
elif proxy:
return "ok", "代理已配置,可读取帖子。配置 REDDIT_CLIENT_ID/SECRET 可解锁高级搜索和发帖"
elif has_bot:
- return "warn", "OAuth Bot 已配置,但服务器直连可能被封。配个代理更稳定:agent-eyes configure proxy URL"
+ return "warn", "OAuth Bot 已配置,但服务器直连可能被封。配个代理更稳定:agent-reach configure proxy URL"
else:
- return "off", "搜索用 Exa 免费可用。读帖子需配个代理:agent-eyes configure proxy URL"
+ return "off", "搜索用 Exa 免费可用。读帖子需配个代理:agent-reach configure proxy URL"
async def read(self, url: str, config=None) -> ReadResult:
proxy = config.get("reddit_proxy") if config else None
@@ -63,10 +63,10 @@ class RedditChannel(Channel):
title="Reddit",
content="⚠️ Reddit blocked this request (403 Forbidden). "
"Reddit blocks most server IPs.\n"
- "Fix: agent-eyes configure proxy http://user:pass@ip:port\n"
+ "Fix: agent-reach configure proxy http://user:pass@ip:port\n"
"Cheap option: https://www.webshare.io ($1/month)\n\n"
"Alternatively, search Reddit via Exa (free, no proxy needed): "
- "agent-eyes search-reddit \"your query\"",
+ "agent-reach search-reddit \"your query\"",
url=url,
platform="reddit",
)
diff --git a/agent_eyes/channels/rss.py b/agent_reach/channels/rss.py
similarity index 100%
rename from agent_eyes/channels/rss.py
rename to agent_reach/channels/rss.py
diff --git a/agent_eyes/channels/twitter.py b/agent_reach/channels/twitter.py
similarity index 98%
rename from agent_eyes/channels/twitter.py
rename to agent_reach/channels/twitter.py
index dd0fa43..d54d5a0 100644
--- a/agent_eyes/channels/twitter.py
+++ b/agent_reach/channels/twitter.py
@@ -145,6 +145,6 @@ class TwitterChannel(Channel):
return results
async def _search_exa(self, query: str, limit: int, config=None) -> List[SearchResult]:
- from agent_eyes.channels.exa_search import ExaSearchChannel
+ from agent_reach.channels.exa_search import ExaSearchChannel
exa = ExaSearchChannel()
return await exa.search(f"site:x.com {query}", config=config, limit=limit)
diff --git a/agent_eyes/channels/web.py b/agent_reach/channels/web.py
similarity index 100%
rename from agent_eyes/channels/web.py
rename to agent_reach/channels/web.py
diff --git a/agent_eyes/channels/xiaohongshu.py b/agent_reach/channels/xiaohongshu.py
similarity index 94%
rename from agent_eyes/channels/xiaohongshu.py
rename to agent_reach/channels/xiaohongshu.py
index 4c3b09e..cf4e80c 100644
--- a/agent_eyes/channels/xiaohongshu.py
+++ b/agent_reach/channels/xiaohongshu.py
@@ -26,7 +26,7 @@ class XiaoHongShuChannel(Channel):
cookie = config.get("xhs_cookie") if config else None
if cookie:
return "ok", "Cookie 已配置,完整可用"
- return "off", "需要配置 Cookie 才能访问。导入浏览器 Cookie 即可:agent-eyes configure --from-browser chrome"
+ return "off", "需要配置 Cookie 才能访问。导入浏览器 Cookie 即可:agent-reach configure --from-browser chrome"
async def read(self, url: str, config=None) -> ReadResult:
cookie = config.get("xhs_cookie") if config else None
@@ -35,7 +35,7 @@ class XiaoHongShuChannel(Channel):
return ReadResult(
title="XiaoHongShu",
content="⚠️ XiaoHongShu requires cookies to access.\n"
- "Set up: agent-eyes configure xhs-cookie \"YOUR_COOKIE_STRING\"\n"
+ "Set up: agent-reach configure xhs-cookie \"YOUR_COOKIE_STRING\"\n"
"How to get it: install Cookie-Editor extension → go to xiaohongshu.com → Export → Header String",
url=url,
platform="xiaohongshu",
@@ -44,7 +44,7 @@ class XiaoHongShuChannel(Channel):
# Extract note ID from URL
note_id = self._extract_note_id(url)
if not note_id:
- from agent_eyes.channels.web import WebChannel
+ from agent_reach.channels.web import WebChannel
return await WebChannel().read(url, config)
headers = {
diff --git a/agent_eyes/channels/youtube.py b/agent_reach/channels/youtube.py
similarity index 100%
rename from agent_eyes/channels/youtube.py
rename to agent_reach/channels/youtube.py
diff --git a/agent_eyes/cli.py b/agent_reach/cli.py
similarity index 90%
rename from agent_eyes/cli.py
rename to agent_reach/cli.py
index 6975f4b..356ebe0 100644
--- a/agent_eyes/cli.py
+++ b/agent_reach/cli.py
@@ -1,16 +1,16 @@
# -*- coding: utf-8 -*-
"""
-Agent Eyes CLI — command-line interface.
+Agent Reach CLI — command-line interface.
Usage:
- agent-eyes read
- agent-eyes search
- agent-eyes search-reddit [--sub ]
- agent-eyes search-github [--lang ]
- agent-eyes search-twitter
- agent-eyes setup
- agent-eyes doctor
- agent-eyes version
+ agent-reach read
+ agent-reach search
+ agent-reach search-reddit [--sub ]
+ agent-reach search-github [--lang ]
+ agent-reach search-twitter
+ agent-reach setup
+ agent-reach doctor
+ agent-reach version
"""
import sys
@@ -19,7 +19,7 @@ import argparse
import json
import os
-from agent_eyes import __version__
+from agent_reach import __version__
def _configure_logging(verbose: bool = False):
@@ -32,7 +32,7 @@ def _configure_logging(verbose: bool = False):
def main():
parser = argparse.ArgumentParser(
- prog="agent-eyes",
+ prog="agent-reach",
description="👁️ Give your AI Agent eyes to see the entire internet",
)
parser.add_argument("-v", "--verbose", action="store_true", help="Show debug logs")
@@ -106,7 +106,7 @@ def main():
sys.exit(0)
if args.command == "version":
- print(f"Agent Eyes v{__version__}")
+ print(f"Agent Reach v{__version__}")
sys.exit(0)
if args.command == "doctor":
@@ -129,12 +129,12 @@ def main():
def _cmd_install(args):
"""One-shot deterministic installer."""
import os
- from agent_eyes.config import Config
- from agent_eyes.doctor import check_all, format_report
+ from agent_reach.config import Config
+ from agent_reach.doctor import check_all, format_report
config = Config()
print()
- print("👁️ Agent Eyes Installer")
+ print("👁️ Agent Reach Installer")
print("=" * 40)
# Auto-detect environment
@@ -169,7 +169,7 @@ def _cmd_install(args):
print()
print("🍪 Trying to import cookies from browser...")
try:
- from agent_eyes.cookie_extract import configure_from_browser
+ from agent_reach.cookie_extract import configure_from_browser
results = configure_from_browser("chrome", config)
found = False
for platform, success, message in results:
@@ -193,7 +193,7 @@ def _cmd_install(args):
print()
print("💡 Tip: Reddit and Bilibili block server IPs.")
print(" Reddit search still works via Exa (free).")
- print(" For full access: agent-eyes configure proxy http://user:pass@ip:port")
+ print(" For full access: agent-reach configure proxy http://user:pass@ip:port")
print(" Cheap option: https://www.webshare.io ($1/month)")
# Test channels
@@ -207,7 +207,7 @@ def _cmd_install(args):
if not config.get("exa_api_key"):
print()
print("🔍 Recommended: unlock search with a free Exa API key")
- print(" agent-eyes configure exa-key YOUR_KEY")
+ print(" agent-reach configure exa-key YOUR_KEY")
print(" Get free key: https://exa.ai")
# Final status
@@ -260,13 +260,13 @@ def _detect_environment():
def _cmd_configure(args):
"""Set a config value and test it, or auto-extract from browser."""
- from agent_eyes.config import Config
+ from agent_reach.config import Config
config = Config()
# ── Auto-extract from browser ──
if args.from_browser:
- from agent_eyes.cookie_extract import configure_from_browser
+ from agent_reach.cookie_extract import configure_from_browser
browser = args.from_browser
print(f"🔍 Extracting cookies from {browser}...")
@@ -284,15 +284,15 @@ def _cmd_configure(args):
print()
if found_any:
- print("✅ Cookies configured! Run `agent-eyes doctor` to see updated status.")
+ print("✅ Cookies configured! Run `agent-reach doctor` to see updated status.")
else:
print(f"No cookies found. Make sure you're logged into the platforms in {browser}.")
return
# ── Manual configure ──
if not args.key:
- print("Usage: agent-eyes configure ")
- print(" or: agent-eyes configure --from-browser chrome")
+ print("Usage: agent-reach configure ")
+ print(" or: agent-reach configure --from-browser chrome")
return
value = " ".join(args.value) if args.value else ""
@@ -329,8 +329,8 @@ def _cmd_configure(args):
print("Testing search...", end=" ")
try:
import asyncio
- from agent_eyes.core import AgentEyes
- eyes = AgentEyes(config)
+ from agent_reach.core import AgentReach
+ eyes = AgentReach(config)
results = asyncio.run(eyes.search("test", num_results=1))
if results:
print("✅ Search works!")
@@ -383,8 +383,8 @@ def _cmd_configure(args):
else:
print("❌ Could not find auth_token and ct0 in your input.")
print(" Accepted formats:")
- print(" 1. agent-eyes configure twitter-cookies AUTH_TOKEN CT0")
- print(' 2. agent-eyes configure twitter-cookies "auth_token=xxx; ct0=yyy; ..."')
+ print(" 1. agent-reach configure twitter-cookies AUTH_TOKEN CT0")
+ print(' 2. agent-reach configure twitter-cookies "auth_token=xxx; ct0=yyy; ..."')
elif args.key == "xhs-cookie":
config.set("xhs_cookie", value)
@@ -423,19 +423,19 @@ def _cmd_configure(args):
def _cmd_doctor():
- from agent_eyes.config import Config
- from agent_eyes.doctor import check_all, format_report
+ from agent_reach.config import Config
+ from agent_reach.doctor import check_all, format_report
config = Config()
results = check_all(config)
print(format_report(results))
def _cmd_setup():
- from agent_eyes.config import Config
+ from agent_reach.config import Config
config = Config()
print()
- print("👁️ Agent Eyes Setup")
+ print("👁️ Agent Reach Setup")
print("=" * 40)
print()
@@ -461,7 +461,7 @@ def _cmd_setup():
config.set("exa_api_key", key)
print(" ✅ 全网搜索 + Reddit搜索 + Twitter搜索 已开启!")
else:
- print(" ℹ️ 跳过。稍后可运行 agent-eyes setup 配置")
+ print(" ℹ️ 跳过。稍后可运行 agent-reach setup 配置")
print()
# Step 2: GitHub token
@@ -514,13 +514,13 @@ def _cmd_setup():
# Summary
print("=" * 40)
print(f"✅ 配置已保存到 {config.config_path}")
- print("运行 agent-eyes doctor 查看完整状态")
+ print("运行 agent-reach doctor 查看完整状态")
print()
async def _cmd_read(args):
- from agent_eyes.core import AgentEyes
- eyes = AgentEyes()
+ from agent_reach.core import AgentReach
+ eyes = AgentReach()
try:
result = await eyes.read(args.url)
if args.as_json:
@@ -537,8 +537,8 @@ async def _cmd_read(args):
async def _cmd_search(args):
- from agent_eyes.core import AgentEyes
- eyes = AgentEyes()
+ from agent_reach.core import AgentReach
+ eyes = AgentReach()
query = " ".join(args.query).strip()
num = args.num
@@ -563,12 +563,12 @@ async def _cmd_search(args):
if "401" in error_str or "Unauthorized" in error_str:
print("⚠️ Exa API key not configured or invalid.")
print("Get a free key at https://exa.ai (1000 searches/month free)")
- print("Then run: agent-eyes configure exa-key YOUR_KEY")
+ print("Then run: agent-reach configure exa-key YOUR_KEY")
sys.exit(1)
elif "exa" in error_str.lower() or "api_key" in error_str.lower():
print("⚠️ Exa API key not configured.")
print("Get a free key at https://exa.ai")
- print("Then run: agent-eyes configure exa-key YOUR_KEY")
+ print("Then run: agent-reach configure exa-key YOUR_KEY")
sys.exit(1)
else:
print(f"❌ Error: {e}", file=sys.stderr)
diff --git a/agent_eyes/config.py b/agent_reach/config.py
similarity index 93%
rename from agent_eyes/config.py
rename to agent_reach/config.py
index f048a62..918b106 100644
--- a/agent_eyes/config.py
+++ b/agent_reach/config.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
-"""Configuration management for Agent Eyes.
+"""Configuration management for Agent Reach.
-Stores settings in ~/.agent-eyes/config.yaml.
+Stores settings in ~/.agent-reach/config.yaml.
Auto-creates directory on first use.
"""
@@ -13,9 +13,9 @@ import yaml
class Config:
- """Manages Agent Eyes configuration."""
+ """Manages Agent Reach configuration."""
- CONFIG_DIR = Path.home() / ".agent-eyes"
+ CONFIG_DIR = Path.home() / ".agent-reach"
CONFIG_FILE = CONFIG_DIR / "config.yaml"
# Feature → required config keys
diff --git a/agent_eyes/cookie_extract.py b/agent_reach/cookie_extract.py
similarity index 99%
rename from agent_eyes/cookie_extract.py
rename to agent_reach/cookie_extract.py
index 1155d95..1be9a57 100644
--- a/agent_eyes/cookie_extract.py
+++ b/agent_reach/cookie_extract.py
@@ -5,7 +5,7 @@ Supports: Chrome, Firefox, Edge, Brave, Opera
Extracts: Twitter, XiaoHongShu, Bilibili cookies in one shot.
Usage:
- agent-eyes configure --from-browser chrome
+ agent-reach configure --from-browser chrome
"""
import sys
diff --git a/agent_eyes/core.py b/agent_reach/core.py
similarity index 92%
rename from agent_eyes/core.py
rename to agent_reach/core.py
index b45101c..4c20817 100644
--- a/agent_eyes/core.py
+++ b/agent_reach/core.py
@@ -1,14 +1,14 @@
# -*- coding: utf-8 -*-
"""
-AgentEyes — the unified entry point.
+AgentReach — the unified entry point.
Pure glue: routes URLs to the right channel, routes searches to the right engine.
Every channel is a thin wrapper around an external tool. Swap any backend anytime.
Usage:
- from agent_eyes import AgentEyes
+ from agent_reach import AgentReach
- eyes = AgentEyes()
+ eyes = AgentReach()
content = await eyes.read("https://github.com/openai/gpt-4")
results = await eyes.search("AI agent framework")
"""
@@ -16,11 +16,11 @@ Usage:
import asyncio
from typing import Any, Dict, List, Optional
-from agent_eyes.config import Config
-from agent_eyes.channels import get_channel_for_url, get_channel, get_all_channels
+from agent_reach.config import Config
+from agent_reach.channels import get_channel_for_url, get_channel, get_all_channels
-class AgentEyes:
+class AgentReach:
"""Give your AI Agent eyes to see the entire internet."""
def __init__(self, config: Optional[Config] = None):
@@ -87,12 +87,12 @@ class AgentEyes:
def doctor(self) -> Dict[str, dict]:
"""Check all channel availability."""
- from agent_eyes.doctor import check_all
+ from agent_reach.doctor import check_all
return check_all(self.config)
def doctor_report(self) -> str:
"""Get formatted health report."""
- from agent_eyes.doctor import check_all, format_report
+ from agent_reach.doctor import check_all, format_report
return format_report(check_all(self.config))
# ── Sync wrappers ───────────────────────────────────
diff --git a/agent_eyes/doctor.py b/agent_reach/doctor.py
similarity index 92%
rename from agent_eyes/doctor.py
rename to agent_reach/doctor.py
index 3193ddc..76c04cb 100644
--- a/agent_eyes/doctor.py
+++ b/agent_reach/doctor.py
@@ -5,8 +5,8 @@ Each channel knows how to check itself. Doctor just collects the results.
"""
from typing import Dict
-from agent_eyes.config import Config
-from agent_eyes.channels import get_all_channels
+from agent_reach.config import Config
+from agent_reach.channels import get_all_channels
def check_all(config: Config) -> Dict[str, dict]:
@@ -27,7 +27,7 @@ def check_all(config: Config) -> Dict[str, dict]:
def format_report(results: Dict[str, dict]) -> str:
"""Format results as a readable text report."""
lines = []
- lines.append("👁️ Agent Eyes 状态")
+ lines.append("👁️ Agent Reach 状态")
lines.append("=" * 40)
ok_count = sum(1 for r in results.values() if r["status"] == "ok")
@@ -72,6 +72,6 @@ def format_report(results: Dict[str, dict]) -> str:
lines.append("")
lines.append(f"状态:{ok_count}/{total} 个渠道可用")
if ok_count < total:
- lines.append("运行 `agent-eyes setup` 解锁更多渠道")
+ lines.append("运行 `agent-reach setup` 解锁更多渠道")
return "\n".join(lines)
diff --git a/agent_eyes/guides/setup-exa.md b/agent_reach/guides/setup-exa.md
similarity index 89%
rename from agent_eyes/guides/setup-exa.md
rename to agent_reach/guides/setup-exa.md
index e8a4678..01d7b06 100644
--- a/agent_eyes/guides/setup-exa.md
+++ b/agent_reach/guides/setup-exa.md
@@ -10,17 +10,17 @@ Exa 是一个语义搜索引擎,免费提供 1000 次/月搜索。配置后解
1. 检查是否已配置:
```bash
-agent-eyes doctor | grep "Web Search"
+agent-reach doctor | grep "Web Search"
```
2. 如果用户提供了 key,写入配置:
```bash
# 方法1: 通过 setup 命令
-agent-eyes setup
+agent-reach setup
# 方法2: 直接写入配置文件
python3 -c "
-from agent_eyes.config import Config
+from agent_reach.config import Config
c = Config()
c.set('exa_api_key', '用户提供的KEY')
print('✅ Exa API key saved')
@@ -29,7 +29,7 @@ print('✅ Exa API key saved')
3. 测试是否有效:
```bash
-agent-eyes search "test query" -n 1
+agent-reach search "test query" -n 1
```
## 需要用户手动做的步骤
diff --git a/agent_eyes/guides/setup-groq.md b/agent_reach/guides/setup-groq.md
similarity index 93%
rename from agent_eyes/guides/setup-groq.md
rename to agent_reach/guides/setup-groq.md
index 8bcc922..071da35 100644
--- a/agent_eyes/guides/setup-groq.md
+++ b/agent_reach/guides/setup-groq.md
@@ -7,12 +7,12 @@
1. 检查是否已配置:
```bash
-agent-eyes doctor | grep -i "groq\|whisper"
+agent-reach doctor | grep -i "groq\|whisper"
```
2. 如果用户提供了 key,写入配置:
```python
-from agent_eyes.config import Config
+from agent_reach.config import Config
c = Config()
c.set("groq_api_key", "用户提供的KEY")
```
diff --git a/agent_eyes/guides/setup-reddit.md b/agent_reach/guides/setup-reddit.md
similarity index 96%
rename from agent_eyes/guides/setup-reddit.md
rename to agent_reach/guides/setup-reddit.md
index f4ab38a..e3a4e29 100644
--- a/agent_eyes/guides/setup-reddit.md
+++ b/agent_reach/guides/setup-reddit.md
@@ -9,7 +9,7 @@ Reddit 封锁了大量服务器 IP,直接访问会返回 403。需要 ISP 代
1. 检查当前状态:
```bash
-agent-eyes doctor | grep "Reddit"
+agent-reach doctor | grep "Reddit"
```
2. 如果用户提供了代理,测试连通性:
@@ -23,7 +23,7 @@ curl -s --proxy "用户提供的代理" \
3. 写入配置:
```python
-from agent_eyes.config import Config
+from agent_reach.config import Config
c = Config()
c.set("reddit_proxy", "http://用户名:密码@IP:端口")
```
diff --git a/agent_eyes/guides/setup-twitter.md b/agent_reach/guides/setup-twitter.md
similarity index 100%
rename from agent_eyes/guides/setup-twitter.md
rename to agent_reach/guides/setup-twitter.md
diff --git a/agent_eyes/guides/setup-wechat.md b/agent_reach/guides/setup-wechat.md
similarity index 94%
rename from agent_eyes/guides/setup-wechat.md
rename to agent_reach/guides/setup-wechat.md
index a536826..0af3bdf 100644
--- a/agent_eyes/guides/setup-wechat.md
+++ b/agent_reach/guides/setup-wechat.md
@@ -18,7 +18,7 @@ playwright install chromium
3. 安装完成后测试:
```bash
-agent-eyes read "https://mp.weixin.qq.com/s/一个测试链接"
+agent-reach read "https://mp.weixin.qq.com/s/一个测试链接"
```
## 需要用户手动做的步骤
diff --git a/agent_eyes/guides/setup-xiaohongshu.md b/agent_reach/guides/setup-xiaohongshu.md
similarity index 90%
rename from agent_eyes/guides/setup-xiaohongshu.md
rename to agent_reach/guides/setup-xiaohongshu.md
index d8f7a0e..69518ab 100644
--- a/agent_eyes/guides/setup-xiaohongshu.md
+++ b/agent_reach/guides/setup-xiaohongshu.md
@@ -19,7 +19,7 @@ playwright install chromium
3. 检查是否已有登录态:
```bash
# 检查 cookie 文件是否存在
-ls ~/.agent-eyes/xhs_cookies.json 2>/dev/null
+ls ~/.agent-reach/xhs_cookies.json 2>/dev/null
```
## 需要用户手动做的步骤
@@ -37,6 +37,6 @@ ls ~/.agent-eyes/xhs_cookies.json 2>/dev/null
## Agent 收到确认后的操作
-1. 保存浏览器 cookie 到 `~/.agent-eyes/xhs_cookies.json`
+1. 保存浏览器 cookie 到 `~/.agent-reach/xhs_cookies.json`
2. 测试:读取一条小红书笔记
3. 反馈:"✅ 小红书已配置!现在我可以读取小红书笔记了。"
diff --git a/agent_eyes/integrations/__init__.py b/agent_reach/integrations/__init__.py
similarity index 100%
rename from agent_eyes/integrations/__init__.py
rename to agent_reach/integrations/__init__.py
diff --git a/agent_eyes/integrations/mcp_server.py b/agent_reach/integrations/mcp_server.py
similarity index 90%
rename from agent_eyes/integrations/mcp_server.py
rename to agent_reach/integrations/mcp_server.py
index 399faec..13a91bc 100644
--- a/agent_eyes/integrations/mcp_server.py
+++ b/agent_reach/integrations/mcp_server.py
@@ -1,8 +1,8 @@
# -*- coding: utf-8 -*-
"""
-Agent Eyes MCP Server — expose all capabilities as MCP tools.
+Agent Reach MCP Server — expose all capabilities as MCP tools.
-Run: python -m agent_eyes.integrations.mcp_server
+Run: python -m agent_reach.integrations.mcp_server
8 tools for any MCP-compatible AI Agent.
"""
@@ -11,8 +11,8 @@ import asyncio
import json
import sys
-from agent_eyes.config import Config
-from agent_eyes.core import AgentEyes
+from agent_reach.config import Config
+from agent_reach.core import AgentReach
try:
from mcp.server import Server
@@ -25,12 +25,12 @@ except ImportError:
def create_server():
if not HAS_MCP:
- print("MCP not installed. Install: pip install agent-eyes[mcp]", file=sys.stderr)
+ print("MCP not installed. Install: pip install agent-reach[mcp]", file=sys.stderr)
sys.exit(1)
- server = Server("agent-eyes")
+ server = Server("agent-reach")
config = Config()
- eyes = AgentEyes(config)
+ eyes = AgentReach(config)
@server.list_tools()
async def list_tools():
@@ -57,7 +57,7 @@ def create_server():
description="Search Twitter/X posts.",
inputSchema={"type": "object", "properties": {"query": {"type": "string"}, "limit": {"type": "integer", "default": 10}}, "required": ["query"]}),
Tool(name="get_status",
- description="Get Agent Eyes status: which channels are active.",
+ description="Get Agent Reach status: which channels are active.",
inputSchema={"type": "object", "properties": {}}),
]
diff --git a/agent_reach/integrations/skill/SKILL.md b/agent_reach/integrations/skill/SKILL.md
new file mode 100644
index 0000000..f8cb517
--- /dev/null
+++ b/agent_reach/integrations/skill/SKILL.md
@@ -0,0 +1,65 @@
+---
+name: agent-reach
+description: "Give your AI Agent eyes to see the entire internet. Search + read 10+ platforms with one install."
+install: pip install git+https://github.com/Panniantong/agent-reach.git
+---
+
+# Agent Reach — 给 Agent 装上眼睛 👁️
+
+安装后你就能搜索和阅读全网内容。
+
+## 安装
+
+```bash
+pip install git+https://github.com/Panniantong/agent-reach.git
+```
+
+## 装完直接能用的(零配置)
+
+- `agent-reach read ` — 读取任意网页、GitHub、B站、YouTube、RSS
+- `agent-reach search-github "query"` — 搜索 GitHub 仓库
+- `agent-reach doctor` — 查看所有平台状态
+
+## 解锁更多功能
+
+运行 `agent-reach setup` 进行交互式配置,或者读取以下指南:
+
+| 功能 | 指南文件 |
+|------|---------|
+| 全网搜索 + Reddit搜索 + Twitter搜索 | `agent_reach/guides/setup-exa.md` |
+| Reddit 完整阅读 | `agent_reach/guides/setup-reddit.md` |
+| Twitter 高级(时间线/线程) | `agent_reach/guides/setup-twitter.md` |
+| 小红书 | `agent_reach/guides/setup-xiaohongshu.md` |
+| 微信公众号 | `agent_reach/guides/setup-wechat.md` |
+| 视频语音转文字 | `agent_reach/guides/setup-groq.md` |
+
+每个指南里有详细的步骤说明,你(Agent)可以照着做,只有需要人类操作的部分(登录、复制 key)才需要问用户。
+
+## MCP Server
+
+如果你的 Agent 平台支持 MCP:
+
+```bash
+pip install agent-reach[mcp]
+python -m agent_reach.integrations.mcp_server
+```
+
+提供 8 个工具:read_url, read_batch, detect_platform, search, search_reddit, search_github, search_twitter, get_status
+
+## Python API
+
+```python
+from agent_reach import AgentReach
+import asyncio
+
+eyes = AgentReach()
+
+# 读取
+result = asyncio.run(eyes.read("https://github.com/openai/gpt-4"))
+
+# 搜索
+results = asyncio.run(eyes.search("AI agent framework"))
+
+# 健康检查
+print(eyes.doctor_report())
+```
diff --git a/docs/README_en.md b/docs/README_en.md
index 185b116..175ad2a 100644
--- a/docs/README_en.md
+++ b/docs/README_en.md
@@ -1,8 +1,8 @@
-# 👁️ Agent Eyes
+# 👁️ Agent Reach
**Give your AI Agent eyes to see the entire internet.**
-Your AI Agent is smart but blind. It can't browse Reddit, search Twitter, or read Bilibili videos. Agent Eyes fixes this — once installed, your Agent can search and read content across 10+ platforms.
+Your AI Agent is smart but blind. It can't browse Reddit, search Twitter, or read Bilibili videos. Agent Reach fixes this — once installed, your Agent can search and read content across 10+ platforms.
> Install once. Superpowers unlocked. Most features work with zero config, zero cost.
@@ -15,7 +15,7 @@ Your AI Agent is smart but blind. It can't browse Reddit, search Twitter, or rea
Copy this to your AI Agent (Claude Code, OpenClaw, Cursor, etc.):
```
-Install Agent Eyes: https://raw.githubusercontent.com/Panniantong/agent-eyes/main/docs/install.md
+Install Agent Reach: https://raw.githubusercontent.com/Panniantong/agent-reach/main/docs/install.md
```
Your Agent handles everything. You answer 1-2 questions at most.
@@ -24,9 +24,9 @@ Your Agent handles everything. You answer 1-2 questions at most.
Manual install
```bash
-pip install https://github.com/Panniantong/agent-eyes/archive/main.zip
-agent-eyes install --env=auto
-agent-eyes doctor
+pip install https://github.com/Panniantong/agent-reach/archive/main.zip
+agent-reach install --env=auto
+agent-reach doctor
```
@@ -44,8 +44,8 @@ No configuration needed:
- 🐦 **Twitter** — read individual tweets
```bash
-agent-eyes read "https://github.com/openai/gpt-4"
-agent-eyes search-github "LLM framework"
+agent-reach read "https://github.com/openai/gpt-4"
+agent-reach search-github "LLM framework"
```
---
@@ -55,10 +55,10 @@ agent-eyes search-github "LLM framework"
Sign up at [Exa](https://exa.ai) (free, 1000 searches/month). One key unlocks **web + Reddit + Twitter search**:
```bash
-agent-eyes configure exa-key YOUR_KEY
-agent-eyes search "best open source LLM 2025"
-agent-eyes search-reddit "self-hosted LLM" --sub LocalLLaMA
-agent-eyes search-twitter "AI agent"
+agent-reach configure exa-key YOUR_KEY
+agent-reach search "best open source LLM 2025"
+agent-reach search-reddit "self-hosted LLM" --sub LocalLLaMA
+agent-reach search-twitter "AI agent"
```
---
@@ -69,11 +69,11 @@ agent-eyes search-twitter "AI agent"
```bash
# Local: auto-import all cookies
-agent-eyes configure --from-browser chrome
+agent-reach configure --from-browser chrome
# Server: use Cookie-Editor extension, export Header String
-agent-eyes configure twitter-cookies "cookie_string"
-agent-eyes configure xhs-cookie "cookie_string"
+agent-reach configure twitter-cookies "cookie_string"
+agent-reach configure xhs-cookie "cookie_string"
```
Unlocks: Twitter deep search, XiaoHongShu notes
@@ -83,7 +83,7 @@ Unlocks: Twitter deep search, XiaoHongShu notes
Reddit and Bilibili block server IPs. Local computers are fine.
```bash
-agent-eyes configure proxy http://user:pass@ip:port
+agent-reach configure proxy http://user:pass@ip:port
```
Recommend [Webshare](https://webshare.io). One proxy covers both Reddit and Bilibili.
@@ -95,24 +95,24 @@ Recommend [Webshare](https://webshare.io). One proxy covers both Reddit and Bili
**CLI** · **Python API** · **MCP Server**
```bash
-agent-eyes read "URL"
-agent-eyes search "query"
-agent-eyes doctor
+agent-reach read "URL"
+agent-reach search "query"
+agent-reach doctor
```
```python
-from agent_eyes import AgentEyes
-eyes = AgentEyes()
+from agent_reach import AgentReach
+eyes = AgentReach()
result = asyncio.run(eyes.read("https://example.com"))
```
```json
-{"mcpServers": {"agent-eyes": {"command": "python", "args": ["-m", "agent_eyes.integrations.mcp_server"]}}}
+{"mcpServers": {"agent-reach": {"command": "python", "args": ["-m", "agent_reach.integrations.mcp_server"]}}}
```
---
-## Why Agent Eyes?
+## Why Agent Reach?
Not a framework. Not an SDK. Just glue — beautifully simple glue.
diff --git a/docs/cookie-export.md b/docs/cookie-export.md
index da2fa12..02e052c 100644
--- a/docs/cookie-export.md
+++ b/docs/cookie-export.md
@@ -18,7 +18,7 @@ Here's how to export cookies from your local computer — **fastest method first
That's it! Your Agent will run:
```bash
-agent-eyes configure twitter-cookies
+agent-reach configure twitter-cookies
```
### Sites to export:
diff --git a/docs/install.md b/docs/install.md
index cce84ad..eb19374 100644
--- a/docs/install.md
+++ b/docs/install.md
@@ -1,11 +1,11 @@
-# Agent Eyes — Installation Guide
+# Agent Reach — Installation Guide
## For Humans
Copy this to your AI Agent:
```
-帮我安装 Agent Eyes:https://raw.githubusercontent.com/Panniantong/agent-eyes/main/docs/install.md
+帮我安装 Agent Reach:https://raw.githubusercontent.com/Panniantong/agent-reach/main/docs/install.md
```
---
@@ -15,8 +15,8 @@ Copy this to your AI Agent:
### Step 1: Install
```bash
-pip install https://github.com/Panniantong/agent-eyes/archive/main.zip || pip3 install https://github.com/Panniantong/agent-eyes/archive/main.zip
-agent-eyes install --env=auto
+pip install https://github.com/Panniantong/agent-reach/archive/main.zip || pip3 install https://github.com/Panniantong/agent-reach/archive/main.zip
+agent-reach install --env=auto
```
This single command does everything automatically:
@@ -37,7 +37,7 @@ Only ask the user for items the install output says are missing.
> "Want to unlock web search? Go to https://exa.ai → sign up (free) → send me the API key."
```bash
-agent-eyes configure exa-key THE_KEY
+agent-reach configure exa-key THE_KEY
```
**If cookies were not auto-imported (server users):**
@@ -45,21 +45,21 @@ agent-eyes configure exa-key THE_KEY
> Extension: https://chromewebstore.google.com/detail/cookie-editor/hlkenndednhfkekhgcdicdfddnkalmdm
```bash
-agent-eyes configure twitter-cookies "PASTED_STRING"
-agent-eyes configure xhs-cookie "PASTED_STRING"
+agent-reach configure twitter-cookies "PASTED_STRING"
+agent-reach configure xhs-cookie "PASTED_STRING"
```
**If on server and wants Reddit/Bilibili full access:**
> "Reddit and Bilibili block server IPs. Get a proxy at https://webshare.io ($1/month) and send me the address."
```bash
-agent-eyes configure proxy http://user:pass@ip:port
+agent-reach configure proxy http://user:pass@ip:port
```
### Step 3: Verify
```bash
-agent-eyes doctor
+agent-reach doctor
```
Report what's active. Users can configure more anytime by asking.
@@ -70,11 +70,11 @@ Report what's active. Users can configure more anytime by asking.
| Command | What it does |
|---------|-------------|
-| `agent-eyes install --env=auto` | Full auto-setup |
-| `agent-eyes doctor` | Show status |
-| `agent-eyes configure exa-key KEY` | Unlock search |
-| `agent-eyes configure twitter-cookies "..."` | Unlock Twitter |
-| `agent-eyes configure xhs-cookie "..."` | Unlock XiaoHongShu |
-| `agent-eyes configure proxy URL` | Unlock Reddit + Bilibili (server) |
-| `agent-eyes read URL` | Read any URL |
-| `agent-eyes search "query"` | Search the web |
+| `agent-reach install --env=auto` | Full auto-setup |
+| `agent-reach doctor` | Show status |
+| `agent-reach configure exa-key KEY` | Unlock search |
+| `agent-reach configure twitter-cookies "..."` | Unlock Twitter |
+| `agent-reach configure xhs-cookie "..."` | Unlock XiaoHongShu |
+| `agent-reach configure proxy URL` | Unlock Reddit + Bilibili (server) |
+| `agent-reach read URL` | Read any URL |
+| `agent-reach search "query"` | Search the web |
diff --git a/pyproject.toml b/pyproject.toml
index 3f1966f..659e8d3 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,5 +1,5 @@
[project]
-name = "agent-eyes"
+name = "agent-reach"
version = "1.0.0"
description = "Give your AI Agent eyes to see the entire internet. Search + Read 10+ platforms."
readme = "README.md"
@@ -37,19 +37,19 @@ mcp = ["mcp[cli]>=1.0"]
all = ["playwright>=1.40", "mcp[cli]>=1.0", "browser-cookie3>=0.19"]
[project.scripts]
-agent-eyes = "agent_eyes.cli:main"
+agent-reach = "agent_reach.cli:main"
[project.urls]
-Homepage = "https://github.com/Panniantong/agent-eyes"
-Repository = "https://github.com/Panniantong/agent-eyes"
-Issues = "https://github.com/Panniantong/agent-eyes/issues"
+Homepage = "https://github.com/Panniantong/agent-reach"
+Repository = "https://github.com/Panniantong/agent-reach"
+Issues = "https://github.com/Panniantong/agent-reach/issues"
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[tool.hatch.build.targets.wheel]
-packages = ["agent_eyes"]
+packages = ["agent_reach"]
[tool.hatch.build.targets.wheel.force-include]
-"agent_eyes/guides" = "agent_eyes/guides"
+"agent_reach/guides" = "agent_reach/guides"
diff --git a/tests/test_channels.py b/tests/test_channels.py
index 8dd1dc6..c72d102 100644
--- a/tests/test_channels.py
+++ b/tests/test_channels.py
@@ -4,8 +4,8 @@
import pytest
from unittest.mock import patch, MagicMock
-from agent_eyes.channels import get_channel_for_url, get_channel, get_all_channels
-from agent_eyes.channels.base import ReadResult, SearchResult
+from agent_reach.channels import get_channel_for_url, get_channel, get_all_channels
+from agent_reach.channels.base import ReadResult, SearchResult
class TestChannelRouting:
@@ -74,7 +74,7 @@ class TestSearchResult:
class TestGitHubChannel:
- @patch("agent_eyes.channels.github.requests.get")
+ @patch("agent_reach.channels.github.requests.get")
@pytest.mark.asyncio
async def test_search(self, mock_get):
mock_resp = MagicMock()
@@ -93,10 +93,10 @@ class TestGitHubChannel:
class TestExaSearch:
- @patch("agent_eyes.channels.exa_search.requests.post")
+ @patch("agent_reach.channels.exa_search.requests.post")
@pytest.mark.asyncio
async def test_search(self, mock_post):
- from agent_eyes.config import Config
+ from agent_reach.config import Config
config = Config(config_path="/tmp/test-exa-config.yaml")
config.set("exa_api_key", "test-key")
diff --git a/tests/test_cli.py b/tests/test_cli.py
index c1b3d87..5b62cfe 100644
--- a/tests/test_cli.py
+++ b/tests/test_cli.py
@@ -1,29 +1,29 @@
# -*- coding: utf-8 -*-
-"""Tests for Agent Eyes CLI."""
+"""Tests for Agent Reach CLI."""
import pytest
from unittest.mock import patch
-from agent_eyes.cli import main
+from agent_reach.cli import main
class TestCLI:
def test_version(self, capsys):
with pytest.raises(SystemExit) as exc_info:
- with patch("sys.argv", ["agent-eyes", "version"]):
+ with patch("sys.argv", ["agent-reach", "version"]):
main()
assert exc_info.value.code == 0
captured = capsys.readouterr()
- assert "Agent Eyes v" in captured.out
+ assert "Agent Reach v" in captured.out
def test_no_command_shows_help(self, capsys):
with pytest.raises(SystemExit) as exc_info:
- with patch("sys.argv", ["agent-eyes"]):
+ with patch("sys.argv", ["agent-reach"]):
main()
assert exc_info.value.code == 0
def test_doctor_runs(self, capsys):
- with patch("sys.argv", ["agent-eyes", "doctor"]):
+ with patch("sys.argv", ["agent-reach", "doctor"]):
main()
captured = capsys.readouterr()
- assert "Agent Eyes" in captured.out
+ assert "Agent Reach" in captured.out
assert "✅" in captured.out
diff --git a/tests/test_config.py b/tests/test_config.py
index 133628c..5b48724 100644
--- a/tests/test_config.py
+++ b/tests/test_config.py
@@ -1,5 +1,5 @@
# -*- coding: utf-8 -*-
-"""Tests for Agent Eyes config module."""
+"""Tests for Agent Reach config module."""
import os
import tempfile
@@ -8,7 +8,7 @@ from pathlib import Path
import pytest
import yaml
-from agent_eyes.config import Config
+from agent_reach.config import Config
@pytest.fixture
diff --git a/tests/test_core.py b/tests/test_core.py
index 08560a0..91bf28d 100644
--- a/tests/test_core.py
+++ b/tests/test_core.py
@@ -1,18 +1,18 @@
# -*- coding: utf-8 -*-
-"""Tests for AgentEyes core class."""
+"""Tests for AgentReach core class."""
import pytest
-from agent_eyes.config import Config
-from agent_eyes.core import AgentEyes
+from agent_reach.config import Config
+from agent_reach.core import AgentReach
@pytest.fixture
def eyes(tmp_path):
config = Config(config_path=tmp_path / "config.yaml")
- return AgentEyes(config=config)
+ return AgentReach(config=config)
-class TestAgentEyes:
+class TestAgentReach:
def test_init(self, eyes):
assert eyes.config is not None
@@ -33,4 +33,4 @@ class TestAgentEyes:
def test_doctor_report(self, eyes):
report = eyes.doctor_report()
assert isinstance(report, str)
- assert "Agent Eyes" in report
+ assert "Agent Reach" in report
diff --git a/tests/test_doctor.py b/tests/test_doctor.py
index 96959a6..240f286 100644
--- a/tests/test_doctor.py
+++ b/tests/test_doctor.py
@@ -2,8 +2,8 @@
"""Tests for doctor module."""
import pytest
-from agent_eyes.config import Config
-from agent_eyes.doctor import check_all, format_report
+from agent_reach.config import Config
+from agent_reach.doctor import check_all, format_report
@pytest.fixture
@@ -31,6 +31,6 @@ class TestDoctor:
def test_format_report(self, tmp_config):
results = check_all(tmp_config)
report = format_report(results)
- assert "Agent Eyes" in report
+ assert "Agent Reach" in report
assert "✅" in report
assert "渠道可用" in report