关于 manifest
Manifest 是用于基于 Manifest 无许可订单簿构建交易、路由、投资组合和前端集成的技能,指导开发者读取市场、执行订单操作、设置钱包流程并选择本地或全局流动性。
主要功能
- 01读取市场状态和订单簿
- 02通过 SDK 下单与撤单
- 03指导钱包适配器设置和席位认领
- 04区分本地与全局余额
- 05处理反向及其他订单类型
适用场景
- 01展示 Manifest 订单簿档位
- 02通过浏览器钱包下单
- 03在多个市场间共享资金
- 04提供持续的双边流动性
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ sendaifun/ skills --skill manifest安装后在 Claude Code 中输入/manifest确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
docs/troubleshooting.mdexamples/global-liquidity/global-order.tsexamples/read-market/read-market.tsexamples/reverse-liquidity/amm-style-batch.tsexamples/wallet-order/place-order.tsresources/manifest-actions.mdmanifest-sdk.mdtemplates/manifest-setup.ts详细介绍
Manifest DEX 集成指南
基于 Manifest 的免许可订单簿,构建交易、路由、投资组合和前端集成。
概述
在任务涉及以下内容时使用此技能:
- 读取 Manifest 市场状态或订单簿
- 通过 Manifest SDK 下单、取消订单、存入或提取资金
- 在本地市场余额和全局余额之间进行选择
- 处理封装器设置、席位认领和钱包适配器流程
- 了解
Limit、PostOnly、ImmediateOrCancel、Global、Reverse和ReverseTight订单类型
按需加载辅助参考资料:
resources/manifest-actions.mdresources/manifest-sdk.mddocs/troubleshooting.mdexamples/read-market/read-market.tsexamples/wallet-order/place-order.tsexamples/global-liquidity/global-order.tsexamples/reverse-liquidity/amm-style-batch.tstemplates/manifest-setup.ts
说明
- 确定任务是只读市场访问,还是交易构建。
- 对于只读访问,优先使用
Market读取或ManifestClient.getClientReadOnly(...)。 - 对于交易构建,签名者控制的流程使用
getClientForMarket(...);钱包适配器流程则先使用getSetupIxs(...),然后使用getClientForMarketNoPrivateKey(...)。 - 确定流动性应为市场本地流动性(封装器余额加市场席位),还是全局流动性(全局账户加
OrderType.Global)。 - 如果任务涉及持续的双向流动性,应评估使用
Reverse或ReverseTight,而不是普通限价单。 - 对于 UI/订单簿相关工作,优先使用
bidsL2()和asksL2()获取可直接用于展示的档位。 - 记录或实现清理行为时,应区分封装器级取消和核心级取消。
cancelAllIx()无法完全处理所有 Reverse/Global 边缘情况;cancelAllOnCoreIx()是更全面的清理方式。 - 明确说明以下假设:
- 集群
- 市场地址
- 交易者/签名者模型
- 封装器/全局设置是否已完成
示例
基本用法
用户提出“显示 Manifest 市场的最佳买价和卖价”时
Agent 应:
- 使用
Market.loadFromAddress(...)或ManifestClient.getClientReadOnly(...) - 读取
bestBidPrice()和bestAskPrice(),或bidsL2()/asksL2() - 返回价格,不引入签名或设置逻辑
钱包交易流程
用户提出“通过浏览器钱包下达 Manifest 订单”时
Agent 应:
- 调用
ManifestClient.getSetupIxs(...) - 如果需要设置,先创建封装器状态和/或认领席位
- 然后使用
ManifestClient.getClientForMarketNoPrivateKey(...) - 使用
client.placeOrderIx(...)构建订单指令
全局流动性流程
用户提出“在多个 Manifest 市场使用同一笔资金”时
Agent 应:
- 说明仅靠市场本地余额无法满足此需求
- 使用
createGlobalAddTraderIx(...)设置全局账户 - 通过
globalDepositIx(...)存入资金 - 下达
OrderType.Global订单
Reverse 订单
用户提出“提供成交后会翻转的持续流动性”时
Agent 应:
- 推荐使用
OrderType.Reverse或OrderType.ReverseTight - 说明 Reverse 订单使用
spreadBps,而非lastValidSlot - 在需要更精确地控制较窄价差时使用
ReverseTight - 提醒清理可能需要使用
cancelAllOnCoreIx(),而不只是封装器级取消
此技能中的可直接复制示例:
examples/read-market/read-market.tsexamples/wallet-order/place-order.tsexamples/global-liquidity/global-order.tsexamples/reverse-liquidity/amm-style-batch.ts
指南
- 应该:在 wallet-adapter 交易流程前使用
getSetupIxs(...)。 - 应该:在匿名检查或预设置检查流程中使用
getClientReadOnly(...)。 - 应该:在面向 UI 的订单簿展示中使用
bidsL2()/asksL2()。 - 应该:将市场本地账户逻辑与全局账户逻辑分开处理。
- 应该:在相关情况下明确说明包装器状态、市场席位和全局账户。
- 不应该:假设已连接的钱包已有包装器状态或市场席位。
- 不应该:将
OrderType.Global视为等同于普通市场本地订单。 - 不应该:将
cancelAllIx()当作总能彻底清理反向 / 全局边缘情况的方法。 - 不应该:在示例中索要或嵌入私钥。
常见错误
错误:只读
原因:在只读客户端上调用了写入方法,或缺少付款方 / 包装器上下文。
解决方案:切换到 getClientForMarket(...),或完成 getSetupIxs(...) 流程,然后使用 getClientForMarketNoPrivateKey(...)。
错误:仍需设置
原因:尚未完成包装器创建或市场席位认领。
解决方案:在构建常规的基于包装器的交易操作前,运行 ManifestClient.getSetupIxs(...) 返回的指令。
错误:全局订单资金配置不正确
原因:交易者使用了 OrderType.Global,但没有为支持的代币注资全局账户。
解决方案:如有需要,运行 createGlobalAddTraderIx(...),然后运行 globalDepositIx(...),之后再下全局订单。
错误:取消全部后仍有反向 / 全局订单
原因:包装器级别的取消操作未能彻底覆盖所有核心级订单状态。
解决方案:需要彻底清理核心状态时,使用 cancelAllOnCoreIx()。
参考资料
- 官方网站:
https://manifest.trade - SDK 包:
https://www.npmjs.com/package/@bonasa-tech/manifest-sdk - 源代码仓库:
https://github.com/Bonasa-Tech/manifest - TypeScript 客户端文档:
https://github.com/Bonasa-Tech/manifest/tree/main/client/ts