agenticwallet-desk
Health Uyari
- License — License: MIT
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Low visibility — Only 5 GitHub stars
Code Basarisiz
- process.env — Environment variable access in four_watch.mjs
- network request — Outbound network request in four_watch.mjs
- network request — Outbound network request in openfour_check.mjs
- network request — Outbound network request in panel.js
- process.env — Environment variable access in routes.mjs
- network request — Outbound network request in routes.mjs
- Hardcoded secret — Potential hardcoded credential in routes.mjs
- network request — Outbound network request in token_meta.mjs
Permissions Gecti
- Permissions — No dangerous permissions requested
Bu listing icin henuz AI raporu yok.
本地 BSC 交易台 + Four.meme 新币抢购监控;签名全程经 Binance Agentic Wallet CLI,面板不持私钥。
Agent Desk · BSC 本地交易台 + Four.meme 抢购监控
一个本地运行的 BNB Chain(chainId 56)交易面板:聚合兑换 + 代币信息展示 + Four.meme 新币自动抢购监控。精致白 / 香槟金商业风格,三视图(兑换 · 抢购监控 · 记录)。
📖 完整使用说明见 Wiki:快速开始、支持的平台、安全模型、接口参考、常见问题。
安全模型(最重要):面板不持有私钥。所有签名、授权、风控、广播都委托本机已登录的 Binance Agentic Wallet CLI(
baw)。本项目只做只读查询和"发起交易请求",密钥永远在钱包进程里。
截图
| 兑换(自动识别平台路由) | 监控仪表盘 |
|---|---|
![]() |
![]() |
| 代币选择(常用币 + logo) | 粘贴 CA 即展示代币信息 |
![]() |
![]() |

截图中的钱包地址、余额和交易记录均为示例数据。
功能
- GMGN K 线:兑换页顶部选中任意代币即显示 K 线图(1分 / 5分 / 15分 / 1时 / 4时 / 日),带成交量柱,右侧是代币信息卡。数据来自 GMGN(需配置 API key),服务端按周期缓存,避免触发 GMGN 限流;图表组件是 TradingView Lightweight Charts(Apache-2.0,本地内置在
vendor/)。 - 暗夜模式:右上角按钮一键切换,默认跟随系统设置,选择会记住;深色是暖石墨底配同款香槟金。
- 充值二维码:钱包余额卡里显示收款地址二维码和复制按钮,二维码由本地内置的
qrcode.js(qrcode-generator 1.4.4,MIT)生成,不依赖外部服务。 - gang.fun 毕业进度榜:监控页显示 gang.fun 上最接近毕业的内盘币(进度、距毕业约多少 U、24h 成交量、持有人数),数据来自 gang.fun 公开接口,缓存 30 秒。
- U 计价显示:支付和收到的数量后面都用括号标出约合多少 U(按实时 BNB/USDT 报价换算),最小到账和历史记录同样显示。
- 聚合兑换:任意代币互换、USDT⇄BNB 快捷对、方向反转、滑点(自动/0.5/1/3/自定义)与 Gas(低/中/高)、防抖自动报价、价格影响、25%/50%/75%/最大 比例快捷填入、订单历史轮询到成交。
- 代币信息展示:代币选择器里粘贴合约地址即展示该币 logo / 名称 / 价格 / 市值 / 流动性 / 持有人 / 买卖税 / 貔貅·rug 风险徽章(数据来自 GMGN),而不是裸"导入"。
- Four.meme 抢购监控 + 自动买入:事件驱动监听指定模板(preset)的新币上链,命中后自动用固定 BNB 预算走正确入口买入;买不进(白名单/revert)自动跳过下一个,不烧 gas;买到后桌面弹窗 + 面板事件;持仓涨到 10 倍弹窗提醒(只提醒不自动卖)。
- 监控仪表盘:实时显示在线状态、实盘/模拟、盯的模板、预算、最新区块、已买/已跳计数、WSS 连接、心跳。
架构一图
浏览器 (panel.html + panel.js)
│ fetch /quote /swap /meta /tokeninfo /orders /status /events ...
▼
ptah_panel.py (Python stdlib HTTP, 127.0.0.1:8787)
│ 子进程调用
├── baw (Binance Agentic Wallet CLI) ── 签名/授权/风控/广播(持私钥)
├── gmgn-cli (GMGN OpenAPI) ─────────── 行情/logo/税/风险
└── token_meta.mjs / openfour_check.mjs ── 公共 RPC 只读
four_watch.mjs (独立后台进程)
├── WSS newHeads 订阅 ─ 发现新币
├── eth_getLogs 过滤 TokenCreated[preset] ─ 精确命中目标模板
├── baw contract-call preview → execute ─ 能买才买
└── 写 ~/.config/four-watch-{status,events}.json ← 面板读
文件职责:
| 文件 | 作用 |
|---|---|
ptah_panel.py |
本地 HTTP 服务器 + 全部端点,委托 baw/gmgn-cli/node 脚本 |
panel.html / panel.js |
前端(三视图、blockies logo、搜索即展示、监控仪表盘) |
token_meta.mjs |
任意代币的链上 name/symbol/decimals/balance + 钱包余额 |
openfour_check.mjs |
Four.meme V12 模板只读核查(注册/preset/NFT/能否买模拟) |
four_watch.mjs |
抢购监控 + 自动买入 + 10 倍提醒 + 状态/事件落盘 |
AGENT钱包工作台prompt.txt |
复刻用的完整提示词,丢给 AI 即可从零做出同款面板 |
routes.mjs |
平台识别 + 曲线直调(AgentPad/Gang/MOAT/Flap Agent/UNITS)买卖适配 |
支持的平台(路由)
粘贴任意代币 CA,面板会自动识别它属于哪个平台,并选择路由(兑换卡标题旁的徽章显示结果):
| 平台 | 识别方式 | 路由 | 说明 |
|---|---|---|---|
| four.meme 普通内盘 / 外盘 | 尾号 4444 / ffff |
Binance 聚合(baw) | |
| four.meme Agent 专属(OpenFour V12) | 在 OpenFourCore 登记的币 | 内盘曲线直调,毕业后走聚合 | buyByBudget 付 BNB / sell(卖出前按本次数量单独授权);需 Agent ID NFT,测试阶段还要求模板白名单 |
| Flap(flap.sh) | 尾号 7777 / 8888 |
Binance 聚合(baw) | |
| 外盘(PancakeSwap) | 其余已上 DEX 的币 | Binance 聚合(baw) | |
| AgentPad(agentpad.trade) | 各 Factory isToken(ca) |
曲线直调 | buyWithBNBMinOut / sellWithMin,需 Agent ID |
| Gang(gang.fun) | Soft pad curves(ca) |
曲线直调 | buy(token,minOut) 付 BNB / sell,需 Agent ID,单钱包上限 1% |
| MOAT 曲线(moat.fun) | 曲线 pad curves(ca) |
曲线直调 | 同 Gang 接口 |
| Flap Agent 曲线(flap.sh) | Agent Factory marketOfToken(ca) |
曲线直调 | 买到的是曲线份额(非 ERC20),毕业后 claim;仅支持 BNB 计价市场 |
| UNITS(units-agentic.fun) | 精确匹配代币地址 | 曲线直调 | buy / sell |
| Cycpad(cycpad.fun) | 尾号 cccc + Factory isToken(ca) |
内盘曲线直调,毕业后走聚合 | buyWithQuote(budget,minOut,deadline) 付 BNB / sell(amount,minOut,deadline),卖出不需要授权;买入需 Agent ID 或在该币买家白名单 |
| Gang Pair / Gang V2 | V2 pad curves(ca) |
暂不支持自动交易 | 以 ERC20(bStocks / GANG / WBNB)计价,需先换出报价代币并授权 |
| MOAT 占席(fair slot) | moat.fun board mode=fair |
暂未接入 | fillSlot 按席位定额付款,窗口期不可卖 |
曲线直调的安全模型:routes.mjs 只负责拼 calldata。每笔交易都先 baw contract-call preview(钱包后端模拟),通过后才 execute。直调平台买入成交后,面板会在后台自动发一笔 approve,额度精确等于买到后的持仓(不做无限授权),这样卖出时只需一笔交易;如果卖出时额度不够(比如之后又加仓),会先补授权再卖。滑点保护:买卖都按报价算 minOut,auto 滑点在曲线路由上默认 10%。
直调交易的记录:直调交易不经过 baw 的订单簿,面板在浏览器 localStorage 里另存一份,和 baw 订单合并显示在历史记录里,带平台标签和 Tx 链接。
新增平台:在 routes.mjs 的 PLATFORMS 加合约地址,在 detect() 加识别规则,在 quote() / trade() 加对应的报价和买卖调用即可(见下方 DIY 指南 B)。
依赖与前置
- macOS(桌面通知用
osascript;Linux 改notify-send)。 - Python 3(仅标准库)、Node.js 18+(ESM)。
baw— Binance Agentic Wallet CLI,须已登录、已开 Developer Mode(baw wallet settings --json看devMode.enabled)。gmgn-cli(可选,代币信息/行情用)— GMGN OpenAPI CLI,key 放~/.config/gmgn/.env:GMGN_API_KEY=...。- Node 包:
ws、@noble/hashes(npm i)。
快速开始
git clone https://github.com/gunksd/agenticwallet-desk.git && cd agenticwallet-desk
npm i # ws + @noble/hashes
# 1) 起面板
NODE_USE_ENV_PROXY=1 python3 ptah_panel.py # 打开 http://127.0.0.1:8787
# 2) 起监控 —— 先模拟(不真买),确认无误再切实盘
# 模拟:FOUR_ARM 不设
NODE_USE_ENV_PROXY=1 node four_watch.mjs
# 实盘:
GMGN_API_KEY=$(grep GMGN_API_KEY ~/.config/gmgn/.env|cut -d= -f2) \
NODE_USE_ENV_PROXY=1 FOUR_ARM=1 FOUR_BUDGET_BNB=0.01 node four_watch.mjs
NODE_USE_ENV_PROXY=1:本机 Node fetch 需走本地代理时加上;不需要可省。
环境变量见 .env.example。常用:FOUR_ARM(1=实盘)、FOUR_BUDGET_BNB、FOUR_PRESET、FOUR_LOGS_RPC(自带高吞吐 getLogs 端点)。
端点速查(都在 127.0.0.1:8787)
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | / /panel.js |
前端 |
| GET | /health |
存活 |
| GET | /meta?tokens=a,b |
钱包余额 + 代币链上元数据 |
| GET | /tokeninfo?token= |
GMGN 行情/logo/税/风险 |
| GET | /orders · /order?id= |
订单历史 / 单条 |
| GET | /kline?token=&res= |
GMGN K 线(res:1m / 5m / 15m / 1h / 4h / 1d,服务端缓存) |
| GET | /gang-progress |
gang.fun 内盘毕业进度(缓存 30 秒) |
| GET | /route?token= |
识别代币所属平台和路由 |
| GET | /status |
监控状态(面板仪表盘读) |
| GET | /events |
买入/10倍事件 |
| POST | /quote · /swap |
报价 / 下单(body: fromToken,toToken,qty,slippage,gasLevel) |
| POST | /four/preflight |
某代币只读核查(body: token) |
POST 都校验 Origin 和 Content-Type;token 参数用 ^0x[a-fA-F0-9]{40}$ 校验。
Four.meme V12「Agent ID Exclusive」链上事实
(anvil fork + cast trace + 读字节码实证,2026-10 现网值,官方可能更新)
- OpenFourCore
0xebe7b6c1089d9f72ad07f34e36d898e44e5e27f3。买入入口buyByBudget(address,uint256,uint256,uint256,bytes),选择器0x995ee6da(不是buy)。 - 模板 presetId
1778027615735;注册表 OpenFourRegistry0x912cef...。 TokenCreated事件:topic00x7dae4dcd...8f228f,topic1=presetId,topic3=token。监听topics:[TC, pad(preset)]即只收该模板新币。- OpenFourTools
0x97da82...的 estimate 实测费率 买 2% / 卖 2%。 - 两道准入叠加:① 持 SPACE ID Agent ID NFT(
0x60b9262456de011f7d15a54cdd8c48baaa8b022f)≥1;② 模板白名单0x7b377Ad7...(运营地址批量setWhitelisted)。都满足才买,否则 revert0xa2dda494。 - 判据:某钱包能否买某币,别猜——用
baw contract-call preview跑只读模拟,激活/NFT/白名单全跑完,成功即真能买。监控以此为唯一买入判据,对官方改配置天然健壮。
DIY 扩展指南(给想自己改的人 / 给 AI 改的 prompt)
下面每节都给"要做什么 + 改哪个文件 + 可直接丢给 AI 的 prompt"。
A. 加一个新 HTTP 路由(后端)
做什么:在 ptah_panel.py 的 Handler 里加分支。GET 在 do_GET,POST 在 do_POST。
模式:解析参数 → 校验(地址用现成正则)→ 调 run_baw([...]) 或 run_node('xxx.mjs', arg) 或 gmgn_token_info(...) → self.send(result)。失败统一 {success:false,error:{message}}。
Prompt:「在 ptah_panel.py 的 do_GET 加一个
/kline?token=&interval=路由,调用gmgn-cli market kline --chain bsc --address <token> --interval <interval> --raw并把结果透传为{success:true,data:...};token 用现有 ADDR 正则校验,复用 _gmgn_key() 和子进程超时兜底的写法。前端在 panel.js 的代币信息卡下面加一个迷你 K 线。」
B. 加一个新的"台子"/新链 / 新 DEX 聚合源
做什么:兑换走的是 baw market-order,天然支持 baw 覆盖的链。要换链把 ptah_panel.py 的 CHAIN="56" 和 BNB/USDT 常量改掉,前端 PAIRS 和 header 文案同步。要接非 baw 的聚合器(如自建路由),新增一个 swap_<venue>.mjs,在 /quote、/swap 里按 body 里的 venue 字段分流。
Prompt:「把兑换做成多台子:在 /quote 和 /swap 的 body 增加 venue 字段,venue='baw' 走现有 baw market-order,venue='myrouter' 调用新脚本 swap_myrouter.mjs(我会实现它,输入 fromToken/toToken/qty/slippage,输出同样的 {success,data:{toCoinAmount,toCoinSymbol}} / {orderId} 结构)。前端兑换卡加一个台子下拉选择,默认 baw。」
C. 监控新的 Four.meme 模板 / 新 preset / 多模板同时盯
做什么:four_watch.mjs 的 CFG.presetId 决定盯哪个模板,靠 FOUR_PRESET 环境变量。换模板只需换号。要同时盯多个模板:把 presetId 改成数组,eth_getLogs 的 topic 过滤去掉 preset 这一维(只按 TC_TOPIC 收全部 TokenCreated),在 handleTokens 里读每个 token 的 preset 判断是否在白名单集合内。要盯全新的台子(不是 Four.meme):把 CFG.core、TC_TOPIC、买入 calldata 构造换成新合约的,tryBuy 里的 preview 判据不变。
怎么找一个新模板的 presetId / TokenCreated topic:
- 在区块浏览器找一笔该模板的建币或买入交易;
- 看 OpenFourRegistry 的
getPreset(id)名字确认; - TokenCreated 的 topic0 =
keccak256("TokenCreated(uint256,uint256,address,...)"),topic1/topic3 的 indexed 顺序对一笔真实交易回执即可确认。
Prompt:「把 four_watch.mjs 改成支持多 presetId:CFG.presetId 变成 CFG.presets 数组(从 FOUR_PRESET 逗号分隔读)。eth_getLogs 只按 TC_TOPIC 过滤收全部 TokenCreated;在 handleTokens 里对每个 token 读 OpenFourCore.tokens(token) 取它的 preset,只有 preset ∈ CFG.presets 才进入 tryBuy。其余逻辑(preview 判据、跳过、通知、10倍)不变。」
D. 集成"打 NFT"(mint Agent ID 等准入 NFT)
做什么:这个模板要求持 Agent ID NFT。想在面板里一键打新 NFT,用 baw contract-call 走自定义调用——和买入同一条路(preview→execute),只是 to/calldata 换成 NFT 合约的 mint。步骤:
- 找到 NFT 合约和 mint 函数(如
mint()/claim(bytes proof)/safeMint(address)),用keccak_256算选择器,拼 calldata(参考 four_watch.mjs 的buyCalldata); - 在
ptah_panel.py加POST /mint-nft,body 收 nft 合约、mint 金额(value)、可选 proof; - 调
baw contract-call preview给前端展示 risks/模拟结果 → 用户确认 →execute; - 前端在监控视图加一个"打 Agent ID NFT"卡片。
⚠️ 注意:很多准入 NFT 有白名单 / Merkle proof / 社交验证,链上直接 mint 未必成功——先 preview,看模拟是否通过再 execute,preview 失败就别花 gas。打完 NFT 再跑
/four/preflight看资格是否变 ready。
Prompt:「在 ptah_panel.py 加 POST /mint-nft(body: nft 合约地址、valueWei、funcSig 如 'mint()' 、可选 args),用 @noble/hashes 算选择器拼 calldata,调 baw contract-call preview 返回模拟与风险给前端;再加 POST /mint-nft/execute 收 requestId 执行。前端监控视图加一张『打 Agent ID NFT』卡,先预览展示 risks/authorityChanges,用户确认后执行。参考 four_watch.mjs 里 buyCalldata 和 baw contract-call 的用法。」
E. 换通知渠道(手机推送)
做什么:four_watch.mjs 的 notify() 现在用 osascript。想推手机,在 notify() 里加一个 fetch 到企业微信/Telegram webhook。webhook 地址放环境变量,别硬编码。
Prompt:「four_watch.mjs 的 notify() 除了 osascript,再 POST 到 process.env.FOUR_WEBHOOK(企业微信机器人格式 {msgtype:'text',text:{content}}),FOUR_WEBHOOK 没设就跳过。买入和 10 倍事件都走它。」
F. 改成卖出/止盈自动化(谨慎)
做什么:现在 10 倍只提醒。要自动卖,在 priceWatchTick 命中 10 倍分支里,用 baw market-order swap(token→BNB)或 contract-call 走模板的 sell(...) 卖掉一部分。务必先 preview,并把卖出比例、滑点做成可配置。
Prompt:「在 four_watch.mjs 的 10 倍分支加可选自动出本:FOUR_TP_SELL_PCT(默认 0,不卖)。>0 时用 baw market-order swap 把持仓的该比例从 token 卖成 BNB,先 preview 再执行,失败只记事件不重试。卖出税按链上 estimate 实算,日志打印净回本金额。」
常见坑(复刻/改时直接避开)
baw/gmgn-cli输出是美化多行 JSON,解析要切第一个{到最后一个},别按行找。- 本机 Node fetch 超时 → 子进程带
NODE_USE_ENV_PROXY=1。 - 每块都 getLogs 会瞬间打爆免费 RPC 额度 → 必须节流合并 + 多端点轮换(代码已做,默认 1.2s 合并)。
- 公共 dataseed 不支持 getLogs 范围查询 → WSS newHeads 用 publicnode 系;getLogs 用 publicnode HTTP 或自带 keyed 端点(
FOUR_LOGS_RPC)。 - 代币价格别用链上 estimate 的 executionPrice(低流动性返 0)→ 用 gmgn-cli 实时价。
- 自动买入唯一判据是
contract-call preview成功,别靠写死 preset/白名单假设去猜。 - 桌面通知 best-effort,不阻塞主流程。
Star 历史
请我喝杯咖啡 ☕
觉得有用的话,欢迎打赏一杯咖啡,BNB 或 USDT 都可以(evm 网络):
0x138843062b5ca5a88a9b32680bd944e143183c6e
免责声明
本项目用于学习与自用自动化。链上交易有风险(抢购失败、貔貅、rug、滑点、gas 浪费)。自动买入默认是模拟(FOUR_ARM 不设),请先小额确认再切实盘。你对自己的资金和操作负全部责任。不构成任何投资建议。
License
MIT
Yorumlar (0)
Yorum birakmak icin giris yap.
Yorum birakSonuc bulunamadi



