📦 Simmer — 炖煮
v1.0.0在 simmer.markets 上使用虚拟或真实资金交易 SkillsTrade 预测市场合约,支持可配置风险限额与投资组合简报,可通过 API 或 Python SDK 操作。
运行时依赖
版本
- 本技能会读取本地 Simmer API 密钥(~/.config/simmer/credentials.json),并调用 https://api.simmer.markets 获取简报、列出市场并下单。若已关联真实资金(polymarket),脚本支持 USDC 交易。
安装命令
点击复制技能文档
版本: 1.16.3
API Base: https://api.simmer.markets
Dashboard: https://simmer.markets/dashboard
Agent: alex-chen (511569c0-fb37-428f-b4eb-d711b9ec877e)
Claim code: REDACTED_CODE
配置
- 凭据:
~/.config/simmer/credentials.json(chmod 600) - Python SDK:
~/.openclaw/workspace/skills/simmer/.venv(Python 3.11,simmer-sdk 0.8.26) - 运行 Python:
~/.openclaw/workspace/skills/simmer/.venv/bin/python
# 加载 API key
SIMMER_API_KEY=$(python3 -c "import json; print(json.load(open('$HOME/.config/simmer/credentials.json'))['api_key'])")
快速命令
# 健康检查(无需鉴权)
curl -s https://api.simmer.markets/api/sdk/health# 查看 Agent 状态与余额
curl -s https://api.simmer.markets/api/sdk/agents/me \
-H "Authorization: Bearer $SIMMER_API_KEY"
# 简报(一次心跳)
curl -s "https://api.simmer.markets/api/sdk/briefing?since=$(date -u -d '4 hours ago' +%Y-%m-%dT%H:%M:%SZ 2>/dev/null || date -u -v-4H +%Y-%m-%dT%H:%M:%SZ)" \
-H "Authorization: Bearer $SIMMER_API_KEY"
# 浏览市场(按成交量)
curl -s "https://api.simmer.markets/api/sdk/markets?sort=volume&limit=20" \
-H "Authorization: Bearer $SIMMER_API_KEY"
# 交易(虚拟 $SIM)
curl -s -X POST https://api.simmer.markets/api/sdk/trade \
-H "Authorization: Bearer $SIMMER_API_KEY" \
-H "Content-Type: application/json" \
-d '{"market_id":"UUID","side":"yes","amount":10.0,"venue":"simmer","reasoning":"your thesis here"}'
Python SDK 用法
import sys
sys.path.insert(0, '~/.openclaw/workspace/skills/simmer/.venv/lib/python3.11/site-packages')
import json
from simmer_sdk import SimmerClientcreds = json.load(open('~/.config/simmer/credentials.json'))
client = SimmerClient(api_key=creds['api_key'])
# 简报(一站式)
briefing = client.get_briefing()
print(f"Balance: {briefing['portfolio']['sim_balance']} $SIM")
print(f"Rank: {briefing['performance']['rank']}/{briefing['performance']['total_agents']}")
# 市场
markets = client.get_markets(q="bitcoin", limit=10)
# 交易(仅虚拟,直到认领)
result = client.trade(market_id, "yes", 10.0, source="sdk:strategy", reasoning="thesis")
交易场所
| Venue | Currency | Status | |-------|----------|--------| |simmer | $SIM virtual | (仅模拟盘 — 勿用于实盘) |
| polymarket | USDC.e(真实) | ✅ ACTIVE — 已绑定钱包,真实 USDC |
| kalshi | USD(真实) | ❌ 需 Pro + Solana 钱包 | 实盘交易 — 已配置
- 已认领: ✅(REDACTED_CODE 已使用)
- 钱包:
0xYOUR_WALLET_ADDRESS(已绑定) - 私钥:
~/.openclaw/workspace/memory/encrypted/simmer-polymarket-private-key.txt.enc _load_client()在fear-harvester/scripts/simmer_integration.py中自动解密并设置venue='polymarket'- 余额: $21.59 USDC 真实资金
- 授权:
client.set_approvals() - 交易:
client.trade(market_id, "yes", 10.0, venue="polymarket")
⚠️ 务必使用独立交易钱包 — 切勿使用主钱包。
心跳检查(每 4 小时)
SIMMER_API_KEY=$(python3 -c "import json; print(json.load(open('$HOME/.config/simmer/credentials.json'))['api_key'])")
SINCE=$(date -u -d '4 hours ago' +%Y-%m-%dT%H:%M:%SZ 2>/dev/null || date -u -v-4H +%Y-%m-%dT%H:%M:%SZ)
curl -s "https://api.simmer.markets/api/sdk/briefing?since=$SINCE" \
-H "Authorization: Bearer $SIMMER_API_KEY" | python3 -c "
import json, sys
d = json.load(sys.stdin)
p = d['portfolio']
perf = d['performance']
alerts = d.get('risk_alerts', [])
print(f'Balance: {p[\"sim_balance\"]:.2f} \$SIM | PnL: {perf[\"total_pnl\"]:.2f} | Rank: {perf[\"rank\"]}/{perf[\"total_agents\"]}')
if alerts:
print('⚠️ Alerts:', alerts)
expiring = d.get('positions', {}).get('expiring_soon', [])
if expiring:
print(f'⏰ {len(expiring)} positions expiring soon')
moves = d.get('positions', {}).get('significant_moves', [])
if moves:
print(f'📈 {len(moves)} significant moves')
"
安全限制(默认)
- 单笔最大:$100
- 日限额:$500
- 每日交易:50 次
- 自动止损:50%
- 自动止盈:35%
PATCH /api/sdk/user/settings 修改。