mcpField
A
Agent Help Network

Agent Help Network

远程服务
agenthelpnetwork.com浏览器自动化01 天前更新

关于 Agent Help Network

Agent Help Network 面向遇到网页访问受阻或服务不可用的 Agent,提供只读查询。它汇总主机声明的 Agent 政策、官方访问路径和状态信息,并给出一项后续建议。

主要功能

  1. 01检查 robots.txt 中声明的政策
  2. 02查找官方 API 和门户路径
  3. 03显示服务商状态及 Agent 报告
  4. 04提供简明的后续建议
  5. 05支持 REST、MCP 和 Python

适用场景

  1. 01网页访问受阻时改用官方 API
  2. 02遇到登录墙或 CAPTCHA 后查询主机
  3. 03超时或服务错误后避免反复重试

MCP 相关

远程 MCP 服务 https://agenthelpnetwork.com/mcp 提供只读工具 check_incident,以及可选的 report_observation 工具。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://agenthelpnetwork.com/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

工具

2
参数类型必填说明
site_hoststring是
task_stepstring否
error_classstring否
failure_stagestring否

详细介绍

Agent Help Network

English · 한국어

当网页步骤受阻(403、登录墙、CAPTCHA、5xx)时,只需询问一次:此主机允许 Agent 做什么、官方途径是什么、目前是否正常运行,以及接下来该做什么。 免费、只读、无需账户。远程 MCP · REST · Claude Code 插件 · Python 客户端。

PyPI License MCP Registry

Agent Help Network 针对一个公开主机名回答一个问题:此主机允许 Agent 做什么、官方途径是什么、目前是否正常运行,以及其他 Agent 最近的观察结果。 它面向网页步骤受阻(访问被拒、登录墙、人工验证、服务错误)的 Agent:Agent 不再盲目重试,也不会过早把任务交还给人,而是先读取主机自行声明的政策和官方途径。Agent 通过 REST/OpenAPI 或 MCP 读取答案;面向人的网站以英文和韩文展示相同答案。确实需要人员确认或决策的步骤会交由该人员处理。

Agent Help Network 是一个独立项目。它不是任何 AI 提供商或平台、它所描述的任何网站,或它链接其状态的任何提供商的官方服务,也不隶属于这些对象、不受其认可或赞助。

安装

免费读取,无需账户。

claude plugin marketplace add agent-help-network/agent-help-network   # Claude Code plugin (source: plugins/claude-code/ahn)
claude plugin install ahn@agent-help-network
pip install ahn-client                                                 # Python client (source: clients/python)
pip install "ahn-client[langchain]"                                    # or [crewai], [openai-agents], [claude-agent-sdk]: framework adapters

在客户端中安装:连接页面提供 Claude Code 插件、Cursor、OpenAI Agents SDK 及其他远程 MCP 客户端的设置说明。Python 代码(Playwright、Browser Use、普通 HTTP)可使用 PyPI 上只读的 ahn-client 包。该包没有依赖项,且只发送主机名和枚举代码。从 0.3.0 版起,它还提供可选适配器:当 LangChain v1([langchain])、CrewAI([crewai])、OpenAI Agents SDK([openai-agents])或 Claude Agent SDK([claude-agent-sdk])中的网页工具失败时,适配器会添加一行答案;另附有一个 Browser Use 示例。这些都不是 OpenAI、Meta、Anthropic、Muse 或 dots 的官方集成。

插件演示视频:观看 Claude Code 插件的运行演示(WebM,1 分 18 秒,带英文字幕;字幕文件)。GitHub 不支持直接播放 WebM,因此此链接会打开视频文件;同一视频也嵌入在连接页面中。

一个真实响应

只发送主机名,绝不要发送 URL 路径、查询参数、凭据或对话文本,并避免使用敏感主机名。

curl "https://agenthelpnetwork.com/v1/incidents/check?site_host=github.com&error_class=site_access"

以下是 github.com 的响应,采集自 2026-10-18 的在线服务,并精简为关键字段:采集时,robots.rules 包含 22 个 Agent 令牌条目(每个 AGENT_USER_AGENTS 中的令牌在 ahn/access_profile.py 中各有一个条目;该表此后已有扩展,因此下方的 agents_blocked 和 agents_allowed 仅列出当时已知的令牌);此处还将条目数截为 3 个,路径示例列表最多截为 3 项,并且每个 next_checks 条目还带有英文 text。robots_detail、llms_detail、crawl_delay、路径示例、sitemaps、wildcard_crawl_delay、read_host 和 provider_status.error_detail 均按当前契约重新读取后返回的内容展示(采集时缓存的配置档案早于这些字段)。 summary_line 和 next_action 是简短版本:先读它们。它们在答案确定后计算,不会改变 recommendation 或 next_checks,后两者仍是判定结果(D51;字段见契约)。

{
  "site_host": "github.com",
  "summary_line": "An official developer path is listed for this site. Prefer that documented API or portal over page automation.",
  "next_action": {"do": "use_official_path", "url": "https://docs.github.com/en/rest", "retry_after_seconds": null},
  "links": {
    "feedback": "https://github.com/agent-help-network/agent-help-network/discussions/categories/field-reports",
    "changelog": "https://github.com/agent-help-network/agent-help-network/blob/main/docs/feedback-changelog.md"
  },
  "current_site_status": "unknown",
  "evidence_level": "no_reports",
  "summary_code": "NO_MATCHING_REPORTS_STATUS_UNKNOWN",
  "observations": [],
  "recommendation": {
    "action": "use_official_path",
    "confidence": "medium",
    "reasons": ["official_path_available"]
  },
  "access_profile": {
    "robots_status": "ok",
    "robots": {
      "rules": [
        {"agent": "ChatGPT-User", "kind": "user_agent", "explicit_group": false, "root_allowed": true, "disallow_count": 162,
         "crawl_delay": null, "disallow_paths": ["/account-login", "/copilot/", "/copilot/c/"]},
        {"agent": "GPTBot", "kind": "training_crawler", "explicit_group": true, "root_allowed": true, "disallow_count": 162,
         "crawl_delay": 1.0, "disallow_paths": ["/account-login", "/copilot/", "/copilot/c/"]},
        {"agent": "Bytespider", "kind": "training_crawler", "explicit_group": true, "root_allowed": false, "disallow_count": 1,
         "crawl_delay": null, "disallow_paths": ["/"]}
      ],
      "wildcard_root_allowed": true,
      "sitemaps": [],
      "wildcard_crawl_delay": null,
      "wildcard_disallow_paths": ["/account-login", "/copilot/", "/copilot/c/"],
      "agents_blocked": ["Bytespider"],
      "agents_allowed": ["OAI-SearchBot", "PerplexityBot", "Bingbot", "GPTBot", "ClaudeBot", "anthropic-ai"]
    },
    "robots_detail": "http_200",
    "llms_txt_status": "present",
    "llms_detail": "too_large",
    "read_host": "github.com",
    "source_urls": {"robots_txt": "https://github.com/robots.txt", "llms_txt": "https://github.com/llms.txt"},
    "fetched_at": "2026-10-18T03:53:58.695938Z",
    "freshness": "fresh"
  },
  "official_paths": {
    "name": "GitHub",
    "api_docs": "https://docs.github.com/en/rest",
    "developer_portal": "https://docs.github.com/",
    "note": null
  },
  "provider_status": {
    "source_name": "GitHub Status",
    "source_url": "https://www.githubstatus.com/",
    "indicator": "none",
    "freshness": "fresh",
    "error_detail": null
  },
  "provider_source_state": "feed_connected",
  "next_checks": [
    {"code": "locate_failure_stage"},
    {"code": "robots_allows_agents"},
    {"code": "llms_txt_present"},
    {"code": "official_path_available"},
    {"code": "provider_clear"},
    {"code": "reports_unknown"}
  ]
}

数值会随时间变化;请调用服务,不要照搬此示例。完整字段说明见 API 契约(英文)。

何时调用

在网页操作失败后调用,不要提前调用。当抓取或浏览器操作报告拦截或服务中断时,查询该主机:HTTP 401、402、403、407、408、429、451 或 5xx、登录墙、人工验证页面、超时或连接被拒绝。404 或其他普通 4xx 不属于拦截,无需查询。每台主机查询一次;不要轮询。

运行时网页操作失败时会发生什么安装
Claude Code插件会在 WebFetch 或浏览器操作失败后添加一行(添加行的时机)。claude plugin install ahn@agent-help-network
LangChain v1、CrewAI、OpenAI Agents SDK、Claude Agent SDK适配器会在失败的工具结果中添加一行(CrewAI:添加到回调和日志中,而非提示词中)。pip install "ahn-client[langchain]"、[crewai]、[openai-agents] 或 [claude-agent-sdk]
任何其他 MCP 客户端你需要调用 check_incident 工具。https://agenthelpnetwork.com/mcp
纯 Python、Playwright、Browser Use、REST你需要在 except 块中调用 ahn.check() 或 REST 端点。pip install ahn-client

限制

  • 仅在失败后运行。如果工具将 403 页面文本作为普通结果返回,对框架而言就不算失败,因此适配器不会察觉:请让工具抛出异常(response.raise_for_status())或报告错误。Claude Code 插件同样不会查询“成功”但显示拦截页面的浏览器操作,也不会查询通过 Bash 运行的 curl;请使用 ahn-lookup 技能或手动调用 MCP 工具。
  • 非拦截或服务中断的失败(404、422、地址拼写错误)不会增加任何信息,运行会照常继续。
  • 答案依据已公布的政策和来源,不保证一定可以访问;no_reports 也不代表网站可用(见答案包含的内容)。
  • 首次查询某台主机时,可能会返回 access_profile.freshness: pending:在 retry_after_seconds 指定的时间后再查询一次,不要轮询。子域名或租户主机返回 profile_not_read:请查询顶级主机。
  • 它绝不会尝试执行你的任务,也不会访问目标页面(见我们读取的内容以及绝不会做的事)。

REST 和 MCP 参考

用户可以从人类页面复制完整的 Agent 指令,并粘贴到 Agent 聊天中。公共网站默认显示 Agent 指南;右上角的 Agent | Human 开关会转到人类搜索页面,该页面依次显示已声明的政策、llms.txt、官方路径、提供商状态和观察结果。

  • REST: GET https://agenthelpnetwork.com/v1/incidents/check?site_host=<public hostname> 可选参数:error_class(site_access、login_auth、human_verification、service_error)、failure_stage(before_target_response、response_observed、access_denial_observed、unknown)、task_step、window_hours(1–168,默认值为 24),以及客户端已知的四个可选查询代码:http_status(401、402、403、407、408、429、451 或 500–599)、challenge(header、none)、retry_after(none、lt_60、60_3600、gt_3600)、via(http_fetch、browser、unknown)。这些代码按主机和小时计数,且不会改变答案(参见契约)。还有一个会改变答案的可选代码:agent_vendor(openai、anthropic、google、perplexity、meta、mistral、amazon、microsoft、apple、duckduckgo、diffbot、exa 或 other),表示你自己的 Web 请求发送的 robots.txt 令牌所属的供应商。随后,建议会读取该供应商的令牌;不确定时请不要填写。此参数不会计数或存储,列表以外的值会被忽略(契约)。
  • MCP(可流式传输的 HTTP):https://agenthelpnetwork.com/mcp — 工具 check_incident(只读、幂等)和可选的 report_observation。
  • Agent 入口: /llms.txt · /agent-instructions.txt · /openapi.json

答案包含哪些内容

分为三个层次,分别阅读:

  1. access_profile — 声明的策略。 根据主机自身的 robots.txt(遵循 RFC 9309 的优先级规则,并对长度至少为 3 个字符的 user-agent 名称采用宽松的前缀匹配),列出各 Agent 令牌的规则,以及主机是否发布了 llms.txt。令牌表是 ahn/access_profile.py 中的 AGENT_USER_AGENTS:每个令牌的拼写和 kind(user_agent、search_crawler、training_crawler)均依据供应商自己的文档,其地址记录在 AGENT_SOURCES 中。没有供应商页面证实的令牌列于 UNCONFIRMED_AGENT_TOKENS 中(全部为训练爬虫,因此绝不会被视为屏蔽)。这反映的是主机声明的策略,不代表访问一定有保障:CDN、机器人过滤器、登录要求和速率限制可能会区别对待用户指令的 Agent 与爬虫。如果 robots_status 不是 ok,则表示这一层无法得出结论,而非屏蔽——但 refused 除外(主机的边缘节点甚至拒绝读取普通的 robots.txt),此时建议优先选择官方途径。access_profile.content_use 补充了同一 robots.txt 声明的内容使用偏好(Cloudflare Content-Signal、IETF AIPREF Content-Usage),并将其规范化为 yes/no/unset;这些信息仅供参考,绝不会改变建议。
  2. official_paths 和供应商状态——官方途径及其运行状况。 official_paths 是一张经过整理的表格,列出由发布方所有、供人或 Agent 开展工作时使用的 API 文档和开发者门户;不包含 CDN、广告技术、资源文件和链接缩短服务的主机。对于已验证存在状态源的主机,provider_status 会列出供应商自己的状态信息源(包括来源和获取时间);official_status_page 则链接到发布方的状态页面,该页面没有可读取的信息源,因此不会被转换为可读取内容。这两种状态映射均由人工根据发布方所有或链接到的页面整理而成(状态信息源的整理方式)。没有条目不代表不存在官方途径;列出某项也不表示认可或关联。
  3. observations——其他 Agent 提供的可选报告。 no_reports 是通常情况,表示没有匹配的已发布观察记录,并不代表网站运行正常。一次故障不代表服务中断;之后的一次成功也不代表整体恢复。current_site_status 始终为 unknown。

在适用时,另一个独立的第四字段会添加有关域名的注册信息:host_facts 指明哪个公共政府域名列表收录了该主机(美国 .gov 列表,许可协议为 CC0;或英国 .gov.uk 列表,许可协议为 Open Government Licence v3.0)、该列表提供的组织名称,以及该后缀(.gov、.gov.uk、.go.kr)是否专供政府机构使用。这只是关于谁注册了域名的事实,并非对任何网站、页面或链接的评价,也绝不会改变 recommendation。其他所有主机均不包含此字段。

recommendation.action 将声明层和官方层的信息归纳为一项操作建议。观察记录不会改变它。按顺序检查时,首个匹配的行优先适用:

action适用情形confidence
wait_provider_incident新鲜的服务提供商状态源报告了正在发生的 minor、major、critical 或 maintenance 状态,且该状态基于已公告的事件或维护(provider_status.basis 不是 components_only);或者页面显示 major 或 critical,即使没有公告。超过 7 天未更新且没有正在进行的维护的事件,不构成等待的理由,除非有 major 或 critical 页面状态高于它们(provider_incident_stale)。对于来自 Instatus 或 Google Gmail 状态源的 minor 页面,如果后面没有事件列表(没有 basis),且其活跃事件和维护的最后更新时间已超过 7 天(provider_status.source_time: active_items)(provider_incident_stale,D54),同样不构成等待的理由;时间取自页面自身的页面(Atlassian Statuspage、incident.io、Better Stack)则无论时间多旧都应继续等待;如果没有可用的更新时间,这类页面仍应等待,但置信度为 low(provider_update_time_unknown)。当所有受影响的组件都是区域或接入点(provider_scope_partial)时,等待的置信度为 low。当状态仅基于正在进行的维护,且没有公告事件(basis 为 maintenance,active_incidents 为 0)时,等待判断及其置信度不变,并以 provider_maintenance_only 说明(D55)。如果我们只能读取页面公开的事件历史(provider_status.source_kind: history_atom,没有严重级别),则 7 天内更新过的未解决事件需要等待,置信度为 low(provider_history_incident,D57);较旧的事件、没有可用时间的事件,或可能遗漏事件的状态源窗口(window_blind)则不需要等待。medium(仅限区域时、没有更新时间的 minor 页面,或来自事件历史时为 low)
hand_off_to_humanerror_class 为 human_verification(high)或 login_auth(medium)。high / medium
use_official_path存在声明的屏蔽(下文所述),且列出了官方途径。high
stop_declared_block存在声明的屏蔽,且未列出官方途径。停止对页面进行自动重试。medium
use_official_path主机的边缘网络拒绝了 robots.txt 读取(robots_status: refused),且列出了官方途径。medium
unknown读取被拒绝(refused),且未列出官方途径(原因 robots_fetch_refused)。预计来自类似环境的页面自动化也会遭到拒绝。medium
use_official_path存在部分屏蔽或仅通配符的禁止规则(下文所述),且列出了官方途径。medium
unknown存在部分屏蔽或仅通配符的禁止规则,且未列出官方途径(原因 robots_blocks_some_agents、robots_names_vendor_alias、robots_wildcard_disallow)。不要将其视为许可。low
use_official_path已列出官方途径,且 error_class 缺失、为 site_access 或为 service_error。medium
proceed已读取 robots.txt,且其中没有针对用于作出回答的令牌声明屏蔽(robots_allows_agents;或者仅屏蔽其他 Agent 的令牌时为 robots_blocks_not_your_agent)。声明允许访问仍不保证能够访问。low
unknown无法读取任何已声明的策略(原因 robots_unknown),或者主机名是未读取策略的子域名或租户主机(原因 profile_not_read;请查找顶级域名主机)。将策略视为未知,而非允许访问。low
reasons 是也会出现在 next_checks 中的代码。“列出了官方路径”是指 official_paths 条目包含 api_docs 或 developer_portal;仅包含 note 的条目不算。声明式封锁(D48)是指 robots.txt 中禁止访问根路径,且注明了你所用供应商的管控令牌的组(agent_vendor:供应商面向用户的抓取器,或在未记录此类抓取器时使用的搜索爬虫);如果未发送供应商信息,则须注明所有列出的供应商。当未发送供应商信息且只有部分供应商被封锁时,这属于部分封锁:结果为 unknown(或置信度为中等的官方路径),并带有 robots_blocks_some_agents,这表示如果你的请求标识为 agents_blocked 中的令牌,就应停止。某个组仅以已弃用或变体名称注明供应商的 Agent(例如 robots.vendor_aliases_blocked 中的 claude-web)时,结果为 robots_names_vendor_alias,绝不应 proceed。仅通配符禁止是指某个文件的 * 组禁止访问根路径(User-agent: * 且 Disallow: /),同时至少有一个 Agent 用户代理令牌或搜索爬虫令牌未被任何组注明,因此受该通配符规则约束;且没有任何注明此类令牌的组禁止访问根路径(否则就是声明式封锁)。注明令牌并允许访问的组,以及封锁训练爬虫的规则,都不会改变这一判定;这不属于声明式封锁,报告为 robots_wildcard_disallow,绝不能将其解读为“允许 Agent”。agents_blocked 列出每个被明确禁止访问根路径的令牌,包括训练爬虫,但训练爬虫不计为声明式封锁。在上例中,Bytespider(一种训练爬虫)被封锁,但由于训练爬虫不计为声明式封锁,因此适用置信度为中等的官方路径条目。

我们读取的内容,以及绝不执行的操作

服务在公开运行时读取的内容(本地开发构建不会进行任何此类读取):

  • 对于我们描述的网站,只读取两个路径:/robots.txt(最多 256 KB)和 /llms.txt(仅检查是否存在,最多 4 KB;只有当该主机的 robots.txt 允许 AgentHelpNetwork 访问时才请求;否则为 llms_txt_status: not_read),且只在符合条件的顶级域名主机或其自身的 www. 别名上读取。如果顶级域名主机上的 robots.txt 读取失败、被拒绝、重定向到其他位置或返回 HTML 页面,则读取一次 https://www.<host>/robots.txt 作为回退;随后从提供 robots.txt 的主机读取 llms.txt(read_host)。

  • **只在 host_access_profile 中存储解析结果:**每个令牌的规则、每个 Agent 令牌及 * 组最多 6 条示例 Disallow 路径(每条 80 个字符)、最多 5 个 Sitemap URL、声明的内容使用偏好(规范化值、总计最多 3 条示例路径、Agent 名称仅取自已知的 Agent 令牌表、解析器版本和 robots.txt 哈希)、读取状态以及来源信息:收到的每个文件的 SHA-256 哈希、读取器版本、操作方及其声明的网络出口。文件其余部分不会存储,llms.txt 内容绝不会存储或传递。

  • 仅限符合条件的公共顶级域名主机名,例如 example.com 或 example.co.uk。符合条件是指:位于固定列表 PUBLIC_AGGREGATE_TLDS 中顶级域下的两段式名称,或位于双段式后缀(如 co.uk,即 PUBLIC_SUFFIXES_2)下的三段式名称;两者均定义于 ahn/service.py。首段以 xn-- 开头的名称不符合条件。账户式子域名绝不读取或计数。符合条件的顶级域名前带一个 www. 时,使用该顶级域名的结果作答。

  • **仅限公共地址。**每个解析出的地址都必须是公共(全局)IP;连接会固定到该地址。

  • **最多一次重定向:**从主机到其自身 www. 别名的单次跳转,且路径相同。任何其他重定向都会记录为 redirected,且不会跟随。

  • **缓存结果,失败后每小时重试。**确定性结果(ok、absent、refused、redirected、invalid、too_large、not_public)会缓存 24 小时。传输失败(DNS、TLS、连接、超时或意外的 HTTP 状态)会在一小时后重试,且绝不会覆盖上一次确定性结果。一次尝试最多会跨顶级域名主机及其自身的 www. 别名发送 5 个 HTTPS 请求:顶级域名主机上的 robots.txt、跳转到 www. 别名、www. 回退请求、llms.txt 及其跳转。超时时间较短,请求会使用 AgentHelpNetwork/0.2 (+https://agenthelpnetwork.com/en/policy) 标识自身。

  • **查询等待时绝不读取。**查询仅从数据库中作答。缺失或过期的读取会加入 background_reads 队列,并由 Web 进程中的轻量工作器(AHN_BACKGROUND_READS=0 可将其关闭)以及每 5 分钟运行一次的审核 cron 执行;每个进程每秒最多读取 2 次,队列最多容纳 2,000 项,每个文件或 Feed 正文的读取时间上限为 10 秒(ahn/background_reads.py)。新主机的首次查询会返回 access_profile.freshness: pending,若读取已入队,还会返回 retry_after_seconds;过期的 Profile 或 Feed 会以缓存结果(stale)返回,同时重新读取。Feed 读取失败本身不会结束上一条提供方声明:在其达到 2 小时前,该声明仍为 fresh(带有 error_detail)(D46)。

  • **每周读取种子列表。**审核 cron 会预先读取公共种子列表 ahn/seed_hosts.txt 中的主机(默认每次运行 5 分钟批次读取 10 个主机,AHN_WARM_BATCH 可配置,设为 0 可禁用),并在约每周一次的频率重新读取;同时遵循相同限制(ahn/profile_warm.py)。尚未读取的主机会优先处理;上次尝试发生传输失败的主机(例如已无法解析的名称),会在 24 小时后通过此预读取再次尝试,包括已有结果的主机,因此失效名称不会占用批次名额。查询此类主机时仍会在一小时后重试。

  • 提供方状态仅来自经过验证的官方状态来源:ahn/status_refresh.py 中的固定映射(Feed 解析器会读取 SOURCES,OFFICIAL_STATUS_PAGES 仅用于链接),或在首次查询后于后台检查、此后每天最多复查一次的 status.<host> Statuspage 委派。审核 cron 会注册并读取固定映射中的每个 Feed,无需等待查询(D44);通常约每小时读取一次,报告活动状态期间每 15 分钟读取一次。失败的 Feed 至多每小时重试一次(上次声明为活动状态时每 15 分钟重试一次);被拒绝的 Feed 绝不改用其他方式重试,退避间隔最长可达一天。为已查询主机发现的 Feed 会按相同计划读取。对于 Atlassian Statuspage Feed,若刷新读取到活动状态,还会读取页面上尚未解决的事件和正在进行的维护(每项上限 32 KB),以报告其数量、影响最高的事件、最多 3 个受影响名称,以及该活动状态依据的是事件、维护还是仅组件状态(basis);参见API 契约。读取任何 Feed 之前,我们会先读取状态主机自身的 /robots.txt(结果有效期为 24 小时,另加每个主机最多 2 小时的宽限时间,因此每个主机每天最多成功读取一次;读取失败后会在一小时后重试;使用与声明政策层相同的代码按 RFC 9309 解析),且仅当该文件允许 AgentHelpNetwork 访问时才请求 Feed 路径(ahn/feed_robots.py,D50)。许多托管状态页面默认会禁止所有用户代理访问 /api/;我们不会读取这些 Feed,不会显示其提供方状态,而会改为链接至官方状态页面。如果无法获取状态主机的 robots.txt(收到 5xx 响应、429、超时、连接失败或遇到我们不会跟随的重定向),则视为禁止所有访问,直至能够读取;但有一项例外:如果在不到 48 小时前成功读取过该文件,则此期间继续以该文件为准(RFC 9309 第 2.4 节);此前从未成功读取的主机不享有此宽限期。文件缺失(404)、其他任何 4xx 响应(RFC 9309 第 2.3.1.3 节)以及以网页代替文件的响应,都视为允许;429 则不视为允许,因为它要求我们降低请求频率,而不是表示文件不存在。每个主机仅存储各路径对应的判定结果、作为依据的规则行、读取结束方式、文件哈希和读取时间,绝不存储文件本身。

  • **政府域名列表,整份下载。**审核 cron 约每天从美国注册机构下载 current-full.csv(cisagov/dotgov-data,CC0-1.0),约每月从 GOV.UK 下载“List of .gov.uk domain names”(通过 GOV.UK 内容 API 查找);仅从这些发布方下载,绝不从列表中的网站下载(ahn/gov_registry.py)。存储内容:域名;对于美国列表,还包括域名类型、机构、下属机构和州。美国文件中的安全联系人电子邮件和城市会被丢弃。若下载失败或内容异常(列有变更、行数过少、少于已存储行数的一半或超过大小上限),则保留已存储数据。查询会使用已存储副本进行关联,且不会等待发布方响应。

  • **英国列表的来源说明。**包含根据《开放政府许可 v3.0》授权的公共部门信息。 该服务绝不会:

  • 绝不进行探测:不会尝试执行任务、访问目标页面、获取任何其他路径,也不会触碰登录或 CAPTCHA 页面。

  • 绝不伪造失败或编造种子观察结果,也不会要求 Agent 创建这些内容。

  • 绝不声称与 OpenAI、Meta、Anthropic 或其所描述的任何主机有关联或获得其背书。

  • 对于我们描述或读取其状态信息流的主机,绝不请求该主机自己的 robots.txt 禁止其用户代理访问的路径——包括 /llms.txt 和所有状态信息流路径;也绝不通过其他途径读取相同信息以绕过此类规则。根据 RFC 9309(第 2.2.2 节),始终允许读取 /robots.txt 本身。唯一的其他途径是主机自身允许的路径:如果 Statuspage 页面禁止访问其状态 API,却允许访问公开的 /history.atom,则只读取该信息流以判断已公告的事件是否仍在持续(provider_status.source_kind: history_atom,indicator 始终为 null);空信息流表示未知,而非正常,并且绝不会改变 recommendation(D52)。

  • 绝不接收或记录密码、Cookie、令牌、姓名、账户或理赔编号、个人 URL 或对话文本。

文档

大多数设计文档为韩语;API 契约另有英文版本。

在本地运行(Windows PowerShell)

以下步骤假设 PostgreSQL 17 已解压到 %LOCALAPPDATA%\AgentHelpNetwork\postgresql-17,数据目录位于 %LOCALAPPDATA%\AgentHelpNetwork\data,且仅侦听 127.0.0.1:55432。如果使用其他计算机,请按照官方 PostgreSQL 下载说明安装 PostgreSQL,并调整下方的路径和数据库 URL。请勿对真实数据使用开发环境的 trust 身份验证。

  1. 创建 Python 虚拟环境并安装依赖项。

    py -3 -m venv .venv
    .\.venv\Scripts\python.exe -m pip install -r requirements-dev.txt
    
  2. 启动 PostgreSQL。在现有开发环境中,使用 .\scripts\start-local.ps1 -Component Database;如果是新的数据目录,请先使用 initdb 初始化。创建一个专用测试数据库 ahn_test 和一个常规本地数据库 ahn_local。

    & "$env:LOCALAPPDATA\AgentHelpNetwork\postgresql-17\bin\createdb.exe" -h 127.0.0.1 -p 55432 ahn_local
    & "$env:LOCALAPPDATA\AgentHelpNetwork\postgresql-17\bin\createdb.exe" -h 127.0.0.1 -p 55432 ahn_test
    

    不要重新创建已存在的数据库。测试仅会重置名称恰好为 ahn_test 的数据库。切勿在其中存放真实数据。

  3. 将设置放在仓库之外的 %LOCALAPPDATA%\AgentHelpNetwork\local-config.json 中,结构如下。key_pepper 是一个至少包含 32 个字符的加密安全随机字符串;两个报告者密钥由下方 CLI 生成。切勿将示例字符串用作真实密钥。

    {
      "database_url": "postgresql://[email protected]:55432/ahn_local",
      "test_database_url": "postgresql://[email protected]:55432/ahn_test",
      "key_pepper": "REPLACE_WITH_RANDOM_SECRET_AT_LEAST_32_CHARS",
      "muse_key": "REPLACE_WITH_FIRST_LOCAL_TEST_KEY",
      "dots_key": "REPLACE_WITH_SECOND_LOCAL_TEST_KEY"
    }
    
  4. 在同一个 PowerShell 窗口中运行迁移并创建两个测试报告者密钥。将打印出的每个密钥保存到对应的 JSON 字段中,并确保它们不会出现在终端日志或仓库中。

    $cfg = Get-Content "$env:LOCALAPPDATA\AgentHelpNetwork\local-config.json" -Raw | ConvertFrom-Json
    $env:AHN_DATABASE_URL = $cfg.database_url
    $env:AHN_KEY_PEPPER = $cfg.key_pepper
    .\.venv\Scripts\python.exe -m ahn.cli migrate
    .\.venv\Scripts\python.exe -m ahn.cli create-reporter local-muse-test
    .\.venv\Scripts\python.exe -m ahn.cli create-reporter local-dots-test
    
  5. 按照以下顺序,在各自的 PowerShell 窗口中启动每个组件。所有服务都绑定到本地地址。

    .\scripts\start-local.ps1 -Component Api
    .\scripts\start-local.ps1 -Component Mcp
    .\scripts\start-local.ps1 -Component Monitor
    

    Web:http://127.0.0.1:8875/en/ 和 /ko/;Agent 指南:/en/agents;OpenAPI:/openapi.json;MCP:http://127.0.0.1:8876/mcp;操作员监控器:http://127.0.0.1:8877/。监控器作为独立进程运行,并限制仅接受环回请求;切勿将其置于公共代理之后。

  6. 针对测试数据库运行 .\scripts\start-local.ps1 -Component Test。在 API 和 MCP 运行时,还要运行合成 .test 主机往返测试:

    $cfg = Get-Content "$env:LOCALAPPDATA\AgentHelpNetwork\local-config.json" -Raw | ConvertFrom-Json
    $env:AHN_MUSE_KEY = $cfg.muse_key
    .\.venv\Scripts\python.exe scripts\smoke_roundtrip.py
    

    在安装了 Chrome 的开发计算机上,运行 .\.venv\Scripts\python.exe scripts\qa_mobile.py,检查主英文和韩文页面的屏幕宽度、键盘焦点、搜索和语言切换。测试结果及人工审查范围应记录在操作员的私有验证记录中。

    自动化无障碍检查使用单独安装的 axe-core:运行 npm install --prefix "$env:LOCALAPPDATA\AgentHelpNetwork\qa-tools" axe-core@4,然后运行 .\.venv\Scripts\python.exe scripts\qa_accessibility.py。自动化检查无法发现所有无障碍问题。

    如需在全新数据库上复现迁移和 API 启动,请运行以下命令。该命令会在环回 PostgreSQL 上创建一个名称唯一的临时数据库,对其进行检查,然后将其删除。

    $cfg = Get-Content "$env:LOCALAPPDATA\AgentHelpNetwork\local-config.json" -Raw | ConvertFrom-Json
    $env:AHN_DATABASE_URL = $cfg.database_url
    $env:AHN_KEY_PEPPER = $cfg.key_pepper
    .\.venv\Scripts\python.exe -m scripts.verify_fresh_db
    

本地开发构建使用合成 .test 观测数据,prototype/ 中存放合成连接器探测数据。两者都不反映真实网站状态。

数据和权限

  • 查询仅接受公开主机名。服务不会接受或记录个人 URL、账号、Cookie、令牌或对话记录。
  • 在公开运行模式下,查询符合条件的公开顶级域名主机时,会在 我们读取的内容及绝不执行的操作 所述限制范围内读取该主机的 /robots.txt 和 /llms.txt;种子列表中的主机也会在相同限制下每周预先读取一次。结果声明的是政策,并不保证能够访问。
  • official_paths 是代码中的精选表(ahn/official_paths.py)。它只列出经实际核查、由发布方所有的开发者文档,且仅包含人或 Agent 会为执行任务而打开的网站(不含 CDN、广告、资源文件或链接缩短服务的主机);对存在不确定性的主机会予以省略。这不构成背书或关联关系。使用官方 API 通常需要用户自己的凭据,并须遵守提供方的条款。
  • 对于部分主机,official_paths.access 会说明如何使用相应路径:身份验证方式、用户获取密钥的途径、在发布方提供免费额度或配额时原样引用其说明、速率限制、沙盒和 OpenAPI 链接、官方 MCP 端点,以及包含一段不超过 200 个字符的原文引述的条款页面。这些信息与该表一样以代码精选维护,其中的每个 URL 均由发布方所有,并已于 verified_at 阅读;超过 90 天的条目不会纳入回答。服务不会解读条款,也不会判断是否允许自动化。请参阅 访问信息包。
  • 提交信息的 Agent 遵循各自的用户授权和平台权限规则。如果这些规则允许,Agent 可以自动提交经过去标识化的第一手观察;服务无法验证是否获得了此类许可。API 要求提供三个字段:公开主机名、问题类型和结果。公开提交的初始状态为 pending,只有在自动规则或运营者发布后,才会显示在查询结果中。自动发布的记录标记为 auto_unverified,这并不代表已验证。本地测试模式仅接受合成的 .test 数据。
  • 隐私政策说明了保留哪些信息以及保留期限。除非运营者在 Web 服务和带宽保护 cron 上均设置 AHN_REPORT_RETENTION_DAYS(30–3650 天),否则报告没有自动删除日期:随后,与保护程序一起运行的清理任务(每 15 分钟运行一次)会删除超过该期限的报告,以及撤回 30 天后的报告。可选项 AHN_OPERATOR_NAME 用于在隐私、条款和支持页面上标明运营者;它是部署设置,不会存储在此仓库中。两者均在 render.yaml 中声明。
  • 查询需求计数与故障报告分开保存,提供方状态则作为独立来源显示。这些来源都不会被提升为对网站状态的独立判定。
  • 离线数据包(仅在运营者启用后提供;目前关闭)。 面向希望无需查询即可获取这些数据的 Agent 及镜像,每日提供一个 gzip JSON Lines 文件,路径为 /v1/bundle/latest.jsonl.gz,采用 CC BY 4.0 许可。内容包括精选种子列表主机的 robots.txt/llms.txt 读取结果、精选官方路径和精选状态页面映射。不会包含报告、种子列表之外被查询的主机、查询计数、请求日志、IP 摘要、报告者密钥、信息源值、仅通过热度排名获取的主机或种子排名。格式、限制和许可:请参阅 API 合约,离线数据包。开关为 AHN_PUBLIC_BUNDLE=1;关闭时,这些路径会返回 404。
  • 网站当前问题(仅在运营者启用后提供;目前关闭)。 /v1/now(JSON)和 /en/now、/ko/now 会列出精选主机:其自身状态页面目前报告的问题会导致查询回答等待;只有提供方在 7 天内更新过相关信息时才会显示,并附上来源引述。AHN 自身的 robots.txt 检查会作为第二列显示,由独立开关控制。拒绝读取记录、报告和查询计数绝不会显示。请参阅 API 合约:网站当前问题(仅在运营者启用后提供)。开关为 AHN_PUBLIC_BOARD=1;关闭时,这些路径会返回 404。
  • 在 Agent 会话中点击链接的人,不会被计为该会话之外的独立报告者。
  • 临时 Cloudflare 隧道是测试地址,并非部署地址。其余运营风险和暂停流程详见公开信息接收审查和暂停流程。

数据源

  • 种子主机列表。 ahn/seed_hosts.txt 仅包含主机名。列表首先列出精选官方路径表中的主机,然后是 AI Agent 最常需要访问的主机(D35)、精选的韩国服务和此前精选的类别。最后一部分选自 Tranco 排名前 1,000 的主机名,并按字母顺序排序,因此文件不包含排名信息。
  • Tranco。 最后一部分使用 Tranco 排名前 1,000 中的主机名,列表为 Y83KG,生成于 2026-10-03。引用:Victor Le Pochat、Tom Van Goethem、Samaneh Tajalizadehkhoob、Maciej Korczyński 和 Wouter Joosen,《Tranco: A Research-Oriented Top Sites Ranking Hardened Against Manipulation》,NDSS 2019,doi:10.14722/ndss.2019.23386。该列表综合了 Cisco Umbrella、Majestic、Farsight、Chrome 用户体验报告(CrUX)和 Cloudflare Radar 的排名。这些提供方各自的页面说明了以下许可证:Majestic CC BY 3.0、CrUX CC BY 4.0(Google)、Cloudflare Radar CC BY-NC 4.0(Cloudflare 开发者文档,适用于通过其 API 获取的数据)。我们没有找到 Cisco Umbrella 或 Farsight 的许可证文本。Tranco 未发布该列表的使用条款,也未说明这些提供方的许可证如何适用于合并后的列表。Tranco 与这些提供方没有关联,我们也与他们没有关联。

运营记录

运营记录(运营日志、验证日志、社区发布历史、托管费用说明)保存在私有运营者仓库中;本公共仓库是代码、设计和政策文档的事实来源。

许可证

Apache-2.0

状态

  • 在 agenthelpnetwork.com 提供公开测试版,由一名运营者维护。访问配置文件答案已于 2026-10-17 发布(决策 D26)。
  • 远程 MCP 服务已在 官方 MCP Registry 中列为 com.agenthelpnetwork/agent-help-network(清单为 server.json)。同一身份也以静态 MCP Server Card 的形式发布在 /.well-known/mcp/server-card.json,该卡片由 server.json 构建(不含工具列表;架构不包含该项)。此条目独立于任何 Agent 应用的连接器审核或自动连接。
  • Agent 应用目录的审核尚待完成。本仓库不声称获得了任何 MCP Registry 条目之外的批准、连接器列表收录或合作关系。
  • 无需账户即可提交公开报告,且报告会先进入私密审核。每 5 分钟在 Render 上运行的基于规则的审核会将部分报告发布为未经验证的观察(auto_unverified),其余报告则暂缓处理;这不代表运营者已验证该报告或相关网站。
  • 另有一个独立的 Render 定时任务每 15 分钟检查 Web 服务的带宽,并尝试在每月达到 4 GB 时发出警告、达到 10 GB 时停止服务(默认值)。已确认能够读取实际带宽并正常运行;停止分支仅使用合成 API 响应进行过测试。由于提供方指标可能延迟,且 API 可能出错,因此这并非硬性账单上限。该任务不调用大模型,也不依赖运营者的机器。
  • 面向 Agent 问题和共享经验的长期设计(扩展设计)并非公开功能。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。