How to Use the Doctor Command for Debugging Platform Issues in Agent Reach
The doctor command runs a comprehensive health check across all supported platforms by invoking each channel's check method and returning a color-coded report or JSON output that identifies which integrations are ready, misconfigured, or missing dependencies.
Agent Reach is an open-source multi-platform automation framework that requires proper configuration for each social media channel. The doctor command for debugging platform issues provides a systematic way to diagnose connectivity, authentication, and dependency problems across Twitter, Reddit, Bilibili, XiaoHongShu, and other supported backends.
How the Doctor Command Works Internally
Command Entry Point in agent_reach/cli.py
The diagnostic process begins in agent_reach/cli.py, where the CLI parser routes the doctor sub-command to the _cmd_doctor function. This entry point initializes the user configuration via Config() and orchestrates the health check workflow.
def _cmd_doctor(args=None):
from agent_reach.config import Config
from agent_reach.doctor import check_all, format_report
config = Config()
results = check_all(config)
# Outputs either Rich-formatted text or JSON
The function supports two output modes: a human-readable report rendered with the Rich library, or machine-readable JSON when --json is specified.
Health Check Execution in agent_reach/doctor.py
The core logic resides in agent_reach/doctor.py within the check_all function. This routine iterates over every channel registered via get_all_channels() (defined in agent_reach/channels/__init__.py), invoking channel.check(config) for each instance.
for ch in get_all_channels():
status, message = ch.check(config)
results[ch.name] = {
"status": status,
"name": ch.description,
"message": message,
"tier": ch.tier,
"backends": ch.backends,
}
Each channel returns a tuple containing a status (ok, warn, off, or error) and a descriptive message explaining the current state or missing requirements.
Report Generation and Output Modes
Results are processed through format_report, which aggregates channel states and renders a legend (✅ available, [!] requires configuration, [X] not installed) alongside per-tier groupings. The report includes a security warning if ~/.agent-reach/config.yaml has overly permissive file permissions.
When the --json flag is provided, the command bypasses Rich formatting and executes json.dumps(results) for programmatic consumption in CI pipelines or automation scripts.
Running the Doctor Command: Step-by-Step Workflow
Follow this systematic approach to diagnose and resolve platform integration issues:
-
Run a baseline health check with
agent-reach doctorto generate a color-coded overview of all channels. -
Capture machine-readable output using
agent-reach doctor --jsonfor scripts that programmatically determine which platforms are available. -
Identify channels with
warnoroffstatus in the report. The accompanying message specifies the missing configuration (e.g., "未配置 Twitter cookies" or "需要代理"). -
Apply the suggested fix, such as running
agent-reach configure twitter-cookies …or installing the required CLI tool liketwitter-cli. -
Verify file permissions if the report warns about
config.yamlbeing world-readable. Executechmod 600 ~/.agent-reach/config.yamlto prevent credential leakage.
Interpreting the Diagnostic Report
Understanding Status Symbols and Configuration Tiers
The report organizes channels into tiers based on setup complexity:
- Tier 0: Zero-configuration channels that work out-of-the-box (e.g., Reddit, provided the binary is installed).
- Tier 1: Channels requiring a free API key or login cookies (e.g., Twitter, XiaoHongShu).
- Tier 2: Optional integrations with complex setup requirements (e.g., Bilibili behind a proxy, Exa search).
Status indicators include:
- ✅
ok: Channel is fully operational and authenticated. - [!]
warn: Installed but requires additional configuration (e.g., proxy settings or cookie refresh). - [X]
offorerror: Missing dependencies or not installed.
Common Platform Issues and Solutions
| Symptom | Root Cause | Resolution |
|---|---|---|
[!] Bilibili — 需要代理 |
bilibili_proxy not set in config |
Run agent-reach configure proxy http://user:pass@ip:port |
[X] twitter-cli not installed |
shutil.which("twitter") returned None |
Execute pipx install twitter-cli or uv tool install twitter-cli |
[!] XHS cookies missing |
Cookie extraction failed or expired | Run agent-reach configure xhs-cookies "<header>" or use --from-browser |
Permission warning on config.yaml |
File is world-readable (mode 644) | Run chmod 600 ~/.agent-reach/config.yaml |
Practical Usage Examples
Generate a human-readable health report:
$ agent-reach doctor
Sample output:
Agent Reach 状态
========================================
图例:✅ 可用 [!] 已装但需配置/登录 [X] 未安装
✅ 装好即用:
✅ Twitter — 已登录
[!] Bilibili — 需要代理(未配置)
可选渠道(已安装):
✅ Reddit — 已安装
状态:3/5 个渠道可用
还有 2 个可选渠道可以解锁(XHS、YouTube),告诉你的 Agent「帮我装 XXX」即可
Capture structured data for automation:
$ agent-reach doctor --json | jq .
{
"twitter": {
"status": "ok",
"name": "Twitter",
"message": "已登录",
"tier": 0,
"backends": []
},
"bilibili": {
"status": "warn",
"name": "Bilibili",
"message": "需要代理(未配置)",
"tier": 0,
"backends": []
}
}
Summary
- The
doctorcommand aggregates health status from all channels viacheck_allinagent_reach/doctor.py, iterating over registered classes fromagent_reach/channels/__init__.py. - Status values include
ok,warn,off, anderror, with configuration tiers 0-2 indicating setup complexity from zero-config to optional advanced integrations. - Human-readable reports use Rich formatting with color-coded symbols, while
--jsonenables machine-readable output for CI integration. - Each diagnostic message includes specific remediation steps, such as running
agent-reach configure <platform>-cookiesor adjusting file permissions on~/.agent-reach/config.yaml.
Frequently Asked Questions
What does the "tier" field indicate in the doctor report?
The tier field categorizes channels by setup difficulty according to the source code in agent_reach/doctor.py. Tier 0 requires no configuration (e.g., Reddit), Tier 1 needs free API keys or login cookies (e.g., Twitter), and Tier 2 involves optional complex setup like proxy configuration for Bilibili or additional dependency installation.
How do I fix a "warn" status for a specific platform?
A warn status indicates the channel is installed but lacks required configuration. Follow the specific message returned by the channel's check method—for example, if Twitter shows a warning, run agent-reach configure twitter-cookies with your authentication headers. For Bilibili warnings, configure the proxy setting in config.yaml.
Can I use the doctor command in automated CI pipelines?
Yes. Append the --json flag to agent-reach doctor to output raw JSON instead of styled text. This allows shell scripts or CI jobs to parse the results programmatically using tools like jq to determine which platforms are available before executing platform-specific tasks.
Where does the doctor command check for configuration files?
The command loads settings via Config() from agent_reach/config.py, which reads ~/.agent-reach/config.yaml by default. The doctor utility specifically checks this file's permissions during execution and warns if it is world-readable, recommending chmod 600 to secure credentials stored in the configuration.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →