news 2026/9/26 15:05:51

OpenAgenet(OAN)初探:面向智能体互联网的资源注册与发现基础设施

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
OpenAgenet(OAN)初探:面向智能体互联网的资源注册与发现基础设施

1. 智能体互联网里,资源注册与发现为什么总卡壳

OpenAgenet(OAN)是一个面向智能体互联网的开源基础设施项目,核心解决的是智能体资源从“散落各处”到“可注册、可发现、可验证”的问题。它适合正在做 Agent 工具平台、MCP Server、企业内部智能体网关的开发者,也适合想理解智能体互联网资源治理思路的技术人。简单说,OAN 想做的事情是:让每一个 MCP Server、Agent Skill、工具 API、知识服务都能以结构化身份被发布、被检索、被授权使用,而不是靠 README 里贴链接、配置文件里手改 endpoint。

我最近在搭一个多 Agent 协作的小系统,Agent 需要动态调用外部工具服务。一开始的做法很原始:每个工具地址写死在配置里,换一个环境就改一遍,第三方服务能不能用全靠人肉判断。做着做着就发现,问题不在“能不能调”,而在“资源怎么被统一表达、怎么被信任、怎么被机器自动发现”。OAN 切的正是这类基础问题,它把资源抽象成可注册、可校验、可发现、可分发的结构化对象,定位更接近智能体互联网里的资源基础设施,而不是一个普通资源目录。

这篇内容会从工程落地角度出发,给出可复制的配置骨架(settings.json / config.toml)和验证动作,帮你在本地快速完成接入与连通性检查。过程中会用到 TaoToken 作为模型调用与 API Key 管理的入口,方便你在验证资源发现结果时直接跑通一次真实请求。

2. 前置准备:TaoToken 接入与 OAN 本地环境

在开始配置 OAN 之前,需要先准备好两样东西:一个可用的模型调用通道,以及 OAN 的本地运行环境。模型通道这边我用的是 TaoToken,它的作用是提供统一的 API 入口和 Key 管理,后面验证资源发现结果时会用它发一次真实请求,确认整条链路是通的。

TaoToken 的官网入口是 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,API 地址是 https://taotoken.net/api 。你需要先在控制台创建一个 API Key,具体在 https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_content=console&utm_campaign=rewrite 里操作,Key 管理页面在 https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api-keys&utm_campaign=rewrite 。创建好之后把 Key 存到环境变量里,后面配置文件会引用它。

OAN 这边,你需要从 GitHub 拉取项目,确认本地有 Node.js 或 Python 运行环境(具体看项目 README 的技术栈说明)。我实测下来,OAN 的注册节点和发现节点可以本地起,Indexer 也可以单机跑,适合先做连通性验证。如果你只是想先理解资源发现的结果长什么样,也可以直接用模型对话页面 https://taotoken.net/models?utm_source=taotoken_aicg_blog_end&utm_content=models&utm_campaign=rewrite 发一次请求,看看语义发现返回的结构。

环境变量建议这样设置,避免 Key 硬编码进配置文件:

export TAOTOKEN_API_KEY="sk-你的key" export OAN_NODE_ENV="local" export OAN_REGISTRY_ENDPOINT="http://127.0.0.1:8787" export OAN_DISCOVERY_ENDPOINT="http://127.0.0.1:8788"

注意:OAN 的注册节点和发现节点端口在不同版本里可能不同,以你拉取的项目 README 为准。上面端口只是我本地验证时用的示例。

3. 可复制配置骨架:settings.json 与 config.toml

OAN 的配置分两层:一层是节点自身的运行配置,通常用 config.toml;另一层是资源注册与发现时用的元数据配置,常见形式是 settings.json。下面给出我本地验证通过的骨架,你可以直接复制后改字段。

先看 config.toml,它负责节点身份、授权域和 Indexer 连接:

[node] name = "oan-local-registry" role = "registry" listen = "127.0.0.1:8787" env = "local" [identity] did = "did:oan:local:registry-001" authorized_domains = ["local.test", "internal.demo"] [indexer] endpoint = "http://127.0.0.1:8789" index_batch_size = 32 sync_interval_seconds = 15 [discovery] endpoint = "http://127.0.0.1:8788" semantic_enabled = true max_results = 20 [model] provider = "taotoken" api_base = "https://taotoken.net/api" api_key_env = "TAOTOKEN_API_KEY"

再看 settings.json,它描述一个待注册资源的元数据。这里我以一个 MCP Server 为例:

{ "resource_id": "oan:resource:mcp-doc-search-001", "type": "mcp_server", "name": "doc-search-mcp", "version": "0.1.0", "owner_did": "did:oan:local:owner-001", "authorized_domains": ["local.test"], "capability_tags": ["document_search", "knowledge_retrieval"], "endpoint": "http://127.0.0.1:9100/mcp", "description": "用于本地文档检索的 MCP Server,支持语义查询", "semantic_profile": { "intent": "根据任务意图检索本地知识库文档", "input_schema": "query:string", "output_schema": "documents:array" } }

这两个文件的关系是:config.toml 决定节点怎么跑、信任哪些域;settings.json 决定一个资源长什么样、能被谁发现。注册时,注册节点会读取 settings.json,做元数据校验和授权域检查,然后写入 Indexer。

如果你用的是 Claude Code 或类似编码 Agent 做本地调试,可以把模型通道指向 TaoToken 的 Coding Plan 入口 https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding-plan&utm_campaign=rewrite ,这样在写配置和排障时可以直接让 Agent 帮你检查字段。

4. 验证请求:注册、发现与连通性检查

配置写好后,第一步是启动注册节点和发现节点。假设你已经按项目 README 装好依赖,启动命令大致如下:

# 启动注册节点 oan registry --config ./config.toml # 另开一个终端启动发现节点 oan discovery --config ./config.toml # 启动 Indexer oan indexer --config ./config.toml

节点起来后,先做一次资源注册。用 curl 把 settings.json 提交到注册节点:

curl -X POST http://127.0.0.1:8787/v1/resources/register \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $TAOTOKEN_API_KEY" \ -d @settings.json

如果返回里带有resource_id和status: "registered",说明注册成功。接着做发现验证,这里用语义查询而不是关键词:

curl -X POST http://127.0.0.1:8788/v1/discover \ -H "Content-Type: application/json" \ -d '{ "intent": "我需要一个能检索本地文档并返回相关段落的服务", "top_k": 5, "authorized_domain": "local.test" }'

预期返回是一个资源列表,里面应该包含你刚注册的doc-search-mcp,并且带有 capability_tags 和 endpoint。如果返回为空,先检查 authorized_domains 是否匹配,再看 Indexer 是否同步完成。

最后做一次端到端连通性检查:用 TaoToken 的模型对话接口发一次请求,让模型根据发现结果决定调用哪个资源。模型对话入口在 https://taotoken.net/models?utm_source=taotoken_aicg_blog_end&utm_content=models&utm_campaign=rewrite ,你可以直接用 curl 验证:

curl -X POST https://taotoken.net/api/v1/chat/completions \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $TAOTOKEN_API_KEY" \ -d '{ "model": "gpt-4o-mini", "messages": [ {"role": "user", "content": "根据发现结果,doc-search-mcp 是否适合做本地文档检索?"} ] }'

如果模型能正常返回内容,说明模型通道没问题;再结合发现接口的返回,整条“注册—发现—调用”链路就验证完了。

5. 本篇常见错排查

注册返回 401 或 403:先确认 Authorization 头里的 Key 是不是从 TaoToken 控制台创建的,Key 管理页面在 https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api-keys&utm_campaign=rewrite 。另外检查 config.toml 里的 authorized_domains 是否包含 settings.json 里的域,不匹配会被拒绝。

发现接口返回空列表:最常见的原因是 Indexer 还没同步。可以等一个 sync_interval_seconds 周期再试,或者手动触发一次索引重建。另一个原因是 semantic_enabled 没开,语义发现会退化成关键词匹配,意图描述对不上就查不到。

节点启动报端口占用:OAN 默认端口可能和你本地其他服务冲突。改 config.toml 里的 listen 字段即可,但记得同步改环境变量里的 endpoint,否则注册和发现会指向旧端口。

模型调用返回 404 或超时:检查 api_base 是不是写成了 https://taotoken.net/api ,不要多加路径。如果用的是 Coding Plan,确认入口是 https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding-plan&utm_campaign=rewrite ,不同入口的鉴权方式可能不同。

DID 格式校验失败:OAN 对资源身份有格式要求,did:oan:local:xxx 这种前缀不能少。如果你从别处复制了 DID,先确认前缀和本地节点配置一致。

提示:排障时优先看注册节点和发现节点的日志,OAN 的校验失败通常会在日志里给出具体字段名,比盲猜快很多。

6. 下一步:把资源发现接进你的 Agent 工作流

本地验证跑通之后,下一步就是把 OAN 的发现接口接进你的 Agent 运行时。比较务实的做法是:在 Agent 的工具选择环节,先调一次发现接口,把返回的资源列表作为候选工具集,再让模型根据任务意图做二次筛选。这样你不需要把所有工具都塞进 prompt,而是按需发现、按需加载。

如果你在做长期编码或 Agent 自动化,可以走 TaoToken 的 Coding Plan https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding-plan&utm_campaign=rewrite ,把模型调用和资源发现串成一条流水线。接入文档在 https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite ,里面有 API 参数和鉴权细节,配置时对着改字段就行。Claude Code 相关的接入说明在 https://taotoken.net/claudecode?utm_source=taotoken_aicg_blog_end&utm_content=claudecode&utm_campaign=rewrite ,如果你用 Claude Code 做本地调试,可以参考里面的环境变量设置。

OAN 这类项目的价值不在于它现在有多完整,而在于它把资源身份、授权边界、语义发现、节点协作这几个问题摆到了工程层面。你不需要一次接完所有能力,先把注册和发现跑通,再逐步把内部工具、MCP Server、Skill 纳入统一治理,这条路是可以一步步走的。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/26 15:05:49

高精度RTC与协议桥接芯片协同实现可信物联网通信

1. 从“设备到云”通信的物理层断点说起:为什么NTP5332和R7KA8T2LFLCAC不是随便选的两个型号你有没有遇到过这样的情况:设备端明明采集到了温湿度、电流、振动数据,也配好了Wi-Fi或4G模块,但后台平台就是收不到一条有效报文&#…

作者头像 李华
网站建设 2026/9/26 15:04:28

LLM应用上线后更焦虑?AgentOps可观测性体系实战指南

1. 为什么 LLM 应用上线后反而更让人睡不着觉 做过传统后端服务的同学大概都有个共识:接口上线之后,只要 CPU、内存、QPS、错误率这几条曲线不飘,晚上基本能睡个安稳觉。但换成 LLM 应用和 AI Agent,这套经验基本失效。我身边不少…

作者头像 李华
网站建设 2026/9/26 15:03:41

AI Agent工程化:从一锅炖到分层交付的五层架构实践

1. 从"一锅炖"到"分层交付":AI Agent 工程化的分水岭 如果你最近在折腾 AI Agent,大概率经历过这样的场景:Demo 阶段一切丝滑,模型能聊天、能调工具、能给出看起来靠谱的答案,你信心满满准备上线。…

作者头像 李华
网站建设 2026/9/26 15:03:36

AI 发展下的 MCP 配置实战:用 TaoToken 统一 Key 打通 Cline 与 CC Switch

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/26 15:02:53

Atlas 300V实战:部署YOLO推理模型的关键步骤与避坑指南

Atlas 300V这块卡,我最早是在一个做边缘视频分析的客户机房里见到的。当时那边工程师一脸无奈地跟我说,显卡跑YOLO太费电,机箱里塞了四块卡,电源和散热都顶不住,才换了Atlas来做推理。结果卡到了之后,他们第…

作者头像 李华
网站建设 2026/9/26 15:02:20

基于大数据反电信诈骗系统:Python课程设计完整项目实战解析

简介:一套基于大数据反电信诈骗管理系统的Python课程设计项目源码包,面向高校计算机、大数据专业学生及安全领域初级开发者。系统整合大数据分析、NLP与机器学习,覆盖实时通信监控、智能报告、用户反馈、风险评估等核心模块,并配有…

作者头像 李华