tickflow-assist 0.3.7 → 0.3.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/README.md +8 -6
  2. package/dist/background/realtime-monitor.worker.d.ts +1 -1
  3. package/dist/background/realtime-monitor.worker.js +3 -4
  4. package/dist/bootstrap.js +9 -0
  5. package/dist/dev/run-monitor-loop.js +0 -1
  6. package/dist/plugin-commands.js +27 -0
  7. package/dist/prompts/analysis/pre-market-brief-prompt.d.ts +1 -1
  8. package/dist/prompts/analysis/pre-market-brief-prompt.js +4 -3
  9. package/dist/services/alert-service.js +34 -4
  10. package/dist/services/monitor-service.d.ts +1 -1
  11. package/dist/services/monitor-service.js +18 -9
  12. package/dist/services/mx-search-service.d.ts +8 -1
  13. package/dist/services/mx-search-service.js +400 -10
  14. package/dist/services/pre-market-brief-service.js +343 -39
  15. package/dist/services/watchlist-service.d.ts +5 -1
  16. package/dist/services/watchlist-service.js +8 -3
  17. package/dist/tools/eastmoney-watchlist.tool.d.ts +31 -0
  18. package/dist/tools/eastmoney-watchlist.tool.js +294 -0
  19. package/dist/tools/mx-data.tool.d.ts +8 -0
  20. package/dist/tools/mx-data.tool.js +94 -0
  21. package/dist/tools/mx-select-stock.tool.js +6 -2
  22. package/dist/tools/screen-stock-candidates.tool.d.ts +34 -0
  23. package/dist/tools/screen-stock-candidates.tool.js +477 -0
  24. package/dist/types/mx-data.d.ts +23 -0
  25. package/dist/types/mx-data.js +1 -0
  26. package/dist/types/mx-select-stock.d.ts +1 -0
  27. package/dist/types/mx-self-select.d.ts +30 -0
  28. package/dist/types/mx-self-select.js +1 -0
  29. package/openclaw.plugin.json +143 -24
  30. package/package.json +9 -9
  31. package/skills/stock-analysis/SKILL.md +31 -2
  32. package/skills/usage-help/SKILL.md +33 -0
@@ -1,31 +1,150 @@
1
1
  {
2
2
  "id": "tickflow-assist",
3
3
  "name": "TickFlow Assist",
4
- "version": "0.3.7",
4
+ "version": "0.3.9",
5
5
  "description": "A-share watchlist analysis, monitoring, and alert delivery powered by TickFlow and OpenClaw.",
6
6
  "skills": [
7
7
  "skills"
8
8
  ],
9
9
  "activation": {
10
+ "onStartup": true,
11
+ "onCommands": [
12
+ "ta_addstock",
13
+ "ta_rmstock",
14
+ "ta_analyze",
15
+ "ta_backtest",
16
+ "ta_viewanalysis",
17
+ "ta_watchlist",
18
+ "ta_refreshnames",
19
+ "ta_refreshprofiles",
20
+ "ta_startmonitor",
21
+ "ta_stopmonitor",
22
+ "ta_monitorstatus",
23
+ "ta_flashstatus",
24
+ "ta_startdailyupdate",
25
+ "ta_stopdailyupdate",
26
+ "ta_updateall",
27
+ "ta_dailyupdatestatus",
28
+ "ta_testalert",
29
+ "ta_screenstocks",
30
+ "ta_screenstocks_llm",
31
+ "ta_debug"
32
+ ],
10
33
  "onCapabilities": ["tool", "hook"]
11
34
  },
12
- "providerAuthEnvVars": {
13
- "tickflow": [
14
- "TICKFLOW_ASSIST_TICKFLOW_API_KEY",
15
- "TICKFLOW_API_KEY"
16
- ],
17
- "llm": [
18
- "TICKFLOW_ASSIST_LLM_API_KEY",
19
- "LLM_API_KEY"
20
- ],
21
- "mx-search": [
22
- "TICKFLOW_ASSIST_MX_SEARCH_API_KEY",
23
- "MX_SEARCH_API_KEY",
24
- "MX_APIKEY"
25
- ],
26
- "jin10": [
27
- "TICKFLOW_ASSIST_JIN10_API_TOKEN",
28
- "JIN10_API_TOKEN"
35
+ "commandAliases": [
36
+ {
37
+ "name": "ta_addstock",
38
+ "kind": "runtime-slash"
39
+ },
40
+ {
41
+ "name": "ta_rmstock",
42
+ "kind": "runtime-slash"
43
+ },
44
+ {
45
+ "name": "ta_analyze",
46
+ "kind": "runtime-slash"
47
+ },
48
+ {
49
+ "name": "ta_backtest",
50
+ "kind": "runtime-slash"
51
+ },
52
+ {
53
+ "name": "ta_viewanalysis",
54
+ "kind": "runtime-slash"
55
+ },
56
+ {
57
+ "name": "ta_watchlist",
58
+ "kind": "runtime-slash"
59
+ },
60
+ {
61
+ "name": "ta_refreshnames",
62
+ "kind": "runtime-slash"
63
+ },
64
+ {
65
+ "name": "ta_refreshprofiles",
66
+ "kind": "runtime-slash"
67
+ },
68
+ {
69
+ "name": "ta_startmonitor",
70
+ "kind": "runtime-slash"
71
+ },
72
+ {
73
+ "name": "ta_stopmonitor",
74
+ "kind": "runtime-slash"
75
+ },
76
+ {
77
+ "name": "ta_monitorstatus",
78
+ "kind": "runtime-slash"
79
+ },
80
+ {
81
+ "name": "ta_flashstatus",
82
+ "kind": "runtime-slash"
83
+ },
84
+ {
85
+ "name": "ta_startdailyupdate",
86
+ "kind": "runtime-slash"
87
+ },
88
+ {
89
+ "name": "ta_stopdailyupdate",
90
+ "kind": "runtime-slash"
91
+ },
92
+ {
93
+ "name": "ta_updateall",
94
+ "kind": "runtime-slash"
95
+ },
96
+ {
97
+ "name": "ta_dailyupdatestatus",
98
+ "kind": "runtime-slash"
99
+ },
100
+ {
101
+ "name": "ta_testalert",
102
+ "kind": "runtime-slash"
103
+ },
104
+ {
105
+ "name": "ta_screenstocks",
106
+ "kind": "runtime-slash"
107
+ },
108
+ {
109
+ "name": "ta_screenstocks_llm",
110
+ "kind": "runtime-slash"
111
+ },
112
+ {
113
+ "name": "ta_debug",
114
+ "kind": "runtime-slash"
115
+ }
116
+ ],
117
+ "contracts": {
118
+ "tools": [
119
+ "add_stock",
120
+ "analyze",
121
+ "backtest_key_levels",
122
+ "daily_update_status",
123
+ "fetch_intraday_klines",
124
+ "fetch_financials",
125
+ "flash_monitor_status",
126
+ "fetch_klines",
127
+ "list_watchlist",
128
+ "list_eastmoney_watchlist",
129
+ "monitor_status",
130
+ "mx_data",
131
+ "mx_search",
132
+ "mx_select_stock",
133
+ "push_eastmoney_watchlist",
134
+ "query_database",
135
+ "refresh_watchlist_names",
136
+ "refresh_watchlist_profiles",
137
+ "remove_eastmoney_watchlist",
138
+ "remove_stock",
139
+ "screen_stock_candidates",
140
+ "start_daily_update",
141
+ "start_monitor",
142
+ "sync_eastmoney_watchlist",
143
+ "stop_daily_update",
144
+ "stop_monitor",
145
+ "test_alert",
146
+ "update_all",
147
+ "view_analysis"
29
148
  ]
30
149
  },
31
150
  "providerAuthChoices": [
@@ -61,14 +180,14 @@
61
180
  "provider": "mx-search",
62
181
  "method": "api-key",
63
182
  "choiceId": "mx-search-api-key",
64
- "choiceLabel": "MX Search API key",
183
+ "choiceLabel": "MX Skills API key",
65
184
  "groupId": "tickflow-assist",
66
185
  "groupLabel": "TickFlow Assist",
67
186
  "groupHint": "TickFlow, analysis LLM, and optional data-service credentials.",
68
187
  "optionKey": "mxSearchApiKey",
69
188
  "cliFlag": "--mx-search-api-key",
70
189
  "cliOption": "--mx-search-api-key <key>",
71
- "cliDescription": "MX Search API key",
190
+ "cliDescription": "MX Skills API key",
72
191
  "assistantVisibility": "manual-only"
73
192
  },
74
193
  {
@@ -163,12 +282,12 @@
163
282
  "mxSearchApiUrl": {
164
283
  "type": "string",
165
284
  "default": "https://mkapi2.dfcfs.com/finskillshub/api/claw",
166
- "description": "MX Search API base URL. Leave empty to use TICKFLOW_ASSIST_MX_SEARCH_API_URL or MX_SEARCH_API_URL."
285
+ "description": "MX Skills API base URL. Leave empty to use TICKFLOW_ASSIST_MX_SEARCH_API_URL or MX_SEARCH_API_URL."
167
286
  },
168
287
  "mxSearchApiKey": {
169
288
  "type": "string",
170
289
  "default": "",
171
- "description": "Configure this during setup if you want mx_search, mx_select_stock, and non-Expert financial fallback. Leave empty to use TICKFLOW_ASSIST_MX_SEARCH_API_KEY, MX_SEARCH_API_KEY, or MX_APIKEY."
290
+ "description": "Configure this during setup if you want mx_search, mx_data, mx_select_stock, Eastmoney self-select sync, and non-Expert financial fallback. Leave empty to use TICKFLOW_ASSIST_MX_SEARCH_API_KEY, MX_SEARCH_API_KEY, or MX_APIKEY."
172
291
  },
173
292
  "jin10McpUrl": {
174
293
  "type": "string",
@@ -282,8 +401,8 @@
282
401
  "help": "Set this to your actual TickFlow subscription level, or provide it via TICKFLOW_ASSIST_TICKFLOW_API_KEY_LEVEL / TICKFLOW_API_KEY_LEVEL."
283
402
  },
284
403
  "mxSearchApiKey": {
285
- "label": "MX Search API Key",
286
- "help": "Configure this during setup if you want mx_search, mx_select_stock, and lite financial fallback, or use TICKFLOW_ASSIST_MX_SEARCH_API_KEY / MX_SEARCH_API_KEY / MX_APIKEY.",
404
+ "label": "MX Skills API Key",
405
+ "help": "Configure this during setup if you want mx_search, mx_data, mx_select_stock, Eastmoney self-select sync, and lite financial fallback, or use TICKFLOW_ASSIST_MX_SEARCH_API_KEY / MX_SEARCH_API_KEY / MX_APIKEY.",
287
406
  "sensitive": true
288
407
  },
289
408
  "jin10McpUrl": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tickflow-assist",
3
- "version": "0.3.7",
3
+ "version": "0.3.9",
4
4
  "description": "面向 A 股投资与盯盘场景的 OpenClaw 智能股票插件,基于 TickFlow API 提供实时监控、收盘后复盘、多维综合分析、关键价位跟踪与告警能力。OpenClaw smart stock plugin for A-share investing and watchlist workflows, powered by TickFlow API for realtime monitoring, post-close review, multi-dimensional analysis, key level tracking, and alerts.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -37,7 +37,7 @@
37
37
  "dev": "tsc -p tsconfig.json --watch",
38
38
  "prepack": "npm run build && node ./scripts/prepare-package-assets.mjs",
39
39
  "postpack": "node ./scripts/restore-package-assets.mjs",
40
- "test": "npm run build && node --test dist/plugin-registration.test.js dist/tools/test-alert.tool.test.js dist/services/jin10-mcp-service.test.js dist/services/jin10-flash-monitor-service.test.js dist/services/pre-market-brief-service.test.js dist/services/monitor-service.test.js",
40
+ "test": "npm run build && node --test dist/plugin-registration.test.js dist/tools/test-alert.tool.test.js dist/tools/eastmoney-watchlist.tool.test.js dist/tools/screen-stock-candidates.tool.test.js dist/services/mx-search-service.test.js dist/services/jin10-mcp-service.test.js dist/services/jin10-flash-monitor-service.test.js dist/services/pre-market-brief-service.test.js dist/services/monitor-service.test.js",
41
41
  "community-setup": "node dist/dev/tickflow-assist-cli.js configure-openclaw",
42
42
  "tool": "node dist/dev/run-tool.js",
43
43
  "monitor-loop": "node dist/dev/run-monitor-loop.js",
@@ -46,17 +46,17 @@
46
46
  },
47
47
  "openclaw": {
48
48
  "build": {
49
- "openclawVersion": "2026.4.14"
49
+ "openclawVersion": "2026.5.2"
50
50
  },
51
51
  "compat": {
52
- "pluginApi": ">=2026.3.31",
53
- "minGatewayVersion": "2026.3.31",
54
- "builtWithOpenClawVersion": "2026.4.14"
52
+ "pluginApi": ">=2026.5.2",
53
+ "minGatewayVersion": "2026.5.2",
54
+ "builtWithOpenClawVersion": "2026.5.2"
55
55
  },
56
56
  "install": {
57
57
  "npmSpec": "tickflow-assist",
58
58
  "defaultChoice": "npm",
59
- "minHostVersion": ">=2026.3.31"
59
+ "minHostVersion": ">=2026.5.2"
60
60
  },
61
61
  "extensions": [
62
62
  "dist/plugin.js"
@@ -74,9 +74,9 @@
74
74
  },
75
75
  "devDependencies": {
76
76
  "@types/node": "^22.13.11",
77
- "openclaw": "^2026.4.14",
77
+ "openclaw": "^2026.5.2",
78
78
  "typescript": "^5.8.2"
79
79
  },
80
- "readme": "# TickFlow Assist\n\n基于 [OpenClaw](https://openclaw.ai) 的 A 股监控与分析插件。它使用 [TickFlow](https://tickflow.org/auth/register?ref=BUJ54JEDGE) 获取行情与财务数据,并可选接入 [金十数据 MCP](https://mcp.jin10.com/app/) 快讯流,结合 LLM 生成技术面、基本面、资讯面的综合判断,并把结果持久化到本地 LanceDB。\n\n最近更新:`v0.3.7` 接入 TickFlow 标的池行业映射与申万三级同业上下文,优化盘前简报提炼与收盘复盘市场信息展示,并对齐 OpenClaw `v2026.4.14` 兼容与社区元数据。完整发布记录见 <https://github.com/robinspt/tickflow-assist/blob/main/CHANGELOG.md>。\n\n当前主线按 OpenClaw `v2026.3.31+` 对齐,并已验证社区安装在 `v2026.4.14` 上兼容。\n\n## 安装前准备\n\n在执行社区安装前,建议先确认你已经准备好以下配置:\n\n- 核心必需:`tickflowApiKey`、`llmApiKey`、`llmBaseUrl`、`llmModel`\n- 告警投递:`alertChannel`、`alertTarget`、`alertAccount`\n- 可选增强:`mxSearchApiKey`、`jin10ApiToken`\n\n其中,`configure-openclaw` 会把上述配置写入 `~/.openclaw/openclaw.json` 的 `plugins.entries[\"tickflow-assist\"].config`,插件启用后会在本地 `databasePath` 下持久化 LanceDB 数据,并运行监控 / 日更等后台服务。\n如果你不想把密钥写进配置文件,运行时也支持环境变量回退,优先级是 `openclaw.json / local.config.json` > 环境变量 > 默认值。\n常用环境变量:`TICKFLOW_ASSIST_TICKFLOW_API_KEY` / `TICKFLOW_API_KEY`、`TICKFLOW_ASSIST_LLM_API_KEY` / `LLM_API_KEY`、`TICKFLOW_ASSIST_LLM_BASE_URL` / `LLM_BASE_URL`、`TICKFLOW_ASSIST_LLM_MODEL` / `LLM_MODEL`、`TICKFLOW_ASSIST_MX_SEARCH_API_KEY` / `MX_SEARCH_API_KEY` / `MX_APIKEY`、`TICKFLOW_ASSIST_JIN10_API_TOKEN` / `JIN10_API_TOKEN`。\n如果你希望尽量避免把密钥落盘,推荐先把这些变量写进 `~/.openclaw/.env`,再运行配置向导补齐非密钥项。\n\n## 安装\n\n社区安装:\n\n```bash\nopenclaw plugins install tickflow-assist\nnode ~/.openclaw/extensions/tickflow-assist/dist/dev/tickflow-assist-cli.js configure-openclaw\ncd ~/.openclaw/extensions/tickflow-assist/python && uv sync\nopenclaw plugins enable tickflow-assist\nopenclaw config validate\nopenclaw gateway restart\n```\n\n- `configure-openclaw` 会把配置写入 `~/.openclaw/openclaw.json` 的 `plugins.entries[\"tickflow-assist\"].config`。\n- 核心必填建议先准备:`tickflowApiKey`、`tickflowApiKeyLevel`、`llmApiKey`、`llmBaseUrl`、`llmModel`;告警场景再补 `alertChannel`、`alertTarget`、`alertAccount`。\n- 如果你不想把密钥落盘,优先把环境变量写进 `~/.openclaw/.env`,再运行配置向导补齐非密钥项;如需 PNG 告警卡正常显示中文,请自行安装 `fontconfig` 与 Noto CJK 字体。\n\n社区安装后的升级方式:\n\n```bash\nopenclaw plugins update tickflow-assist\nopenclaw gateway restart\n```\n\n## 配置\n\n插件正式运行读取:\n\n```text\n~/.openclaw/openclaw.json\n```\n\n配置路径:\n\n```text\nplugins.entries[\"tickflow-assist\"].config\n```\n\n建议按完整功能显式填写以下字段,不要只填 API Key:\n\n- 核心运行:`tickflowApiKey`、`llmApiKey`、`llmBaseUrl`、`llmModel`\n- 本地数据:`databasePath`、`calendarFile`\n- 告警投递:`alertChannel`、`alertTarget`、`alertAccount`\n- 能力补充:`mxSearchApiKey`、`jin10ApiToken`\n\n其中,`mxSearchApiKey` 用于 `mx_search`、`mx_select_stock` 以及非 `Expert` 财务链路的 lite 补充;`jin10ApiToken` 用于 24 小时金十数据快讯监控;`jin10FlashNightAlert` 默认 `false`(开启夜间静默),设为 `true` 可恢复 24 小时快讯告警;`alertTarget`、`alertAccount` 建议在准备启用 `test_alert`、实时监控告警、金十数据快讯告警和定时通知前一并配好,避免配置不完整导致功能缺失。\n如果你使用环境变量,运行时支持以下回退:\n\n- `tickflowApiUrl`:`TICKFLOW_ASSIST_TICKFLOW_API_URL` / `TICKFLOW_API_URL`\n- `tickflowApiKey`:`TICKFLOW_ASSIST_TICKFLOW_API_KEY` / `TICKFLOW_API_KEY`\n- `tickflowApiKeyLevel`:`TICKFLOW_ASSIST_TICKFLOW_API_KEY_LEVEL` / `TICKFLOW_API_KEY_LEVEL`\n- `llmBaseUrl`:`TICKFLOW_ASSIST_LLM_BASE_URL` / `LLM_BASE_URL`\n- `llmApiKey`:`TICKFLOW_ASSIST_LLM_API_KEY` / `LLM_API_KEY`\n- `llmModel`:`TICKFLOW_ASSIST_LLM_MODEL` / `LLM_MODEL`\n- `mxSearchApiUrl`:`TICKFLOW_ASSIST_MX_SEARCH_API_URL` / `MX_SEARCH_API_URL`\n- `mxSearchApiKey`:`TICKFLOW_ASSIST_MX_SEARCH_API_KEY` / `MX_SEARCH_API_KEY` / `MX_APIKEY`\n- `jin10McpUrl`:`TICKFLOW_ASSIST_JIN10_MCP_URL` / `JIN10_MCP_URL`\n- `jin10ApiToken`:`TICKFLOW_ASSIST_JIN10_API_TOKEN` / `JIN10_API_TOKEN`\n\n## 功能\n\n- 自选股管理、日 K / 分钟 K 抓取与指标计算\n- 技术面、财务面、资讯面的综合分析\n- 实时监控、定时日更、收盘后复盘\n- 金十数据 24 小时快讯监控与自选关联提醒\n- 本地 LanceDB 数据留痕与分析结果查看\n\n## 运行说明\n\n- 插件会在本地 `databasePath` 下持久化 LanceDB 数据。\n- 后台服务会按配置执行定时日更、实时监控与金十数据快讯监控。\n- Python 子模块仅用于技术指标计算,不承担主业务流程。\n\n## 依赖与可选能力\n\n- [TickFlow](https://tickflow.org/auth/register?ref=BUJ54JEDGE):`Free` 可用日线与实时行情;`Starter` 起可用标的池,插件会用来做申万行业映射与申万 3 级同业表现;`Pro` 起可用分钟K;`Expert` 才走 TickFlow 财务数据,非 `Expert` 默认回退妙想 lite。\n- [金十数据 MCP](https://mcp.jin10.com/app/):可选,用于 24 小时快讯流接入、自选关联筛选与事件驱动告警。独立的金十数据 Skill 详见 [OpenClaw Skill](https://clawhub.ai/robinspt/jin10) / [Hermes Skill](https://github.com/robinspt/hermes-skills)。\n- [东方财富妙想 Skills](https://marketing.dfcfs.com/views/finskillshub/):可选,用于 `mx_search`、`mx_select_stock` 与非 `Expert` 财务链路的 lite 补充。\n\n## 仓库\n\n- GitHub: [robinspt/tickflow-assist](https://github.com/robinspt/tickflow-assist)\n",
80
+ "readme": "# TickFlow Assist\n\n基于 [OpenClaw](https://openclaw.ai) 的 A 股监控与分析插件。它使用 [TickFlow](https://tickflow.org/auth/register?ref=BUJ54JEDGE) 获取行情与财务数据,并可选接入 [金十数据 MCP](https://mcp.jin10.com/app/) 快讯流,结合 LLM 生成技术面、基本面、资讯面的综合判断,并把结果持久化到本地 LanceDB。\n\n最近更新:`v0.3.9` 对齐 OpenClaw `v2026.5.2+`,恢复新版 Telegram 原生命令菜单中的 `/ta_` 命令可见性,并增强 PNG 媒体投递失败后的文本回退与一键安装依赖处理。完整发布记录见 <https://github.com/robinspt/tickflow-assist/blob/main/CHANGELOG.md>。\n\n当前主线按 OpenClaw `v2026.5.2+` 对齐,并使用 `contracts.tools` 与 `setup.providers[].envVars` 等新版插件清单字段。\n\n## 安装前准备\n\n在执行社区安装前,建议先确认你已经准备好以下配置:\n\n- 核心必需:`tickflowApiKey`、`llmApiKey`、`llmBaseUrl`、`llmModel`\n- 告警投递:`alertChannel`、`alertTarget`、`alertAccount`\n- 可选增强:`mxSearchApiKey`、`jin10ApiToken`\n\n其中,`configure-openclaw` 会把上述配置写入 `~/.openclaw/openclaw.json` 的 `plugins.entries[\"tickflow-assist\"].config`,插件启用后会在本地 `databasePath` 下持久化 LanceDB 数据,并运行监控 / 日更等后台服务。\n如果你不想把密钥写进配置文件,运行时也支持环境变量回退,优先级是 `openclaw.json / local.config.json` > 环境变量 > 默认值。\n常用环境变量:`TICKFLOW_ASSIST_TICKFLOW_API_KEY` / `TICKFLOW_API_KEY`、`TICKFLOW_ASSIST_LLM_API_KEY` / `LLM_API_KEY`、`TICKFLOW_ASSIST_LLM_BASE_URL` / `LLM_BASE_URL`、`TICKFLOW_ASSIST_LLM_MODEL` / `LLM_MODEL`、`TICKFLOW_ASSIST_MX_SEARCH_API_KEY` / `MX_SEARCH_API_KEY` / `MX_APIKEY`、`TICKFLOW_ASSIST_JIN10_API_TOKEN` / `JIN10_API_TOKEN`。\n如果你希望尽量避免把密钥落盘,推荐先把这些变量写进 `~/.openclaw/.env`,再运行配置向导补齐非密钥项。\n\n## 安装\n\n社区安装:\n\n```bash\nopenclaw plugins install tickflow-assist\nnode ~/.openclaw/extensions/tickflow-assist/dist/dev/tickflow-assist-cli.js configure-openclaw\ncd ~/.openclaw/extensions/tickflow-assist/python && uv sync\nopenclaw plugins enable tickflow-assist\nopenclaw config validate\nopenclaw gateway restart\n```\n\n- `configure-openclaw` 会把配置写入 `~/.openclaw/openclaw.json` 的 `plugins.entries[\"tickflow-assist\"].config`。\n- 核心必填建议先准备:`tickflowApiKey`、`tickflowApiKeyLevel`、`llmApiKey`、`llmBaseUrl`、`llmModel`;告警场景再补 `alertChannel`、`alertTarget`、`alertAccount`。\n- 如果你不想把密钥落盘,优先把环境变量写进 `~/.openclaw/.env`,再运行配置向导补齐非密钥项;如需 PNG 告警卡图片投递,请确认宿主 OpenClaw 的全局 npm 环境可解析 `sharp`,如需中文正常显示再安装 `fontconfig` 与 Noto CJK 字体。\n\n社区安装后的升级方式:\n\n```bash\nopenclaw plugins update tickflow-assist\nopenclaw gateway restart\n```\n\n## 配置\n\n插件正式运行读取:\n\n```text\n~/.openclaw/openclaw.json\n```\n\n配置路径:\n\n```text\nplugins.entries[\"tickflow-assist\"].config\n```\n\n建议按完整功能显式填写以下字段,不要只填 API Key:\n\n- 核心运行:`tickflowApiKey`、`llmApiKey`、`llmBaseUrl`、`llmModel`\n- 本地数据:`databasePath`、`calendarFile`\n- 告警投递:`alertChannel`、`alertTarget`、`alertAccount`\n- 能力补充:`mxSearchApiKey`、`jin10ApiToken`\n\n其中,`mxSearchApiKey` 用于 `mx_search`、`mx_data`、`mx_select_stock`、东方财富自选同步以及非 `Expert` 财务链路的 lite 补充;东方财富自选管理接口每日额度 200 次;`jin10ApiToken` 用于 24 小时金十数据快讯监控;`jin10FlashNightAlert` 默认 `false`(开启夜间静默),设为 `true` 可恢复 24 小时快讯告警;`alertTarget`、`alertAccount` 建议在准备启用 `test_alert`、实时监控告警、金十数据快讯告警和定时通知前一并配好,避免配置不完整导致功能缺失。\n如果你使用环境变量,运行时支持以下回退:\n\n- `tickflowApiUrl`:`TICKFLOW_ASSIST_TICKFLOW_API_URL` / `TICKFLOW_API_URL`\n- `tickflowApiKey`:`TICKFLOW_ASSIST_TICKFLOW_API_KEY` / `TICKFLOW_API_KEY`\n- `tickflowApiKeyLevel`:`TICKFLOW_ASSIST_TICKFLOW_API_KEY_LEVEL` / `TICKFLOW_API_KEY_LEVEL`\n- `llmBaseUrl`:`TICKFLOW_ASSIST_LLM_BASE_URL` / `LLM_BASE_URL`\n- `llmApiKey`:`TICKFLOW_ASSIST_LLM_API_KEY` / `LLM_API_KEY`\n- `llmModel`:`TICKFLOW_ASSIST_LLM_MODEL` / `LLM_MODEL`\n- `mxSearchApiUrl`:`TICKFLOW_ASSIST_MX_SEARCH_API_URL` / `MX_SEARCH_API_URL`\n- `mxSearchApiKey`:`TICKFLOW_ASSIST_MX_SEARCH_API_KEY` / `MX_SEARCH_API_KEY` / `MX_APIKEY`\n- `jin10McpUrl`:`TICKFLOW_ASSIST_JIN10_MCP_URL` / `JIN10_MCP_URL`\n- `jin10ApiToken`:`TICKFLOW_ASSIST_JIN10_API_TOKEN` / `JIN10_API_TOKEN`\n\n## 功能\n\n- 自选股管理、东方财富自选同步、日 K / 分钟 K 抓取与指标计算\n- 妙想资讯搜索、官方金融数据查询、智能选股,以及限量候选池 + TickFlow 补数据联动\n- 技术面、财务面、资讯面的综合分析\n- 实时监控、定时日更、收盘后复盘\n- 金十数据 24 小时快讯监控与自选关联提醒\n- 本地 LanceDB 数据留痕与分析结果查看\n\n## 运行说明\n\n- 插件会在本地 `databasePath` 下持久化 LanceDB 数据。\n- 后台服务会按配置执行定时日更、实时监控与金十数据快讯监控。\n- Python 子模块仅用于技术指标计算,不承担主业务流程。\n\n## 依赖与可选能力\n\n- [TickFlow](https://tickflow.org/auth/register?ref=BUJ54JEDGE):`Free` 可用日线与实时行情;`Starter` 起可用标的池,插件会用来做申万行业映射与申万 3 级同业表现;`Pro` 起可用分钟K;`Expert` 才走 TickFlow 财务数据,非 `Expert` 默认回退妙想 lite。\n- `sharp`:插件本地依赖用于生成 PNG;OpenClaw `message send --media` 还需要宿主 OpenClaw 全局 npm 环境可解析 `sharp`,否则图片投递会回退为纯文本。\n- [金十数据 MCP](https://mcp.jin10.com/app/):可选,用于 24 小时快讯流接入、自选关联筛选与事件驱动告警。独立的金十数据 Skill 详见 [OpenClaw Skill](https://clawhub.ai/robinspt/jin10) / [Hermes Skill](https://github.com/robinspt/hermes-skills)。\n- [东方财富妙想 Skills](https://marketing.dfcfs.com/views/finskillshub/):可选,用于 `mx_search`、`mx_data`、`mx_select_stock`、东方财富自选同步与非 `Expert` 财务链路的 lite 补充。\n\n## 仓库\n\n- GitHub: [robinspt/tickflow-assist](https://github.com/robinspt/tickflow-assist)\n",
81
81
  "readmeFilename": "README.md"
82
82
  }
@@ -5,7 +5,7 @@ metadata: {"openclaw":{"skillKey":"stock_analysis","always":true,"primaryEnv":"T
5
5
  ---
6
6
  # 股票分析与监控
7
7
 
8
- 这是 TickFlow Assist 插件内置的技能,用于通过插件工具完成 A 股自选股管理、日线更新、分钟K抓取、技术分析、关键价位回测、实时监控、定时日更、结果查看与告警测试。
8
+ 这是 TickFlow Assist 插件内置的技能,用于通过插件工具完成 A 股自选股管理、东方财富自选同步、日线更新、分钟K抓取、技术分析、关键价位回测、实时监控、定时日更、结果查看与告警测试。
9
9
  运行前需要提供 TickFlow / LLM 等凭证;这些值既可以来自 `plugins.entries["tickflow-assist"].config`,也可以来自文档约定的环境变量 fallback,不要求必须明文写在插件配置里。
10
10
 
11
11
  此技能随插件加载,不需要手动复制到 workspace。
@@ -15,11 +15,17 @@ metadata: {"openclaw":{"skillKey":"stock_analysis","always":true,"primaryEnv":"T
15
15
  适用场景:
16
16
  - 添加或删除自选股
17
17
  - 查看自选列表
18
+ - 查看东方财富自选股列表
19
+ - 从东方财富同步自选股到本地关注列表
20
+ - 将本地关注列表推送到东方财富自选
21
+ - 从东方财富自选中删除股票
18
22
  - 刷新自选股名称
19
23
  - 拉取单只股票的 K 线数据
20
24
  - 拉取单只股票的分钟 K 线数据
21
25
  - 搜索个股 / 板块 / 宏观相关资讯、公告、研报、政策、事件解读
26
+ - 查询官方行情、财务、资金流、股东、高管、主营业务、板块 / 指数数据
22
27
  - 按自然语言条件做智能选股
28
+ - 基于智能选股生成小规模候选池,并补充 TickFlow 行情 / 日K等数据
23
29
  - 执行全部日更
24
30
  - 分析单只股票
25
31
  - 回测活动价位 / 回测股票
@@ -32,11 +38,18 @@ metadata: {"openclaw":{"skillKey":"stock_analysis","always":true,"primaryEnv":"T
32
38
  - “添加自选”、“加入观察”、“加股票” -> `add_stock`
33
39
  - “删除自选”、“移除股票”、“删掉这只股票” -> `remove_stock`
34
40
  - “查看自选”、“自选列表” -> `list_watchlist`
41
+ - “查看东方财富自选”、“妙想自选列表”、“东财自选列表” -> `list_eastmoney_watchlist`
42
+ - “从东方财富同步自选”、“导入东财自选”、“同步妙想自选到本地” -> `sync_eastmoney_watchlist`
43
+ - “把本地自选添加到东方财富”、“推送本地自选到东财”、“同步本插件自选到东方财富” -> `push_eastmoney_watchlist`
44
+ - “删除东方财富自选”、“从东财自选删除”、“移除妙想自选” -> `remove_eastmoney_watchlist`
35
45
  - “刷新股票名称”、“刷新名称” -> `refresh_watchlist_names`
36
46
  - “拉 K 线”、“更新 K 线”、“获取日线” -> `fetch_klines`
37
47
  - “获取分钟K”、“拉取分钟线”、“抓分时K” -> `fetch_intraday_klines`
38
48
  - “搜资讯”、“查公告”、“看研报”、“政策解读”、“事件解读” -> `mx_search`
49
+ - “查行情”、“查财务指标”、“查主力资金”、“查股东”、“查高管”、“查公司信息”、“查板块指数数据” -> `mx_data`
39
50
  - “选股”、“筛股票”、“找满足条件的股票”、“推荐板块成分股” -> `mx_select_stock`
51
+ - “选股并补数据”、“筛一批候选股看看”、“生成候选池”、“智能选股联动”、“找几只候选股分析” -> `screen_stock_candidates`
52
+ - “选股并用LLM整理”、“筛候选股并总结”、“智能选股LLM” -> `screen_stock_candidates`,参数带 `summarize=true`
40
53
  - “全部更新”、“执行日更”、“更新全部股票” -> `update_all`
41
54
  - “启动定时日更”、“开始定时日更”、“开启 TickFlow 日更计划” -> `start_daily_update`
42
55
  - “停止定时日更”、“关闭 TickFlow 日更计划” -> `stop_daily_update`
@@ -53,17 +66,30 @@ metadata: {"openclaw":{"skillKey":"stock_analysis","always":true,"primaryEnv":"T
53
66
 
54
67
  参数理解规则:
55
68
  - 对“添加自选 / 删除自选 / 查看自选 / 监控状态 / 日更状态”这类直接型意图,如果用户已经给出足够参数,应直接调用对应插件工具。
69
+ - 普通“添加自选 / 删除自选 / 查看自选”默认指 TickFlow Assist 本地关注列表;只有用户明确提到“东方财富 / 东财 / 妙想 / MX”时,才调用 `list_eastmoney_watchlist`、`sync_eastmoney_watchlist`、`push_eastmoney_watchlist` 或 `remove_eastmoney_watchlist`。
56
70
  - 当用户消息中已经包含足够参数时,不要额外补充假设:
57
71
  - “添加自选 601872” -> 直接调用 `add_stock`
58
72
  - “添加自选 601872 成本 5.32” -> 直接调用 `add_stock`
59
73
  - “删除自选 601872” -> 直接调用 `remove_stock`
60
74
  - “自选列表” -> 直接调用 `list_watchlist`
75
+ - “查看东方财富自选” -> 直接调用 `list_eastmoney_watchlist`
76
+ - “同步东方财富自选到本地” -> 直接调用 `sync_eastmoney_watchlist`
77
+ - “把本地自选全部推送到东方财富” -> 直接调用 `push_eastmoney_watchlist`
78
+ - “从东方财富自选删除 601872” -> 直接调用 `remove_eastmoney_watchlist`
61
79
  - “查立讯精密最新研报” -> 直接调用 `mx_search`
80
+ - “查东方财富最新价 涨跌幅” -> 直接调用 `mx_data`
62
81
  - “找今天涨幅 2% 的股票” -> 直接调用 `mx_select_stock`
82
+ - “找今天涨幅 2% 的股票并补数据看候选池” -> 直接调用 `screen_stock_candidates`
83
+ - “找今天涨幅 2% 的股票并用LLM整理” -> 直接调用 `screen_stock_candidates`,传入 `summarize=true`
63
84
  - 如果工具必需参数缺失,只补充缺失项本身。
64
85
  - 股票代码按用户原始输入提取,例如 `002261`。
65
86
  - 成本价对应 `costPrice`;若用户未提供成本价,可以省略该字段。
66
87
  - `add_stock` 默认会在添加成功后自动拉取日K并计算指标。
88
+ - `list_eastmoney_watchlist`、`sync_eastmoney_watchlist`、`push_eastmoney_watchlist`、`remove_eastmoney_watchlist` 使用东方财富妙想自选管理接口,复用 `mxSearchApiKey` / `MX_APIKEY`,每日额度为 200 次。
89
+ - `list_eastmoney_watchlist` 和 `sync_eastmoney_watchlist` 各消耗 1 次妙想自选额度;`remove_eastmoney_watchlist` 每只股票消耗 1 次;`push_eastmoney_watchlist` 每推送 1 只本地关注股消耗 1 次。
90
+ - `sync_eastmoney_watchlist` 默认只把东方财富自选导入本地关注列表,不拉取日K,也不刷新行业/概念;如需要行业/概念,后续调用 `refresh_watchlist_profiles`。
91
+ - `push_eastmoney_watchlist` 只把本地已有关注股添加到东方财富自选;如果用户指定股票但本地关注列表里没有,应先用 `add_stock` 加入本地,再推送。
92
+ - `remove_eastmoney_watchlist` 只删除东方财富自选,不删除 TickFlow Assist 本地关注;如果用户同时要求本地也删除,应再调用 `remove_stock`。
67
93
  - `analyze` 会读取本地日K和日线指标,临时补充当日分钟K、分钟指标、实时行情、最新财务数据与资讯检索结果,再走固定流水线综合分析;其中基本面部分在 `Expert` 级别下优先使用 TickFlow 完整财报,在非 `Expert` 级别下回退为 `mx_select_stock` 的 lite 指标拖底模式。
68
94
  - `view_analysis` 默认查看最近一次综合分析;如用户明确提到“技术面 / 基本面 / 资讯面 / 全部分析”,应传入 `profile=technical|financial|news|all`;如用户提到“最近 N 次”或“历史”,应同时传入 `limit=N`(或 `count=N`)。
69
95
  - `update_all` 除了更新日K和日线指标,也会同步更新当日分钟K;本地分钟K默认仅保留近 30 个交易日。
@@ -71,7 +97,10 @@ metadata: {"openclaw":{"skillKey":"stock_analysis","always":true,"primaryEnv":"T
71
97
  - `backtest_key_levels` 默认回测全部关注股的活动价位;如果用户提到股票代码,应传入 `symbol`;如果用户提到“最近 N 次”,应传入 `recentLimit=N`。
72
98
  - 若配置中的 `tickflowApiKeyLevel` 为 `Free` 或 `Starter`,则应自动跳过分钟K获取;若分钟K接口失败,也不要让 `analyze` 或 `update_all` 因此整体失败。
73
99
  - 对新闻、公告、研报、政策、交易规则、具体事件、时效性影响分析等外部检索类问题,优先使用 `mx_search`,不要直接凭常识回答,也不要先读仓库文件再决定是否搜索。
100
+ - 对官方数据查询类问题,包括实时行情、历史行情、财务指标、主力资金、估值、公司简介、主营业务、股东、高管、板块 / 指数数据,优先使用 `mx_data`;如果问题是在问“发生了什么 / 有什么新闻 / 如何解读事件”,才使用 `mx_search`。
74
101
  - 对自然语言选股、板块成分股、条件筛选、候选池推荐等任务,优先使用 `mx_select_stock`;若问题本质是“找哪些标的符合条件”,不要误用 `mx_search`。
102
+ - 对“选股 + 初步补充数据 / 候选池 / 对比看看”这类任务,优先使用 `screen_stock_candidates`,不要对大量候选逐只调用 `analyze`。该工具默认只补少量候选:候选默认 3 只、硬上限 8 只;分钟K仅 Pro / Expert 可用且默认关闭;TickFlow 完整财务仅 Expert 可用且默认关闭。
103
+ - `screen_stock_candidates` 默认不调用 LLM;只有用户明确要求“LLM整理 / 总结 / 排优先级”或 Slash Command 使用 `/ta_screenstocks_llm` 时,才传 `summarize=true`。
75
104
  - 用户在“添加自选”意图中提到的“`N`天”对应 `add_stock.count`(或 `klineCount`),例如“添加 002261 成本 34.15 并获取 120 天日K”应调用 `add_stock`,其中 `count=120`。若用户未提供成本价但明确要求拉取 `N` 天日K,可只传 `symbol` 与 `count`。
76
105
  - 用户询问 TickFlow / 自选股 的日更状态时,必须调用 `daily_update_status`,不要把它解释成其他 crontab、系统任务或无关插件的定时更新。
77
106
  - 如果当前会话没有暴露对应插件工具,应直接说明当前技能暂不可用。
@@ -81,7 +110,7 @@ metadata: {"openclaw":{"skillKey":"stock_analysis","always":true,"primaryEnv":"T
81
110
  - 不要臆造股票代码、成本价、日期、阈值、分析结果或监控状态。
82
111
 
83
112
  输出规则:
84
- - 对 `add_stock`、`list_watchlist`、`start_monitor`、`stop_monitor`、`monitor_status`、`start_daily_update`、`stop_daily_update`、`daily_update_status`、`analyze`、`backtest_key_levels`、`view_analysis`、`fetch_klines`、`fetch_intraday_klines`、`mx_search`、`mx_select_stock` 和 `update_all`,调用工具后尽量原样输出返回文本。
113
+ - 对 `add_stock`、`list_watchlist`、`list_eastmoney_watchlist`、`sync_eastmoney_watchlist`、`push_eastmoney_watchlist`、`remove_eastmoney_watchlist`、`start_monitor`、`stop_monitor`、`monitor_status`、`start_daily_update`、`stop_daily_update`、`daily_update_status`、`analyze`、`backtest_key_levels`、`view_analysis`、`fetch_klines`、`fetch_intraday_klines`、`mx_search`、`mx_data`、`mx_select_stock`、`screen_stock_candidates` 和 `update_all`,调用工具后尽量原样输出返回文本。
85
114
  - 对 `daily_update_status` 必须完整原样输出,尤其不要省略 `状态`、`运行方式`、`配置来源`、`调度`、`执行情况` 与 `最近摘要`。
86
115
  - 不要改写、总结、翻译、重排、美化,也不要加表格、额外标题或解释性包装。
87
116
  - 除非工具明确返回错误,否则不要在工具结果前后添加追问、评论或推断字段。
@@ -96,8 +96,41 @@ TickFlow Assist 常用指令:
96
96
 
97
97
  `看最近 3 条分析日志`
98
98
 
99
+ 18. 搜索资讯 / 查询数据 / 智能选股
100
+ `查立讯精密最新研报`
101
+
102
+ `查东方财富最新价 涨跌幅`
103
+
104
+ `找今天涨幅 2% 的股票`
105
+
106
+ `找今天涨幅 2% 的股票并补数据看候选池`
107
+
108
+ `/ta_screenstocks 沪深A股中今日涨幅大于2%,市盈率小于30,市净率小于3,净利润同比增长为正,总市值小于300亿,属于半导体、人工智能或机器人相关板块的股票`
109
+
110
+ `/ta_screenstocks_llm 沪深A股中今日涨幅大于2%,市盈率小于30,市净率小于3,净利润同比增长为正,总市值小于300亿,属于半导体、人工智能或机器人相关板块的股票`
111
+ 说明:资讯、公告、研报、政策和事件解读走 `mx_search`;官方行情、财务、资金流、股东、高管等数据走 `mx_data`;原始条件选股走 `mx_select_stock`;选股后补 TickFlow 行情 / 日K做小规模候选池对比走 `screen_stock_candidates`。
112
+
113
+ 19. 查看东方财富自选
114
+ `查看东方财富自选`
115
+ 说明:通过妙想自选管理接口读取东方财富通行证账户下的自选股,消耗 1 次每日额度。
116
+
117
+ 20. 从东方财富同步到本地
118
+ `同步东方财富自选到本地`
119
+ 说明:把东方财富自选中本地尚未关注的股票加入 TickFlow Assist 关注列表;默认不拉日K、不刷新行业/概念。
120
+
121
+ 21. 把本地自选推送到东方财富
122
+ `把本地自选全部推送到东方财富`
123
+
124
+ `把 002261 推送到东方财富自选`
125
+ 说明:每推送 1 只股票消耗 1 次妙想自选额度。
126
+
127
+ 22. 删除东方财富自选
128
+ `从东方财富自选删除 002261`
129
+ 说明:只删除东方财富自选,不删除本地关注列表;如需本地也删除,再说“删除本地自选 002261”。
130
+
99
131
  补充说明:
100
132
  - 股票代码可直接写 `002261` 这类 6 位代码。
101
133
  - “分析”依赖本地已有日K数据;如果刚添加自选,系统现在会自动拉取。
102
134
  - 分钟K表名为 `klines_intraday`,默认保留近 10 个交易日。
135
+ - 东方财富自选管理复用 `mxSearchApiKey` / `MX_APIKEY`,每日额度 200 次。
103
136
  - 如果你不确定怎么说,直接发“添加股票 / 拉日K / 分析 / 开始盯盘”这类自然语言也可以。