如果你理解的“AI 投研”是把行情软件里所有指标丢给大模型,让它告诉你明天买什么,那这篇文章大概率会让你失望。我花了两周时间,用 WorkBuddy 把一个投研信息处理流程拆成了五个各司其职的 AI Agent——有负责盯公开数据的,有负责行业梳理的,有专职风险预警的。它们按固定时间表轮班,最终每天开盘前自动产出一份投研简报,并沉淀到本地 Obsidian 知识库。这篇文章会把整套「AI 投研团队」的搭建过程、角色指令设计、定时触发机制,以及连续跑了一周之后冒出来的各种实际问题完整记录下来,希望能帮到正在做信息跟踪、行业研究,或者单纯想提升信息处理效率的朋友。
这套东西的核心逻辑很简单:AI 不是用来替你做决策的,而是用来把“找信息”这件事变成一条全自动流水线,让你每天睁开眼睛,看到的是已经整理好的事实,而不是一堆需要自己翻的网页。
1. 为什么需要“AI 投研团队”:一个人的精力撑不起全天候信息战
1.1 一个人盯盘的极限在哪里
我先说一个很现实的场景。晚上美股交易时段新闻频发,清晨港股和美股盘后公告密集出炉,A股盘前又有新的政策文件、行业数据、上市公司公告,盘中还随时可能出现突发消息。如果你每天要把这些信息都过一遍,再留出时间做真正的思考,几乎是不可能的。
我自己之前的做法和大部分人差不多:关注了十几个信息渠道,每天早上花一个多小时手动刷一遍,晚上再补一轮。遇到关键位置还会切到行情软件看异动。一天下来,真正留给自己做判断的时间可能不到一个小时,大部分精力都耗在“信息搬运”上了。
投研这件事有个特点:决定你产出质量的往往不是你对某一个信息的理解深度,而是你有没有漏掉关键信息。漏掉一条重要公告、错过一个突发新闻,后面的分析框架再漂亮也没用。而一个人靠手动盯盘去对抗信息量的膨胀,长期是不可持续的。
所以我去找自动化方案的时候,目标很明确:不是让 AI 告诉我买什么,而是让它帮我保证“信息不漏、关键不丢”,把我从重复的信息采集和整理中解放出来。
1.2 AI 真正能顶上的三个环节
把投研信息处理流程拆开看,真正适合自动化的是三个环节。
第一是采集。把分散在 RSS、公开网页、公告列表里的信息,按照固定频率定时抓下来。这个动作没有技术含量,但必须稳定、准时、不遗漏。
第二是清洗与结构化。把抓回来的原始页面去重、抽正文、去掉广告和导航噪音、提取发布时间、标的主体、事件类型等关键字段。这一步决定了后面所有分析的质量。
第三是初筛与摘要。按行业、关键词把信息分流,给每条信息打标签,生成一段精简摘要,把当天值得关注的事件从几百条原始信息里捞出来。
这三个环节有一个共同点:它们都是“确定性”工作,不需要灵感和直觉,但需要持续稳定地执行。AI 恰好擅长这个。而真正需要人工判断的环节——比如“这条消息可能对某个公司产生什么长期影响”“当前市场情绪是否过热”——AI 只能提供辅助,不能替你拍板。
我把这个边界看得非常清楚,所以整个团队的设计都围绕“信息整理”展开,绝不越界。
2. 先设计岗位再配置 Agent:我的五角色架构
2.1 采集、清洗、研究、预警、主编:一支最小可用团队
很多人搭 AI 工作流的第一步就错了——打开工具,看到几个模板,直接往里填提示词,结果产出乱七八糟。我的做法是先做“组织架构设计”,像搭真实投研团队一样,先把岗位定义清楚,再让每个 Agent 去对应一个岗位。
最终我配置了五个角色:
| 岗位 | 核心职责 | 输出物 |
|---|---|---|
| 采集员 | 定时轮询 RSS、公告页、新闻列表 | 原始消息队列 |
| 清洗员 | 去重、抽正文、标准化字段 | 结构化投研条目 |
| 研究员 | 按行业归类、语义理解、事件标签 | 分主题研究摘要 |
| 风险哨兵 | 盯异常波动、负面舆情、突发公告 | 风险预警卡片 |
| 主编 | 汇总所有产出、排版、归档 | 最终日报 Markdown |
为什么是这五个角色,而不是直接写一个“超级投研 Agent”?因为岗位边界越清晰,提示词越好写,问题也越好定位。如果某天日报质量不行,你能很快判断是采集环节漏了信息,还是研究环节摘要写得太水。如果五个岗位挤在一个 Agent 里,出了问题根本不知道从哪里查起。
“最小可用”的意思是:你不需要一开始就配满五个。如果是第一次搭建,我建议先从三个角色开始:采集员、清洗员、主编。跑通一条完整链路之后,再往里面加研究员和风险哨兵。每次只加一个角色,方便观察它对整体产出的影响。
2.2 哪些环节应该用脚本而不是 AI
这里分享一个特别重要的经验:不要把每个环节都强行 AI 化。
采集和清洗这两个环节,我强烈建议用脚本或 Skill 实现,而不是让 AI 自由发挥。抓网页、抽正文、去重、解析字段,这些都是确定性操作,用现成的解析库又快又稳,还省钱。如果让 AI 去抓网页,它可能漏项、可能被页面上乱七八糟的推荐内容带偏,每次运行还要消耗大量 token。
AI 真正该参与的是“语义理解和判断”环节。同样一条公告,里面提到“公司签订重大合同”,AI 能理解这个信息应该归入“资本运作”类,能抽取合同金额、对手方、是否构成重大资产重组等关键要素。这种能力,正则表达式做不到,只有大模型能搞定。
所以我的流水线设计是:能用代码解决的绝不用 AI,用 AI 的地方一定需要语义理解。这也是控制成本、提升稳定性的关键。
2.3 关键 Prompt 怎么写:以研究员 Agent 为例
岗位设计好了,接下来就是给每个 Agent 写“岗位说明书”。我以研究员 Agent 为例,给出一个实际在用的指令模板。
# 角色 行业研究员 # 职责 把清洗后的结构化投研条目按行业归类,识别其中涉及业绩变动、 管理层变动、重大合同、资本运作、监管关注等事件标签。 # 输入 JSON 数组,每个元素包含:id、发布时间、来源、标题、正文摘要、原始链接 # 输出 Markdown 表格,字段如下: | 行业 | 标的主体 | 事件摘要(不超过50字) | 影响标签 | 置信度 | # 注意事项 - 不确定的事件标注“待核”,不要编造来源 - 只做客观归纳,不给出任何买卖建议 - 每条信息至少保留一个原始链接,方便溯源 - 置信度低于 0.6 的条目放入“待观察”区,不进日报正文这个模板看起来简单,但每一行都有用意。
角色和职责是让模型进入状态,输入和输出部分强制规定了数据结构,避免它自由发挥。“置信度”和“待核”这两个词是投研场景的特殊要求——因为 AI 在信息不全时经常表现出莫名其妙的自信,你必须让它学会“承认自己不知道”。
最后一条“不给出任何买卖建议”既是合规要求,也是在约束模型别越界。AI 一旦开始分析“应该买还是卖”,就容易一本正经地胡说八道。让它做客观归纳,它能做好;让它做预测,它大概率会让你翻车。
3. 在 WorkBuddy 里把团队搭起来
3.1 为什么用 WorkBuddy 而不是裸调 API
把岗位设计好后,我面临一个工具选型问题:是自己写 Python 脚本去调大模型 API,还是用一个现成的 Agent 编排工具?
裸调 API 的优势是自由度大,想怎么编排都行。但代价是巨大:任务调度、失败重试、上下文管理、日志监控,这些全得自己写。我这套投研流水线要跑 7×24 小时,任何一个环节出问题都要能自动恢复,纯手写的工程量太大,维护成本远超收益。
我也对比过 Claude Code 这类代码智能体工具。说实话,如果任务是“写一个爬虫脚本”,Claude Code 很舒服。但投研自动化是一个“信息采集 + 定时巡检 + 多角色协同 + 知识库沉淀”的综合场景,它的主场不在这里。
最终选了 WorkBuddy,三个原因:
- SkillHub 技能市场里有不少开箱即用的采集、解析、写入技能,不用自己从零造轮子。
- 内置定时触发机制,可以像 cron 一样按时间表跑任务,还能看到每次运行的日志。
- 支持把 Agent 的输出直接写入本地目录,跟 Obsidian 联动很顺畅。
简单说,WorkBuddy 在我眼里是一个“AI Agent 工作台”:你可以在这里面给每个 Agent 配人设、接技能、串联流水线、设定时任务。它解决的问题不是“怎么生成一段文本”,而是“怎么让一堆 AI 角色稳定协作地完成一件长周期的事”。
3.2 SkillHub 技能选型与安装
SkillHub 是 WorkBuddy 的技能市场,类似手机上的应用商店。选技能这件事,我给自己定了一条原则:初始阶段只装最少必要技能,跑通了再加。
我第一批只装了四个:
- RSS 订阅解析:读取订阅源,输出标题和链接列表。
- 网页正文提取:把详情页里的正文抽出来,去掉导航、广告、推荐内容。
- JSON 处理器:负责消息队列里数据的格式转换和字段映射。
- Markdown 文件写入:把 Agent 的输出写到指定本地目录,文件名可以带日期变量。
装多了会怎么样?每个技能都是一个潜在故障点。我以前试过一次装十几个插件,结果某个技能版本更新后接口变了,整条流水线直接断掉,排查了半天。
安装之后,每个技能我都会先用一个小样本测试一遍,确认输入输出格式和文档一致再往里接。这个习惯帮我省了很多事。
3.3 Agent 配置与流水线串联:一份可直接参考的骨架
在 WorkBuddy 的配置面板里,每个 Agent 可以理解为一份“岗位说明书 + 技能绑定 + 上下游关系”的集合。我整理了一份当前在跑的骨架配置,你可以直接参考。
采集员: 技能: [rss订阅解析, 网页正文提取] 输入: 订阅源列表(约30个公开源) 输出: 原始消息队列(JSON) 模型档位: 轻量 触发频率: 每30分钟 清洗员: 技能: [json处理器] 输入: 原始消息队列 任务: 去重、抽正文、提取发布时间/来源/标的主体 输出: 结构化投研条目(JSON) 模型档位: 轻量 研究员: 技能: [] 输入: 结构化投研条目 任务: 按行业归类、事件标签、生成摘要 输出: 分主题研究摘要(Markdown表格) 模型档位: 强推理 风险哨兵: 技能: [网页正文提取] 输入: 结构化投研条目 + 行情异动接口 任务: 识别突发公告、负面舆情、异常波动 输出: 预警卡片(JSON) 模型档位: 中 主编: 技能: [markdown文件写入] 输入: 研究员摘要 + 风险哨兵预警 + 清洗员高置信度条目 任务: 汇总排版生成日报 输出: /path/to/ObsidianVault/投研/日报/YYYY-MM-DD.md 模型档位: 强推理 触发频率: 每个交易日 08:00流水线串联的关键在于“数据格式统一”。我在设计时让每个环节的输出都遵循同一套 JSON schema,这样采集员的输出可以直接被清洗员消费,清洗员的输出也可以直接给研究员和风险哨兵使用。
打个比方:这就好比公司里每个部门都按统一的模板交接文档,而不是每个人自己发明一套格式。如果格式不统一,上下游对接就会变成一场灾难。
另外有一点要注意:流水线里各环节的触发频率是可以不同的。采集员每 30 分钟跑一次,研究员和主编每天跑一次,这是完全合理的。信息采集要高频率,内容分析要控制节奏,避免无效消耗 token。
4. 7×24 小时运转的实现细节
4.1 定时触发与“自动签到”任务编排
WorkBuddy 的定时触发机制是最打动我的功能。它相当于给每个 Agent 发了考勤表,到点就自动上班跑任务,不用人管。
我把整个团队的时间表排成这样:
| 时间 | 任务 | 说明 |
|---|---|---|
| 交易日 08:00 | 主编生成晨报 | 整合隔夜外盘、早间公告、行业动态 |
| 每 30 分钟 | 采集员巡检 | 增量抓取新发布的信息 |
| 交易日 09:30 | 风险哨兵盘中初检 | 重点扫描开盘后异常公告 |
| 每 60 分钟 | 风险哨兵盘中巡检 | 监测突发新闻和异常舆情 |
| 交易日 15:30 | 清洗员盘后整理 | 把当日新条目标准化入库 |
| 每日 21:30 | 主编生成晚间归档 | 更新行业文件夹与待跟踪清单 |
配置定时任务用的是 cron 表达式,比如工作日早上 8 点的晨报任务就是0 8 * * 1-5。
这里有个坑提醒大家:如果服务器时区是 UTC,而你的交易时间按北京时间算,cron 时间要换算对,否则“早上 8 点晨报”会变成“北京时间下午 4 点”。我一开始就吃过这个亏,之后统一在服务器上把时区改成 Asia/Shanghai 才解决。
还有节假日问题。每年有法定假期,假期里生成的日报没有意义。我的做法是在清洗环节加了一个“交易日判断”逻辑:通过公开的交易日历数据判断当天是否开盘,休息日自动跳过综合分析环节,只做低优先级的信息归档。
4.2 把产出写进 Obsidian 知识库
把日报写进 Obsidian,不是图好看,而是觉得投研信息必须“可积累、可检索、可关联”。
Obsidian 的底层是本地 Markdown 文件,天然适合做长期知识库。WorkBuddy 的 Markdown 写入技能,可以把 Agent 的输出直接落到指定 vault 路径,文件名带日期变量。
我的目录结构是这样设计的:
vault/ 投研/ 日报/2025-03-25.md 行业/新能源/2025-03-25-行业动态.md 行业/半导体/2025-03-25-行业动态.md 待跟踪清单.md 风险提示记录.md为什么这样分?日报是每天的快照,行业文件是纵向积累,待跟踪清单是跨期关注的事项。三者结合,既能看到“某天发生了什么”,也能追溯“某个行业过去一个月的变化趋势”。
这样连续跑一个月之后,Obsidian 里就会出现一个可以检索的个人投研数据库。这比每天把报告发在微信群里再遗忘,价值高得多。
4.3 一份日报的实际产出长什么样
日报是整个团队每天最重要的交付物。我用一个示意结构来说明(以下内容均为格式示意,不涉及真实投资标的):
# 投研日报 2025-03-26 ## 一、隔夜市场概览 - 主要指数涨跌、成交额、北向资金(示例数据) ## 二、重点公告摘要 | 行业 | 标的主体 | 事件摘要 | 影响标签 | 置信度 | | --- | --- | --- | --- | --- | | 新能源 | 某电池厂商 | 披露新一轮产能扩建计划,总投资金额较大 | 资本运作 | 高 | | 消费 | 某食品公司 | 发布回购方案,回购金额上限超预期 | 股东回报 | 中 | ## 三、行业动态 - 半导体:某设备厂商发布新一代产品,市场关注国产替代进度 - 医药:某创新药管线临床数据公布,机构解读偏正面 ## 四、风险预警 - 某公司被监管问询,关注后续回复内容 - 海外市场出现阶段性波动,留意对汇率敏感板块的影响 ## 五、待跟踪清单 - [ ] 某标的业绩预告将于本周末披露,需重点关注毛利率变化 - [ ] 某行业政策细则尚未落地,保持关注这份日报最大的价值是:它把所有信息压缩在一个文件里,我每天早上只需要花十分钟读一遍,就能知道今天应该把精力放在哪里。而不是像以前一样,花两个小时刷几十个网页,最后脑子里还是一团浆糊。
5. 连续跑了一周后踩过的坑
5.1 “502 write EACCES”:Linux 部署最典型的权限坑
团队跑起来的第三天早上,我发现日报文件没生成。翻日志,末尾有一条报错:502 write EACCES。乍一看像网络问题,实际上这是写入文件时没有权限导致的错误。
我当时的状态是这样的:Agent 配置和流水线都对,其他环节正常输出,唯独“Markdown 写入”这个技能在往 Obsidian 目录写文件时失败了。检查的时候我按这个顺序一步步定位:
- 先看日志里的完整路径,确认它尝试写的是哪个文件;
- 执行
whoami,确认 WorkBuddy 进程是以哪个用户身份在跑; - 执行
ls -l /path/to/ObsidianVault,看目录属主是谁、权限位是什么; - 用
touch /path/to/ObsidianVault/test.md手动测试写权限,确认报错。
问题一下就清楚了:Obsidian 库是用另一个账号初始化的,目录属主是那个账号,而 WorkBuddy 的进程用户没有写权限。
解决方案也很简单:
sudo chown -R 当前用户名 /path/to/ObsidianVault或者更保守一点,只放开子目录的写入权限:
sudo chmod -R u+w /path/to/ObsidianVault/投研这个坑看起来小,但在 Linux 服务器上部署任何 Agent 工作流都会遇到。我现在的建议是:部署之前,先明确数据写入目录,并确认运行用户对该目录有完整写权限。最好把这一步写进部署 checklist,别等跑起来再排查,那会浪费你半天时间。
5.2 信源污染:AI 最“自信”的时候最危险
跑了大概一周后,我发现日报里开始出现一些质量很差的条目。比如某条信息来源是一个没什么权威性的小网站,标题写得很夸张,AI 却一本正经地把它当作重要事件写进了重点公告摘要。
投研信息整理和普通聊天最大的区别在于:错误信息的代价很高。普通聊天说错一句话,大家笑一笑就过去了;投研简报里混入一条假消息,可能会直接影响判断方向。
信源污染通常来自两个环节:一是采集阶段混入了低质量网站,二是清洗阶段没能完全过滤掉“标题党”内容。
我的对策是分几步走:
- 信息源白名单管理。一开始就严格筛选订阅源,只保留权威性高的公开来源,宁少勿滥。
- 清洗阶段做正文抽取,而不是只读标题。很多标题和正文内容差距很大,只读标题很容易被误导。
- 在 Prompt 中强制要求“每条信息必须带原始链接”“不确定就写待核”。
- 设置置信度阈值。低于阈值的条目不进入日报正文,只进“待观察区”。
我现在每周还会做一次信源复盘:看看哪些来源产生的条目经常被标注为“待核”,哪些来源的内容总是和真实情况有偏差。连续两周表现差的来源,直接移出订阅列表。
在 AI 投研这个场景里,我学到的最大一课是:AI 输出越流畅、越自信的信源,越要警惕。宁可让它漏报,不能让它错报。
5.3 上下文失控与 Token 预算管理
7×24 小时连续运行的另一个大问题是:如果 Agent 每次运行都把历史消息堆进上下文,上下文窗口很快会满,费用和延迟都会直线上升。
我第一天就踩了坑。采集员每 30 分钟跑一次,一天下来积累了上百条原始消息。我没有做清理,结果研究员在处理时把所有历史数据都读了一遍,不仅响应速度变慢,token 消耗也比预期高了好几倍。
后来我做了四件事:
- 流水线拆分时,每个 Agent 只处理“当前批次”的数据,不读历史全量。
- 批次处理完成后,把摘要结果写入外部存储(JSON 或 Markdown),而不是留在上下文里。
- 超长公告做分块摘要:先按段落把它切成几块,分别生成局部摘要,再拼成总摘要。
- 定期清理临时消息队列,避免积压。积压数据不仅费 token,还会让结果滞后。
成本的精细管理也依赖任务拆分。我的经验是给不同环节分配不同档位的模型:采集清洗用轻量模型,因为任务是确定性的;研究员和主编用强推理模型,因为要做真正的语义理解;风险哨兵用中档模型,平衡速度和判断力。
如果你每天处理 200 条信息,清洗环节大概消耗几万 token,研究环节可能十几万 token。按行业内的公开计价粗算,一个月的成本在可接受范围内。但如果你不拆分,把所有数据一股脑全塞给最强的模型,成本可能翻好几倍,效果还不一定更好。
6. 这套团队架构的复用价值
6.1 从投研迁移到行业调研、舆情监控和竞品跟踪
搭建这套「AI 投研团队」的过程中,我发现最有价值的产出其实是那一套方法论——岗位设计、技能选型、流水线编排、定时触发、知识库沉淀。这套方法论完全可以从投研场景迁移到其他信息密集型场景。
举个具体的例子,竞品跟踪。我把“研究员”的指令从“按行业归类投研条目”改成“按产品线归类竞品动态”,把“风险哨兵”的职责从“盯异常波动”改成“盯竞品新版本发布、价格调整、高管变动”。数据源从财经网站换成竞品官网、招聘页面和产品发布博客,流水线结构完全不用动,产出就变成了一份每日竞品动态简报。
再比如行业调研:采集行业新闻、政策文件、头部公司公告,清洗后归档到 Obsidian 的“行业研究”目录,每周自动生成一份行业动态周报。这比每个月花两天人工收集资料效率高出一个数量级。
迁移的步骤被我固定成了五步:
- 定义角色:这个领域有哪些固定岗位要长期做?
- 选择技能:哪些环节有现成的 Skill 可以用?
- 配置流水线:确定数据从哪来、经过谁、最终到哪去。
- 设定时间表:按业务的真实节奏安排触发频率。
- 量化复盘:每天/每周看产出质量,持续剔除低质量信源、优化指令。
这套模板,任何人只要愿意花点时间,都可以复制到自己的领域里。
6.2 我对 AI 投研自动化边界的新认识
连续跑了一段时间之后,我对“AI 投研团队”这件事有了更清醒的认识。
最核心的一条是:AI 团队解决的是信息分发效率问题,不解决信息判断问题。它像一个任劳任怨的情报整理员,把每天海量信息压缩成一份干净简报,把容易漏掉的异常挑出来放在显眼位置。但最终,决定怎么理解这些信息、怎么形成判断的,还是人。
我也越来越理解,为什么这套体系不能缺少“人”的参与。信息源会变化,市场环境会变化,Agent 的指令每隔一段时间也需要根据实际效果调优。这不是一劳永逸的自动化,而是一个需要持续打理的信息系统。
但即便如此,它的价值已经足够大。以前我需要花两个小时做信息采集和初筛,现在这套体系帮我处理掉了 80% 以上的重复工作。每天多出来的这一小时,我可以用来深度阅读公司财报、复盘自己的判断逻辑、甚至单纯休息——这些才是真正影响投研质量的事情。如果你也想搭这么一套体系,我的建议是从一个小场景开始,先跑通一条最简流水线,再慢慢加角色、加信源。别一上来就追求大而全,让数据先流起来,比什么都重要。