第一次看 Panda AI 的演示时我脑子里冒出来的问题是这到底是一个投研工具还是一个能自己思考的研究员李昱琦在屏幕那端笑了说很多人第一次看都有这个困惑。他打开一个会话窗口输入了一串指令——不是让 AI 写一篇研报而是让它先拆解一个行业的核心矛盾再列出支持多头和空头的证据链然后自己去查数据验证最后给出今天值得跟踪的变量。整个过程大概六分钟中间模型自己调用了四五次外部工具包括宏观数据接口、行业新闻检索、历史估值分位查询甚至自己打开了一张财报 PDF 做了关键科目提取。我意识到这已经不是我熟悉的“聊天机器人 插件”式的智能投顾而是一种全新形态的研究基础设施。李昱琦把它称作“交易领域的 Claude Code”“Claude Code 做的是让 AI 成为能动手写代码的工程师我们要做的是让 AI 成为能独立做投研分析的研究员而承载这套能力的地基就是 Harness。”这次交流持续了将近三个小时。我从他为什么要做这件事、怎么设计 Harness 架构、踩过哪些坑一直问到他认为这个方向离真正的“交易员 Copilot”还有多远。以下内容既是对这次专访的记录也是我对他这套方法论的一次系统拆解。1. 从编码 Agent 到投研 Agent差的不只是模型1.1 先理解一件反直觉的事投研不缺模型缺的是工作流大多数人对 AI 投研的想象停留在“把研报丢给大模型让它总结一下”。这东西 2023 年就能做但实际用过的人都知道它解决不了问题。原因是投研这个场景的难点根本不在“读懂文字”而在“把一句话变成可验证的结论”。李昱琦在解释自己为什么选 Harness 而不是直接接一个通用 Agent 平台时打了个比方“编码领域你把需求告诉 Claude Code它自己就能读代码、跑测试、改文件因为代码仓库是一个高度结构化的环境。投研不一样数据散落在几十个来源里格式五花八门逻辑链不像代码那样可以编译和报错。你让模型凭空输出一个投资结论它只能给你一个漂亮的幻觉。”这也是他反复强调的一个判断大模型给投研带来了质变但质变的落地需要一个“可编程的执行环境”也就是 Harness。模型负责思考Harness 负责让思考落地——调度工具、管理上下文、控制执行顺序、处理失败重试。1.2 Claude Code 给人的最大启示模型 环境的组合拳李昱琦第一次用 Claude Code 时的反应和我身边很多工程师一样先是震惊于它真的能改代码然后立刻意识到这背后不只是模型强而是它的工程架构让模型有了“手”。他总结了三件事后来直接成了 Panda AI 做投研 Harness 的设计纲领模型要有完整的工具集而不是只有一个对话框。Claude Code 能读文件、执行命令、跑测试所以它能把一个需求拆解成连续动作。投研也一样AI 要能查行情、读公告、拉行业数据、算财务指标才能做到真正的研究。每一步动作都要可观察、可回滚。写代码错了大不了回滚投研如果模型自己推导出一条错误逻辑链代价可能是真金白银。所以我们要求每个推理步骤都要留痕每一步都有据可查。用户介入的位置要非常明确。Claude Code 不是全自动写代码它是在关键节点停下来让工程师确认。投研 Agent 更该如此不是替人做决策而是把决策前的脏活累活干完把多空逻辑摆到决策者面前。1.3 投研工作流的断点到底在哪里为了让我理解 Harness 解决的具体问题李昱琦讲了一个他每天都在经历的痛点一个研究员早晨最大的工作量不是思考而是整理信息。先看隔夜外盘再看国内政策新闻然后是重点公司公告接着是卖方研报更新最后还要把这些东西和自己的持仓结构、关注列表对应起来。这一整套下来两三个小时就没了真正留给深度思考的时间少得可怜。他说话的时候我注意到一个细节——他管这个过程叫“信息保洁”语气里带着一点无奈。这不是能力问题是所有从业者都被困在里面的时间黑洞。市面上的 Copilot 工具能加快“阅读”本身但解决不了“关联”和“筛选”的链路一条新闻对一个行业到底有没有影响影响多大需要用什么指标去验证工作流是断的工具再快也白搭。Harness 要做的就是把这段断掉的链条重新接起来——从信息输入到逻辑推演再到结论输出变成一条可以编排、可回溯、可持续优化的流水线。这也是为什么他说“真正的差距不在模型在工程。谁把工作流工程化谁就拿到投研质变的门票。”2. Harness 到底是什么以及它和普通 Agent 的分工边界2.1 一个被说滥了的概念需要先说清楚Harness 这个词在 AI 工程圈子里现在有点被滥用很多人把任何一个 Agent 项目都叫 Harness。李昱琦对这件事比较较真他给了一个我很认同的界定Harness 是一套把模型放进某个专业工作流里的工程框架它管的是模型之外的整个世界——工具怎么接、记忆怎么存、任务怎么拆、错误怎么处理、人怎么介入。如果你用自动驾驶来类比模型是驾驶员Harness 是整个车的底盘、传感器、方向盘和执行机构。驾驶员技术再好没有底盘和传动系统车也动不了。反过来底盘设计再精妙驾驶员判断力不行车也会开到沟里。2.2 和普通 Agent 框架的核心差异是编排不是对话市面上很多所谓 Agent 产品本质还是多轮对话加几个工具调用。模型说一句工具执行一次再回到模型。这种模式处理“帮我查一下XX公司的营收”这种单步任务绰绰有余但面对“帮我评估一下这个行业三季度的景气度结合价格、库存、政策三个维度给出结论”这种多步骤研究任务就会暴露出明显短板。李昱琦给我画了一条线对话式 Agent适合单轮问答和简单工具调用CTR 模式Call Then Respond缺乏任务状态的全局管理。你让它多走几步它经常走着走着忘了最初的目标。Harness 式 Agent把研究工作拆解成 DAG有向无环图里的节点任务每个节点可能是 LLM 推理、工具调用、代码执行或人工审批。模型要做的事是在这些节点之间做动态判断而不是从头到尾自由发挥。Panda AI 的 Harness 就是按后一种思路做的底层基于 LangGraph 的状态图机制。任务在图里流转每一步都有当前状态、输入输出、耗时和成本记录。模型可以动态决定下一步走哪个分支但整个流程的骨架和边界是工程预先定义好的。2.3 Harness 和 Agent 的关系一句话版本我问他如果只能用一句话向别人解释“Harness 和 Agent 有什么区别”他会怎么说。他想了想回答得很干脆“Agent 是一种能力Harness 是一种组织能力的方式。Agent 告诉你模型能做什么Harness 告诉你模型在什么规则下、按什么流程、用什么工具做。没有 Harness 的 Agent 像散兵游勇有了 Harness 的 Agent 才是一支有作战序列的队伍。”这句话后来被我反复咀嚼。Claude Code 的厉害之处恰恰不是它有一个聪明的模型而是它的工程团队把编码这件事的 Harness 做到了极致文件系统、终端、编译器的边界都清楚模型在该读代码的时候读代码该跑测试的时候跑测试每一步都有反馈。Panda AI 做的事本质上就是把这种结构化能力搬到投研领域。3. 我把投研工作流拆成 Harness 的完整设计3.1 投研 Harness 的顶层架构信息层、逻辑层、表达层李昱琦说他第一次画 Panda AI 架构图的时候只用了三个框上面是数据中间是推理下面是输出。后来发现这个理解太粗了因为“推理”这个词在投研里包含的东西极其庞杂——既包括对数据的计算也包括对逻辑的推演还包括对风险的判断。他后来把架构细化成了四层数据接入层管理所有结构化数据源行情、财务、宏观和非结构化数据源公告、新闻、研报、纪要统一成标准格式带质量标记和时间戳。研究执行层核心任务编排引擎支持多种研究流程比如事件驱动分析、赛道扫描、公司深度研究、行业比较、风险排查。推理增强层工具箱集合。每个工具都是一个独立可调用的函数比如财务指标计算器、文本情感打分器、相关性和回归分析模块、PDF 解析器。表达生成层把研究结论转成不同形态的内容——简要速递、深度研报、决策备忘、晨会发言稿甚至是一个带图表的数据卡片。设计这套架构的时候他反复提醒自己一句话“不要试图让模型做所有事把能计算的东西全部工具化模型只做判断和表达。”3.2 信息层统一数据管道是 Harness 的地基投研数据源的问题做过的都懂。行情数据、财务数据、公告文本、政策原文分布在不同系统里字段口径不一致更新频率不同。如果这些底层数据不打通Harness 跑得越快错误扩散得越快。李昱琦的做法是建了一个统一的数据接入框架每个数据源封装成标准化接口返回统一 schema。关键是每条数据都带上置信度和时间戳数据来源来自交易所直连、第三方终端还是爬虫抓取不同来源的可靠性标记不同。采集时间记录数据入库时间避免过期数据被模型误用。预处理状态标记是否为原始文本、是否已抽取结构化字段、是否经过清洗校验。这个设计解决了一个大模型时代的隐形痛点模型本身没有时间概念它不知道一条新闻是昨天还是去年。Harness 在数据层面打上时间戳和置信度让模型在做判断时有据可依。他特别提到凡是涉及财务数据的地方还会跑一遍逻辑校验比如“利润表里的净利润和现金流量表里的经营性现金流差异超过阈值就要弹告警”这种规则看似朴素却能拦截掉大模型一本正经胡说八道的大部分情况。3.3 逻辑层把“研究”拆成可编排的节点访谈到这里我其实最想知道的是所谓“研究”到底怎么变成图里的节点李昱琦举了一个例子这也是 Panda AI 目前在做的“行业景气度跟踪”标准流程节点 A目标解析把用户输入的自然语言请求解析成结构化研究任务比如“跟踪光伏行业景气度”会被拆解成需求价格趋势、库存周期、产能利用率、政策动向四个子研究点。节点 B数据召回根据子研究点从数据层自动召回相关数据集和最新信息不做任何判断只做信息枚举。节点 C交叉验证模型对召回的信息进行交叉验证比如“硅料价格在最近一个月跌了 12%”这个结论至少需要有两个独立数据源印证否则标记为“待验证”。节点 D逻辑推演基于验证过的信息模型生成推理链输出多空两方向的证据集合。注意是双向的这个设计能抑制模型的确认偏误。节点 E结论生成把逻辑推演结果压缩成可执行的研究结论包括核心逻辑、风险提示、需要跟踪的关键指标。听起来感觉有点像一个自动化的研究员流水线。李昱琦点头说“对当初设计这套东西的时候我就是把我自己研究一个行业的过程完整过了一遍然后把每个步骤硬生生拆成了代码。”他特别强调了一点每个节点之间不是一次性跑完就结束而是会循环。如果节点 C 交叉验证发现信息不足会触发新的数据召回任务如果节点 D 发现多空证据严重不平衡会要求再补充针对性信息。整个 Harness 具备了一种“自我补全”的反馈能力这是普通 Agent 的线性对话做不到的。3.4 表达层研究结论要能直接进决策流程表达层的设计是李昱琦团队花了大心思的地方。他说“很多做 AI 投研的人容易忽略一件事——研究做出来没人用等于白做。投研行业的产出物不是研究报告本身而是‘决策依据’。如果你的 AI 系统输出一份几百页的研报基金经理根本没时间看那这个系统就是废的。”所以他们在表达层做了分层输出设计。同一个研究结论会有三种表达形态速览卡1 分钟看完核心结论、多空证据摘要、风险提示一屏放下。决策备忘5 分钟看完详细逻辑链、关键数据和来源、验证状态、后续跟踪计划。深度报告按需生成完整研究过程、数据附录、敏感性分析、历史对比。三种形态来自同一次 Harness 执行只是表达的粒度和层级不同。这样做还有一个额外的好处因为底层是同一套数据链路不同表达形态之间不会出现自相矛盾。4. 手写 Harness 的踩坑记录工具、上下文、幻觉与成本这个章节是我个人最想听的因为任何真实系统在落地时都会碰上一堆文档里不会写的麻烦。李昱琦对这个话题显然也很有表达欲他说“网上讲 Harness 架构的文章很多画图都很漂亮但真正把代码跑到生产环境你会发现最大的敌人全是细节。我们大概花了 60% 的时间在处理这些细节上。”4.1 第一步不是写代码而是定义边界李昱琦说团队早期犯的最大的错误是“想做一个能研究一切的投资 Agent”。结果模型在开放领域里频繁失控——今天去研究宏观明天去研究个股后天自己去读公司公告看起来什么都会实际上什么研究都不够深入。后来他们做了一个很关键的决定把 Harness 能做的事限制在一个明确定义的边界内。Panda AI 现阶段只做三件事行业景气度跟踪面向特定行业输出高频跟踪结论和领先指标变化。事件驱动的快速解读重大政策、突发事件发生后在规定时间内生成影响分析和关联标的筛选。公司深度研究辅助基于财报、调研纪要、产业链信息生成结构化的公司研究框架。“边界就是生命线。”他说“把边界划清楚Harness 才能在一个范围内做到极致反馈链路才能建立起来。什么都想做最后往往什么都做不成。”4.2 工具调用不稳定是第一个坑我们用 LangGraph 兜底大模型时代做工程的人没有没被工具调用坑过的。李昱琦也逃不过。他描述了一个早期频繁发生的问题模型有时会“忘记”给工具传参数有时候返回的 JSON 格式坏了有时候传的参数类型不对。你说它是模型能力问题吧同一个模型换个 prompt 又能好你说它是 prompt 问题吧跑几十次总会出现一两次莫名其妙失败。他后来用 LangGraph 做了一层“工具调用熔断机制”每次工具调用失败时不直接把错误抛回给模型而是做一次结构化重试第一步检查是否是格式问题。如果是返回 JSON 解析失败尝试做一次轻量的格式修复。第二步检查是否是参数缺失。对比工具定义里的必填参数把缺失项返回给模型作为提醒要求补充。第三步如果重试两次仍然失败就跳过该工具并标记为“暂不可用”同时将部分依赖结果标为“低置信度”。这套机制上线后工具调用成功率从最初的 70% 出头提升到了 95% 以上。李昱琦说“这个过程给我最大的教训是——不要把工具调用稳定性的期望寄托在模型身上所有外部交互都要当不可靠连接来设计然后让框架自己去处理不可靠。”4.3 幻觉问题重逻辑链验证不轻信模型自查投研领域的幻觉比代码领域要命得多。代码出了问题有运行时报错编译失败就知道写错了。但一个投资结论如果建立在错误的数据上错误会被藏在一长串看起来合理的叙述里而且是真金白银的风险敞口往往要很久才能暴露。李昱琦直接否定了“让模型自己检查自己”这个方案。“模型自查对简单错误有效但对于逻辑链很长的研究推理自查基本上没用因为它会完美地复查一遍自己的错误并联想到更多支持错误的论据。”他们设计的方案是“外部验证链”每个量化推论必须关联具体数据源展示计算路径。比如“毛利率环比提升 2.3 个百分点”必须能定位到是哪两张财务表哪个会计科目如何计算的。文本类推论必须找到信源锚点。比如“国家出台了 XX 政策支持新能源发展”必须链接到政策原文片段不能是模型总结性的转述。关键逻辑节点会触发独立验证器。一些财务比率比如负债率、ROE、现金流覆盖倍数会调用计算工具重新算一遍防止模型心算导致错误。这个设计本质上是在 Harness 里建立了一套流程化的防幻觉体系。模型的自由度还在但所有关键产出都被要求提供证据链路就像研究员写报告要标引用一样。4.4 上下文窗口永远不够用解决方案是分层记忆聊到上下文窗口里面的坑也非常明显。投研任务的数据量远远超出模型的上下文容量。一份上市公司年报两三百页加上近一年公告、行业数据总量轻松超过几百万 token。让模型“读完再分析”在这个量级下根本不现实。李昱琦他们最终的设计思路是分层记忆架构短期上下文只保留当前研究节点直接需要的数据片段比如分析毛利率时就只载入利润表和资产负债表的相关科目。工作记忆保存当前研究任务的过程信息比如哪些数据源已经查过、哪些假设已经被验证、哪些冲突需要进一步核实。长期记忆沉淀历史研究结论和用户偏好比如用户更关注成长股还是价值股更看重哪个行业的指标这些信息会被压缩成结构化的知识条目供后续任务参考。这套分层策略的落地依赖于 Harness 的编排能力不是把全部数据一股脑塞给模型而是由框架决定“在哪个环节给模型看哪些数据”。李昱琦说这个逻辑和人类研究员的工作方式几乎一样“给你一本一千页的资料让你读完再开始干活谁都会崩溃。但告诉你现在只需要看第二章然后根据第二章的结论再决定下一步看哪里效率就完全不一样了。”4.5 成本是隐形的天花板开源模型质变改变了什么坦白说我这几年和不少做金融 AI 的团队聊过没人不关心成本。李昱琦也没有回避这个问题。他给了一个很直观的数字对比早期 Panda AI 的主力模型是付费闭源模型跑一次完整行业研究流程大概需要消耗 200 万到 300 万 token 的上下文一次成本在几十到上百元不等。如果每天服务几百个研究请求这个数字会迅速变成一台吞金兽。后来他们引入开源模型做本地部署情况发生了明显改变。现在部分标准化程度高、不需要最强推理能力的分支节点已经切换为本地模型推理成本下降了接近 90%。李昱琦说“开源模型的能力在一些结构性任务上已经接近闭源前沿模型尤其你看 Claude Code 生态里越来越多人在用 deepseek 这类开源模型做底模。这就是我常说的开源模型质变——它把 Harness 的成本从奢侈品变成日用品。”但真正质变的意义来自他对成本结构重新审视“以前大家默认了一套逻辑模型越强越好所以必须用最强的模型跑所有任务。Harness 让我们意识到很多任务用性价比更高的模型就够了只有关键推理节点才需要最强的模型。模型的取舍变成了一种资源配置问题这其实是一种工程成熟的表现。”5. 一次真实调研任务的完整运行过程李昱琦觉得光讲架构太抽象了于是现场给我演示了一遍 Panda AI 的 Harness 跑一个真实调研任务。这个环节非常值钱我尽量把过程完整还原出来。5.1 任务输入一个模糊的指令他在对话框里输入了一句话“帮我看看光伏产业链最近有什么值得关注的变化尤其是硅料和组件环节。”启动后系统界面切换到了 Harness 的运行监控面板我看到每个节点开始依次亮起。这个输入其实非常模糊。“最近的”“值得关注”“变化”都是没有明确定义的词。模型需要自己定义任务边界这是第一道槛。5.2 节点执行过程一步步拆解目标解析节点模型把任务拆成了四个子研究点——硅料价格趋势、组件排产与库存变化、行业最新政策、头部公司近期动态。每一步的拆解依据也留痕了模型写的是“考虑到当前产业链的核心矛盾在供需两侧需要同时覆盖上游价格信号和下游需求信号”。数据召回节点Harness 自动从 7 个数据源拉取了相关数据包括硅料现货价格曲线、组件招标价格指数、三家头部公司的近期公告、两条行业新闻。每份数据都带来源标签和时间戳。交叉验证节点这里出现了一个有意思的细节。模型在硅料价格趋势的分析中提出“硅料价格连续四周下滑”系统自动找到了三个独立数据源交叉验证其中两个数据源一致一个数据源显示“近两周持平”系统把这个冲突标记出来标注为“需要人工关注”。逻辑推演节点基于验证过的数据模型生成了多空双向证据。看多方向的核心逻辑是“硅料价格下行将推动下游装机需求释放”看空方向的核心逻辑是“组件环节库存偏高价格下行并未带动需求放量”。模型对两条逻辑链都标注了置信度。结论生成节点最终输出被压缩成一张速览卡。核心结论是“产业链正处于上游降价向中游传导的阶段硅料环节基本面调整到位但尚未出现反转信号组件环节的关键观察指标是月度排产数据能否企稳”。下面并列列出了需要持续跟踪的三个指标。5.3 人工介入的节点在哪里让我比较意外的是整个运行过程中系统两次主动停下来向用户确认第一次是在解读公司公告环节。模型发现某家头部公司的一条公告提到了一个不常出现的词它无法确认这个词背后的业务含义因此弹出了一个确认框“该词在公告语境中的含义可能影响下游分析请确认是否继续或提供明确定义。”第二次是交叉验证环节发现数据冲突的时候。系统没有像普通 Agent 那样自己选择一个版本继续往下走而是把冲突标记出来在结论里单独作为“风险提示”呈现给用户。李昱琦说这种设计是他坚持的“研究任务做的是判断型工作不是流水线生产。机器负责把过程跑完、把证据摆齐但关键的判断动作必须留给人。这也是我们和那些完全自动化的交易机器人最大的区别。”5.4 运行指标与效果整个任务从开始到结束运行了 6 分 42 秒。统计面板显示调用了 14 次工具消耗 token 约 18 万任务状态在多个节点间跳转后最终成功完成。李昱琦说这个时间和人工相比节约幅度大概是 8 到 10 倍。更重要的是稳定的执行质量“人的研究状态有起伏早上和下午的效率不一样周一和周五的专注度不一样。Harness 不会累、不会情绪化、不会漏看公告它能把一个研究员的最高水平复制到每次执行里。这是我认为这件事真正有长期价值的原因。”6. 交易领域的 Claude Code 离我们还差几步聊到这个问题时李昱琦明显放松了一些语气里面有一种“终于聊到我最想聊的话题”的感觉。他顺着 Claude Code 这个话题说了一段挺有意思的观察“Claude Code 之所以能成为现象级产品是因为它找到了一套‘任务 - 工具 - 反馈’的闭环。代码世界里测试就是反馈信号编译就是反馈信号你随时能知道模型做对了没有。这个闭环让模型的能力可以被持续校准和信任。交易和投研领域最大的问题就是我们没有这样一个廉价、快速的反馈信号。研究做得好不好往往要等市场验证而这个验证周期可能是几天、几个月甚至更长。”所以他判断做“交易领域的 Claude Code”最难的不是让 AI 会查数据、会写研报而是建立一个“可靠的反馈闭环”。Panda AI 目前的思路是用“跟踪正确率”来逼近这个目标——系统对每个研究结论都生成可验证的量化预测比如“硅料价格未来两周继续下行的概率超过 60%”等时间窗口过去后检验预测是否命中再把结果反向传导回 Harness 的模型调优和 prompt 更新中。他承认这还只是第一步距离真正的完整反馈闭环还有相当长的路要走。但方向已经清晰了未来的投研 Agent一定不是那个会写报告的人工智能而是那个能不断学习、不断自我修正的研究系统。就像 Claude Code 不只是能写代码而是能跑测试、发现 bug、自行修改让代码越来越好。“你问我离交易领域的 Claude Code 还差几步我的答案是技术上可能只差三步但工程上每一步都可能是十倍的工程量。”他说着把双手放到键盘上“所以我们不着急定义它我们先把手头每一步做扎实。”访谈结束前我问他有没有什么经验想分享给那些也想进入这个领域的人。他想了一会儿说了一段让我印象很深的话“不要太迷恋模型的进步要迷恋工作流本身的确定性。模型每天都在变强今天看起来很难的问题可能半年后模型能力就解决了。真正不可替代的资产是你对投研这件事本身的理解——怎么拆解任务、怎么定义证据、怎么控制风险。把这些沉淀成 Harness模型再弱你也能跑出一个及格的系统反过来说如果你没有这些给你再强的模型你也只能做出一个看起来很聪明但没法真正落地的东西。”离开那场访谈之后我在回去的路上一直在想这句话。过去两年我们见证了太多大模型带来的惊艳时刻但让人真正产生“工具在手”感觉的往往是那些把模型放在合适结构里的工程系统。Claude Code 之于编程Panda AI 的 Harness 之于投研路径相似价值同构——都是在给强大的模型装上一副能干活的手脚然后让它站在专业者的肩膀上而不是代替专业者。
