关于 Agent Help Network
Agent Help Network 面向遇到网页访问受阻或服务不可用的 Agent,提供只读查询。它汇总主机声明的 Agent 政策、官方访问路径和状态信息,并给出一项后续建议。
主要功能
- 01检查 robots.txt 中声明的政策
- 02查找官方 API 和门户路径
- 03显示服务商状态及 Agent 报告
- 04提供简明的后续建议
- 05支持 REST、MCP 和 Python
适用场景
- 01网页访问受阻时改用官方 API
- 02遇到登录墙或 CAPTCHA 后查询主机
- 03超时或服务错误后避免反复重试
MCP 相关
远程 MCP 服务 https://agenthelpnetwork.com/mcp 提供只读工具 check_incident,以及可选的 report_observation 工具。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://agenthelpnetwork.com/mcpclaude mcp add --transport http com-agenthelpnetwork-agent-help-network https://agenthelpnetwork.com/mcp{"mcpServers":{"com-agenthelpnetwork-agent-help-network":{"type":"http","url":"https://agenthelpnetwork.com/mcp"}}}在 Cursor 中打开{"servers":{"com-agenthelpnetwork-agent-help-network":{"type":"http","url":"https://agenthelpnetwork.com/mcp"}}}在 VS Code 中打开{"mcpServers":{"com-agenthelpnetwork-agent-help-network":{"type":"http","url":"https://agenthelpnetwork.com/mcp"}}}{"mcpServers":{"com-agenthelpnetwork-agent-help-network":{"serverUrl":"https://agenthelpnetwork.com/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
2| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| site_host | string | 是 | |
| task_step | string | 否 | |
| error_class | string | 否 | |
| failure_stage | string | 否 |
详细介绍
Agent Help Network
English · 한국어
当网页步骤受阻(403、登录墙、CAPTCHA、5xx)时,只需询问一次:此主机允许 Agent 做什么、官方途径是什么、目前是否正常运行,以及接下来该做什么。 免费、只读、无需账户。远程 MCP · REST · Claude Code 插件 · Python 客户端。
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
答案包含哪些内容
分为三个层次,分别阅读:
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声明的内容使用偏好(CloudflareContent-Signal、IETF AIPREFContent-Usage),并将其规范化为yes/no/unset;这些信息仅供参考,绝不会改变建议。official_paths和供应商状态——官方途径及其运行状况。official_paths是一张经过整理的表格,列出由发布方所有、供人或 Agent 开展工作时使用的 API 文档和开发者门户;不包含 CDN、广告技术、资源文件和链接缩短服务的主机。对于已验证存在状态源的主机,provider_status会列出供应商自己的状态信息源(包括来源和获取时间);official_status_page则链接到发布方的状态页面,该页面没有可读取的信息源,因此不会被转换为可读取内容。这两种状态映射均由人工根据发布方所有或链接到的页面整理而成(状态信息源的整理方式)。没有条目不代表不存在官方途径;列出某项也不表示认可或关联。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_human | error_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 契约另有英文版本。
- API 契约(英文) · API 계약(韩语)
- 架构 · 决策 · 需求 · 构建计划 · 开发流程
- 屏幕设计 · 测试计划 · 安全运维 · 滥用控制 · 分析与监控
- 发现与冷启动 · 产品研究(2026-10-06) · 自愿公开测试版
- 公开提交审核与暂停流程 · 条款草案
- 初始设计提案和时间比较是早期研究记录;其中的一些测试状态属于历史记录。
- LangChain 软件包
langchain-ahn(适用于 LangChain Agent 的查询工具和中间件) - Python 客户端
ahn-client及其框架适配器(LangChain、CrewAI、OpenAI Agents SDK、Claude Agent SDK、Browser Use) · Claude Code 插件 · MCP Registry 清单 - 贡献指南 · 反馈变更日志(收到的建议及其处理结果) · 安全政策
在本地运行(Windows PowerShell)
以下步骤假设 PostgreSQL 17 已解压到 %LOCALAPPDATA%\AgentHelpNetwork\postgresql-17,数据目录位于 %LOCALAPPDATA%\AgentHelpNetwork\data,且仅侦听 127.0.0.1:55432。如果使用其他计算机,请按照官方 PostgreSQL 下载说明安装 PostgreSQL,并调整下方的路径和数据库 URL。请勿对真实数据使用开发环境的 trust 身份验证。
-
创建 Python 虚拟环境并安装依赖项。
py -3 -m venv .venv .\.venv\Scripts\python.exe -m pip install -r requirements-dev.txt -
启动 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的数据库。切勿在其中存放真实数据。 -
将设置放在仓库之外的
%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" } -
在同一个 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 -
按照以下顺序,在各自的 PowerShell 窗口中启动每个组件。所有服务都绑定到本地地址。
.\scripts\start-local.ps1 -Component Api .\scripts\start-local.ps1 -Component Mcp .\scripts\start-local.ps1 -Component MonitorWeb:
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/。监控器作为独立进程运行,并限制仅接受环回请求;切勿将其置于公共代理之后。 -
针对测试数据库运行
.\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 与这些提供方没有关联,我们也与他们没有关联。
运营记录
运营记录(运营日志、验证日志、社区发布历史、托管费用说明)保存在私有运营者仓库中;本公共仓库是代码、设计和政策文档的事实来源。
许可证
状态
- 在 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 问题和共享经验的长期设计(扩展设计)并非公开功能。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。