基于Claude Code构建本地AI投资分析Agent:从自动化工作流到价值投资实践

📅 2026/6/30 4:22:31
基于Claude Code构建本地AI投资分析Agent:从自动化工作流到价值投资实践
最近在尝试把一些重复性的投资分析工作自动化比如看财报、跟踪新闻、整理数据结果发现一个挺有意思的现象很多号称“AI投资助手”的工具要么是封装好的黑盒你只能按它的按钮要么就是一堆零散的脚本跑一次要调半天参数。直到我遇到了一个叫ai-berkshire的项目它没有直接给我一个“投资圣杯”而是提供了一套用 Claude Code 构建本地 AI Agent 的完整框架。这让我意识到真正有价值的可能不是某个具体的“选股模型”而是如何让 AI 像一位严谨的分析师一样在你的电脑上按照你的逻辑稳定、可复现地执行一套研究流程。这个项目本身代码量不大但它的设计思路很清晰它解决的不是“预测明天涨跌”的问题而是“如何把一次成功的手动研究沉淀成一套可自动化、可迭代的 AI 工作流”。这恰恰是很多从“玩一玩 AI”到“用 AI 干活”的人最容易卡住的地方。你会写提示词也会跑单次任务但怎么让 AI 记住流程、处理异常、串联多个工具并且能长期稳定运行ai-berkshire 以价值投资分析为场景给出了一个相当具体的答案。1. 为什么我们需要一个“本地化”的 AI 投资分析 Agent在讨论具体工具之前我们先想清楚一个问题市面上已经有那么多在线的财经数据平台和 AI 聊天机器人了为什么还要折腾一个本地的 AI Agent原因其实很直接控制力、隐私性和流程定制化。在线平台的数据是别人的模型是别人的流程也是别人定的。你输入一家公司代码它给你吐出一份报告。这份报告是怎么生成的用了哪些数据源推理逻辑是否透明中间如果某一步出错了你能不能介入调整大多数情况下答案都是否定的。你得到的是一个结果而不是一个可审计、可优化的过程。而价值投资分析本质上是一个信息收集、整理、交叉验证和逻辑推理的密集型过程。它需要获取原始数据财报10-K/Q、新闻稿、股价历史、行业数据。提取关键信息营收、利润、现金流、负债、管理层论述。进行计算分析财务比率、增长趋势、估值模型DCF、可比公司。进行逻辑推理竞争优势是否稳固风险因素是否在增加当前价格是否低于内在价值这个过程里很多步骤是重复的、模式化的但同时又需要人类的判断来设定框架和把关关键结论。一个理想的 AI 助手不应该替代你思考而应该成为你的“超级执行副手”把你从繁琐的重复劳动中解放出来让你更专注于策略制定和最终决策。ai-berkshire 项目选择 Claude Code 作为核心正是看中了它作为本地运行 AI Agent 框架的潜力。Claude Code 不是 Claude 模型的网页版它是一个可以部署在你本地环境包括个人电脑或服务器的开发框架允许你创建具备复杂技能Skills、能调用工具Tools、并保持上下文记忆的 AI 智能体。这意味着你可以构建一个专属的“分析师 Agent”让它按照你预设的流程自动完成上述的1、2、3步并将结构化的中间结果和初步分析呈现给你由你完成第4步的深度判断。2. 拆解 ai-berkshire一个本地价值投资 Agent 的骨架虽然项目正文描述为空但从其命名和相关的技术热词Claude Code, AI Agent, 价值投资可以推断它大概率是一个基于 Claude Code 框架为价值投资分析场景定制的 AI Agent 实现示例或启动模板。我们可以基于这个假设构建出这样一个 Agent 应有的核心模块。一个完整的本地投资分析 Agent其骨架至少包含以下四层2.1 技能层Agent 的“专业工具箱”这是 Agent 能做什么的声明。在 Claude Code 中Skill 定义了 Agent 的能力。对于一个投资 Agent核心技能可能包括财务数据获取技能能从本地数据库、特定API如雅虎财经、SEC EDGAR的公开接口或你提供的文件中读取数据。文本信息提取技能能阅读财报PDF或新闻文本提取出“营收同比增长”、“毛利率变化”、“管理层展望”等关键信息。基础计算技能能计算常见的财务比率PE, PB, ROE, 负债率等、增长率、复合增长率。信息摘要与报告生成技能能将分散的信息整合成一段连贯的分析摘要或一个结构化的报告框架。在 Claude Code 中这些技能通常以清晰的函数和提示词Prompt来定义告诉 AI 在什么情况下使用这个技能以及如何正确使用。2.2 工具层Agent 的“手和脚”Skill 定义了“做什么”Tool 则提供了“怎么做”的具体能力。工具是实际执行操作的代码函数。例如fetch_stock_price(symbol, period)调用金融数据API获取股价。download_sec_filing(ticker, filing_type)从SEC网站下载指定类型的财报文件。parse_pdf_to_text(file_path)解析PDF文件提取文本内容。calculate_ratio(revenue, net_income)计算净利润率。这些工具用 Python或其他语言实现被 Skill 所调用。Claude Code 框架负责将自然语言指令来自用户或Agent自己的推理匹配到正确的工具并执行。2.3 工作流层Agent 的“思考逻辑”这是最体现价值的部分。单个技能和工具是零散的工作流Workflow将它们串联成一个有逻辑的分析过程。一个典型的价值投资分析工作流可能如下触发用户输入公司代码或名称。数据收集Agent 自动调用工具获取最近几年的财报、最新股价、近期重大新闻。信息提取对财报文本使用“文本提取技能”抽取出关键财务数据和叙述性描述。计算分析使用“计算技能”基于提取的数据生成财务比率表和趋势图。综合推理Agent 根据预设的提示词模板例如“请基于以下财务数据和新闻简要分析该公司的盈利能力稳定性和主要风险点”生成一段初步分析。输出呈现将原始数据、计算结果和初步分析整合成一份格式化的报告Markdown/HTML/JSON返回给用户。这个工作流被编码在 Agent 的配置或主逻辑中使得每次分析都能保持一致性和可复现性。2.4 记忆与状态层Agent 的“经验本”一个高级的 Agent 应该有记忆。在 ai-berkshire 这样的场景中记忆可能体现在会话记忆记住本次对话中用户提到的公司和对比要求。历史分析缓存将之前分析过的公司结果存储起来例如在本地SQLite数据库中下次再分析同一家公司时可以快速读取历史数据只更新增量信息极大提高效率。用户偏好记忆记住用户更关注哪些指标如现金流、负债率在后续分析中优先呈现。3. 从零搭建你的第一个本地投资分析 Agent基于 Claude Code 的实践路径理解了骨架我们来看如何动手。假设 ai-berkshire 项目提供了一个基础模板以下是如何基于它进行扩展和实操的路径。请注意具体命令可能因 Claude Code 版本和项目结构而异但核心逻辑是相通的。3.1 环境准备与 Claude Code 初探首先你需要一个 Python 环境建议 3.9。Claude Code 通常通过 pip 安装。# 假设 Claude Code 的包名是 claude-code请以官方文档为准 pip install claude-code安装后核心是理解它的两个概念Skill和Tool。你可以通过命令行初始化一个新的 Agent 项目。claude-code init my_investment_agent这可能会生成一个包含skills/,tools/,agent.yaml等目录和配置文件的项目结构。agent.yaml是这个 Agent 的“大脑”定义了它的名称、使用的模型如 Claude 3.5 Sonnet 或本地开源模型、默认技能和系统提示词。3.2 定义核心工具在tools/目录下创建你的工具。例如创建一个financial_data_tool.py# tools/financial_data_tool.py import yfinance as yf import requests from typing import Dict, List def get_stock_fundamentals(ticker: str) - Dict: 获取股票基本面数据示例使用 yfinance。 参数: ticker: 股票代码如 AAPL 返回: 包含市盈率、市净率等数据的字典 try: stock yf.Ticker(ticker) info stock.info # 提取关键指标 fundamentals { currentPrice: info.get(currentPrice), peRatio: info.get(trailingPE), pbRatio: info.get(priceToBook), marketCap: info.get(marketCap), dividendYield: info.get(dividendYield), } return fundamentals except Exception as e: return {error: fFailed to fetch data for {ticker}: {str(e)}} def download_sec_filing(ticker: str, filing_type: str 10-K) - str: 模拟从SEC下载财报此处为示例实际需使用sec-edgar-api等库。 返回文件保存路径。 # 此处应替换为真实的SEC API调用逻辑 print(f[模拟] 正在下载 {ticker} 的 {filing_type} 文件...) # ... 下载逻辑 ... file_path f./data/{ticker}_{filing_type}.pdf return file_path关键点每个工具函数必须有清晰的文档字符串因为 Claude Code 会利用这些描述来让 AI 理解何时调用该工具。3.3 构建分析技能在skills/目录下创建技能。技能通常是一个包含详细提示词和工具调用指令的 YAML 或 Python 文件。例如financial_analysis.skill.yamlname: financial_analysis description: 对指定公司进行基础财务分析。 prompt: | 你是一个价值投资分析师。当用户提供一个公司股票代码时请按以下步骤工作 1. 调用 get_stock_fundamentals 工具获取当前基本面数据。 2. 调用 download_sec_filing 工具获取最新的10-K年报。 3. 基于获取的数据计算并分析以下方面 - 估值水平PE, PB与历史及行业对比。 - 盈利能力关键指标。 - 简要的风险提示。 请以清晰、结构化的格式输出你的分析。 tools: - get_stock_fundamentals - download_sec_filing这个技能将工作流逻辑写在了提示词里并声明了需要使用的工具。3.4 配置与运行 Agent在agent.yaml中引入你定义的技能和工具并设置系统角色。name: BerkshireAssistant model: claude-3-5-sonnet-20241022 # 或你配置的本地模型 system_prompt: | 你是一个专注于价值投资的AI助手风格严谨、注重数据。你的所有分析都必须基于可验证的数据和工具调用。在给出任何投资意见前必须声明“以下分析基于公开数据不构成投资建议”。 skills: - financial_analysis # - 可以添加更多技能如 news_summary, dcf_valuation运行你的 Agentclaude-code run现在你可以在弹出的界面或命令行中与你的 Agent 对话“请分析一下苹果公司AAPL的当前投资价值。” Agent 会按照financial_analysis技能定义的流程自动调用工具获取数据并生成分析报告。4. 超越 Demo将原型转化为可靠生产工具的关键考量让一个 Agent 在本地跑起来完成一次漂亮的分析演示只是第一步。要让它能真正融入你的日常研究成为可靠的生产力工具还需要解决以下几个工程化问题。这也是评估 ai-berkshire 这类项目是否“可用”而不仅仅是“可玩”的关键。4.1 数据源的可靠性与合规性免费 API 的限制像yfinance这样的库很方便但可能有速率限制、数据延迟或偶尔的不稳定。生产环境需要考虑备用数据源如多个免费API轮询或接入更稳定的付费数据服务。数据清洗与标准化不同来源的数据格式不一。你的工具层需要包含数据清洗和格式转换的逻辑确保输入给 AI 分析的数据是干净、统一的。本地缓存策略频繁请求相同数据如历史股价是低效的。务必为你的工具添加缓存层如使用sqlite3或diskcache将获取的数据按时间戳存储下次请求时优先读取缓存只在数据过期时才重新拉取。4.2 错误处理与任务韧性AI Agent 的自动化流程很长任何一环出错网络超时、PDF解析失败、API返回异常都可能导致整个流程崩溃。工具层的异常捕获每个工具函数内部必须有完善的try...except返回结构化的错误信息而不是让 Python 异常直接抛出。Agent 层的重试与降级在技能提示词或工作流逻辑中可以设计重试机制。例如“如果获取股价失败等待2秒后重试一次。如果仍失败则跳过该数据点在分析中注明‘股价数据暂缺’。”日志记录必须为 Agent 的每次工具调用、关键决策点、最终输出记录详细的日志。这不仅是调试的需要更是审计 AI 分析过程的依据。日志应包含时间戳、输入参数、输出结果/错误信息。4.3 提示词工程与输出稳定性提示词定义了 Agent 的思考方式不稳定的提示词会导致不稳定的输出。结构化输出强烈要求 AI 以特定格式如 JSON、Markdown 表格输出。这极大方便了后续的程序化处理。例如在技能提示词末尾加上“请将分析结果以 JSON 格式输出包含valuation,profitability,risks三个键。”思维链引导对于复杂分析在提示词中要求 AI “逐步思考”。例如“首先列出你获取到的所有原始数据。其次基于数据计算以下指标… 最后给出综合评估。” 这能让输出更可控也便于你检查其推理过程。创建技能库不要把所有逻辑写在一个巨大的提示词里。像 ai-berkshire 示范的那样将不同的分析任务拆分成独立的技能如quick_valuation,deep_dive_analysis,competitor_comparison。这样便于维护、测试和组合使用。4.4 安全、成本与扩展性API 密钥管理如果使用付费 API如 OpenAI/Anthropic 的模型接口、付费金融数据绝不能将密钥硬编码在代码中。使用环境变量或专门的密钥管理工具。模型成本控制Claude Code 如果连接云端大模型每次调用都有成本。在工具设计上尽量将能在本地完成的数据处理计算、筛选、格式化先做完只将最需要“智能”的部分如综合推理、文本总结交给大模型以减少 token 消耗。技能热更新一个理想的 Agent 系统应该支持在不重启主程序的情况下动态添加或更新技能。这可以通过将技能配置外部化如存放在数据库中并设计一个加载机制来实现。5. 从 ai-berkshire 出发构建个人 AI 研究助理的长期蓝图ai-berkshire 项目更像一个起点和范式展示了如何将 Claude Code 框架应用于一个垂直领域。它的长期价值不在于其当前代码是否完美而在于它指明了一条路径将个人的专业知识和工作流逐步封装成可协作、可进化、可传承的数字化智能体。沿着这条路径你可以规划更长期的演进从单一 Agent 到多 Agent 协作可以创建多个各司其职的 Agent。例如DataFetcher Agent专门负责从各种源头高效、稳定地抓取和清洗数据。QuantAnalyst Agent负责进行数值计算、模型构建如DCF和图表生成。NarrativeAnalyst Agent负责阅读财报电话会议记录、新闻进行文本情绪和主题分析。ChiefAnalyst Agent作为协调者接收用户问题将任务分发给上述 Agent并汇总、润色最终报告。 这种架构更健壮也更容易维护和升级。从静态分析到动态监控当前的 Agent 可能更多响应你的查询。下一步是让它具备主动监控能力。可以设计一个定时任务如每天开盘前让 Agent 自动运行分析你“观察清单”里的公司检查是否有财报发布、股价异动或重大新闻并推送摘要给你。从通用框架到个性化知识库将你过往的研究笔记、投资心得、特定的估值模型如你对某行业特有的估值参数整理成文档通过 RAG检索增强生成技术注入到 Agent 的知识库中。这样Agent 的分析将越来越贴合你个人的投资哲学和偏好。从本地玩具到可部署服务最终你可以将这个 Agent 系统打包成一个 Docker 容器部署到家庭服务器或云上通过一个简单的 Web 界面或聊天应用如 Slack/Telegram Bot来交互使其真正成为一个随时可用的研究助理。回到最初的问题ai-berkshire 这类项目的核心启示是什么它告诉我们AI 投资的未来可能不属于一个全知全能的“预测机器”而属于无数个由投资者自己定义、训练和掌控的“专业流程自动化助手”。它的价值不在于给你一个代码就能暴富的“圣杯”而在于提供了一套方法论和工具让你能将自己的投资分析逻辑从大脑中模糊的经验转化为电脑上清晰、可运行、可迭代的代码。这个过程本身就是对投资体系的一次深度梳理和升级。开始动手吧。不必追求第一个版本就完美覆盖所有功能。从分析一家你熟悉的公司开始定义一个最小的技能连接一两个数据工具让它跑起来。你会立刻发现哪些环节是顺畅的哪些是脆弱的。正是在解决这些脆弱点的过程中你构建的不仅是一个 AI Agent更是一套属于你自己的、数字化的投资研究基础设施。