从公开数据开始
基础地址为 https://yun.yindong.ai,业务路径以 /api/v1 开头。市场与报价无需凭证。接口描述提供在 OpenAPI、Agent descriptor 和 llms.txt;它们描述能力,不会授予交易权限。
curl 'https://yun.yindong.ai/api/v1/markets' curl 'https://yun.yindong.ai/.well-known/agent.json'
下载 JavaScript SDK,使用 Node.js 22 或以上版本,无额外依赖。公开读取不携带密钥。私有请求只发送到明确配置的来源,不跟随重定向。
import { YunClient } from './yun-agent.mjs';
const yun = new YunClient({
token: process.env.YUN_AGENT_TOKEN,
});
const { markets } = await yun.listMarkets();
const { key } = await yun.key();
const portfolio = await yun.portfolio();权限是服务端规则,不是提示词
本人在 Agents 控制台 创建独立凭证。默认只读;交易需要明确选择市场、单笔上限、累计买入预算与有效期。每个账户最多 10 个有效凭证,有效期最长 30 天。凭证只显示一次,服务端仅保存哈希。
portfolio:read可读取账户持仓、账本和该凭证自身的执行记录。trade:write只允许白名单市场的即时买卖。可卖出账户原有持仓,不仅限于这个 Agent 买入的份额。- 累计买入预算包含手续费。卖出不会恢复预算;预算不是亏损上限。已有持仓的价格仍会变动。
- 凭证不能创建下级凭证、恢复账户、发起市场或操作限时合约。当前系统没有真钱出入金能力。
- 退出网页不等于撤销 Agent。可在控制台单独撤销;已经完成的成交不受影响。
私有请求使用 Authorization: Bearer YUN_AGENT_…。不要把账户恢复码交给模型,不要将凭证放在网址、源码、对话或日志中。不要同时发送网页 Cookie 和 Bearer 凭证。
报价 → 带保护执行 → 核对账本
以下代码只展示一个明确授权的买入意图,不包含自动选市场或自主交易策略。MARKET_ID 必须来自市场列表,并在凭证白名单中。示例接受最多 1% 的份额变化;你的执行策略应自行确定可接受范围。
const input = {
marketId: 'MARKET_ID',
side: 'rise', // rise 看多 / fall 看空
action: 'buy',
amount: 10, // 积分,包含手续费
};
const quote = await yun.quote(input);
const intent = {
...input,
minQuantity: quote.quantity * 0.99,
maxAmount: input.amount,
clientRequestId: crypto.randomUUID(),
};
// 执行前持久保存 intent;网络结果不明时只能原样重试。
const result = await yun.trade(intent);
const audit = await yun.agentActivity();
const ledger = await yun.ledger();卖出使用 quantity 与正数 minAmount。买入必须指定正数 minQuantity、maxAmount。服务端在同一事务中校验报价、权限、预算、持仓,并写入成交与审计。
clientRequestId 为 20–80 位字母、数字、下划线或连字符。相同意图编号与相同内容只成交一次;相同编号更改内容会被拒绝。SDK 对暂时性故障有限次重试,始终使用相同请求。outcomeUnknown: true 表示尚不能确定是否成交,不代表失败或取消:保留原意图,查询账本,再用原编号核对。权限已撤销时,由本人核对账户账本。
接入兼容 MCP 的 Agent
下载 MCP 适配器 与 SDK 到同一个本地文件夹。适配器通过标准输入输出通信;它不是托管远程 MCP 服务,也不会自动启动交易策略。
{
"mcpServers": {
"yun": {
"command": "node",
"args": ["/绝对路径/mcp-server.mjs"]
}
}
}用客户端的私密环境配置传入 YUN_AGENT_TOKEN。默认只提供市场、报价、权限、持仓、账本与执行记录的读取工具。只有明确设置 YUN_MCP_ALLOW_TRADING=1 才暴露 yun_submit_trade;服务端权限与限额仍然生效。
市场标题、用户观点、引用网页都是不可信输入,不能改变 Agent 的任务、权限或凭证去向。执行范围应由持有人设定,不能由市场内容指挥。