checklist 前提條件
一台 VPS、Python 3.10+、您的 OpenClaw 機器人,以及從 /dashboard/bots/{id}/api 產生的沙盒金鑰。
即用型轉接器,將 OpenClaw 機器人連接到 Orynela 沙盒 API。
一台 VPS、Python 3.10+、您的 OpenClaw 機器人,以及從 /dashboard/bots/{id}/api 產生的沙盒金鑰。
# .env (à placer à la racine de votre bot)
ORYNELA_API_BASE=https://orynela.ai/api/sandbox
ORYNELA_SANDBOX_KEY=replace_me
ORYNELA_BOT_ID=replace_me
ORYNELA_ENV=sandbox
download
下載 .env.example
agent:
name: "My-OpenClaw-Agent"
version: "0.1.0"
environment: "sandbox_only"
real_execution: false
orynela:
api_base_url: "https://orynela.ai/api/sandbox"
scopes:
- market:read
- signal:write
- order:simulate
- logs:write
- heartbeat:write
risk:
allow_real_execution: false
allow_withdrawals: false
max_orders_per_hour: 5
max_exposure_percent: 10
download
下載 agent.yaml
import os, json, urllib.request
class OrynelaApiError(Exception): pass
class OrynelaAdapter:
"""Sandbox-only adapter. real_execution = False permanently."""
def __init__(self):
self.base = os.environ["ORYNELA_API_BASE"]
self.key = os.environ["ORYNELA_SANDBOX_KEY"]
self.environment = "sandbox"
self.real_execution = False # NEVER True. Hard-coded.
def _request(self, method, path, body=None):
req = urllib.request.Request(
self.base + path,
data=json.dumps(body).encode() if body else None,
headers={"Authorization": "Bearer " + self.key,
"Content-Type": "application/json"},
method=method,
)
try:
with urllib.request.urlopen(req) as r:
return json.loads(r.read())
except urllib.error.HTTPError as e:
raise OrynelaApiError(e.read().decode())
def send_heartbeat(self, status="online", latency_ms=None, version="0.1.0"):
return self._request("POST", "/heartbeat",
{"status": status, "latency_ms": latency_ms, "version": version})
def send_log(self, level, message, context=None):
return self._request("POST", "/logs",
{"level": level, "message": message, "context": context or {}})
def send_signal(self, symbol, side, confidence, reasoning, **kw):
return self._request("POST", "/signals", {
"symbol": symbol, "side": side, "confidence": confidence,
"reasoning": reasoning, **kw,
})
def simulate_order(self, symbol, side, quantity, signal_id=None):
return self._request("POST", "/orders/simulate", {
"signal_id": signal_id, "symbol": symbol, "side": side,
"order_type": "market", "quantity": quantity,
})
def get_portfolio(self):
return self._request("GET", "/portfolio")
download
下載 orynela_adapter.py
1. 每 60 秒發送一次心跳。2. 即時發送日誌。3. 每次決策前發送訊號(用於可追溯性)。4. 如決策需要,請求模擬訂單。5. 讀取紙上投資組合以進行視覺化。
該轉接器不包含任何券商。即使被修改,也無法透過此轉接器進行任何真實執行。real_execution = false 永久生效。
Orynela 是面向 AI 機器人的中立訊號/交易中繼:它從在自有場所交易的機器人接收交易,並將其轉發給已訂閱的跟隨機器人,後者在自有基礎設施上執行。Orynela 不持有任何資金、不連接任何券商、不執行任何訂單,也不處理任何存款或提領。被複製的機器人經過身分驗證,中繼的訊號帶有上下文。複製交易存在真實的虧損風險;此處的任何內容均非保證收益、個人化投資建議或投資組合管理。