11 views
Panniantong/Agent-Reach
Give your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu — one CLI, zero API fees.
Python★ 103,981+746 that day#7 on trending
B74/100
Duplication90
1% in python, bashDead code95
0.2%Complexity48
57.8% The score is jscpd's own --health model: markup, data and text left out, tests kept. The numbers below are the trending scan's.
0.44%duplicated code · 43 of 9,753 lines
4clones in code
51code files of 109 scanned
0.92%duplicated over all files · 16 clones
Most complex files
- agent_reach/runtime/manage.py387 cx
- agent_reach/runtime/browser.py288 cx
- agent_reach/runtime/tools.py229 cx
- agent_reach/runtime/cli.py183 cx
- tests/test_manage.py154 cx
- agent_reach/runtime/dispatch.py103 cx
- tests/test_unified_entry.py99 cx
- tests/test_transcribe.py85 cx
- agent_reach/transcribe.py79 cx
- agent_reach/runtime/cdp.py77 cx
Dead code 0.25% unused · 2 findings
- scripts/accept-search.pyunused-file
- agent_reach/runtime/browser.py:_CONTEXT_REunused-symbol
The code number leaves out tests, fixtures, docs, examples, data files, styles, translations and vendored code.
Largest clones in the code
- 18 lines in 2 placesbash122 tokensagent_reach/scripts/transcribe_xiaoyuzhou.sh:222–239agent_reach/scripts/transcribe_xiaoyuzhou.sh:253–269
222RESPONSE=$(curl --silent --show-error \ 223 --connect-timeout "$CURL_CONNECT_TIMEOUT" \ 224 --max-time "$GROQ_TIMEOUT" \ 225 --max-filesize "$MAX_API_RESPONSE_BYTES" \ 226 -w "\n%{http_code}" \ 227 https://api.groq.com/openai/v1/audio/transcriptions \ 228 -H "Authorization: Bearer $GROQ_API_KEY" \ 229 -F file="@$WORK_DIR/chunk_${i}.mp3" \ 230 -F model="whisper-large-v3" \ 231 -F language="zh" \First 10 of 18 lines.
- 9 lines in 2 placespython92 tokens
35 live_test={"username": "zuck"}, 36 ), 37) 38 39def _opencli_search(self, *, query: str, limit: int, timeout: float) -> list: 40 return self._opencli(["search", query, "--limit", str(limit)], timeout)[:limit] 41 42def _opencli_profile(self, *, username: str, timeout: float) -> list: 43 return self._opencli(["profile", username], timeout, empty_is_error=False)[:1] - 8 lines in 2 placespython54 tokens
21"Search Facebook", 22( 23 Param("query", "what to search for"), 24 Param("limit", "max results", required=False, type=int, default=5), 25), 26(("opencli", "_opencli_search"),), 27live_test={"query": "openai", "limit": 2}, 28public_web=("facebook.com/",),41"Search tweets", 42( 43 Param("query", "what to search for"), 44 Param("limit", "max results", required=False, type=int, default=5), 45), 46(("opencli", "_opencli_search"),), 47live_test={"query": "openai", "limit": 2}, 48public_web=("x.com/", "twitter.com/"),
1 more
- 8 lines in 2 placespython50 tokens
Largest clones over all files, tests and data included
- 9 lines in 3 placespythontests62 tokens
625def test_passes_public_url_after_end_of_options_marker(self, monkeypatch, tmp_path): 626 monkeypatch.setattr(tr, "_require", lambda binary: None) 627 captured = {} 628 629 def fake_run(cmd, timeout=600): 630 captured["cmd"] = cmd 631 (tmp_path / "source.m4a").write_bytes(b"audio") 632 633 monkeypatch.setattr(tr, "_run", fake_run) - 18 lines in 2 placesbash122 tokensagent_reach/scripts/transcribe_xiaoyuzhou.sh:222–239agent_reach/scripts/transcribe_xiaoyuzhou.sh:253–269
222RESPONSE=$(curl --silent --show-error \ 223 --connect-timeout "$CURL_CONNECT_TIMEOUT" \ 224 --max-time "$GROQ_TIMEOUT" \ 225 --max-filesize "$MAX_API_RESPONSE_BYTES" \ 226 -w "\n%{http_code}" \ 227 https://api.groq.com/openai/v1/audio/transcriptions \ 228 -H "Authorization: Bearer $GROQ_API_KEY" \ 229 -F file="@$WORK_DIR/chunk_${i}.mp3" \ 230 -F model="whisper-large-v3" \ 231 -F language="zh" \First 10 of 18 lines.
- 22 lines in 2 placespythontests122 tokens
181def test_auto_does_not_send_audio_to_second_provider_without_consent( 182 self, 183 monkeypatch, 184 fake_config, 185 tmp_path, 186 chunk_file, 187 bounded_audio_duration, 188): 189 fake_config.set("groq_api_key", "gsk_test") 190 fake_config.set("openai_api_key", "sk-test")First 10 of 22 lines.
- 9 lines in 2 placespython92 tokens
- 16 lines in 2 placespythontests90 tokens
By format, code only
| Format | Files | Lines | Clones | Duplicated lines | Duplication |
|---|---|---|---|---|---|
| python | 49 | 9,288 | 3 | 25 | 0.27% |
| bash | 2 | 465 | 1 | 18 | 3.87% |
By format, all files
| Format | Files | Lines | Clones | Duplicated lines | Duplication |
|---|---|---|---|---|---|
| python | 76 | 14,801 | 13 | 129 | 0.87% |
| markdown | 15 | 1,358 | 2 | 16 | 1.18% |
| bash | 4 | 480 | 1 | 18 | 3.75% |
| json | 1 | 513 | 0 | 0 | 0% |
| yaml | 4 | 275 | 0 | 0 | 0% |
| markup | 4 | 163 | 0 | 0 | 0% |
| toml | 1 | 76 | 0 | 0 | 0% |
| txt | 2 | 48 | 0 | 0 | 0% |
| mermaid | 2 | 16 | 0 | 0 | 0% |
Trending appearances
| Day | Rank | Stars | Files | Lines | Clones | All files | Code | Health | Commit |
|---|---|---|---|---|---|---|---|---|---|
| Oct 27, 2026 | #7 | 103,981 (+746) | 109 | 17,730 | 16 | 0.92% | 0.44% | B 74 | 14c2134 |
| Oct 6, 2026 | #5 | 92,069 (+1,155) | 140 | 24,089 | 63 | 2.92% | 0.89% | B 71.3 | a19a171 |
| Oct 5, 2026 | #3 | 91,107 (+980) | 140 | 24,089 | 63 | 2.92% | 0.89% | B 71.3 | a19a171 |
| Oct 4, 2026 | #3 | 90,060 (+1,696) | 140 | 24,089 | 63 | 2.92% | 0.89% | B 71.3 | a19a171 |
| Oct 3, 2026 | #1 | 88,922 (+696) | 140 | 24,089 | 63 | 2.92% | 0.89% | B 71.3 | a19a171 |
| Sep 15, 2026 | #6 | 81,551 (+651) | 138 | 22,897 | 57 | 2.78% | 0.93% | — | da5044d |
Want this for your own project? Install jscpd and run jscpd ., or measure it the way the baselines were measured.