切换主题
00. 课程设计:我们到底要做一个什么样的 PA 复盘教练
先说边界。
这套教程里的 PA,是 Price Action 训练语境里的 PA。我们不做实盘喊单,不预测未来涨跌,也不告诉用户现在该买还是该卖。我们做的是训练复盘:拿一笔已经发生的训练交易,分析计划、入场、止损、止盈、K 线上下文和执行动作是否一致。
这个边界非常重要。因为只要你把它做成“交易建议机器人”,后面所有工程设计都会变形:提示词会鼓励它猜方向,知识库会被拿去拼观点,搜索会被拿去查最新行情,用户也会不断诱导它回答“现在能不能买”。这不是训练教练,这是风险入口。
所以课程第一条规则是:复盘只处理过去发生的训练样本。
伴生工程先长什么样
伴生工程是一个 Spring Boot 小项目,先不强依赖真实 LLM Key。原因很现实:教程要保证读者能跑起来。真正接 Spring AI Alibaba 的位置,会在 Agent、Tool、Graph、Routing 这些章节讲清楚;本地工程用确定性代码把同一套业务边界跑出来。
项目结构如下:
text
pa-review-coach-tutorial/
pom.xml
src/main/resources/application.yml
src/main/java/com/example/pareview/
PaReviewCoachApplication.java
api/
ReviewCoachController.java
ReviewRequestBody.java
ReviewReportResponse.java
coach/
ReviewCoachService.java
ReviewRequest.java
ReviewReport.java
ReviewStatus.java
TradeRecord.java
RiskMetrics.java
RiskCalculator.java
GuardrailService.java
TrainingMemory.java
KnowledgeBase.java
TradeRepository.java
KlineWindowRepository.java
KlineBar.java
ReviewCoachFixture.java
data/
InMemoryTradeRepository.java
InMemoryKlineWindowRepository.java
src/test/java/com/example/pareview/
api/ReviewCoachControllerTest.java
coach/ReviewCoachServiceTest.java先把它跑起来:
powershell
cd D:\idea_space\pa-review-coach-tutorial
mvn.cmd test
mvn.cmd spring-boot:run -Dspring-boot.run.jvmArguments=-Dfile.encoding=UTF-8启动后调用:
powershell
Invoke-RestMethod `
-Uri "http://127.0.0.1:18091/api/pa-review/reviews" `
-Method Post `
-ContentType "application/json; charset=utf-8" `
-Body '{"tradeId":"T-1001","includeKline":true,"question":"复盘这笔训练交易"}'你应该看到 status=REVIEWED,并且有 riskReward=2.0、realizedR=-0.8、primaryProblem、nextTrainingTask 这些字段。
为什么不是一上来就接大模型
因为工程教程最怕两件事。
第一,读者还没理解业务边界,就先被模型 Key、网络、依赖版本、提示词细节卡住。卡住之后,他分不清是自己代码错了,还是模型输出飘了。
第二,教程用 LLM 输出当唯一效果,读者看不出来哪些部分是业务代码保证的,哪些部分只是模型这次刚好说对了。
所以我们先把复盘系统拆成稳定部件:
- Controller 负责接收请求。
- Service 负责编排复盘。
- Repository 负责拿交易和 K 线。
- RiskCalculator 负责算风险收益。
- GuardrailService 负责拦截越界问题。
- TrainingMemory 负责训练者历史摘要。
- KnowledgeBase 负责提供 PA 训练知识。
等这些边界清楚之后,再把其中某些节点换成 Spring AI Alibaba 的 ChatClient、ToolCallback、Advisor、Graph 节点或 Routing 节点,读者就知道自己到底在替换什么。
课程主线
我们会从一个产品经理提的小需求开始:
“能不能做个复盘教练?用户做完训练交易,把 tradeId 发过来,系统给他一个复盘报告。”
第一版很好做,甚至不用消息队列、不用数据库、不用 LLM 都能模拟。但产品很快会继续追问:
只给 tradeId 够吗?如果没有止损和止盈,能不能评价交易质量?如果用户发来的是“我这笔亏了,下一笔能不能买回来”,系统该不该答?如果用户想看长期问题,单笔报告够不够?如果教练要同时看 PA、风险、心理、数据,Service 里是不是会越写越乱?
这些追问,就是整套课的推动力。
学完后的判断标准
学完这套课,你应该能判断三件事:
- 一个 AI 复盘产品的边界在哪里,哪些问题不能答。
- 一个训练复盘工程应该有哪些稳定模块,哪些地方适合接入大模型。
- 当业务增长时,应该引入 Tool、Memory、RAG、Guardrail、Graph、Interrupt、Multi-Agent、Routing 中的哪一个,而不是看到概念就乱用。