新闻详情

新闻详情

首页 / 资讯中心 / 详情

如何给 PanWatch 写一个自定义 Agent:从 collect 到 build_prompt 完整教程

发布时间:2026/10/2 5:05:40来源:尧图网络
如何给 PanWatch 写一个自定义 Agent:从 collect 到 build_prompt 完整教程
如何给 PanWatch 写一个自定义 Agent从 collect 到 build_prompt 完整教程【免费下载链接】PanWatchPanWatch — AI stock monitoring for A-shares, HK US markets, powered by TradingAgents. Portfolio insights, real-time alerts automated reports.盯盘侠覆盖 A股/港股/美股的 AI 盯盘、持仓分析、实时提醒与自动报告。项目地址: https://gitcode.com/GitHub_Trending/pa/PanWatchPanWatch 是一款覆盖 A股/港股/美股的 AI 盯盘工具支持 AI 盯盘、持仓分析、实时提醒与自动报告。除了内置的盘前分析、盘中监测、收盘复盘它还预留了清晰的扩展点——本文就是 PanWatch 自定义 Agent 开发教程带你从collect采集数据到build_prompt拼装提示词完整走通一个自定义 Agent 的落地流程并把它注册进调度器。先看懂 Agent 的执行流水线collect → analyze → notify在动手前先用 30 秒理解 PanWatch Agent 的四步流水线全部逻辑定义在抽象基类 src/modules/automation/base.py步骤方法谁来写作用1️⃣ 采集数据collect(context)你要实现异步返回一个 dict装下行情、技术面、新闻、持仓等数据2️⃣ 拼装提示词build_prompt(data, context)你要实现返回(system_prompt, user_content)二元组3️⃣ 调用大模型analyze(context, data)基类已实现自动调 AI、生成标题、附带模型信息4️⃣ 推送通知run(context)基类已实现处理静默时段、通知去重、发送提醒并记录换句话说你只需要写两个方法其余的 AI 调用、通知去重、静默时段、运行记录全部由基类托管。这是 PanWatch 自定义 Agent 开发成本很低的关键。运行时的上下文对象AgentContext同样定义在 base.py其中最常用的是context.watchlist当前自选股列表来自 config/watchlist.yaml每只股票带有symbol、name、marketA股/港股/美股context.portfolio账户与持仓信息可查成本价、数量、交易风格context.ai_client/context.notifier大模型客户端与通知管理器基类会替你使用第 1 步继承 BaseAgent 定义你的 Agent 类在src/modules/automation/下新建文件比如morning_brief.py。参考内置收盘复盘的实现 daily_report.py最小骨架如下from src.modules.automation.base import BaseAgent, AgentContext class MorningBriefAgent(BaseAgent): 晨间速览 Agent开盘前 5 分钟推送自选股隔夜动态 name morning_brief # 内部唯一标识注册/调度都用它 display_name 晨间速览 # 前端与通知中展示的名称 description 开盘前推送自选股隔夜表现与今日关注点三个类属性缺一不可name是调度器的唯一键display_name出现在报告标题里形如【晨间速览】贵州茅台、宁德时代…见 base.py 的analyze方法。第 2 步实现 collect 方法——把数据喂给 AIcollect是异步方法负责把所有原料放进一个 dict 返回。PanWatch 提供了现成的数据构建器SignalPackBuilder一次调用即可拿到行情、技术指标、资金流向、新闻、事件和持仓参考 daily_report.py 的 collect 实现from src.modules.research.signals import SignalPackBuilder async def collect(self, context: AgentContext) - dict: builder SignalPackBuilder() sym_list [(s.symbol, s.market, s.name) for s in context.watchlist] packs await builder.build_for_symbols( symbolssym_list, include_newsTrue, news_hours24, portfoliocontext.portfolio, include_technicalTrue, ) return {signal_packs: packs, timestamp: datetime.now().isoformat()}小贴士需要隔夜美股大盘表现时可以调用市场数据客户端的index_quotes([usDJI, usIXIC, usINX])盘前分析 Agent 就是这么做的见 premarket_outlook.py需要昨日复盘结论时用get_latest_analysis(agent_namedaily_report, ...)即可跨 Agent 引用历史结果如果一只股票的行情都没取到建议直接raise RuntimeError(...)快速失败避免 AI 在空数据上幻觉第 3 步实现 build_prompt 方法——把数据写成提示词build_prompt是同步方法返回(system_prompt, user_content)。最佳实践是把角色与输出格式写成独立提示词文件放在 prompts/ 目录如 daily_report.txt、chart_analyst.txt代码里只负责拼装结构化数据。参考 premarket_outlook.py 的 build_promptfrom pathlib import Path PROMPT_PATH Path(__file__).parent.parent.parent.parent / prompts / morning_brief.txt def build_prompt(self, data: dict, context: AgentContext) - tuple[str, str]: system_prompt PROMPT_PATH.read_text(encodingutf-8) lines [f## 日期{datetime.now().strftime(%Y-%m-%d)} 晨间\n] for stock in context.watchlist: pack data[signal_packs].get(stock.symbol) lines.append(f### {stock.name}{stock.symbol}) if pack and pack.quote: lines.append(f- 现价{pack.quote.current_price:.2f} f{(pack.quote.change_pct or 0):.2f}%) tech (pack.technical if pack else None) or {} if tech.get(trend): lines.append(f- 均线趋势{tech[trend]}) return system_prompt, \n.join(lines)写提示词文件时有两个容易踩的坑chart_analyst.txt 里有标准示范⚠️ 明确输出格式通知渠道通常渲染纯文本建议在提示词中要求禁止使用 Markdown 语法、每只股票控制在 200 字以内⚠️ 用safe_num之类的辅助函数兜住None值防止某项数据缺失导致格式化崩溃第 4 步注册 Agent让它进入调度体系新 Agent 要被看见需要两处登记都在 PanWatch 自定义 Agent 开发的收尾阶段1. 加入 Agent 注册表server.pyAGENT_REGISTRY: dict[str, type] { ... morning_brief: MorningBriefAgent, # 新增一行 }2. 加入种子规格定义默认调度计划agent_catalog.pyAgentSeedSpec( namemorning_brief, display_name晨间速览, description开盘前推送自选股隔夜表现与今日关注点, enabledTrue, schedule55 8 * * 1-5, # cron 5 段式每周一到五 08:55 execution_modebatch, # batch整体跑一次single逐只股票执行 kindAGENT_KIND_WORKFLOW, visibleTrue, display_order5, ), 调度表达式支持两种写法cron 格式如*/5 9-15 * * 1-5盘中每 5 分钟或间隔格式如interval:3m解析逻辑在 schedule_parser.py。execution_modesingle的 Agent 会被 AgentScheduler 逐只股票调用run_single并自动跳过非交易时段的市场。服务重启后build_scheduler 会把数据库中已启用的 workflow 类 Agent 逐个注册进 APScheduler无需再改代码。验证效果报告与提醒长这样一切就绪后可以等定时触发或在 Agent 管理页手动立即执行。产出会落在两个地方① 分析报告详情页可查看完整 AI 分析、技术指标与历史走势PanWatch 股票详情页示例如下。② 实时提醒run流程会按通知策略推送自动处理静默时段与去重提醒中心效果如下。✅ 验证清单日志里能看到Agent [晨间速览] 开始执行→通知已发送历史记录中出现对应报告连续手动触发不会重复推送内置去重窗口见 base.py。自定义 Agent 开发的 3 个常见坑name与AGENT_REGISTRY键不一致调度器按name查找类键对不上只会得到一条未在 AGENT_REGISTRY 中注册的警告Agent 静默消失忘记设enabledTrue种子规格里enabledFalse的 Agent 不会被 build_scheduler 注册适合先写好代码、上线后再开启collect 里不做容错单只股票行情拉取失败很正常参考内置 Agent 的写法——单只失败降级为数据缺失全部失败才抛异常总结四步完成你的第一个自定义 Agent步骤关键动作参考文件① 建类继承 BaseAgent定义 name/display_namebase.py② collect用 SignalPackBuilder 采集行情/技术/新闻daily_report.py③ build_promptprompts/ 目录放系统提示词 拼装数据premarket_outlook.py④ 注册AGENT_REGISTRY AgentSeedSpec 配调度server.py、agent_catalog.py按这套流程你大概半天就能给 PanWatch 加一个晨间速览或财报日历类的新 Agent——它会自动融入盯盘、提醒与报告体系成为 AI 股票监控工具箱里的一员。【免费下载链接】PanWatchPanWatch — AI stock monitoring for A-shares, HK US markets, powered by TradingAgents. Portfolio insights, real-time alerts automated reports.盯盘侠覆盖 A股/港股/美股的 AI 盯盘、持仓分析、实时提醒与自动报告。项目地址: https://gitcode.com/GitHub_Trending/pa/PanWatch创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

基于MCP与Docker的智能体记忆复盘系统hindsight工程实践 2026/10/2 5:50:34

基于MCP与Docker的智能体记忆复盘系统hindsight工程实践

1. 项目缘起:为什么“事后复盘”值得被单独做成一个项目“hindsight”这个词本身很有意思,字面意思是“后见之明”,也就是事后才明白过来的那种洞察。把这个词拿来做一个技术项目的名字,指向性其实非常明确:它要解决的…

阅读更多 →
5G NR中pi/2 BPSK与QPSK调制原理及实测星座图解析 2026/10/2 5:50:33

5G NR中pi/2 BPSK与QPSK调制原理及实测星座图解析

1. 这不是教科书里的抽象图,而是5G NR物理层实测信号的“指纹”你打开示波器或频谱仪,看到的不是教科书上那个完美对称、四点均匀分布的QPSK星座图——它可能歪斜、抖动、边缘模糊,甚至在I/Q平面上拉出一条条细长的“尾巴”。而当你把同样的设…

阅读更多 →
MCP+A2A组合实战:多智能体系统生产级部署的坑与解法 2026/10/2 5:50:27

MCP+A2A组合实战:多智能体系统生产级部署的坑与解法

先说个背景:这是《使用MCP和A2A设计多智能体AI系统》的第六篇。前几篇我们把MCP Server从零搭到了能跑,也把A2A协议里的AgentCard、Task模型、消息格式逐条拆过。但说实话,“能跑”和“能用在生产环境”之间,隔着的不是协议文档&a…

阅读更多 →
当一切交由 Agent,用户不再打开你的后台,SaaS 还值钱吗 2026/10/2 5:50:27

当一切交由 Agent,用户不再打开你的后台,SaaS 还值钱吗

1. 一个正在发生的静默转变过去半年,我跟不少做 SaaS 的朋友聊天,话题总会绕到同一个焦虑上:客户越来越不爱打开我们的后台了。以前产品经理天天盯着 DAU、页面停留时长、功能点击率,现在这些指标在很多场景下正在集体失效。原因不…

阅读更多 →
Element必填星号不显示?表单校验规则与prop配置详解 2026/10/2 5:50:27

Element必填星号不显示?表单校验规则与prop配置详解

1. 为什么表单校验总在"必填"这一关翻车做过后台管理系统的前端,十有八九都被"必填校验"折腾过。不是字段没配规则,而是用户根本不知道这个字段要填——等提交的时候被拦截,弹出一串红字,体验已经扣分了。真正…

阅读更多 →
开源模块化模拟驾驶支架DIY:铝型材搭建与调校全记录 2026/10/2 5:50:27

开源模块化模拟驾驶支架DIY:铝型材搭建与调校全记录

折腾装备这件事,我一直有个执念:能自己搭的,绝不买成品。前阵子想上一套模拟驾驶支架,看了一眼成品价格,再看了一眼自己钱包,果断决定走开源方案。最后相中了openrig——一套以开源图纸为核心的模块化装备机…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉