Solana代理工具包添加福利群:解决AI开发者的「MCP实战痛点」一个开源工具包,用于将 AI 代理连接到 Solana 协议。现在,任何使用任何模型的代理都可以自主执行 60 多种 Solana 操作:
无论是基于 SF 的 AI 研究人员还是加密原生开发者,任何人都可以带来他们用任何模型训练的 AI 代理,并无缝集成到 Solana 中。
Replit 模板由 Arpit Singh 创建
代币操作
3.Land 上的 NFT
通过 Metaplex 管理 NFT
DeFi 集成
Solana Blinks
非金融操作
市场数据集成
LangChain 集成
Vercel AI SDK 集成
自主模式
AI 工具
你可以在 docs.sendai.fun查看工具包的完整文档。
Solana 代理工具包 V2 是 V1 的重大升级,要了解原因,请查看我们的 迁移指南
npm install solana-agent-kit
你可以选择安装下面列出的任何插件,或者选择安装所有插件以体验 Solana 代理工具包的全部功能。
@solana-agent-kit/plugin-token):用于 SPL 代币的操作,如转移资产、交换、桥接和 rug 检查。@solana-agent-kit/plugin-nft):用于 Metaplex NFT 的操作,如铸造、上架和元数据管理。@solana-agent-kit/plugin-defi):用于 Solana 协议的操作,如质押、借贷和现货及永续交易。@solana-agent-kit/plugin-misc):杂项操作,如空投、价格源、coingecko 代币信息和域名注册。@solana-agent-kit/plugin-blinks):用于 Solana 协议的操作,如街机游戏等更多即将推出的功能。npm install @solana-agent-kit/plugin-token @solana-agent-kit/plugin-nft @solana-agent-kit/plugin-defi @solana-agent-kit/plugin-misc @solana-agent-kit/plugin-blinks
初始化钱包接口和带有插件的代理:
import { SolanaAgentKit, createVercelAITools, KeypairWallet } from "solana-agent-kit"; // 或者导入 createLangchainTools 如果使用 langchain 或 createOpenAITools 用于 OpenAI 代理
import TokenPlugin from "@solana-agent-kit/plugin-token";
import NFTPlugin from "@solana-agent-kit/plugin-nft";
import DefiPlugin from "@solana-agent-kit/plugin-defi";
import MiscPlugin from "@solana-agent-kit/plugin-misc";
import BlinksPlugin from "@solana-agent-kit/plugin-blinks";
const keyPair = Keypair.fromSecretKey(bs58.decode("你的私钥"))
const wallet = new KeypairWallet(keyPair)
// 使用私钥和可选的 RPC URL 初始化
const agent = new SolanaAgentKit(
wallet,
"你的RPC_URL",
{
OPENAI_API_KEY: "你的OPENAI_API_KEY",
}
) // 添加你想使用的插件
.use(TokenPlugin)
.use(NFTPlugin)
.use(DefiPlugin)
.use(MiscPlugin)
.use(BlinksPlugin);
// 创建 LangChain 工具
const tools = createVercelAITools(agent, agent.actions);

你也可以使用 Solana 钱包适配器提供的钱包接口用于嵌入式钱包。
const result = await agent.methods.deployToken(
agent,
"我的 AI 代币", // 名称
"uri", // uri
"代币", // 符号
9, // 小数位数
{
mintAuthority: null, // 默认,部署者账户
freezeAuthority: null, // 默认,部署者账户
updateAuthority: undefined, // 默认,部署者账户
isMutable: false // 默认,true
},
1000000 // 初始供应量
);
console.log("代币铸造地址:", result.mint.toString());

const result = await agent.methods.deployToken2022(
"我的 AI 代币 2022", // 名称
"uri", // uri
"代币2022", // 符号
9, // 小数位数
{
mintAuthority: null, // 默认,部署者账户
freezeAuthority: null, // 默认,部署者账户
updateAuthority: undefined, // 默认,部署者账户
isMutable: false // 默认,true
},
1000000 // 初始供应量
);
console.log("Token2022 铸造地址:", result.mint.toString());

const isDevnet = false; // (可选)如果不存在,交易将在主网进行
const priorityFeeParam = 1000000; // (可选)如果不存在,默认优先费用为 50000
const collectionOpts: CreateCollectionOptions = {
collectionName: "",
collectionSymbol: "",
collectionDescription: "",
mainImageUrl: ""
};
const result = await agent.methods.create3LandCollection(
collectionOpts,
isDevnet, // (可选)如果不存在,交易将在主网进行
priorityFeeParam, //(可选)
);

使用 3Land 的工具创建 NFT 时,它会自动在 3.land 网站上出售
const isDevnet = true; // (可选)如果不存在,交易将在主网进行
const withPool = true; // (可选)仅在 NFT 将与特定 SPL 代币的流动性池一起创建时存在
const priorityFeeParam = 1000000; // (可选)如果不存在,默认优先费用为 50000
const collectionAccount = ""; // 收藏的哈希值
const createItemOptions: CreateSingleOptions = {
itemName: "",
sellerFee: 500, //5%
itemAmount: 100, // 要创建的总项目数
itemSymbol: "",
itemDescription: "",
traits: [
{ trait_type: "", value: "" },
],
price: 0, //100000000 == 0.1 sol,可以设置为 0 以进行免费铸造
splHash: "", // 如果以特定 SPL 代币上架,则存在,如果不存在,则以 $SOL 出售,如果 "withPool" 为 true,则必须存在
poolName: "", // 仅在 "withPool" 为 true 时存在
mainImageUrl: "",
};
const result = await agent.methods.create3LandSingle(
{},
collectionAccount,
createItemOptions,
isDevnet, // (可选)如果不存在,交易将在主网进行
withPool
priorityFeeParam, //(可选)
);

const collection = await agent.methods.deployCollection(agent, {
name: "我的 NFT 收藏",
uri: "https://arweave.net/metadata.json",
royaltyBasisPoints: 500, // 5%
creators: [
{
address: "creator-wallet-address",
percentage: 100,
},
],
});

import { PublicKey } from "@solana/web3.js";
const signature = await agent.methods.trade(
agent,
new PublicKey("目标代币铸造地址"),
100, // 数量
new PublicKey("源代币铸造地址"),
300 // 3% 滑点
);

import { PublicKey } from "@solana/web3.js";
const signature = await agent.methods.lendAssets(
agent,
100 // 要借贷的 USDC 数量
);

const signature = await agent.methods.stakeWithJup(
agent,
1 // 要质押的 SOL 数量
);

const signature = await agent.methods.stakeWithSolayer(
agent,
1 // 要质押的 SOL 数量
);

import { PublicKey } from "@solana/web3.js";
(async () => {
console.log(
"~空投成本估算:",
getAirdropCostEstimate(
1000, // 接收者
30_000 // 优先费用(以 lamports 为单位)
)
);
const signature = await agent.methods.sendCompressedAirdrop(
agent,
new PublicKey("JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN"), // 铸造地址
42, // 每个接收者的数量
9,
[
new PublicKey("1nc1nerator11111111111111111111111111111111"),
// ... 添加更多接收者
],
30_000 // 优先费用(以 lamports 为单位)
);
})();

const priceFeedID = await agent.methods.fetchPythPriceFeedID("SOL");
const price = await agent.methods.fetchPythPrice(priceFeedID);
console.log("SOL/USD 价格:", price);

import { PublicKey } from "@solana/web3.js";
const signature = await agent.methods.openPerpTradeLong({
agent: agent,
price: 300, // $300 SOL 最高价格
collateralAmount: 10, // 10 jitoSOL 投入
collateralMint: new PublicKey("J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn"), // jitoSOL
leverage: 50000, // x5
tradeMint: new PublicKey("J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn"), // jitoSOL
slippage: 0.3, // 0.3%
});

import { PublicKey } from "@solana/web3.js";
const signature = await agent.methods.closePerpTradeLong({
agent: agent,
price: 200, // $200 SOL 价格
tradeMint: new PublicKey("J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn"), // jitoSOL
});

const { signature } = await agent.methods.closeEmptyTokenAccounts(agent);

创建带有初始代币存款的 Drift 账户。
const result = await agent.methods.createDriftUserAccount(
agent,
// 要存入的代币数量
100,
// 要存入的代币符号
"USDC"
)

创建 Drift 金库。
const signature = await agent.methods.createDriftVault(agent, {
name: "我的-drift-金库",
marketName: "USDC-SPOT",
redeemPeriod: 1, // 以天为单位
maxTokens: 100000, // 以代币单位为单位,例如 100000 USDC
minDepositAmount: 5, // 以代币单位为单位,例如 5 USDC
managementFee: 1, // 1%
profitShare: 10, // 10%
hurdleRate: 5, // 5%
permissioned: false, // 公共金库或白名单
})

将代币存入 Drift 金库。
const signature = await agent.methods.depositIntoDriftVault(agent, 100, "41Y8C4oxk4zgJT1KXyQr35UhZcfsp5mP86Z2G7UUzojU")

将代币存入你的 Drift 账户。
const {txSig} = await agent.methods.depositToDriftUserAccount(agent, 100, "USDC")

派生 Drift 金库地址。
const vaultPublicKey = await agent.methods.deriveDriftVaultAddress(agent, "我的-drift-金库")

检查代理是否有 Drift 账户。
const {hasAccount, account} = await agent.methods.doesUserHaveDriftAccount(agent)

获取 Drift 账户信息。
const accountInfo = await agent.methods.driftUserAccountInfo(agent)

请求从 Drift 金库提款。
const signature = await agent.methods.requestWithdrawalFromDriftVault(agent, 100, "41Y8C4oxk4zgJT1KXyQr35UhZcfsp5mP86Z2G7UUzojU")

使用委托给你的 Drift 金库进行永续交易。