tickflow-assist 0.2.0

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 (246) hide show
  1. package/README.md +151 -0
  2. package/day_future.txt +8797 -0
  3. package/dist/analysis/orchestrators/composite-analysis.orchestrator.d.ts +35 -0
  4. package/dist/analysis/orchestrators/composite-analysis.orchestrator.js +232 -0
  5. package/dist/analysis/parsers/json-block.parser.d.ts +1 -0
  6. package/dist/analysis/parsers/json-block.parser.js +13 -0
  7. package/dist/analysis/parsers/key-levels.parser.d.ts +5 -0
  8. package/dist/analysis/parsers/key-levels.parser.js +61 -0
  9. package/dist/analysis/parsers/post-close-review.parser.d.ts +2 -0
  10. package/dist/analysis/parsers/post-close-review.parser.js +79 -0
  11. package/dist/analysis/parsers/watchlist-profile.parser.d.ts +6 -0
  12. package/dist/analysis/parsers/watchlist-profile.parser.js +93 -0
  13. package/dist/analysis/providers/financial-analysis.provider.d.ts +12 -0
  14. package/dist/analysis/providers/financial-analysis.provider.js +85 -0
  15. package/dist/analysis/providers/market-analysis.provider.d.ts +27 -0
  16. package/dist/analysis/providers/market-analysis.provider.js +187 -0
  17. package/dist/analysis/providers/news-analysis.provider.d.ts +9 -0
  18. package/dist/analysis/providers/news-analysis.provider.js +60 -0
  19. package/dist/analysis/tasks/analysis-step-task.d.ts +11 -0
  20. package/dist/analysis/tasks/analysis-step-task.js +1 -0
  21. package/dist/analysis/tasks/analysis-task.d.ts +13 -0
  22. package/dist/analysis/tasks/analysis-task.js +1 -0
  23. package/dist/analysis/tasks/composite-stock-analysis.task.d.ts +17 -0
  24. package/dist/analysis/tasks/composite-stock-analysis.task.js +47 -0
  25. package/dist/analysis/tasks/financial-fundamental-lite.task.d.ts +10 -0
  26. package/dist/analysis/tasks/financial-fundamental-lite.task.js +21 -0
  27. package/dist/analysis/tasks/financial-fundamental.task.d.ts +12 -0
  28. package/dist/analysis/tasks/financial-fundamental.task.js +64 -0
  29. package/dist/analysis/tasks/kline-technical-signal.task.d.ts +10 -0
  30. package/dist/analysis/tasks/kline-technical-signal.task.js +41 -0
  31. package/dist/analysis/tasks/kline-technical.task.d.ts +32 -0
  32. package/dist/analysis/tasks/kline-technical.task.js +61 -0
  33. package/dist/analysis/tasks/news-catalyst.task.d.ts +11 -0
  34. package/dist/analysis/tasks/news-catalyst.task.js +62 -0
  35. package/dist/analysis/tasks/post-close-review.task.d.ts +12 -0
  36. package/dist/analysis/tasks/post-close-review.task.js +35 -0
  37. package/dist/analysis/types/composite-analysis.d.ts +123 -0
  38. package/dist/analysis/types/composite-analysis.js +1 -0
  39. package/dist/background/daily-update.worker.d.ts +50 -0
  40. package/dist/background/daily-update.worker.js +546 -0
  41. package/dist/background/realtime-monitor.worker.d.ts +8 -0
  42. package/dist/background/realtime-monitor.worker.js +28 -0
  43. package/dist/bootstrap.d.ts +45 -0
  44. package/dist/bootstrap.js +214 -0
  45. package/dist/config/normalize.d.ts +4 -0
  46. package/dist/config/normalize.js +99 -0
  47. package/dist/config/schema.d.ts +23 -0
  48. package/dist/config/schema.js +18 -0
  49. package/dist/config/tickflow-access.d.ts +4 -0
  50. package/dist/config/tickflow-access.js +28 -0
  51. package/dist/constants/market-indexes.d.ts +5 -0
  52. package/dist/constants/market-indexes.js +4 -0
  53. package/dist/dev/run-daily-update-loop.d.ts +1 -0
  54. package/dist/dev/run-daily-update-loop.js +48 -0
  55. package/dist/dev/run-monitor-loop.d.ts +1 -0
  56. package/dist/dev/run-monitor-loop.js +60 -0
  57. package/dist/dev/run-tool.d.ts +1 -0
  58. package/dist/dev/run-tool.js +49 -0
  59. package/dist/dev/tickflow-assist-cli.d.ts +2 -0
  60. package/dist/dev/tickflow-assist-cli.js +525 -0
  61. package/dist/dev/validate-mx-search.d.ts +1 -0
  62. package/dist/dev/validate-mx-search.js +212 -0
  63. package/dist/plugin-commands.d.ts +3 -0
  64. package/dist/plugin-commands.js +229 -0
  65. package/dist/plugin.d.ts +8 -0
  66. package/dist/plugin.js +151 -0
  67. package/dist/prompts/analysis/common-system-prompt.d.ts +1 -0
  68. package/dist/prompts/analysis/common-system-prompt.js +44 -0
  69. package/dist/prompts/analysis/composite-analysis-user-prompt.d.ts +11 -0
  70. package/dist/prompts/analysis/composite-analysis-user-prompt.js +102 -0
  71. package/dist/prompts/analysis/financial-analysis-user-prompt.d.ts +7 -0
  72. package/dist/prompts/analysis/financial-analysis-user-prompt.js +106 -0
  73. package/dist/prompts/analysis/financial-lite-analysis-user-prompt.d.ts +7 -0
  74. package/dist/prompts/analysis/financial-lite-analysis-user-prompt.js +59 -0
  75. package/dist/prompts/analysis/index.d.ts +8 -0
  76. package/dist/prompts/analysis/index.js +8 -0
  77. package/dist/prompts/analysis/kline-analysis-user-prompt.d.ts +13 -0
  78. package/dist/prompts/analysis/kline-analysis-user-prompt.js +215 -0
  79. package/dist/prompts/analysis/news-analysis-user-prompt.d.ts +8 -0
  80. package/dist/prompts/analysis/news-analysis-user-prompt.js +57 -0
  81. package/dist/prompts/analysis/post-close-review-user-prompt.d.ts +3 -0
  82. package/dist/prompts/analysis/post-close-review-user-prompt.js +129 -0
  83. package/dist/prompts/analysis/watchlist-profile-extraction-prompt.d.ts +7 -0
  84. package/dist/prompts/analysis/watchlist-profile-extraction-prompt.js +52 -0
  85. package/dist/prompts/analysis-system-prompt.d.ts +1 -0
  86. package/dist/prompts/analysis-system-prompt.js +1 -0
  87. package/dist/prompts/analysis-user-prompt.d.ts +1 -0
  88. package/dist/prompts/analysis-user-prompt.js +1 -0
  89. package/dist/runtime/daily-update-process.d.ts +3 -0
  90. package/dist/runtime/daily-update-process.js +24 -0
  91. package/dist/runtime/monitor-process.d.ts +3 -0
  92. package/dist/runtime/monitor-process.js +24 -0
  93. package/dist/runtime/plugin-api.d.ts +22 -0
  94. package/dist/runtime/plugin-api.js +2 -0
  95. package/dist/runtime/process-config.d.ts +8 -0
  96. package/dist/runtime/process-config.js +35 -0
  97. package/dist/services/alert-service.d.ts +45 -0
  98. package/dist/services/alert-service.js +198 -0
  99. package/dist/services/analysis-service.d.ts +20 -0
  100. package/dist/services/analysis-service.js +73 -0
  101. package/dist/services/analysis-view-service.d.ts +23 -0
  102. package/dist/services/analysis-view-service.js +343 -0
  103. package/dist/services/financial-lite-service.d.ts +23 -0
  104. package/dist/services/financial-lite-service.js +201 -0
  105. package/dist/services/financial-service.d.ts +20 -0
  106. package/dist/services/financial-service.js +47 -0
  107. package/dist/services/indicator-service.d.ts +9 -0
  108. package/dist/services/indicator-service.js +67 -0
  109. package/dist/services/instrument-service.d.ts +6 -0
  110. package/dist/services/instrument-service.js +21 -0
  111. package/dist/services/key-level-service.d.ts +2 -0
  112. package/dist/services/key-level-service.js +2 -0
  113. package/dist/services/key-levels-backtest-service.d.ts +71 -0
  114. package/dist/services/key-levels-backtest-service.js +427 -0
  115. package/dist/services/kline-service.d.ts +19 -0
  116. package/dist/services/kline-service.js +91 -0
  117. package/dist/services/monitor-service.d.ts +44 -0
  118. package/dist/services/monitor-service.js +598 -0
  119. package/dist/services/mx-search-service.d.ts +22 -0
  120. package/dist/services/mx-search-service.js +286 -0
  121. package/dist/services/post-close-review-service.d.ts +31 -0
  122. package/dist/services/post-close-review-service.js +402 -0
  123. package/dist/services/quote-service.d.ts +7 -0
  124. package/dist/services/quote-service.js +9 -0
  125. package/dist/services/review-memory-service.d.ts +7 -0
  126. package/dist/services/review-memory-service.js +76 -0
  127. package/dist/services/tickflow-client.d.ts +43 -0
  128. package/dist/services/tickflow-client.js +126 -0
  129. package/dist/services/trading-calendar-service.d.ts +20 -0
  130. package/dist/services/trading-calendar-service.js +102 -0
  131. package/dist/services/update-service.d.ts +21 -0
  132. package/dist/services/update-service.js +130 -0
  133. package/dist/services/watchlist-profile-service.d.ts +20 -0
  134. package/dist/services/watchlist-profile-service.js +76 -0
  135. package/dist/services/watchlist-service.d.ts +43 -0
  136. package/dist/services/watchlist-service.js +204 -0
  137. package/dist/storage/db.d.ts +23 -0
  138. package/dist/storage/db.js +70 -0
  139. package/dist/storage/repositories/alert-log-repo.d.ts +15 -0
  140. package/dist/storage/repositories/alert-log-repo.js +54 -0
  141. package/dist/storage/repositories/analysis-log-repo.d.ts +8 -0
  142. package/dist/storage/repositories/analysis-log-repo.js +48 -0
  143. package/dist/storage/repositories/composite-analysis-repo.d.ts +9 -0
  144. package/dist/storage/repositories/composite-analysis-repo.js +116 -0
  145. package/dist/storage/repositories/financial-analysis-repo.d.ts +9 -0
  146. package/dist/storage/repositories/financial-analysis-repo.js +107 -0
  147. package/dist/storage/repositories/indicators-repo.d.ts +8 -0
  148. package/dist/storage/repositories/indicators-repo.js +98 -0
  149. package/dist/storage/repositories/intraday-klines-repo.d.ts +9 -0
  150. package/dist/storage/repositories/intraday-klines-repo.js +102 -0
  151. package/dist/storage/repositories/key-levels-history-repo.d.ts +9 -0
  152. package/dist/storage/repositories/key-levels-history-repo.js +91 -0
  153. package/dist/storage/repositories/key-levels-repo.d.ts +9 -0
  154. package/dist/storage/repositories/key-levels-repo.js +83 -0
  155. package/dist/storage/repositories/klines-repo.d.ts +8 -0
  156. package/dist/storage/repositories/klines-repo.js +60 -0
  157. package/dist/storage/repositories/news-analysis-repo.d.ts +9 -0
  158. package/dist/storage/repositories/news-analysis-repo.js +107 -0
  159. package/dist/storage/repositories/technical-analysis-repo.d.ts +9 -0
  160. package/dist/storage/repositories/technical-analysis-repo.js +80 -0
  161. package/dist/storage/repositories/watchlist-repo.d.ts +10 -0
  162. package/dist/storage/repositories/watchlist-repo.js +124 -0
  163. package/dist/storage/schemas.d.ts +13 -0
  164. package/dist/storage/schemas.js +177 -0
  165. package/dist/tools/add-stock.tool.d.ts +13 -0
  166. package/dist/tools/add-stock.tool.js +123 -0
  167. package/dist/tools/analyze.tool.d.ts +8 -0
  168. package/dist/tools/analyze.tool.js +24 -0
  169. package/dist/tools/backtest-key-levels.tool.d.ts +8 -0
  170. package/dist/tools/backtest-key-levels.tool.js +43 -0
  171. package/dist/tools/daily-update-status.tool.d.ts +6 -0
  172. package/dist/tools/daily-update-status.tool.js +9 -0
  173. package/dist/tools/fetch-financials.tool.d.ts +8 -0
  174. package/dist/tools/fetch-financials.tool.js +224 -0
  175. package/dist/tools/fetch-intraday-klines.tool.d.ts +11 -0
  176. package/dist/tools/fetch-intraday-klines.tool.js +58 -0
  177. package/dist/tools/fetch-klines.tool.d.ts +11 -0
  178. package/dist/tools/fetch-klines.tool.js +61 -0
  179. package/dist/tools/list-watchlist.tool.d.ts +6 -0
  180. package/dist/tools/list-watchlist.tool.js +22 -0
  181. package/dist/tools/monitor-status.tool.d.ts +6 -0
  182. package/dist/tools/monitor-status.tool.js +9 -0
  183. package/dist/tools/mx-search.tool.d.ts +8 -0
  184. package/dist/tools/mx-search.tool.js +77 -0
  185. package/dist/tools/mx-select-stock.tool.d.ts +8 -0
  186. package/dist/tools/mx-select-stock.tool.js +118 -0
  187. package/dist/tools/query-database.tool.d.ts +8 -0
  188. package/dist/tools/query-database.tool.js +283 -0
  189. package/dist/tools/refresh-watchlist-names.tool.d.ts +7 -0
  190. package/dist/tools/refresh-watchlist-names.tool.js +17 -0
  191. package/dist/tools/refresh-watchlist-profiles.tool.d.ts +9 -0
  192. package/dist/tools/refresh-watchlist-profiles.tool.js +67 -0
  193. package/dist/tools/remove-stock.tool.d.ts +9 -0
  194. package/dist/tools/remove-stock.tool.js +27 -0
  195. package/dist/tools/start-daily-update.tool.d.ts +10 -0
  196. package/dist/tools/start-daily-update.tool.js +23 -0
  197. package/dist/tools/start-monitor.tool.d.ts +9 -0
  198. package/dist/tools/start-monitor.tool.js +52 -0
  199. package/dist/tools/stop-daily-update.tool.d.ts +9 -0
  200. package/dist/tools/stop-daily-update.tool.js +20 -0
  201. package/dist/tools/stop-monitor.tool.d.ts +9 -0
  202. package/dist/tools/stop-monitor.tool.js +44 -0
  203. package/dist/tools/test-alert.tool.d.ts +7 -0
  204. package/dist/tools/test-alert.tool.js +21 -0
  205. package/dist/tools/update-all.tool.d.ts +9 -0
  206. package/dist/tools/update-all.tool.js +17 -0
  207. package/dist/tools/view-analysis.tool.d.ts +8 -0
  208. package/dist/tools/view-analysis.tool.js +95 -0
  209. package/dist/types/daily-update.d.ts +26 -0
  210. package/dist/types/daily-update.js +1 -0
  211. package/dist/types/domain.d.ts +140 -0
  212. package/dist/types/domain.js +1 -0
  213. package/dist/types/indicator.d.ts +43 -0
  214. package/dist/types/indicator.js +1 -0
  215. package/dist/types/monitor.d.ts +17 -0
  216. package/dist/types/monitor.js +1 -0
  217. package/dist/types/mx-search.d.ts +14 -0
  218. package/dist/types/mx-search.js +1 -0
  219. package/dist/types/mx-select-stock.d.ts +28 -0
  220. package/dist/types/mx-select-stock.js +1 -0
  221. package/dist/types/tickflow.d.ts +133 -0
  222. package/dist/types/tickflow.js +1 -0
  223. package/dist/utils/abortable-sleep.d.ts +1 -0
  224. package/dist/utils/abortable-sleep.js +20 -0
  225. package/dist/utils/china-time.d.ts +3 -0
  226. package/dist/utils/china-time.js +18 -0
  227. package/dist/utils/cost-price.d.ts +3 -0
  228. package/dist/utils/cost-price.js +18 -0
  229. package/dist/utils/format.d.ts +1 -0
  230. package/dist/utils/format.js +3 -0
  231. package/dist/utils/process.d.ts +5 -0
  232. package/dist/utils/process.js +1 -0
  233. package/dist/utils/symbol.d.ts +1 -0
  234. package/dist/utils/symbol.js +13 -0
  235. package/docs/installation.md +391 -0
  236. package/docs/usage.md +244 -0
  237. package/openclaw.plugin.json +116 -0
  238. package/package.json +57 -0
  239. package/python/indicator_runner.py +31 -0
  240. package/python/indicators.py +148 -0
  241. package/python/pyproject.toml +9 -0
  242. package/python/requirements.txt +3 -0
  243. package/python/uv.lock +366 -0
  244. package/skills/database-query/SKILL.md +58 -0
  245. package/skills/stock-analysis/SKILL.md +106 -0
  246. package/skills/usage-help/SKILL.md +102 -0
@@ -0,0 +1,391 @@
1
+ # TickFlow Assist 安装指南
2
+
3
+ 本文档聚焦于安装、配置与消息通道接入。功能与日常使用请参阅 [使用说明](usage.md),项目概览请先看 [README](../README.md)。
4
+
5
+ ## 1. 前置条件
6
+
7
+ 开始前请确认目标机器已经具备:
8
+
9
+ - `git`
10
+ - `node` 与 `npm`
11
+ - `uv`
12
+ - `openclaw`
13
+ - OpenClaw 版本建议 `v2026.3.22` 或更高
14
+ - Node 版本建议 `>=22.16.0`(这是 OpenClaw `v2026.3.22` 上游声明的运行时要求)
15
+ - 可用的 `TickFlow API Key`:[获取地址](https://tickflow.org/auth/register?ref=BUJ54JEDGE)
16
+ - 可用的 OpenAI 兼容 `LLM API Key`
17
+ - 可选的东方财富妙想 Skills `API Key`:[获取地址](https://marketing.dfcfs.com/views/finskillshub/)
18
+
19
+ 如果目标机器还没安装 `uv`,先执行:
20
+
21
+ ```bash
22
+ curl -LsSf https://astral.sh/uv/install.sh | sh
23
+ ```
24
+
25
+ ## 2. 一键安装(推荐)
26
+
27
+ 安装、升级、卸载都优先建议使用项目自带向导:
28
+
29
+ ```bash
30
+ bash -c "$(curl -fsSL https://raw.githubusercontent.com/robinspt/tickflow-assist/main/setup-tickflow.sh)"
31
+ ```
32
+
33
+ 向导会自动完成以下工作:
34
+
35
+ - 拉取或更新源码
36
+ - 安装 Node 与 Python 依赖
37
+ - 生成或复用 `local.config.json`
38
+ - 写入 `~/.openclaw/openclaw.json` 中的插件配置
39
+ - 安装并启用 `tickflow-assist`
40
+ - 重启 OpenClaw Gateway
41
+
42
+ 如果你只是日常升级,重新运行同一条命令并在菜单里选择“升级”即可。更具体的升级与重装说明见下文 [6.2 升级](#62-升级) 与 [6.3 禁用重装与清理](#63-禁用重装与清理)。
43
+
44
+ ## 3. 手动安装
45
+
46
+ ### 3.1 拉取源码
47
+
48
+ 推荐把项目放在普通开发目录,不要放到 `~/.openclaw/workspace/...` 下面。
49
+
50
+ ```bash
51
+ cd ~
52
+ git clone https://github.com/robinspt/tickflow-assist.git
53
+ cd tickflow-assist
54
+ ```
55
+
56
+ ### 3.2 安装依赖并构建
57
+
58
+ ```bash
59
+ npm install
60
+ cd python
61
+ uv sync
62
+ cd ..
63
+ npm run check
64
+ npm run build
65
+ ```
66
+
67
+ ### 3.3 安装并启用插件(源码安装)
68
+
69
+ ```bash
70
+ openclaw plugins install -l /path/to/tickflow-assist
71
+ openclaw plugins enable tickflow-assist
72
+ ```
73
+
74
+ ### 3.4 社区安装(npm / 社区插件)
75
+
76
+ 发布到 npm 后,社区安装不需要源码目录,也不需要 `setup-tickflow.sh`:
77
+
78
+ ```bash
79
+ openclaw plugins install tickflow-assist
80
+ npx -y tickflow-assist configure-openclaw
81
+ ```
82
+
83
+ 第二条命令会自动:
84
+
85
+ - 写入 `plugins.entries["tickflow-assist"].config`
86
+ - 给顶层 `tools.allow` 或推断出的目标 Agent 补 `tickflow-assist` allowlist
87
+ - 执行 `openclaw plugins enable tickflow-assist`
88
+ - 执行 `openclaw config validate`
89
+ - 执行 `openclaw gateway restart`
90
+
91
+ 如果你已经手动启用插件,或暂时不想重启 Gateway,可追加 `--no-enable` 或 `--no-restart`。
92
+
93
+ ## 4. 插件配置
94
+
95
+ 正式插件运行读取:
96
+
97
+ ```text
98
+ ~/.openclaw/openclaw.json
99
+ ```
100
+
101
+ 配置路径:
102
+
103
+ ```text
104
+ plugins.entries["tickflow-assist"].config
105
+ ```
106
+
107
+ 最小示例:
108
+
109
+ ```json5
110
+ {
111
+ "plugins": {
112
+ "enabled": true,
113
+ "entries": {
114
+ "tickflow-assist": {
115
+ "enabled": true,
116
+ "config": {
117
+ "tickflowApiKey": "your-tickflow-key",
118
+ "mxSearchApiUrl": "https://mkapi2.dfcfs.com/finskillshub/api/claw",
119
+ "mxSearchApiKey": "mkt_xxx",
120
+ "llmBaseUrl": "https://api.openai.com/v1",
121
+ "llmApiKey": "sk-xxx",
122
+ "llmModel": "gpt-4o",
123
+ "databasePath": "/path/to/tickflow-assist/data/lancedb",
124
+ "calendarFile": "/path/to/tickflow-assist/day_future.txt",
125
+ "alertChannel": "telegram",
126
+ "alertTarget": "YOUR_TARGET",
127
+ "pythonBin": "uv",
128
+ "pythonArgs": ["run", "python"],
129
+ "pythonWorkdir": "/path/to/tickflow-assist/python"
130
+ }
131
+ }
132
+ }
133
+ }
134
+ }
135
+ ```
136
+
137
+ 如果你还需要使用 `npm run tool -- ...`、`npm run monitor-loop` 或 `npm run daily-update-loop`,则项目根目录还需要有一个 `local.config.json`,并且字段必须写在 `plugin` 下:
138
+
139
+ ```json
140
+ {
141
+ "plugin": {
142
+ "tickflowApiKey": "your-tickflow-key",
143
+ "mxSearchApiUrl": "https://mkapi2.dfcfs.com/finskillshub/api/claw",
144
+ "mxSearchApiKey": "mkt_xxx",
145
+ "llmBaseUrl": "https://api.openai.com/v1",
146
+ "llmApiKey": "sk-xxx",
147
+ "llmModel": "gpt-4o",
148
+ "databasePath": "./data/lancedb",
149
+ "calendarFile": "./day_future.txt",
150
+ "alertChannel": "telegram",
151
+ "alertTarget": "YOUR_TARGET"
152
+ }
153
+ }
154
+ ```
155
+
156
+ ### 配置字段速查
157
+
158
+ | 字段 | 必填 | 说明 |
159
+ |---|---|---|
160
+ | `tickflowApiUrl` | 否 | TickFlow API 地址,默认 `https://api.tickflow.org` |
161
+ | `tickflowApiKey` | 是 | TickFlow API Key |
162
+ | `tickflowApiKeyLevel` | 否 | `Free` / `Start` / `Pro` / `Expert`;`Pro` 与 `Expert` 会尝试分钟 K |
163
+ | `mxSearchApiUrl` | 否 | 妙想 Skills 接口地址 |
164
+ | `mxSearchApiKey` | 否 | 启用 `mx_search` / `mx_select_stock`,也用于非 Expert 财务链路的 lite 回退 |
165
+ | `llmBaseUrl` | 否 | OpenAI 兼容接口地址 |
166
+ | `llmApiKey` | 是 | 大模型 API Key;使用本地模型时也不能留空,可填占位值 |
167
+ | `llmModel` | 是 | 分析使用的模型名 |
168
+ | `databasePath` | 是 | LanceDB 数据目录,建议正式环境用绝对路径 |
169
+ | `calendarFile` | 是 | 交易日历文件路径,建议正式环境用绝对路径 |
170
+ | `requestInterval` | 否 | 实时监控轮询间隔,默认 `30` 秒 |
171
+ | `dailyUpdateNotify` | 否 | 是否发送定时日更与定时复盘通知,默认 `true` |
172
+ | `alertChannel` | 是 | 告警通道,如 `telegram`、`qqbot`(QQ机器人)、`wecom`(企业微信)、`weixin`(微信) |
173
+ | `openclawCliBin` | 否 | `openclaw` 可执行文件路径,默认 `openclaw` |
174
+ | `alertAccount` | 否 | 多账号通道使用;QQBot / WeCom 常见为 `default` |
175
+ | `alertTarget` | 是 | 告警投递目标,写法随通道而不同 |
176
+ | `pythonBin` | 否 | Python 子模块启动命令,默认 `uv` |
177
+ | `pythonArgs` | 否 | Python 子模块命令参数,默认 ["run", "python"] |
178
+ | `pythonWorkdir` | 是 | Python 子模块工作目录 |
179
+
180
+ <details>
181
+ <summary>进阶说明:正式配置、本地调试配置与 Agent Tools</summary>
182
+
183
+ 正式插件链路与本地 CLI 链路是两套独立配置:
184
+
185
+ - OpenClaw 对话读取 `~/.openclaw/openclaw.json`
186
+ - `npm run tool -- ...` 与本地 loop 读取 `local.config.json.plugin`
187
+ - 它们不会自动同步;如果两边都要用,建议至少保持 `tickflowApiKey`、`llmBaseUrl`、`llmApiKey`、`llmModel`、`databasePath`、`calendarFile`、`alertChannel`、`alertAccount`、`alertTarget` 一致
188
+
189
+ 如果你给股票 Agent 显式配置 `tools`,推荐保留 `profile: "full"`,不要额外禁用 `exec`、`read`、`write` 等运行时能力。
190
+
191
+ 从 `0.2.0` 起,以下 TickFlow Assist agent tools 按 OpenClaw 官方建议以 optional 注册:
192
+
193
+ - `add_stock`
194
+ - `remove_stock`
195
+ - `refresh_watchlist_names`
196
+ - `refresh_watchlist_profiles`
197
+ - `start_monitor`
198
+ - `stop_monitor`
199
+ - `start_daily_update`
200
+ - `stop_daily_update`
201
+ - `update_all`
202
+ - `test_alert`
203
+
204
+ 如果你给 Agent 配了 `tools.allow`,请把插件 id `tickflow-assist` 或上面的具体工具名加入允许列表;否则这些 optional tools 不会自动出现在对话可调用工具集中。插件 Slash Command 不受这个 allowlist 影响。
205
+
206
+ 多 Agent 场景示例:
207
+
208
+ ```json5
209
+ {
210
+ "agents": {
211
+ "list": [
212
+ {
213
+ "id": "stock",
214
+ "tools": {
215
+ "profile": "full",
216
+ "allow": ["tickflow-assist"],
217
+ "deny": []
218
+ }
219
+ }
220
+ ]
221
+ }
222
+ }
223
+ ```
224
+
225
+ 单 Agent 默认模式示例:
226
+
227
+ ```json5
228
+ {
229
+ "tools": {
230
+ "profile": "full",
231
+ "allow": ["tickflow-assist"],
232
+ "deny": []
233
+ }
234
+ }
235
+ ```
236
+
237
+ 修改配置后建议执行:
238
+
239
+ ```bash
240
+ openclaw config validate
241
+ openclaw gateway restart
242
+ ```
243
+
244
+ </details>
245
+
246
+ ## 5. 消息通道配置(可选)
247
+
248
+ TickFlow Assist 当前通过 `openclaw message send` 投递告警,因此前提是目标通道本身已经能在 OpenClaw 中正常工作。
249
+
250
+ 统一接入步骤:
251
+
252
+ 1. 在 OpenClaw 里安装并配置目标通道。
253
+ 2. 在插件配置里填写 `alertChannel`、`alertAccount`、`alertTarget`。
254
+ 3. 重启 Gateway。
255
+ 4. 执行一次 `test_alert` 验证链路。
256
+
257
+ 识别 `alertTarget` 的通用方法:
258
+
259
+ - 如果目标通道支持 `/whoami`,优先在目标会话里给机器人发送 `/whoami`。
260
+ - 直接读取返回的 `User id`、`chatId` 或其它会话标识。
261
+ - 再按对应通道的 target 格式写入 `alertTarget`。
262
+ - 如果该通道没有 `/whoami`,再查看官方项目说明或插件日志。
263
+
264
+ 通道差异速查:
265
+
266
+ | 通道 | 官方项目 / 接入方式 | `alertAccount` | `alertTarget` 示例 | 说明 |
267
+ |---|---|---|---|---|
268
+ | `telegram` | `openclaw channels add --channel telegram` | 通常留空 | `-1001234567890` | 直接使用群组 / 会话 ID |
269
+ | `qqbot`(QQ机器人) | [@tencent-connect/openclaw-qqbot](https://www.npmjs.com/package/@tencent-connect/openclaw-qqbot) | 推荐 `default` | `qqbot:c2c:YOUR_OPENID` | 优先在目标会话发送 `/whoami`,读取 `User id` |
270
+ | `wecom`(企业微信) | [@wecom/wecom-openclaw-plugin](https://www.npmjs.com/package/@wecom/wecom-openclaw-plugin) | 常见为 `default` | `YOUR_USER_ID_OR_CHAT_ID` | 优先在目标会话发送 `/whoami`,再区分单聊 `userId` / 群聊 `chatId` |
271
+ | `weixin`(微信) | [@tencent-weixin/openclaw-weixin](https://www.npmjs.com/package/@tencent-weixin/openclaw-weixin) | 视插件配置 | `YOUR_TARGET` | 预留通道,当前 TickFlow Assist 尚未做专门适配,建议先用 `test_alert` 验证 |
272
+
273
+ 配置示例:
274
+
275
+ ```json5
276
+ {
277
+ "alertChannel": "qqbot",
278
+ "alertAccount": "default",
279
+ "alertTarget": "qqbot:c2c:YOUR_OPENID"
280
+ }
281
+ ```
282
+
283
+ 如果你同时使用 `npm run tool -- test_alert` 做本地调试,记得把同样的通道字段也写进 `local.config.json.plugin`。
284
+
285
+ <details>
286
+ <summary>QQBot 补充</summary>
287
+
288
+ 官方项目:[@tencent-connect/openclaw-qqbot](https://www.npmjs.com/package/@tencent-connect/openclaw-qqbot)
289
+
290
+ - 先按官方项目完成安装与通道接入,再回到 TickFlow Assist 填写 `alertChannel: "qqbot"`、`alertAccount: "default"`、`alertTarget: "qqbot:c2c:YOUR_OPENID"`。
291
+ - 私聊场景常用 target 格式为 `qqbot:c2c:YOUR_OPENID`。
292
+ - target 获取方式沿用上面的通用 `/whoami` 说明;如果当前版本没有该命令,再查看官方说明或插件日志。
293
+
294
+ </details>
295
+
296
+ <details>
297
+ <summary>WeCom 补充</summary>
298
+
299
+ 官方项目:[@wecom/wecom-openclaw-plugin](https://www.npmjs.com/package/@wecom/wecom-openclaw-plugin)
300
+
301
+ - 先按官方项目完成安装与通道接入,再回到 TickFlow Assist 填写 `alertChannel: "wecom"`、`alertAccount` 和 `alertTarget`。
302
+ - `alertTarget` 单聊填写 `userId`;群聊填写 `chatId`。
303
+ - target 获取方式沿用上面的通用 `/whoami` 说明;如果当前版本没有该命令,再查看官方说明。
304
+
305
+ </details>
306
+
307
+ <details>
308
+ <summary>Weixin 补充</summary>
309
+
310
+ 官方项目:[@tencent-weixin/openclaw-weixin](https://www.npmjs.com/package/@tencent-weixin/openclaw-weixin)
311
+
312
+ - 当前 TickFlow Assist 还没有针对 `weixin` 做专门适配。
313
+ - 当前实测中,`@tencent-weixin/openclaw-weixin` 通过 `openclaw message send` 主动发送时仍可能要求额外的 `contextToken`;因此即使已拿到 `alertTarget`,`test_alert`、监控告警、日更通知也仍可能失败。
314
+ - 如果出现 `sendWeixinOutbound: contextToken is required`,说明当前版本暂时不适合作为 TickFlow Assist 的后台主动告警通道,建议先仅将微信作为 OpenClaw 对话入口使用,待官方插件后续更新后再启用主动告警推送。
315
+ - 建议先执行一次 `test_alert`,确认当前插件版本与目标链路是否兼容。
316
+
317
+ </details>
318
+
319
+ ## 6. 运维与日常管理
320
+
321
+ ### 6.1 重启与验收
322
+
323
+ 完成安装或修改配置后,建议按下面顺序做一次验收:
324
+
325
+ ```bash
326
+ openclaw plugins info tickflow-assist
327
+ openclaw plugins doctor
328
+ openclaw config validate
329
+ openclaw gateway restart
330
+ openclaw channels status --probe
331
+ ```
332
+
333
+ 然后验证告警链路:
334
+
335
+ ```bash
336
+ npm run tool -- test_alert
337
+ ```
338
+
339
+ 或者直接在 OpenClaw 对话里发送“测试告警”。
340
+
341
+ ### 6.2 升级
342
+
343
+ 推荐继续使用安装向导,在菜单里选择“升级”。
344
+
345
+ 从 `v0.1.0` 升到 `v0.2.0` 时,默认也走这条直接升级路径即可;不需要先卸载。
346
+
347
+ 如果你更喜欢手动更新:
348
+
349
+ ```bash
350
+ cd /path/to/tickflow-assist
351
+ git pull
352
+ npm install
353
+ cd python
354
+ uv sync
355
+ cd ..
356
+ npm run check
357
+ npm run build
358
+ openclaw plugins install -l /path/to/tickflow-assist
359
+ openclaw plugins enable tickflow-assist
360
+ openclaw gateway restart
361
+ ```
362
+
363
+ ### 6.3 禁用、重装与清理
364
+
365
+ 禁用插件:
366
+
367
+ ```bash
368
+ openclaw plugins disable tickflow-assist
369
+ openclaw gateway restart
370
+ ```
371
+
372
+ 如果不再需要插件配置,再从 `~/.openclaw/openclaw.json` 删除:
373
+
374
+ ```text
375
+ plugins.entries["tickflow-assist"]
376
+ ```
377
+
378
+ 重新安装通常只在这两类场景需要:
379
+
380
+ - 你要更换插件源码目录
381
+ - OpenClaw 里残留了旧的同名安装来源,直接升级后仍指向错误路径
382
+
383
+ 确实需要重装时再执行:
384
+
385
+ ```bash
386
+ openclaw plugins install -l /path/to/tickflow-assist
387
+ openclaw plugins enable tickflow-assist
388
+ openclaw gateway restart
389
+ ```
390
+
391
+ 如果你是为了“从零开始测试”,可按需手动删除 `/path/to/tickflow-assist/data/lancedb`。这只会清空本地数据库,不会删除源码。
package/docs/usage.md ADDED
@@ -0,0 +1,244 @@
1
+ # TickFlow Assist 使用指南
2
+
3
+ 本文档聚焦于日常使用、调试入口与关键运行规则。安装与配置请参阅 [安装指南](installation.md)。项目概览请先看 [README](../README.md)。
4
+
5
+ ## 1. 使用入口
6
+
7
+ | 入口 | 适合场景 | 说明 |
8
+ |---|---|---|
9
+ | OpenClaw 对话 | 日常使用 | 直接用自然语言操作自选、分析、监控和数据库查询 |
10
+ | `/ta_` Slash Command | 零歧义操作 | 插件直接处理,不经过 AI 推理 |
11
+ | `npm run tool -- ...` / loop | 本地调试、VPS 直连 | 读取 `local.config.json.plugin`,适合排障和脚本化调用 |
12
+
13
+ ## 2. 对话常用指令
14
+
15
+ 下面的说法是推荐示例,不要求逐字一致;表达清楚股票代码和动作即可。
16
+
17
+ ### 自选管理
18
+
19
+ | 指令示例 | 功能 |
20
+ |---|---|
21
+ | `添加 002261` | 添加股票到关注列表,成本价可后续补充 |
22
+ | `添加 002261 成本 34.15` | 添加股票并记录成本价 |
23
+ | `查看关注列表` | 查看当前自选、名称与成本价 |
24
+ | `删除 002261` | 从关注列表移除股票 |
25
+ | `刷新自选股名称` | 批量刷新关注股票名称 |
26
+
27
+ ### 数据获取与检索
28
+
29
+ | 指令示例 | 功能 |
30
+ |---|---|
31
+ | `更新 002261 数据` | 抓取最新日 K 并重算日线指标 |
32
+ | `获取 002261 1m 分钟K` | 抓取分钟 K 并写入数据库 |
33
+ | `搜索立讯精密最新研报` | 搜索资讯、公告、研报或事件解读 |
34
+ | `找今日涨幅 2% 的股票` | 用自然语言条件执行智能选股 |
35
+
36
+ ### 分析与复盘
37
+
38
+ | 指令示例 | 功能 |
39
+ |---|---|
40
+ | `分析 002261` | 执行综合分析,汇总技术面、财务面和资讯面 |
41
+ | `查看 002261 上次分析` | 回看最近一次综合分析 |
42
+ | `查看 002261 最近 3 次综合分析` | 回看最近几次综合分析 |
43
+ | `查看 002261 技术面分析` | 回看最近一次技术面结果 |
44
+ | `查看 002261 基本面分析` | 回看最近一次财务面结果 |
45
+ | `查看 002261 资讯面分析` | 回看最近一次资讯面结果 |
46
+ | `回测 002261 最近 5 次关键位快照` | 回测关键价位快照的命中情况 |
47
+
48
+ 如需查看更多历史,也可以直接说“查看 002261 最近 3 次技术面分析”“查看 002261 最近 3 次资讯面分析”。
49
+
50
+ ### 后台维护与排障
51
+
52
+ | 指令示例 | 功能 |
53
+ |---|---|
54
+ | `开始监控` | 启动实时监控 |
55
+ | `监控状态` | 查看监控状态、最新行情与关键价位覆盖情况 |
56
+ | `启动定时日更` | 启动项目自管的定时日更进程 |
57
+ | `TickFlow日更状态` | 查看日更进程状态与最近执行结果 |
58
+ | `停止定时日更` | 停止日更进程 |
59
+ | `停止监控` | 停止实时监控 |
60
+ | `测试告警` | 验证 OpenClaw channel 投递链路 |
61
+ | `使用帮助` | 查看插件常用指令 |
62
+ | `数据库里有哪些表` | 查看 LanceDB 当前数据表 |
63
+ | `看技术指标表结构` | 查看数据库表字段结构 |
64
+ | `查 002261 最近 5 条技术指标` | 查询数据库中的最近记录 |
65
+
66
+ ## 3. Slash Commands
67
+
68
+ 插件当前注册了 17 个 `/ta_` 直达命令,适合“添加自选”“查状态”“发测试告警”这类不需要模型解释的操作。
69
+
70
+ ### 自选管理
71
+
72
+ | 命令 | 说明 |
73
+ |---|---|
74
+ | `/ta_addstock <symbol> [costPrice] [count]` | 添加自选,并抓取默认 90 天日 K |
75
+ | `/ta_rmstock <symbol>` | 删除自选 |
76
+ | `/ta_watchlist` | 查看自选列表 |
77
+ | `/ta_refreshnames` | 刷新股票名称 |
78
+ | `/ta_refreshprofiles [symbol]` | 刷新行业分类与概念板块 |
79
+
80
+ ### 分析与复盘
81
+
82
+ | 命令 | 说明 |
83
+ |---|---|
84
+ | `/ta_analyze <symbol>` | 直接执行综合分析 |
85
+ | `/ta_viewanalysis <symbol>` | 查看最近一次综合分析 |
86
+ | `/ta_backtest [symbol] [recentLimit]` | 回测活动关键价位快照,可按股票与最近次数过滤 |
87
+
88
+ ### 后台维护与调试
89
+
90
+ | 命令 | 说明 |
91
+ |---|---|
92
+ | `/ta_startmonitor` | 启动实时监控 |
93
+ | `/ta_stopmonitor` | 停止实时监控 |
94
+ | `/ta_monitorstatus` | 查看监控状态 |
95
+ | `/ta_startdailyupdate` | 启动定时日更 |
96
+ | `/ta_stopdailyupdate` | 停止定时日更 |
97
+ | `/ta_updateall` | 立即执行一次完整日更 |
98
+ | `/ta_dailyupdatestatus` | 查看定时日更状态 |
99
+ | `/ta_testalert` | 发送一条测试告警 |
100
+ | `/ta_debug` | 查看插件进程当前看到的配置来源、数据库路径与 watchlist 快照 |
101
+
102
+ 常用示例:
103
+
104
+ ```text
105
+ /ta_addstock 601872
106
+ /ta_addstock 002261 34.15
107
+ /ta_watchlist
108
+ /ta_analyze 002261
109
+ /ta_viewanalysis 002261
110
+ /ta_backtest 002261 5
111
+ /ta_startmonitor
112
+ /ta_monitorstatus
113
+ /ta_dailyupdatestatus
114
+ /ta_testalert
115
+ ```
116
+
117
+ 使用提示:
118
+
119
+ - `/ta_addstock` 的第二个参数是 `costPrice`,第三个参数才是日 K 数量;如果只写两个参数,第二个数字会被当作成本价。
120
+ - `/ta_viewanalysis` 只看最近一次综合分析;如果你要看技术面、资讯面或最近 N 次历史,优先用自然语言或 CLI 的 `view_analysis`。
121
+ - `/ta_backtest` 不带参数时会输出整体回测概览,带 `symbol` 和 `recentLimit` 时会更聚焦。
122
+ - `/ta_debug` 适合排查“OpenClaw 对话能看到的状态”和“CLI 看到的状态”不一致的问题。
123
+
124
+ ## 4. CLI 与本地直连调试
125
+
126
+ `npm run tool -- ...`、`npm run monitor-loop` 与 `npm run daily-update-loop` 读取的是项目根目录 `local.config.json` 的 `plugin` 字段,不会回退到 `~/.openclaw/openclaw.json`。
127
+
128
+ 推荐配置结构:
129
+
130
+ ```json
131
+ {
132
+ "plugin": {
133
+ "tickflowApiUrl": "https://api.tickflow.org",
134
+ "tickflowApiKey": "sk-xxx",
135
+ "mxSearchApiUrl": "https://mkapi2.dfcfs.com/finskillshub/api/claw",
136
+ "mxSearchApiKey": "mkt_xxx",
137
+ "llmBaseUrl": "https://api.openai.com/v1",
138
+ "llmApiKey": "sk-xxx",
139
+ "llmModel": "gpt-4o",
140
+ "databasePath": "./data/lancedb",
141
+ "calendarFile": "./day_future.txt",
142
+ "requestInterval": 30,
143
+ "alertChannel": "telegram",
144
+ "openclawCliBin": "openclaw",
145
+ "alertAccount": "",
146
+ "alertTarget": "YOUR_TARGET",
147
+ "pythonBin": "uv",
148
+ "pythonArgs": ["run", "python"],
149
+ "pythonWorkdir": "./python"
150
+ }
151
+ }
152
+ ```
153
+
154
+ ### 常用命令
155
+
156
+ 基础验证:
157
+
158
+ ```bash
159
+ npm run tool -- test_alert
160
+ npm run tool -- add_stock '{"symbol":"002261","costPrice":34.154}'
161
+ npm run tool -- fetch_klines '{"symbol":"002261","count":90}'
162
+ npm run tool -- fetch_intraday_klines '{"symbol":"002261","period":"1m","count":240}'
163
+ npm run tool -- analyze '{"symbol":"002261"}'
164
+ ```
165
+
166
+ 分析回看与检索:
167
+
168
+ ```bash
169
+ npm run tool -- view_analysis '{"symbol":"002261"}'
170
+ npm run tool -- view_analysis '{"symbol":"002261","limit":3}'
171
+ npm run tool -- view_analysis '{"symbol":"002261","profile":"technical","limit":3}'
172
+ npm run tool -- backtest_key_levels '{"symbol":"002261","recentLimit":5}'
173
+ npm run tool -- mx_search '{"query":"立讯精密最新研报","limit":5}'
174
+ npm run tool -- mx_select_stock '{"keyword":"今日涨幅2%的股票","pageNo":1,"pageSize":20}'
175
+ ```
176
+
177
+ 后台与循环:
178
+
179
+ ```bash
180
+ npm run tool -- start_monitor
181
+ npm run tool -- monitor_status
182
+ npm run tool -- stop_monitor
183
+ npm run tool -- start_daily_update
184
+ npm run tool -- daily_update_status
185
+ npm run tool -- stop_daily_update
186
+ npm run tool -- update_all
187
+ npm run monitor-loop
188
+ npm run daily-update-loop
189
+ ```
190
+
191
+ ## 5. 运行规则与关键机制
192
+
193
+ ### 监控告警阈值
194
+
195
+ | 告警类型 | 触发条件 | 说明 |
196
+ |---|---|---|
197
+ | 止损告警 | `价格 <= 止损位` | 触及止损位 |
198
+ | 止损预警 | `价格 <= 止损位 × 1.005` | 接近止损位 |
199
+ | 突破告警 | `价格 >= 突破位` | 突破关键压力位 |
200
+ | 支撑告警 | `价格 <= 支撑位 × 1.005` | 接近支撑位 |
201
+ | 压力告警 | `价格 >= 压力位 × 0.995` | 接近压力位 |
202
+ | 止盈告警 | `价格 >= 止盈位` | 达到止盈位 |
203
+ | 涨跌幅异动 | `绝对涨跌幅 >= 5%` | 基于昨收计算 |
204
+ | 成交量异动 | `当前量 >= 5 日均量 × 3` | 放量异动 |
205
+
206
+ ### 数据来源与降级逻辑
207
+
208
+ | 场景 | 当前行为 |
209
+ |---|---|
210
+ | `analyze` | 读取本地日 K、日线指标,并临时补充分钟 K、分钟指标、实时行情和历史复盘摘要 |
211
+ | 财务面(Expert) | 优先使用 TickFlow 完整财务快照 |
212
+ | 财务面(非 Expert / TickFlow 完整财务失败) | 回退到 `mx_select_stock` 的 lite 指标链路 |
213
+ | 财务面仍不可用 | 财务子任务返回降级结果,但综合分析继续执行 |
214
+ | 资讯面不可用 | 资讯子任务返回降级结果,但综合分析继续执行 |
215
+ | 分钟 K 保留策略 | `analyze` / `update_all` 会保留近 30 个交易日;单独执行 `fetch_intraday_klines` 会保留近 10 个交易日 |
216
+
217
+ ### 后台运行规则
218
+
219
+ | 项目 | 说明 |
220
+ |---|---|
221
+ | 实时监控时段 | `09:30-11:30`、`13:00-15:00` |
222
+ | 阶段通知 | 上午开盘、上午收盘、下午开盘、当日收盘各发送一次 |
223
+ | `update_all` | 面向收盘后手动补跑流程,会先执行日更,再立即执行一次复盘 |
224
+ | 定时日更轮询 | 按 15 分钟对齐轮询,交易日 `15:25` 后最多执行一次 |
225
+ | 定时收盘复盘轮询 | 按 15 分钟对齐轮询,交易日 `20:00` 后最多执行一次 |
226
+ | `monitor_status` | 显示运行方式、最近心跳、最新行情与关键位覆盖情况 |
227
+ | `daily_update_status` | 显示运行方式、配置来源、最近心跳,以及日更/复盘两类最近执行结果 |
228
+
229
+ ## 6. 主要数据表
230
+
231
+ | 表名 | 用途 |
232
+ |---|---|
233
+ | `watchlist` | 自选列表、成本价、行业分类、概念板块 |
234
+ | `klines_daily` | 日 K 数据 |
235
+ | `klines_intraday` | 分钟 K 数据 |
236
+ | `indicators` | 技术指标 |
237
+ | `key_levels` / `key_levels_history` | 当前关键价位与历史快照 |
238
+ | `technical_analysis` / `financial_analysis` / `news_analysis` / `composite_analysis` | 多维分析结果 |
239
+ | `analysis_log` / `alert_log` | 分析日志与告警留痕 |
240
+
241
+ ## 7. 高优先级注意事项
242
+
243
+ - 正式插件读取 `~/.openclaw/openclaw.json`;CLI 与本地 loop 读取 `local.config.json.plugin`,两者不会自动同步。
244
+ - 未配置 `mxSearchApiKey` 时,`mx_search` / `mx_select_stock` 不可用,非 Expert 财务链路的 lite 回退也会失效。