# argo

> Integrate Argo multilingual search

## Metadata

- Author: [@taxueseek](https://github.com/taxueseek)
- Repo: <https://github.com/taxueseek/argo.git>
- GitHub: [taxueseek/argo](https://github.com/taxueseek/argo)
- Stars: 104
- Language: Python
- License: [MIT](https://spdx.org/licenses/MIT.html)
- Topics: `dsh-ecosystem`, `dsh-plugin`
- Forks: 6
- Open Issues: 9
- Last push: 2026-08-13T13:58:54.000Z
- Added: 2026-08-14T00:00:00.000Z

## Install

```bash
dsh plugin --profile web add github:taxueseek/argo
```

## Wiki

## One-Sentence Positioning
Integrate Argo multilingual search and evidence verification MCP into DSH, enabling the model to directly invoke 10 web search, scraping, and deep research tools in conversations, outputting concise JSON instead of long web pages.

## Core Capabilities
- **Unified Search**: Automatic routing by language, domain, and intent; multi-engine parallel recall with RRF fusion; outputs concise JSON with authority, evidence density, and timeliness scores
- **Deep Research**: Splits complex problems into multiple sub-questions, multi-source parallel collection, provides gap hints for missing evidence
- **Intelligent Scraping & Site Crawling**: HTTP-first, upgrades to browser when anti-scraping is detected; supports BM25 focused extraction, table and JSON-LD structured extraction
- **Document & Local Search**: Converts PDFs to Markdown, web pages to images; offline scanning of local code/notes/skill libraries
- **Social Platform Search**: Covers Hacker News, Zhihu, Bilibili, V2EX, supports both post list and public opinion aggregation modes
- **Intent Disambiguation**: Identifies polysemous terms like "苹果" (Apple/Python), provides search strategy suggestions

## Technical Implementation
- **Languages**: Python 3.10+ (core) + Node.js 18+ (npx launch shell only)
- **Key Dependencies**: PyYAML (required), curl_cffi (optional), pdfplumber or PyMuPDF (for PDF), Chrome / Playwright (for screenshots and JS-rendered pages)
- **Architecture Pattern**: DSH pulls `npx -y github:taxueseek/argo` via `@deepseek-ai/dsh-mcp-client` in stdio mode; the Node shell `bin/argo.js` spawns Python `scripts/mcp_server.py`; the 10 tools' schema unique source of truth is in `scripts/mcp_tools.py`
- **Entry Files**: `bin/argo.js` (Node launcher) / `scripts/mcp_server.py` (MCP protocol aggregator) / `packages/dsh-plugin/cordis.patch.yml` (DSH bundle patch, unique source declaring registration IDs for 10 `mcp__argo__*` tools with `mcp-argo`)

## Applicable Scenarios
Simply enable this plugin in DSH when conducting research, checking market data, reading academic papers, scraping anti-scraping sites, or performing cross-language Q&A. If you want the model to not just do generic web title searches every time, but directly get concise results with credibility scores and be able to split sub-questions for deep research as needed, this capability set is exactly what you need.

## Prerequisites and Compatibility
| Dependency | Minimum Version | Description |
|---|---|---|
| Node.js | >=18 | Required only for `npx` entry |
| Python | >=3.10 | MCP core language; macOS comes with 3.9 which won't work, set `ARGO_PYTHON` to point to 3.10+ |
| PyYAML | Any | Only hard dependency, install script will auto-install |
| Platform | macOS / Linux | Declared in package.json `os` field; Windows can work via `python` fallback, optional browser capabilities require graphical environment |
| Native Modules | None | No node-gyp module dependencies |

## Installation
```bash
dsh plugin --profile web add github:taxueseek/argo
```

## Configuration Options
| Config | Type | Description | Default |
|---|---|---|---|
| `TAVILY_API_KEY` | Environment Variable | Enable Tavily engine (international/semantic search), skipped if not set | Not set |
| `BOCHA_API_KEY` | Environment Variable | Enable Bocha engine (Chinese AI search), skipped if not set | Not set |
| `METASO_API_KEY` | Environment Variable | Enable Metaso engine (Chinese AI search), skipped if not set | Not set |
| `ZHIHU_ACCESS_SECRET` | Environment Variable | Enable Zhihu official API source, falls back to no-key if not set | Not set |
| `BRAVE_API_KEY` / `FELO_API_KEY` / `GITHUB_TOKEN` / `WEB_SEARCH_API_KEY` / `ANYSEARCH_API_KEY` / `OCTEN_API_KEY` | Environment Variables | Optional additional engine credentials | Not set |
| `ARGO_PYTHON` | Environment Variable | Custom Python interpreter path (read by npx entry) | `python3` (Windows: `python`) |
| Budget Mode `mode` | `fast` / `auto` / `deep` / `budget` | `fast` prioritizes free; `auto` is cost-aware; `deep` prioritizes quality; `budget` quota control | `auto` |
| Search Depth `depth` | `fast` / `balanced` / `deep` | Controls number of recall engines and reranking strategy | `fast` |
| Time Window `since` / `until` | String | Format like `7d` or `2026-08-01`, pushed down to engines supporting time windows | None |
| Cache Path | `cache.db_path` (`config.yaml`) | SQLite cache location | `~/.cache/unified-search/cache.db` |
| Advanced Browser Tool `argo_fetch`'s `use_browser` | Boolean | Whether to force anti-detection browser, auto-upgrades on HTTP failure | `false` |

## FAQ

**Q: What can I see in DSH after installation?**

A: After restarting `dsh web`, the model side will have 10 additional capabilities prefixed with `mcp__argo__`, including unified search, local file search, deep research, credibility assessment, intent disambiguation, page scraping, site crawling, page screenshots, PDF extraction, and social platform search.

**Q: Do I need to configure API Keys to use it?**

A: No. Argo has built-in many free and local engines; when no Key is configured, it automatically uses zero-cost paths; configuring Tavily, Bocha, Metaso, etc. Keys will improve some engine result quality.

**Q: Does it depend on Python?**

A: Yes. The Node launcher is just a shell; the actual logic runs in the `scripts/mcp_server.py` Python process. The machine needs Python 3.10+ with PyYAML installed. When macOS comes with 3.9 which won't work, use `ARGO_PYTHON` to point to a 3.10+ interpreter.

**Q: How do I use local source code instead of pulling from GitHub?**

A: In the profile's `cordis.patch.yml` user layer, override the default configuration with the same ID (`mcp-argo`), change `command` from `npx` to `python3` and point to the local `scripts/mcp_server.py` path; Cordis uses last-writer-wins for the same ID.

**Q: Where is data stored? How to clear cache?**

A: Query cache is written to `~/.cache/unified-search/cache.db` (SQLite), TTL is tiered by domain (finance 5 minutes, news 10-15 minutes, research 2-24 hours). Login-state results are isolated and not stored in public cache. Delete the file to clear cache.

**Q: Why does social platform search sometimes return empty?**

A: Hacker News / Zhihu, Bilibili, V2EX work with zero key; Twitter, Reddit, Weibo, Xiaohongshu require external login state or third-party API, will fall back to empty when not configured. Social results don't enter public cache to avoid polluting main search.

**Q: Are argo_fetch and argo_pdf the same thing?**

A: No. `argo_fetch` grabs HTML pages (HTTP-first, upgrades to browser when anti-scraping detected), returns "PDF not supported" directly when encountering PDF Content-Type; for PDFs use `argo_pdf`, which uses pdfplumber or PyMuPDF to convert PDF to Markdown.

**Q: Which platforms does this plugin support?**

A: The `os` field in package.json declares darwin and linux; on Windows the npx entry automatically falls back to `python` command, the Python MCP core itself is cross-platform, but optional capabilities like Chrome screenshots depend on graphical environment.

## Difficulty Level
Beginner — one-line install command works, free engines are sufficient for daily use; advanced users can explore budget mode, time windows, deep research, and login-state sub-skills (ego-search, off by default).

## Known Issues and Limitations
- The lightweight HTTP fetcher (`scripts/fetch.py`) returns `PDF not supported` error directly when encountering PDF Content-Type; to handle PDFs you must use the separate `argo_pdf` tool
- Twitter / Reddit / Weibo / Xiaohongshu in `argo_social_search` depend on external login state or third-party API, returns empty when not configured; zero-key available platforms are only Hacker News, Zhihu, Bilibili, V2EX
- The `os` field in package.json only declares macOS and linux; on Windows `bin/argo.js` uses `process.platform === 'win32'` to switch to `python` command as fallback, but optional browser scraping capabilities are unavailable without graphical environment
- When `argo_fetch` uses anti-detection browser downgrade (Patchright/Cloudflare bypass), it depends on system-installed Chrome or Playwright; missing时会从 HTTP 抓取失败回退为空
- No TODO / FIXME / HACK comments found in source code; the above limitations come from README, mcp_tools.py schema descriptions, and package.json field declarations

---

This document is auto-generated by [deepseek-plugin.org](https://deepseek-plugin.org). HTML page: [argo](https://deepseek-plugin.org/plugins/taxueseek/argo)
Wiki generated by AI (model: `MiniMax-M2.5`)
