change v1

This commit is contained in:
lky-spec
2026-04-25 16:18:45 +08:00
parent 737f9bca95
commit c244e4cdf1
89 changed files with 17382 additions and 6198 deletions

View File

@@ -3,30 +3,205 @@
"kind": "management",
"domain": "exchange",
"description": "当用户想创建、查看、修改或删除交易所账户配置时调用。适用于用户提到交易所账户、API Key、Secret、Passphrase、测试网开关、启用状态等配置管理需求。不用于排查 invalid signature、timestamp、权限不足、白名单限制等连接或鉴权诊断问题。",
"field_constraints": {
"exchange_type": {
"type": "enum",
"required": true,
"values": ["binance", "bybit", "okx", "bitget", "gate", "kucoin", "hyperliquid", "aster", "lighter", "indodax"],
"aliases": {"币安": "binance", "欧易": "okx", "必安": "binance", "bitget": "bitget", "bitget futures": "bitget", "bitget合约": "bitget", "库币": "kucoin", "gate.io": "gate", "hyper": "hyperliquid", "印尼站": "indodax"},
"description": "交易所类型,必填,决定后续需要哪些凭证字段。"
},
"account_name": {
"type": "string",
"max_length": 50,
"description": "账户显示名称,可选,用于区分同一交易所的多个账户。"
},
"api_key": {
"type": "credential",
"pattern": "^[A-Za-z0-9_\\-]{8,}$",
"description": "交易所 API Key至少 8 位字母数字。"
},
"secret_key": {
"type": "credential",
"pattern": "^([A-Za-z0-9_\\-]{8,}|(0x)?[A-Fa-f0-9]{16,})$",
"description": "交易所 Secret Key至少 8 位字母数字,或十六进制格式。"
},
"passphrase": {
"type": "credential",
"required_for": ["okx"],
"description": "OKX 专用 PassphraseOKX 账户启用前必须填写,其他交易所不需要。"
},
"testnet": {
"type": "bool",
"default": false,
"description": "是否使用测试网(沙盒环境),默认 false主网。"
},
"enabled": {
"type": "bool",
"default": false,
"description": "是否启用该交易所配置。启用前必须通过凭证完整性校验。"
},
"hyperliquid_wallet_addr": {
"type": "credential",
"required_for": ["hyperliquid"],
"description": "Hyperliquid 主钱包地址Hyperliquid 账户启用前必须填写。"
},
"hyperliquid_unified_account": {
"type": "bool",
"default": false,
"required_for": ["hyperliquid"],
"description": "是否启用 Hyperliquid unified account 模式。"
},
"aster_user": {
"type": "credential",
"required_for": ["aster"],
"description": "Aster 用户地址Aster 账户启用前必须填写。"
},
"aster_signer": {
"type": "credential",
"required_for": ["aster"],
"description": "Aster Signer 地址Aster 账户启用前必须填写。"
},
"aster_private_key": {
"type": "credential",
"required_for": ["aster"],
"description": "Aster 私钥Aster 账户启用前必须填写。"
},
"lighter_wallet_addr": {
"type": "credential",
"required_for": ["lighter"],
"description": "Lighter 钱包地址Lighter 账户启用前必须填写。"
},
"lighter_private_key": {
"type": "credential",
"required_for": ["lighter"],
"description": "Lighter 私钥,某些 Lighter 账户模式下启用前必须填写。"
},
"lighter_api_key_private_key": {
"type": "credential",
"required_for": ["lighter"],
"description": "Lighter API Key 私钥Lighter 账户启用前必须填写。"
},
"lighter_api_key_index": {
"type": "int",
"min": 0,
"max": 255,
"required_for": ["lighter"],
"description": "Lighter API Key Index范围 0255超出范围自动收敛并告知用户。"
}
},
"validation_rules": [
"api_key 格式:至少 8 位字母数字,不符合时提示用户重新输入完整 Key。",
"secret_key 格式:至少 8 位字母数字,或十六进制格式,不符合时提示用户重新输入。",
"OKX 账户启用前必须填写 passphrase否则拒绝启用并提示补填。",
"Bitget/KuCoin 页面流程里也需要 passphrase缺失时应明确提示补填。",
"Hyperliquid 创建/更新时应与手动页面保持一致:至少收集 api_key + hyperliquid_wallet_addr。",
"Hyperliquid 账户启用前必须填写 hyperliquid_wallet_addr。",
"若用户使用 Hyperliquid unified account 模式,应明确记录 hyperliquid_unified_account 开关状态。",
"Aster 账户启用前必须填写 aster_user、aster_signer、aster_private_key 三个字段。",
"Aster 账户启用前必须填写 aster_user、aster_signer、aster_private_key 三个字段,任一缺失都不能启用。",
"Lighter 账户启用前必须填写 lighter_wallet_addr + lighter_api_key_private_key若当前账户模式还依赖 lighter_private_key也要先补齐后再启用。",
"lighter_api_key_index 超出 0255 时自动收敛到边界值并告知用户。",
"删除操作不可逆,必须先向用户确认再执行。"
],
"per_exchange_required_fields": {
"binance": ["api_key", "secret_key"],
"okx": ["api_key", "secret_key", "passphrase"],
"bybit": ["api_key", "secret_key"],
"bitget": ["api_key", "secret_key", "passphrase"],
"gate": ["api_key", "secret_key"],
"kucoin": ["api_key", "secret_key", "passphrase"],
"indodax": ["api_key", "secret_key"],
"hyperliquid": ["api_key", "hyperliquid_wallet_addr"],
"aster": ["aster_user", "aster_signer", "aster_private_key"],
"lighter": ["lighter_wallet_addr", "lighter_api_key_private_key"]
},
"actions": {
"create": {
"description": "创建新的交易所配置。",
"required_slots": ["exchange_type"],
"optional_slots": ["account_name", "api_key", "secret_key", "passphrase", "testnet"]
"description": "创建新的交易所配置。根据 exchange_type 决定需要收集哪些凭证字段。",
"required_slots": ["exchange_type", "account_name"],
"optional_slots": ["account_name", "api_key", "secret_key", "passphrase", "testnet", "hyperliquid_wallet_addr", "hyperliquid_unified_account", "aster_user", "aster_signer", "aster_private_key", "lighter_wallet_addr", "lighter_private_key", "lighter_api_key_private_key", "lighter_api_key_index"],
"goal": "创建一个可供 trader 绑定使用的交易所配置。",
"dynamic_rules": [
"确认 exchange_type 后,根据 per_exchange_required_fields 决定需要追问哪些凭证字段。",
"Binance/Bybit/Gate/Indodax 需要 API Key + SecretOKX/Bitget/KuCoin 还必须追问 passphraseHyperliquid 必须追问 api_key + 钱包地址,并允许记录 unified account 开关Aster 必须追问 user/signer/private_keyLighter 必须追问钱包地址和 api_key_private_key。",
"凭证字段格式不符时,用人话告知用户正确格式,不要静默丢弃。",
"若当前父任务只是缺一个可用交易所,本动作完成后应允许父任务恢复并消费新的 exchange_id。",
"若请求只是在启用已有交易所,不应误走 create应改走 update_status。"
],
"success_output": "返回新 exchange_id 和创建后的交易所配置摘要(类型、账户名、是否启用)。",
"failure_output": "明确指出缺失的必填字段或非法凭证格式,禁止返回含糊的成功信息。"
},
"update": {
"description": "更新已有交易所配置。",
"description": "更新已有交易所配置的任意可编辑字段。",
"required_slots": ["target_ref"],
"optional_slots": ["account_name", "api_key", "secret_key", "passphrase", "enabled", "testnet"]
"optional_slots": ["account_name", "api_key", "secret_key", "passphrase", "enabled", "testnet", "hyperliquid_wallet_addr", "hyperliquid_unified_account", "aster_user", "aster_signer", "aster_private_key", "lighter_wallet_addr", "lighter_private_key", "lighter_api_key_private_key", "lighter_api_key_index"],
"goal": "更新一个已有交易所配置的指定字段,而不影响未提及字段。",
"dynamic_rules": [
"只更新用户明确提到的字段,不要覆盖未提及的字段。",
"更新凭证字段时,格式不符则提示用户重新输入。"
],
"success_output": "返回 exchange_id 和更新后的交易所配置摘要。",
"failure_output": "明确指出目标交易所不存在、凭证格式非法,或仍缺哪个字段。"
},
"update_name": {
"description": "修改交易所配置中的账户显示名称字段。",
"required_slots": ["target_ref", "account_name"],
"goal": "修改交易所配置中的账户显示名称,而不影响其他字段。",
"dynamic_rules": [
"若用户同时提到其他字段,应优先走更通用的 update。"
],
"success_output": "返回 exchange_id并明确告知交易所配置已更新。",
"failure_output": "明确指出目标交易所不存在,或新的账户名称仍缺失。"
},
"update_status": {
"description": "修改交易所配置中的启用开关。启用前系统会校验凭证完整性。",
"required_slots": ["target_ref", "enabled"],
"goal": "修改交易所配置中的启用状态字段。",
"dynamic_rules": [
"启用前根据 exchange_type 校验必填凭证是否齐全,不齐全则提示用户补填后再启用。"
],
"success_output": "返回 exchange_id并明确告知交易所配置已更新。",
"failure_output": "明确指出目标交易所不存在、缺少必填凭证,或当前状态切换失败。"
},
"delete": {
"description": "删除交易所配置。",
"description": "删除交易所配置,不可逆操作,必须确认。",
"required_slots": ["target_ref"],
"needs_confirmation": true
"needs_confirmation": true,
"goal": "删除一个交易所配置。",
"dynamic_rules": [
"必须在确认后执行,并明确提醒删除不可逆。"
],
"success_output": "返回删除成功结果,并明确告知该交易所配置已被移除。",
"failure_output": "明确指出缺少确认、目标交易所不存在,或删除失败原因。"
},
"query": {
"description": "查询交易所配置。"
"query_list": {
"description": "查询所有交易所配置列表,包含类型、账户名、启用状态。",
"goal": "列出当前用户可用的交易所配置,便于后续绑定或选择。",
"dynamic_rules": [
"优先返回类型、账户名、启用状态,不返回敏感凭证明文。"
],
"success_output": "返回交易所配置列表摘要。",
"failure_output": "若列表为空,应明确告知当前没有交易所配置。"
},
"query_detail": {
"description": "查询某个交易所配置的详细信息。",
"required_slots": ["target_ref"],
"goal": "读取一个交易所配置的详细信息和当前状态。",
"dynamic_rules": [
"详情返回中只能暴露凭证存在性,不得返回凭证明文。"
],
"success_output": "返回目标交易所配置的详细摘要。",
"failure_output": "明确指出目标交易所不存在,或当前引用已经失效。"
}
},
"tool_mapping": {
"create": "manage_exchange_config:create",
"update": "manage_exchange_config:update",
"update_name": "manage_exchange_config:update",
"update_status": "manage_exchange_config:update",
"delete": "manage_exchange_config:delete",
"query": "get_exchange_configs"
"query_list": "get_exchange_configs",
"query_detail": "get_exchange_configs"
}
}

View File

@@ -3,30 +3,146 @@
"kind": "management",
"domain": "model",
"description": "当用户想创建、查看、修改或删除 AI 模型配置时调用。适用于用户提到 provider、API Key、Base URL、模型名称、启用状态等配置管理需求。不用于排查模型调用失败、接口不兼容、鉴权错误、模型不存在等诊断问题。",
"field_constraints": {
"provider": {
"type": "enum",
"required": true,
"values": ["openai", "deepseek", "claude", "gemini", "qwen", "kimi", "grok", "minimax", "claw402", "blockrun-base", "blockrun-sol"],
"description": "模型提供商,必填。决定默认模型、凭证类型以及可选配置项。"
},
"name": {
"type": "string",
"max_length": 50,
"description": "模型配置显示名称,可选,用于区分同一 provider 的多个配置。"
},
"api_key": {
"type": "credential",
"description": "模型凭证。普通 provider 使用 API Keyclaw402 和 blockrun 使用钱包私钥。启用前必须填写。"
},
"custom_api_url": {
"type": "url",
"must_be_https": true,
"description": "自定义 API Base URL必须是合法的 HTTPS 地址。普通 provider 可留空走默认地址claw402 / blockrun 不需要。"
},
"custom_model_name": {
"type": "string",
"description": "实际调用的模型 ID例如 gpt-5.1、deepseek-chat。若 provider 有默认模型,可留空走默认值。"
},
"enabled": {
"type": "bool",
"default": false,
"description": "是否启用该模型配置。启用前必须填写 provider 对应的凭证;若 provider 没有默认模型,还需要 custom_model_name。"
}
},
"validation_rules": [
"provider 必须是支持列表之一openai、deepseek、claude、gemini、qwen、kimi、grok、minimax、claw402、blockrun-base、blockrun-sol。",
"OpenAI 的 api_key 格式校验:必须以 sk- 开头,不符合时提示用户检查 Key 是否完整。",
"custom_api_url 若填写,必须是合法 HTTPS 地址,系统拒绝 HTTP 地址,提示用户改用 HTTPS。",
"启用enabled=true前必须填写 provider 对应的凭证;如果 custom_model_name 留空,则系统应先尝试使用 provider 默认模型。",
"启用enabled=truecustom_api_url 若填写必须是合法 HTTPS 地址;不允许用 HTTP 地址硬启用。",
"删除操作不可逆,必须先向用户确认再执行。"
],
"actions": {
"create": {
"description": "创建新的模型配置。",
"required_slots": ["provider"],
"optional_slots": ["name", "api_key", "custom_api_url", "custom_model_name", "enabled"]
"optional_slots": ["name", "api_key", "custom_api_url", "custom_model_name", "enabled"],
"goal": "创建一个可供 trader 绑定使用的模型配置。",
"dynamic_rules": [
"确认 provider 后,先说明该 provider 的默认模型和凭证类型,再按 provider 特性补充追问。",
"普通 provideropenai、deepseek、claude 等)通常需要 api_keycustom_api_url 和 custom_model_name 可留空走默认值。",
"claw402 需要钱包私钥,不需要 custom_api_urlcustom_model_name 留空时默认 deepseek。",
"blockrun-base 和 blockrun-sol 需要钱包私钥,不需要 custom_api_urlcustom_model_name 留空时默认 auto。",
"若用户提供了 custom_api_url校验是否为合法 HTTPS 地址,不合法则提示修正。",
"OpenAI 的 api_key 不以 sk- 开头时,提示用户检查 Key 格式。",
"若用户要在父任务里使用现有模型,应优先选择当前已启用模型,而不是误开新的 create。",
"若当前父任务只是缺一个可用模型,本动作完成后应允许父任务恢复并消费新的 model_id。"
],
"success_output": "返回 model_id 和创建后的模型配置摘要provider、名称、是否启用。",
"failure_output": "明确指出缺失字段、非法 endpoint 或不支持的 provider禁止只说泛化失败。"
},
"update": {
"description": "更新已有模型配置。",
"description": "更新已有模型配置的任意可编辑字段。",
"required_slots": ["target_ref"],
"optional_slots": ["api_key", "custom_api_url", "custom_model_name", "enabled"]
"optional_slots": ["name", "api_key", "custom_api_url", "custom_model_name", "enabled"],
"goal": "更新一个已有模型配置的指定字段,而不覆盖未提及字段。",
"dynamic_rules": [
"只更新用户明确提到的字段,不要覆盖未提及的字段。",
"更新 custom_api_url 时校验 HTTPS 格式。",
"更新 api_key 时对 OpenAI 校验 sk- 前缀。"
],
"success_output": "返回 model_id 和更新后的模型配置摘要。",
"failure_output": "明确指出目标模型不存在、provider/endpoint 非法,或仍缺哪个关键字段。"
},
"update_status": {
"description": "启用或禁用模型配置。启用前系统会校验 api_key 和 custom_model_name 是否已填写。",
"required_slots": ["target_ref", "enabled"],
"goal": "切换模型配置的启用状态。",
"dynamic_rules": [
"启用前必须确保 api_key 和 custom_model_name 已经齐全;若 provider 有特殊规则,也要在提示中体现。"
],
"success_output": "返回 model_id并明确告知该模型已启用或已禁用。",
"failure_output": "明确指出目标模型不存在、缺少启用前必填项,或当前状态切换失败。"
},
"update_endpoint": {
"description": "仅修改模型的 custom_api_url。",
"required_slots": ["target_ref", "custom_api_url"],
"goal": "仅更新模型配置的 custom_api_url。",
"dynamic_rules": [
"custom_api_url 必须是合法 HTTPS 地址;若不合法,先让用户修正而不是继续执行。"
],
"success_output": "返回 model_id并明确告知新的接口地址。",
"failure_output": "明确指出目标模型不存在,或接口地址仍不合法。"
},
"update_name": {
"description": "仅修改模型配置的 custom_model_name实际调用的模型 ID。",
"required_slots": ["target_ref", "custom_model_name"],
"goal": "仅更新模型配置的实际调用模型 ID。",
"dynamic_rules": [
"若用户其实是在改显示名称或 provider应转去更通用的 update而不是误用本动作。"
],
"success_output": "返回 model_id并明确告知新的 custom_model_name。",
"failure_output": "明确指出目标模型不存在,或新的模型 ID 仍未收齐。"
},
"delete": {
"description": "删除模型配置。",
"description": "删除模型配置,不可逆操作,必须确认。",
"required_slots": ["target_ref"],
"needs_confirmation": true
"needs_confirmation": true,
"goal": "删除一个模型配置。",
"dynamic_rules": [
"必须在确认后执行,并明确提醒删除不可逆。"
],
"success_output": "返回删除成功结果,并明确告知该模型配置已被移除。",
"failure_output": "明确指出缺少确认、目标模型不存在,或删除失败原因。"
},
"query": {
"description": "查询模型配置。"
"query_list": {
"description": "查询所有模型配置列表,包含 provider、名称、启用状态。",
"goal": "列出当前用户可见的模型配置,便于后续选择或绑定。",
"dynamic_rules": [
"优先返回 provider、名称、启用状态不返回 API Key 明文。"
],
"success_output": "返回模型配置列表摘要。",
"failure_output": "若列表为空,应明确告知当前没有模型配置。"
},
"query_detail": {
"description": "查询某个模型配置的详细信息。",
"required_slots": ["target_ref"],
"goal": "读取一个模型配置的详细信息。",
"dynamic_rules": [
"详情返回中只能暴露 API Key 是否存在,不得返回明文凭证。"
],
"success_output": "返回目标模型配置的详细摘要。",
"failure_output": "明确指出目标模型不存在,或当前引用已经失效。"
}
},
"tool_mapping": {
"create": "manage_model_config:create",
"update": "manage_model_config:update",
"update_status": "manage_model_config:update",
"update_endpoint": "manage_model_config:update",
"update_name": "manage_model_config:update",
"delete": "manage_model_config:delete",
"query": "get_model_configs"
"query_list": "get_model_configs",
"query_detail": "get_model_configs"
}
}

View File

@@ -2,41 +2,479 @@
"name": "strategy_management",
"kind": "management",
"domain": "strategy",
"description": "当用户想创建、查看、修改、删除、激活或复制策略模板时调用。适用于用户提到策略名称、策略配置、描述、语言、激活状态、复制新版本等管理需求。不用于排查策略未生效、策略输出异常、执行结果异常等诊断问题。",
"description": "当用户想创建、查看、修改、删除、激活或复制策略模板时调用。策略模板不能直接启动运行;只有绑定了该策略的交易员可以启动。",
"field_constraints": {
"name": {
"type": "string",
"required": true,
"max_length": 50,
"description": "策略模板名称,必填,最多 50 个字符。"
},
"description": {
"type": "string",
"description": "策略描述,可选。"
},
"lang": {
"type": "enum",
"values": ["zh", "en"],
"default": "zh",
"description": "策略语言zh 或 en影响 AI 决策时使用的语言。"
},
"strategy_type": {
"type": "enum",
"values": ["ai_trading", "grid_trading"],
"default": "ai_trading",
"description": "策略类型ai_tradingAI 量化)或 grid_trading网格策略。"
},
"source_type": {
"type": "enum",
"values": ["static", "ai500", "oi_top", "oi_low", "mixed"],
"description": "选币来源类型。static=用户指定静态币池ai500=AI500榜单oi_top=持仓量增长oi_low=持仓量下降mixed=混合。"
},
"static_coins": {
"type": "string_array",
"description": "静态币池,例如 [\"BTCUSDT\", \"ETHUSDT\"]source_type=static 时使用。"
},
"excluded_coins": {
"type": "string_array",
"description": "排除币列表,所有来源均会排除这些币。"
},
"primary_timeframe": {
"type": "string",
"values": ["1m", "3m", "5m", "15m", "30m", "1h", "4h", "1d"],
"description": "主 K 线周期,例如 5m、15m、1h。"
},
"selected_timeframes": {
"type": "string_array",
"description": "多周期分析时间框架列表,例如 [\"5m\",\"15m\",\"1h\"]。"
},
"btceth_max_leverage": {
"type": "int",
"min": 1,
"max": 20,
"description": "BTC/ETH 最大杠杆倍数,范围 120。"
},
"altcoin_max_leverage": {
"type": "int",
"min": 1,
"max": 20,
"description": "山寨币最大杠杆倍数,范围 120。"
},
"max_positions": {
"type": "int",
"min": 1,
"description": "最大同时持仓数量,最小 1。"
},
"min_confidence": {
"type": "int",
"min": 0,
"max": 100,
"description": "最小开仓置信度,范围 0100数值越高开单越谨慎。"
},
"min_risk_reward_ratio": {
"type": "float",
"min": 0.1,
"description": "最小盈亏比,例如 1.5 表示每笔交易至少 1.5 倍风险收益比。"
},
"custom_prompt": {
"type": "text",
"description": "自定义 AI 提示词,追加到策略基础提示词之后。"
},
"role_definition": {
"type": "text",
"description": "AI 角色定义,描述 AI 的交易风格和定位。"
},
"trading_frequency": {
"type": "text",
"description": "交易频率描述,例如:每天最多开 3 笔。"
},
"entry_standards": {
"type": "text",
"description": "入场标准描述,例如:只在趋势明确时开仓。"
},
"decision_process": {
"type": "text",
"description": "决策流程描述,例如:先看大周期趋势,再看小周期入场点。"
},
"grid_count": {
"type": "int",
"min": 2,
"description": "网格数量grid_trading 类型专用,最小 2。"
},
"total_investment": {
"type": "float",
"min": 0,
"description": "网格总投入金额grid_trading 类型专用。"
},
"upper_price": {
"type": "float",
"description": "网格上边界价格grid_trading 类型专用。"
},
"lower_price": {
"type": "float",
"description": "网格下边界价格grid_trading 类型专用,必须小于 upper_price。"
},
"distribution": {
"type": "enum",
"values": ["uniform", "gaussian", "pyramid"],
"description": "网格分布方式uniform=均匀gaussian=正态pyramid=金字塔。"
},
"use_atr_bounds": {
"type": "bool",
"default": false,
"description": "网格边界是否改为按 ATR 动态计算。"
},
"atr_multiplier": {
"type": "float",
"min": 0,
"description": "ATR 边界倍数use_atr_bounds=true 时使用。"
},
"enable_direction_adjust": {
"type": "bool",
"default": false,
"description": "是否启用方向偏置调整。"
},
"direction_bias_ratio": {
"type": "float",
"min": 0,
"description": "方向偏置比例,决定多空倾向强弱。"
},
"max_drawdown_pct": {
"type": "float",
"min": 0,
"max": 100,
"description": "最大回撤百分比止损,范围 0100。"
},
"stop_loss_pct": {
"type": "float",
"min": 0,
"max": 100,
"description": "止损百分比,范围 0100。"
},
"daily_loss_limit_pct": {
"type": "float",
"min": 0,
"max": 100,
"description": "每日最大亏损比例,达到后当天停止新开仓。"
},
"use_maker_only": {
"type": "bool",
"default": false,
"description": "是否优先只挂 maker 单。"
},
"use_ai500": {
"type": "bool",
"default": false,
"description": "是否启用 AI500 榜单作为候选币来源。"
},
"ai500_limit": {
"type": "int",
"min": 1,
"description": "AI500 榜单选取数量。"
},
"use_oi_top": {
"type": "bool",
"default": false,
"description": "是否启用 OI Top 作为候选币来源。"
},
"oi_top_limit": {
"type": "int",
"min": 1,
"description": "OI Top 选取数量。"
},
"use_oi_low": {
"type": "bool",
"default": false,
"description": "是否启用 OI Low 作为候选币来源。"
},
"oi_low_limit": {
"type": "int",
"min": 1,
"description": "OI Low 选取数量。"
},
"primary_count": {
"type": "int",
"min": 1,
"description": "主周期样本数量。"
},
"enable_ema": {
"type": "bool",
"default": false,
"description": "是否启用 EMA 指标。"
},
"enable_macd": {
"type": "bool",
"default": false,
"description": "是否启用 MACD 指标。"
},
"enable_rsi": {
"type": "bool",
"default": false,
"description": "是否启用 RSI 指标。"
},
"enable_atr": {
"type": "bool",
"default": false,
"description": "是否启用 ATR 指标。"
},
"enable_boll": {
"type": "bool",
"default": false,
"description": "是否启用布林带指标。"
},
"enable_volume": {
"type": "bool",
"default": false,
"description": "是否启用成交量指标。"
},
"enable_oi": {
"type": "bool",
"default": false,
"description": "是否启用持仓量指标。"
},
"enable_funding_rate": {
"type": "bool",
"default": false,
"description": "是否启用资金费率指标。"
},
"ema_periods": {
"type": "int_array",
"description": "EMA 周期列表,例如 [9,21,55]。"
},
"rsi_periods": {
"type": "int_array",
"description": "RSI 周期列表。"
},
"atr_periods": {
"type": "int_array",
"description": "ATR 周期列表。"
},
"boll_periods": {
"type": "int_array",
"description": "布林带周期列表。"
},
"nofxos_api_key": {
"type": "credential",
"description": "量化数据 API Key。"
},
"enable_quant_data": {
"type": "bool",
"default": false,
"description": "是否启用量化数据增强。"
},
"enable_quant_oi": {
"type": "bool",
"default": false,
"description": "是否启用量化持仓量数据。"
},
"enable_quant_netflow": {
"type": "bool",
"default": false,
"description": "是否启用量化净流入数据。"
},
"enable_oi_ranking": {
"type": "bool",
"default": false,
"description": "是否启用 OI 排行榜。"
},
"oi_ranking_duration": {
"type": "string",
"description": "OI 排行榜统计周期。"
},
"oi_ranking_limit": {
"type": "int",
"min": 1,
"description": "OI 排行榜返回数量。"
},
"enable_netflow_ranking": {
"type": "bool",
"default": false,
"description": "是否启用净流入排行榜。"
},
"netflow_ranking_duration": {
"type": "string",
"description": "净流入排行榜统计周期。"
},
"netflow_ranking_limit": {
"type": "int",
"min": 1,
"description": "净流入排行榜返回数量。"
},
"enable_price_ranking": {
"type": "bool",
"default": false,
"description": "是否启用价格波动排行榜。"
},
"price_ranking_duration": {
"type": "string",
"description": "价格排行榜统计周期。"
},
"price_ranking_limit": {
"type": "int",
"min": 1,
"description": "价格排行榜返回数量。"
},
"btceth_max_position_value_ratio": {
"type": "float",
"min": 0,
"description": "BTC/ETH 单仓最大仓位价值占比。"
},
"altcoin_max_position_value_ratio": {
"type": "float",
"min": 0,
"description": "山寨币单仓最大仓位价值占比。"
},
"max_margin_usage": {
"type": "float",
"min": 0,
"description": "最大保证金占用比例。"
},
"min_position_size": {
"type": "float",
"min": 0,
"description": "最小下单金额。"
}
},
"validation_rules": [
"btceth_max_leverage 和 altcoin_max_leverage 范围均为 120超出时自动收敛并告知用户。",
"min_confidence 范围 0100超出时自动收敛并告知用户。",
"grid_trading 类型时lower_price 必须小于 upper_price否则提示用户修正。",
"grid_count 最小为 2低于 2 时提示用户修正。",
"策略模板不能直接启动运行,只有绑定了该策略的交易员才能启动。",
"删除操作不可逆,必须先向用户确认再执行。",
"激活activate操作将该策略设为默认模板不是启动运行。",
"scan_interval_minutes、initial_balance、lighter_api_key_index 这类交易员/交易所边界值不属于策略本身,若用户在改策略时提到,应引导去对应 trader 或 exchange 配置。",
"btceth_max_position_value_ratio、altcoin_max_position_value_ratio、max_margin_usage、min_position_size 等风控字段若越界,应先自动收敛或提示用户确认修正后的值。",
"启用量化数据相关开关时,若需要 nofxos_api_key应主动提醒用户补齐。",
"启用排行榜相关能力时,只修改用户明确提到的 enable_*、duration、limit 字段,不要偷偷打开其他排行榜。"
],
"actions": {
"create": {
"description": "创建策略模板。",
"description": "创建策略模板。至少需要名称,其他配置可按需追问或按默认值补齐。",
"required_slots": ["name"],
"optional_slots": ["config", "description", "lang"]
"optional_slots": ["description", "lang", "strategy_type", "source_type", "static_coins", "excluded_coins", "primary_timeframe", "selected_timeframes", "btceth_max_leverage", "altcoin_max_leverage", "max_positions", "min_confidence", "min_risk_reward_ratio", "custom_prompt", "role_definition", "trading_frequency", "entry_standards", "decision_process", "use_atr_bounds", "atr_multiplier", "enable_direction_adjust", "direction_bias_ratio", "grid_count", "total_investment", "upper_price", "lower_price", "distribution", "max_drawdown_pct", "stop_loss_pct", "daily_loss_limit_pct", "use_maker_only", "use_ai500", "ai500_limit", "use_oi_top", "oi_top_limit", "use_oi_low", "oi_low_limit", "primary_count", "enable_ema", "enable_macd", "enable_rsi", "enable_atr", "enable_boll", "enable_volume", "enable_oi", "enable_funding_rate", "ema_periods", "rsi_periods", "atr_periods", "boll_periods", "nofxos_api_key", "enable_quant_data", "enable_quant_oi", "enable_quant_netflow", "enable_oi_ranking", "oi_ranking_duration", "oi_ranking_limit", "enable_netflow_ranking", "netflow_ranking_duration", "netflow_ranking_limit", "enable_price_ranking", "price_ranking_duration", "price_ranking_limit", "btceth_max_position_value_ratio", "altcoin_max_position_value_ratio", "max_margin_usage", "min_position_size"],
"goal": "创建一个可供 trader 绑定使用的策略模板。",
"dynamic_rules": [
"若用户只是要给 trader 绑定现有策略,应优先在父任务里补 strategy 槽位,而不是误开新的 create。",
"若用户明确要求新建策略,至少先收齐名称;其他配置可继续追问或按默认值协助补齐。",
"策略模板不能直接启动运行;本动作成功后通常返回 strategy_id 供后续 trader 绑定使用。",
"杠杆超出 120 范围时,自动收敛并告知用户。"
],
"success_output": "返回 strategy_id 和新策略摘要(名称、类型、主要配置)。",
"failure_output": "明确指出仍缺哪些核心参数,或说明需要先确认的风控收敛结果。"
},
"update": {
"description": "更新策略模板。",
"description": "更新策略模板的任意可编辑字段。",
"required_slots": ["target_ref"],
"optional_slots": ["name", "config", "description"]
"optional_slots": ["name", "description", "source_type", "static_coins", "excluded_coins", "primary_timeframe", "selected_timeframes", "btceth_max_leverage", "altcoin_max_leverage", "max_positions", "min_confidence", "min_risk_reward_ratio", "custom_prompt", "role_definition", "trading_frequency", "entry_standards", "decision_process", "grid_count", "total_investment", "upper_price", "lower_price", "distribution", "use_atr_bounds", "atr_multiplier", "enable_direction_adjust", "direction_bias_ratio", "max_drawdown_pct", "stop_loss_pct", "daily_loss_limit_pct", "use_maker_only", "use_ai500", "ai500_limit", "use_oi_top", "oi_top_limit", "use_oi_low", "oi_low_limit", "primary_count", "enable_ema", "enable_macd", "enable_rsi", "enable_atr", "enable_boll", "enable_volume", "enable_oi", "enable_funding_rate", "ema_periods", "rsi_periods", "atr_periods", "boll_periods", "nofxos_api_key", "enable_quant_data", "enable_quant_oi", "enable_quant_netflow", "enable_oi_ranking", "oi_ranking_duration", "oi_ranking_limit", "enable_netflow_ranking", "netflow_ranking_duration", "netflow_ranking_limit", "enable_price_ranking", "price_ranking_duration", "price_ranking_limit", "btceth_max_position_value_ratio", "altcoin_max_position_value_ratio", "max_margin_usage", "min_position_size"],
"goal": "更新一个已有策略模板的指定配置,而不覆盖未提及字段。",
"dynamic_rules": [
"只更新用户明确提到的字段,不要覆盖未提及的字段。",
"杠杆超出 120 范围时,自动收敛并告知用户。",
"grid_trading 类型时lower_price 必须小于 upper_price。"
],
"success_output": "返回 strategy_id 和更新后的策略摘要。",
"failure_output": "明确指出目标策略不存在、参数非法,或仍缺哪个关键字段。"
},
"delete": {
"description": "删除策略模板。",
"update_name": {
"description": "仅修改策略模板名称。",
"required_slots": ["target_ref", "name"],
"goal": "仅修改策略模板名称。",
"dynamic_rules": [
"若输入里还包含其他配置项,应优先转去更通用的 update 或 update_config。"
],
"success_output": "返回 strategy_id并明确告知新的策略名称。",
"failure_output": "明确指出目标策略不存在,或新的名称仍未收齐。"
},
"update_prompt": {
"description": "仅修改策略的 custom_prompt 或 prompt_sectionsrole_definition、trading_frequency、entry_standards、decision_process。",
"required_slots": ["target_ref"],
"needs_confirmation": true
"optional_slots": ["custom_prompt", "role_definition", "trading_frequency", "entry_standards", "decision_process"],
"goal": "更新策略模板的提示词相关内容,而不改动其他配置。",
"dynamic_rules": [
"若用户一次修改多个 prompt section应整体应用并在结果里清楚说明。",
"若用户实际是在改纯配置项,应转去 update_config。",
"当需要收集 custom_prompt 或 prompt_sections 等长文本槽位,而用户表达了“交给你”“你帮我写”“你自己设计”等委托生成意图时,严禁再次机械索要原文。",
"此时你必须直接以量化专家身份先拟出一版高质量文本,将生成内容写入对应字段,并在回复里展示草稿让用户确认是否直接采用。"
],
"success_output": "返回 strategy_id并明确告知哪些 prompt 字段已更新。",
"failure_output": "明确指出目标策略不存在,或新的 prompt 内容仍不完整。"
},
"update_config": {
"description": "修改策略的某个具体配置参数(选币来源、指标、风控参数等)。",
"required_slots": ["target_ref", "config_field", "config_value"],
"goal": "修改策略模板中的一个或一组具体配置参数。",
"dynamic_rules": [
"配置值超出手动面板边界时,应先自动收敛并明确告知用户。",
"若用户一次提到多个配置 patch可在同一轮内整体应用但要明确说明最终修改了哪些字段。",
"当配置更新涉及 custom_prompt、role_definition、trading_frequency、entry_standards、decision_process、description、name 等文本槽位,且用户表达了“交给你”“你帮我写”“你自己设计”等委托生成意图时,严禁再次向用户索要正文。",
"此时你必须直接生成一版可用文本,写入对应 extracted 字段,并用确认式问题向用户展示:“我先为你拟了一版……,要直接按这版更新吗?”"
],
"success_output": "返回 strategy_id并明确告知已修改的配置字段及其最终值。",
"failure_output": "明确指出目标策略不存在、配置字段非法,或值仍需用户澄清。"
},
"activate": {
"description": "激活策略模板。",
"required_slots": ["target_ref"]
"description": "策略模板设为默认模板(激活)。注意:这不是启动运行,只是设为默认。",
"required_slots": ["target_ref"],
"goal": "将某个策略模板设为默认模板,而不是直接运行它。",
"dynamic_rules": [
"必须明确区分“激活模板”和“启动交易员运行”,不要把 activate 解释成运行。"
],
"success_output": "返回 strategy_id并明确告知该策略已被设为默认模板。",
"failure_output": "明确指出目标策略不存在,或激活失败原因。"
},
"duplicate": {
"description": "复制策略模板。",
"required_slots": ["target_ref", "name"]
"description": "复制策略模板,生成一个新的同配置模板。",
"required_slots": ["target_ref", "name"],
"goal": "复制一个现有策略模板并生成新的模板名称。",
"dynamic_rules": [
"新名称必须单独收齐;若名称有歧义或为空,应先继续追问。"
],
"success_output": "返回新的 strategy_id并明确告知复制后的策略名称。",
"failure_output": "明确指出目标策略不存在,或新名称仍未收齐。"
},
"query": {
"description": "查询策略模板。"
"delete": {
"description": "删除策略模板,不可逆操作,必须确认。",
"required_slots": ["target_ref"],
"needs_confirmation": true,
"goal": "删除一个策略模板。",
"dynamic_rules": [
"必须在确认后执行,并明确提醒删除不可逆。",
"若策略是默认模板或受系统保护,应向用户解释限制。"
],
"success_output": "返回删除成功结果,并明确告知该策略模板已被移除。",
"failure_output": "明确指出缺少确认、目标策略不存在,或删除失败原因。"
},
"query_list": {
"description": "查询所有策略模板列表,包含名称、类型、是否为默认模板。",
"goal": "列出当前用户可见的策略模板,便于后续选择或绑定。",
"dynamic_rules": [
"优先返回名称、类型、默认状态,不必展开全部详细配置。"
],
"success_output": "返回策略模板列表摘要。",
"failure_output": "若列表为空,应明确告知当前没有策略模板。"
},
"query_detail": {
"description": "查询某个策略模板的详细配置,包括选币来源、指标、风控参数、提示词等。",
"required_slots": ["target_ref"],
"goal": "读取一个策略模板的详细配置。",
"dynamic_rules": [
"若目标有歧义,应先澄清再返回详情。"
],
"success_output": "返回目标策略模板的详细配置摘要。",
"failure_output": "明确指出目标策略不存在,或当前引用已经失效。"
}
},
"tool_mapping": {
"create": "manage_strategy:create",
"update": "manage_strategy:update",
"delete": "manage_strategy:delete",
"update_name": "manage_strategy:update",
"update_prompt": "manage_strategy:update",
"update_config": "manage_strategy:update",
"activate": "manage_strategy:activate",
"duplicate": "manage_strategy:duplicate",
"query": "get_strategies"
"delete": "manage_strategy:delete",
"query_list": "get_strategies",
"query_detail": "get_strategies"
}
}

View File

@@ -0,0 +1,63 @@
{
"name": "trade_execution",
"kind": "execution",
"domain": "trade",
"description": "当用户明确要求开仓、平仓、买入、卖出,或确认待执行的大额订单时调用。负责真实下单前的安全校验、待确认订单、确认执行与交易历史查询。",
"intents": [
"下单交易",
"开多开空",
"平仓",
"确认大额订单",
"查询交易历史"
],
"actions": {
"execute": {
"description": "创建一笔待确认交易。不会直接成交,而是先做风险检查,再给用户确认指令。",
"required_slots": ["action", "symbol", "quantity"],
"optional_slots": ["leverage", "trader_id"],
"needs_confirmation": true,
"goal": "在真实执行前先做风险检查,并给用户一个可确认的待执行订单。",
"dynamic_rules": [
"只有当用户明确要求交易时才允许进入本动作;分析、建议、解释行情都不应触发下单。",
"开仓数量必须大于 0单笔数量硬上限为 1000000超过时直接拒绝。",
"会先按实时价格估算名义价值;单笔名义价值硬上限为 100000 USDT超过时直接拒绝。",
"若单笔名义价值达到 5000 USDT或达到账户权益的 25%,必须标记为大额订单,要求用户发送“确认大额 trade_xxx”后才执行。",
"若单笔名义价值超过账户权益的 100%,直接拒绝,不允许创建待确认订单。",
"加密货币订单的杠杆上限受策略 btceth_max_leverage / altcoin_max_leverage 约束,默认上限为 5x超出时直接拒绝。",
"BTC/ETH 单笔最大仓位价值默认不超过 5 倍账户权益,山寨币默认不超过 1 倍账户权益;若策略里有自定义比例,以策略为准。",
"最小仓位价值默认 12 USDT若策略配置了 min_position_size以策略为准。低于最小值时直接拒绝。",
"创建后的待确认订单默认 5 分钟有效,超时自动失效。"
],
"success_output": "返回 trade_id、估算仓位价值、是否触发大额确认、确认命令和 5 分钟有效期。",
"failure_output": "用简单清楚的话说明是哪条风控挡住了,例如数量过大、仓位太小、杠杆过高、超过权益上限。"
},
"confirm_large_order": {
"description": "确认一笔已创建的大额待执行订单。",
"required_slots": ["trade_id"],
"needs_confirmation": true,
"goal": "在用户明确确认后,执行已通过初步检查的大额订单。",
"dynamic_rules": [
"用户必须发送“确认大额 trade_xxx”或“confirm large trade_xxx”才能执行大额订单。",
"若订单已过期、已不存在,或 trade_id 无效,要直接说明这笔订单已经失效。",
"若用户只发送普通确认,但订单被标记为大额订单,必须继续要求“大额确认”,不能直接放行。"
],
"success_output": "明确告知订单已执行,并展示方向、品种、数量。",
"failure_output": "明确说明订单已过期、风控未通过,或执行失败原因。"
},
"query_history": {
"description": "查询最近的交易历史。",
"optional_slots": ["limit", "trader_id"],
"goal": "让用户快速查看最近成交记录和交易结果。",
"dynamic_rules": [
"优先返回最近几笔最重要的交易,不要一次性给太长的开发者原始日志。",
"若当前没有交易记录,要直接说明当前还没有成交记录。"
],
"success_output": "返回最近交易记录摘要,包括方向、品种、时间和结果。",
"failure_output": "若没有记录或查询失败,要明确告知用户。"
}
},
"tool_mapping": {
"execute": "execute_trade",
"query_history": "get_trade_history"
}
}

View File

@@ -2,5 +2,23 @@
"name": "trader_diagnosis",
"kind": "diagnosis",
"domain": "trader",
"description": "当用户反馈交易员无法启动、启动后不交易、绑定模型或交易所缺失、运行状态异常、收益或仓位表现异常时调用。适用于交易员运行过程中的排障与原因定位。不用于创建、修改、删除、启动、停止或查询交易员这类管理操作。"
"description": "当用户反馈交易员无法启动、启动后不交易、反复报错、绑定模型或交易所缺失、运行状态异常、收益或仓位表现异常时调用。适用于交易员运行过程中的排障与原因定位。不用于创建、修改、删除、启动、停止或查询交易员这类管理操作。",
"capabilities": [
"读取交易员当前状态、账户、持仓和最近决策记录",
"在用户明确指定目标交易员后,读取该交易员最近的后端日志",
"把错误日志、运行状态和绑定信息合并成适合新手理解的诊断结论"
],
"dynamic_rules": [
"当用户问“为什么报错”“为什么不交易”“为什么停了”这类问题时,优先走诊断而不是管理类 skill。",
"如果已经能唯一确定目标交易员,应优先结合 get_backend_logs、持仓、状态和决策记录一起分析而不是只看配置。",
"当用户表达“启动不了”“启动失败”“无法启动”“一启动就报错”“为什么启动不起来”这类启动故障时,只要目标交易员能唯一确定,就优先自动读取 get_backend_logs。",
"当日志中已经出现明确错误原因时,直接用人话解释原因和下一步,不要只复述原始日志。"
],
"tool_mapping": {
"query_runtime_state": "get_trader_system_status",
"query_positions": "get_positions",
"query_account": "get_account_info",
"query_recent_decisions": "get_decisions",
"query_backend_logs": "get_backend_logs"
}
}

View File

@@ -2,7 +2,7 @@
"name": "trader_management",
"kind": "management",
"domain": "trader",
"description": "当用户想创建、查看、修改、删除、启动或停止交易员时调用。适用于用户提到交易员名称、绑定交易所、绑定模型、绑定策略、扫描频率、自定义提示词、运行状态等管理需求。不用于排查交易员启动失败、未下单、收益异常、仓位异常等诊断问题。",
"description": "当用户想创建、查看、修改、删除、启动或停止交易员时调用。适用于用户提到交易员名称、绑定交易所、绑定模型、绑定策略、保证金模式、扫描频率、竞技场显示、运行状态等管理需求。不用于排查交易员启动失败、未下单、收益异常、仓位异常等诊断问题。创建交易员时必须收齐名称、交易所、模型、策略;其中交易所、模型、策略既可以直接选择用户已有可用资源,也可以在当前主流程里先新建/启用对应资源,再继续完成交易员创建。",
"intents": [
"创建交易员",
"修改交易员",
@@ -11,42 +11,266 @@
"停止交易员",
"查询交易员"
],
"field_constraints": {
"name": {
"type": "string",
"required": true,
"max_length": 50,
"description": "交易员名称,用于识别和管理,最多 50 个字符。"
},
"exchange_id": {
"type": "entity_ref",
"required": true,
"description": "绑定的交易所配置 ID必须是已存在且已启用的交易所配置。"
},
"ai_model_id": {
"type": "entity_ref",
"required": true,
"description": "绑定的 AI 模型配置 ID必须是已存在且已启用的模型配置。"
},
"strategy_id": {
"type": "entity_ref",
"required": true,
"description": "绑定的策略模板 ID必须是已存在的策略模板。"
},
"scan_interval_minutes": {
"type": "int",
"min": 3,
"max": 60,
"default": 5,
"description": "AI 扫描决策间隔,单位分钟,手动面板可配置范围 360 分钟。超出范围会自动收敛到边界值并告知用户。"
},
"initial_balance": {
"type": "float",
"min": 100.0,
"description": "初始资金,手动面板最低 100。超出范围会自动收敛到最低值并告知用户。"
},
"is_cross_margin": {
"type": "bool",
"default": true,
"description": "保证金模式。true = 全仓cross marginfalse = 逐仓isolated margin。"
},
"show_in_competition": {
"type": "bool",
"default": true,
"description": "是否在竞技场中显示该交易员的成绩。"
},
"btc_eth_leverage": {
"type": "int",
"min": 1,
"max": 20,
"description": "交易员级别的 BTC/ETH 杠杆覆盖值,手动面板上限 20。"
},
"altcoin_leverage": {
"type": "int",
"min": 1,
"max": 20,
"description": "交易员级别的山寨币杠杆覆盖值,手动面板上限 20。"
},
"trading_symbols": {
"type": "string",
"description": "指定交易币对,通常为逗号分隔,例如 BTCUSDT,ETHUSDT。"
},
"custom_prompt": {
"type": "string",
"description": "交易员级别附加提示词,用于覆盖或补充默认策略提示。"
},
"override_base_prompt": {
"type": "bool",
"default": false,
"description": "是否完全覆盖系统默认提示词。"
},
"system_prompt_template": {
"type": "string",
"description": "系统提示词模板名称,例如 default。"
},
"use_ai500": {
"type": "bool",
"default": false,
"description": "是否启用 AI500 作为交易员级别候选币来源。"
},
"use_oi_top": {
"type": "bool",
"default": false,
"description": "是否启用 OI Top 作为交易员级别候选币来源。"
},
"auto_start": {
"type": "bool",
"default": false,
"description": "创建后是否立即启动交易员。启动前系统会校验绑定的交易所、模型、策略均可用。"
}
},
"validation_rules": [
"exchange_id 对应的交易所配置必须已启用enabled=true否则无法创建或启动交易员。",
"ai_model_id 对应的模型配置必须已启用enabled=true且配置完整api_key、custom_model_name 不为空custom_api_url 若填写必须为合法 HTTPS否则无法创建或启动交易员。",
"strategy_id 对应的策略模板必须存在,否则无法创建交易员。",
"scan_interval_minutes 超出 360 范围时,系统自动收敛到边界值,并通过 LLM 告知用户已调整,询问是否接受。",
"initial_balance 低于 100 时,系统自动收敛到 100并通过 LLM 告知用户已调整。",
"启动交易员前,绑定的模型必须已启用且完整,绑定的交易所也必须已启用且通过对应交易所的完整性校验,否则拒绝启动并明确指出缺哪一项。",
"若绑定的是 OKX 交易所,启用前必须已有 passphrase若绑定的是 Hyperliquid启用前必须已有 wallet_addr若绑定的是 Aster启用前必须已有 user、signer、private_key若绑定的是 Lighter启用前必须已有 wallet_addr 和 api_key_private_key。",
"btc_eth_leverage 和 altcoin_leverage 若超出系统允许范围,应自动收敛或提示用户修正。",
"trading_symbols 若填写,应保持为可识别的交易对列表格式。",
"启动start和停止stop操作属于高风险操作必须先向用户确认再执行。",
"删除delete操作不可逆必须先向用户确认再执行。"
],
"actions": {
"create": {
"description": "创建新的交易员。",
"required_slots": ["name", "exchange", "model"],
"optional_slots": ["strategy", "auto_start"]
"description": "创建新的交易员。若缺少交易所、模型或策略,可在当前流程内先选择已有资源,或切去对应 skill 新建/启用后自动回流继续。",
"required_slots": ["name", "exchange", "model", "strategy"],
"optional_slots": ["auto_start", "scan_interval_minutes", "initial_balance", "is_cross_margin", "show_in_competition", "btc_eth_leverage", "altcoin_leverage", "trading_symbols", "custom_prompt", "override_base_prompt", "system_prompt_template", "use_ai500", "use_oi_top"],
"goal": "创建并初始化一个交易员。",
"dynamic_rules": [
"若用户提到的交易所、模型或策略已经存在且可用,应优先直接补入对应槽位,不要重新创建。",
"若依赖资源不存在、被禁用,或用户明确要求新建或启用,禁止直接报缺字段;应切去对应 management:create 或 management:update_status 子任务。",
"子任务成功后,系统会恢复当前交易员草稿并继续补齐剩余槽位。",
"scan_interval_minutes 超出 360 时,自动收敛并告知用户。",
"若用户明确想覆盖杠杆、币种范围或提示词,应允许在创建阶段一并收集 btc_eth_leverage、altcoin_leverage、trading_symbols、custom_prompt、override_base_prompt、system_prompt_template、use_ai500、use_oi_top。",
"创建完成后询问用户是否立即启动auto_start启动前再次确认。"
],
"success_output": "返回 trader_id并给出创建结果摘要名称、绑定的交易所/模型/策略、是否已启动)。",
"failure_output": "用人话指出缺失依赖项,或说明当前正在进入哪个依赖子任务。"
},
"update": {
"description": "更新已有交易员。",
"description": "更新已有交易员的任意可编辑字段。",
"required_slots": ["target_ref"],
"optional_slots": ["name", "exchange", "model", "strategy", "scan_interval_minutes", "custom_prompt"]
"optional_slots": ["name", "exchange_id", "ai_model_id", "strategy_id", "scan_interval_minutes", "initial_balance", "is_cross_margin", "show_in_competition", "btc_eth_leverage", "altcoin_leverage", "trading_symbols", "custom_prompt", "override_base_prompt", "system_prompt_template", "use_ai500", "use_oi_top"],
"goal": "更新一个已有交易员的配置,但只修改用户明确要求变更的字段。",
"dynamic_rules": [
"只更新用户明确提到的字段,不要覆盖未提及的字段。",
"换绑交易所/模型/策略时,新的资源必须已存在且已启用,否则提示用户先启用或新建。",
"scan_interval_minutes 超出 360 时,自动收敛并告知用户。",
"若用户修改的是交易员级杠杆、指定币对、提示词或选币来源,也应走 update而不是误导去改策略。"
],
"success_output": "返回更新后的 trader_id 与简短配置摘要,明确哪些字段已经生效。",
"failure_output": "明确指出目标交易员不存在、依赖资源不可用,或哪一个字段值仍需用户补充/修正。"
},
"delete": {
"description": "删除交易员。",
"update_name": {
"description": "仅修改交易员名称。",
"required_slots": ["target_ref", "name"],
"goal": "把指定交易员改成新的名称,不影响其他配置。",
"dynamic_rules": [
"若当前输入里同时包含别的配置字段,应优先转去更通用的 update而不是只改名。"
],
"success_output": "返回 trader_id并明确告知新的交易员名称。",
"failure_output": "明确指出目标交易员不存在,或新的名称仍未收齐。"
},
"update_bindings": {
"description": "修改交易员绑定的交易所、模型或策略(可同时修改多个)。",
"required_slots": ["target_ref"],
"needs_confirmation": true
"optional_slots": ["exchange_id", "ai_model_id", "strategy_id"],
"goal": "调整交易员绑定的依赖资源,而不改动无关配置。",
"dynamic_rules": [
"新绑定的资源必须已存在且已启用,否则提示用户先启用或新建。"
],
"success_output": "返回 trader_id并明确展示新的模型/交易所/策略绑定结果。",
"failure_output": "明确指出缺少哪个绑定目标,或当前依赖资源为什么不可直接绑定。"
},
"configure_strategy": {
"description": "仅修改交易员绑定的策略。",
"required_slots": ["target_ref", "strategy_id"],
"goal": "为指定交易员换绑一个策略模板。",
"dynamic_rules": [
"若用户提到的是不存在的策略,应优先澄清或引导创建,而不是静默失败。"
],
"success_output": "返回 trader_id并明确告知当前生效的 strategy_id/策略名称。",
"failure_output": "明确指出目标交易员或策略不存在,或策略仍需用户澄清。"
},
"configure_exchange": {
"description": "仅修改交易员绑定的交易所。",
"required_slots": ["target_ref", "exchange_id"],
"goal": "为指定交易员换绑一个交易所配置。",
"dynamic_rules": [
"新的交易所配置必须已启用且可用,否则提示用户先启用或补齐凭证。"
],
"success_output": "返回 trader_id并明确告知当前生效的 exchange_id/交易所名称。",
"failure_output": "明确指出目标交易员或交易所不存在,或交易所当前不可用。"
},
"configure_model": {
"description": "仅修改交易员绑定的 AI 模型。",
"required_slots": ["target_ref", "ai_model_id"],
"goal": "为指定交易员换绑一个 AI 模型配置。",
"dynamic_rules": [
"新的模型配置必须已启用且可调用,否则提示用户先启用或补齐模型配置。"
],
"success_output": "返回 trader_id并明确告知当前生效的 ai_model_id/模型名称。",
"failure_output": "明确指出目标交易员或模型不存在,或模型当前不可用。"
},
"start": {
"description": "启动交易员。",
"description": "启动交易员,使其开始自动交易。高风险操作,必须确认。",
"required_slots": ["target_ref"],
"needs_confirmation": true
"needs_confirmation": true,
"goal": "让一个已配置好的交易员进入运行状态。",
"dynamic_rules": [
"启动前系统会自动校验绑定的交易所、模型、策略是否均可用。",
"若校验失败,用人话告知用户具体哪个依赖不可用,并引导修复。"
],
"success_output": "返回 trader_id并明确告知交易员已开始运行。",
"failure_output": "明确指出缺少确认、依赖资源不可用,或启动未通过校验。"
},
"stop": {
"description": "停止交易员。",
"description": "停止交易员,使其停止自动交易。高风险操作,必须确认。",
"required_slots": ["target_ref"],
"needs_confirmation": true
"needs_confirmation": true,
"goal": "让一个运行中的交易员停止自动交易。",
"dynamic_rules": [
"若交易员当前并未运行,也应给用户清晰说明,而不是假装停止成功。"
],
"success_output": "返回 trader_id并明确告知交易员已停止。",
"failure_output": "明确指出缺少确认、目标交易员不存在,或当前状态无法停止。"
},
"query": {
"description": "查询交易员列表或状态。"
"delete": {
"description": "删除交易员,不可逆操作,必须确认。",
"required_slots": ["target_ref"],
"needs_confirmation": true,
"goal": "删除一个交易员及其运行入口。",
"dynamic_rules": [
"必须在确认后执行,并明确提醒该操作不可逆。"
],
"success_output": "返回删除成功结果,并明确告知该交易员已被移除。",
"failure_output": "明确指出缺少确认、目标交易员不存在,或删除失败原因。"
},
"query_list": {
"description": "查询所有交易员列表,包含名称、运行状态、绑定信息。",
"goal": "列出当前用户可见的交易员,并给出足够的摘要用于后续选择。",
"dynamic_rules": [
"优先返回名称、运行状态、绑定的模型/交易所/策略,不要冗余展开全部详情。"
],
"success_output": "返回交易员列表摘要,便于用户继续指定目标对象。",
"failure_output": "若列表为空,应明确告知当前没有交易员,而不是返回模糊空结果。"
},
"query_running": {
"description": "查询当前运行中的交易员列表。",
"goal": "仅列出处于运行状态的交易员。",
"dynamic_rules": [
"若当前没有运行中的交易员,应明确告知为空。"
],
"success_output": "返回当前运行中的交易员列表摘要。",
"failure_output": "若没有运行中的交易员,应明确返回空列表说明。"
},
"query_detail": {
"description": "查询某个交易员的详细配置,包括绑定的交易所、模型、策略、扫描间隔、保证金模式等。",
"required_slots": ["target_ref"],
"goal": "读取一个交易员的详细配置和当前绑定信息。",
"dynamic_rules": [
"若目标对象有歧义,应先澄清再读取详情。"
],
"success_output": "返回目标交易员的详细配置摘要。",
"failure_output": "明确指出目标交易员不存在,或当前引用需要重新指定。"
}
},
"tool_mapping": {
"create": "manage_trader:create",
"update": "manage_trader:update",
"delete": "manage_trader:delete",
"update_name": "manage_trader:update",
"update_bindings": "manage_trader:update",
"configure_strategy": "manage_trader:update",
"configure_exchange": "manage_trader:update",
"configure_model": "manage_trader:update",
"start": "manage_trader:start",
"stop": "manage_trader:stop",
"query": "manage_trader:list"
"delete": "manage_trader:delete",
"query_list": "manage_trader:list",
"query_running": "manage_trader:list",
"query_detail": "manage_trader:list"
}
}