Agent Reach: Cho Agent Một Đôi Mắt, Không Cần Trả API
TL;DR
- Giải quyết gì: Agent code giỏi refactor cả repo, nhưng hỏi “xem giúp thread Reddit này” hoặc “video Bilibili nói gì” thì ú ớ - mỗi nền tảng một kiểu chặn, một CLI, một cách đăng nhập.
- Vì sao quan trọng: Không có lớp định tuyến ổn định, tháng nào bạn cũng lại đi vòng: yt-dlp chết trên Bilibili, Reddit 403, Twitter bắt trả API.
- Hợp với ai: Dev chạy Claude Code, Cursor, OpenClaw - bất kỳ agent nào gõ được lệnh shell và cần đọc internet sống, không phải training data cũ.
- Khác biệt chính: Nó không tự cào dữ liệu. Nó cài twitter-cli, yt-dlp, bili-cli, gh, Jina Reader… ghi SKILL.md, rồi
agent-reach doctorbáo backend nào còn sống hôm nay. - Ví dụ cụ thể: Dán một URL hướng dẫn cài cho agent. Mười phút sau nó tóm tắt được YouTube, search Bilibili, đọc GitHub issue - bạn không đụng pipx hay commit hash.
Tuần trước tôi nhờ agent tóm tắt video YouTube cho nhanh.
Nó trả lời ba đoạn, tự tin, có tên thư viện lạ hoắc. Tôi mở link. Video nói về deploy. Thư viện đó không hề xuất hiện.
Agent không xem gì cả. Nó đoán từ cấu trúc URL. Hỏi tiếp thread Reddit về bug production: 403, xin lỗi lịch sự, rồi vẫn bịa tóm tắt.
Trí thông minh không phải vấn đề. Nó thiếu mắt.
--> // making it invisible to querySelectorAll. // // `data-cfasync="false"` keeps this rescue script executable even when // Rocket Loader is active. It rescues module scripts via two strategies: // 1. Query the DOM for type$="-module" + src (covers case A) // 2. Regex-parse the raw HTML for commented-out script tags (covers case B) // Dynamically-created scripts bypass Rocket Loader entirely. (function () { if (window.__markdyRescue) return; window.__markdyRescue = true; var rescued = false; function rescueModuleScripts() { if (rescued) return; rescued = true; var srcs = []; // Strategy 1: Rocket Loader kept the tag in DOM but changed the type. // type="module" → type="{uuid}-module" (still has src attribute) document.querySelectorAll('script[type$="-module"][src]').forEach(function (s) { srcs.push(s.src); }); // Strategy 2: Rocket Loader COMMENTED OUT the script tag entirely: // // These are invisible to querySelectorAll, so we parse the raw HTML. // We handle both attribute orderings (type-first or src-first). var html = document.documentElement.innerHTML; var reSrcFirst = //g; var reTypeFirst = //g; var m; while ((m = reSrcFirst.exec(html)) !== null) { srcs.push(m[1]); } while ((m = reTypeFirst.exec(html)) !== null) { srcs.push(m[1]); } // Re-inject each found src as a real module script. // Deduplicate first, then inject. Dynamically-created scripts bypass // Rocket Loader entirely. Modules with the same URL are only executed // once by the browser (cached), so re-injecting already-running scripts // is safe. var seen = {}; srcs.forEach(function (src) { if (seen[src]) return; seen[src] = true; var fix = document.createElement('script'); fix.type = 'module'; fix.src = src; fix.setAttribute('data-cfasync', 'false'); document.head.appendChild(fix); }); } // Rescue when user clicks the placeholder (fallback if autoplay failed). document.addEventListener('click', function (e) { var t = e.target; if (t && typeof t.closest === 'function' && t.closest('.markdy-placeholder')) { rescueModuleScripts(); } }); // Rescue automatically after a short delay for autoplay. // Only fires if initAll() never ran (no data-markdy-init on any root). setTimeout(function () { if (document.querySelector('.markdy-root:not([data-markdy-init])')) { rescueModuleScripts(); } }, 1500); }());Agent Reach Là Gì, Nhìn Tay Vào
Agent Reach chọn, cài và kiểm tra sức khỏe CLI miễn phí tốt nhất cho từng nền tảng để agent code của bạn đọc được internet sống mà không phải tự nối mười hai công cụ.
Panniantong/Agent-Reach là CLI Python cộng một đống file channel. Không phải scraper khổng lồ. Không phải MCP bọc kín một API mù.
Thực tế gồm:
pip install agent-reachđể có lệnh- Thư mục
channels/- mỗi nền tảng một file, liệt kê backend chính và dự phòng SKILL.mdbỏ vào thư mục skill của agent để nó biết gọi CLI nào~/.agent-reach/config.yamlchứa cookie/token, nằm máy bạn, không upload đi đâu
Cả onboarding trong README là một câu dán cho agent:
帮我安装 Agent Reach:https://raw.githubusercontent.com/Panniantong/agent-reach/main/docs/install.md
(Bạn nói tiếng Anh cũng được: “Install Agent Reach from that URL” - agent đọc doc rồi tự chạy.)
Sản phẩm là câu đó. Phần còn lại là bảo trì để câu vẫn chạy khi nền tảng đổi luật chơi.
💡 Mẹo: Bạn không tự cài. Dán URL doc vào Claude Code, Cursor hay OpenClaw rồi để agent chạy
pip install, ghiSKILL.md, vàdoctorlần đầu. Việc của bạn là duyệt lệnh shell, không phải nhớ từng file channel.
Ẩn Dụ: Thợ Kéo Dây, Không Phải Máy Quay
Hai người thuê phòng mới.
Một người mua smart TV, cắm Wi‑Fi, cả chiều thứ bảy bấm app load nửa vời. Người kia gọi thợ kéo dây một lần. Thợ không quay phim giùm. Thợ chạy dây, thử tín hiệu từng ổ, dán giấy lên tủ lạnh: “Phòng khách: HDMI 2. Gói thể thao: kênh 204.”
Agent Reach là thợ kéo dây cho agent.
Nó không đọc Twitter. twitter-cli đọc. Nó không lấy phụ đề YouTube. yt-dlp làm. Agent Reach chọn công cụ còn sống tuần này, cài, ghi skill, báo khi dây đứt.
Tháng 6/2026 Bilibili chặn yt-dlp bằng 412, project chuyển sang bili-cli mà user không cài lại. Cái cược thiết kế nằm ở đó: backend chết nhanh; lớp định tuyến thì không.
Luồng Đi Như Thế Nào
Mỗi nền tảng là danh sách có thứ tự. Lệnh doctor thử kết nối thật, không chỉ which twitter.
Bạn hỏi agent
│
▼
SKILL.md (URL nào gọi tool nào?)
│
▼
channels/twitter.py → twitter-cli ✓ | OpenCLI ✗
channels/bilibili.py → bili-cli ✓
channels/youtube.py → yt-dlp ✓
channels/web.py → Jina Reader ✓
│
▼
Agent chạy thẳng CLI thắng cuộc
Không có lớp bọc ở giữa. Agent gọi yt-dlp, gh repo view, curl https://r.jina.ai/URL như người - chỉ có sẵn bản hướng dẫn.
Hai Lệnh Đáng Nhớ
Sau khi cài, kiểm tra sức khỏe:
# Nền tảng nào sống, backend nào thắng, cái nào đỏ thì sửa sao
agent-reach doctor
👁️ Agent Reach Status
========================================
✅ Ready to use:
✅ Web pages · Jina Reader
✅ YouTube subtitles · yt-dlp
✅ Bilibili search · bili-cli
✅ GitHub public repos · gh CLI
⚠️ Needs setup:
⚠️ Reddit · bảo agent "help me set up Reddit"
⚠️ Twitter search · export cookie qua Cookie-Editor
Xem trước cài đặt, không đụng hệ thống:
agent-reach install --env=auto --dry-run
Phần zero-config trong README cố tình nhàm chán - nhàm chán mới bền:
| Bạn hỏi | Chạy gì | Cần config |
|---|---|---|
| ”Trang web này nói gì?” | Jina Reader qua curl https://r.jina.ai/URL | Không |
| ”Tóm tắt video YouTube” | yt-dlp lấy phụ đề | Không |
| ”Search Bilibili khóa Rust” | bili-cli | Không |
| ”Repo GitHub public này làm gì?“ | gh CLI | Không |
| ”Search web benchmark LLM” | Exa qua mcporter MCP | Tự cấu hình, không cần key theo doc |
Twitter search, Reddit, Xiaohongshu - nằm sau đăng nhập. Lúc cài nó hỏi bạn muốn thêm kênh nào, rồi hướng dẫn export cookie bằng Cookie-Editor trên Chrome. Cookie lưu trong ~/.agent-reach/config.yaml mode 600, không upload đi đâu.
Ba Chỗ Nó Hợp
Research trước khi ship. Sắp ra CLI mới. Muốn biết Reddit chửi đối thủ thế nào, Twitter tuần này nói gì, Bilibili có ai demo chưa. Một phiên agent, nhiều nền, không trả $100/tháng API Twitter.
Nuốt video dài. Talk hội nghị chín mươi phút. yt-dlp lấy phụ đề; agent tóm có timestamp. Khỏi kéo thanh tua qua đoạn sponsor.
Giảm bịa. Agent fetch được trang thì ít hallucinate hơn. Grounding thắng câu “đừng bịa nha” lặp lại mỗi prompt.
Repo hơn 32k star chưa đầy bốn tháng - hiếm với installer Python. Thường là cả đám gặp cùng một tường: agent giỏi ở local, mù ở internet, rồi share câu cài một dòng trong Discord.
Chỗ Không Vui
Cookie vẫn là việc của bạn. Reddit bỏ API ẩn danh. Xiaohongshu, Twitter cần cookie hoặc session trình duyệt. Agent Reach rút ngắn đường; nền tảng vẫn khó.
Risk khóa nick có thật. README cảnh báo dùng nick phụ. Đừng đem nick X chính vào thí nghiệm.
⚠️ Cảnh báo: Nền tảng cookie có thể khóa tài khoản script. Export cookie từ nick phụ bằng Cookie-Editor, lưu trong
~/.agent-reach/config.yamlmode 600, và không dán credential production vào phiên agent dùng chung.
Server ngoài VN cần proxy. Laptop nhà: ổn. VPS vùng chặn Reddit: cộng ~$1/tháng proxy residential, hoặc chấp nhận vài kênh đỏ trong doctor.
Chỉ đọc, không bấm. Form login, CAPTCHA, checkout nhiều bước - ngoài phạm vi. README gợi BrowserAct cho automation “tay trên trang”. Agent Reach ở lane read-only.
Vibe-coded, chạy nhanh. Tác giả nói thẳng. Cạnh nhọn, backend đổi liên tục, Issue lẫn Trung-Anh. Kiến trúc một file một channel - sửa local dễ nếu bạn vượt default.
Không Cần Nếu
| Tình huống | Lý do |
|---|---|
| Chỉ cần GitHub public + docs | gh và curl đủ |
| Công ty cấm export cookie | Mất nửa giá trị |
| Cần SLA | CLI upstream hỏng; project reroute, không ký hợp đồng |
| Muốn một API trả phí thay vì nhiều hack miễn phí | Mua Exa/Twitter Enterprise, xóa skill |
Trước Và Sau Thợ Kéo Dây
Trước Agent Reach, tự nối internet cho agent kiểu:
Tìm twitter-cli → pipx → cookie fail → thử bird →
Reddit 403 → đọc forum 2024 → sai →
Bilibili yt-dlp 412 → bỏ cuộc → agent bịa
Sau: dán URL doc cài, chạy doctor, sửa dòng đỏ, đi làm việc khác. Agent giữ skill; bạn giữ cả chiều thứ bảy.
Thợ kéo dây không xem TV cùng bạn. Thợ chỉ đảm bảo bật lên có hình. Với agent code giỏi hơn duyệt web, đôi khi thiếu model mới - thiếu dây còn sống tháng sau.
Tôi vẫn nhớ câu agent tóm tắt video deploy thành thư viện lạ. Giờ ít nhất nếu nó bịa nữa, tôi biết lỗi ở chỗ chưa cắm dây.
Panniantong/Agent-Reach · MIT · 32.7k
Hoang Yell
Một nhà phát triển phần mềm và là người kể chuyện kỹ thuật. Tôi dành thời gian để khám phá những repository mã nguồn mở thú vị nhất trên GitHub và trình bày chúng dưới dạng những câu chuyện dễ hiểu cho mọi người.