乐于分享
好东西不私藏

我没写一行代码:AI帮我打造股票管理工具

我没写一行代码:AI帮我打造股票管理工具

前言

作为一个 A 股韭菜,我每天收盘后都要查看持仓盈亏。但我不会写 Python,自己手动更新每天的数据又太烦了。

于是我做了个实验:全程用自然语言描述需求,让 AI 来完成所有代码编写

这篇文章记录了这个过程——从最初的一个简单想法,到最后完整的面向对象架构,我没有写一行代码,全靠 AI 完成。


我的原始需求

我的投资笔记都在 Obsidian 里,每只股票一个 Markdown 文件:

---股票名称:招商银行股票代码:'600036'成本价:30.723现价:39.26---

每天收盘后,我需要手动:

  1. 打开股票软件看收盘价
  2. 修改每个文件的”现价”字段
  3. 更新数据时间戳

我对 AI 说:”帮我写一个脚本,自动从腾讯 API 获取股票价格,然后更新我的 Obsidian 文档。”


第一阶段:AI 生成第一版脚本

我的指令

“读取 ~/obsidian/财务管理/stock/ 目录下的股票文档,从腾讯 API 获取最新价格,更新文档里的现价字段。”

AI 交付

  • 一个 50 行的 Python 脚本
  • 硬编码了 5 只持仓
  • 用正则表达式替换文件内容

我验证:运行脚本,Obsidian 文档确实更新了。

问题暴露

  • 持仓是写死在代码里的,改持仓要改代码
  • 没有错误处理,API 失败就崩溃
  • 功能单一,只能更新文档

第二阶段:需求扩展,AI 迭代

用着用着,我发现还需要更多功能。

需求 1:生成收盘记录

我对 AI 说

“每天收盘后生成一个汇总文件,记录总市值、总盈亏、当日盈亏,方便历史回溯。”

AI 交付

  • 新增 create_holding_report.py 脚本
  • 自动生成 Markdown 格式的收盘记录
  • 包含表格化的持仓明细

需求 2:发送邮件报告

我对 AI 说

“把收盘记录发送到我的邮箱,这样手机上也能看。要移动端友好的 HTML 格式。”

AI 交付

  • 新增邮件发送脚本
  • 解析收盘记录,生成 HTML 邮件
  • 涨红跌绿(中国股市惯例)
  • 通过 SMTP 发送

需求 3:记录交易

我对 AI 说

“我减仓了一只股票,需要更新持仓数量。还要支持新增标的。”

AI 交付

  • 引入配置文件 stock_holdings.json
  • 支持 trade 命令记录买入/卖出
  • 自动计算加权平均成本

问题浮现

我发现:三个脚本各自独立,有很多重复代码。

我对 AI 说

“检查整体流程,看看有没有逻辑问题或配置文件缺失。”

AI 发现

  • 收盘记录脚本使用硬编码持仓,未从配置文件读取
  • 三个脚本的配置可能不一致

我要求:”修复这个问题,让所有脚本共用同一配置。”

AI 修复:统一从配置文件读取持仓配置。


第三阶段:架构升级,AI 重构

我对 AI 说

“考虑一下重构这几个 Python,以面向对象方式处理,让代码更加健壮合理。”

AI 的架构设计

stock_modules/├── __init__.py          # 包初始化├── exceptions.py        # 自定义异常类├── config_manager.py    # ConfigManager - 持仓配置管理├── api_client.py        # StockAPIClient - API数据获取├── report_generator.py  # ReportGenerator - 报告生成└── email_sender.py      # EmailSender - 邮件发送

AI 生成的核心类

1. ConfigManager – 配置管理

@dataclassclassHoldingConfig:    code: str    name: str    shares: int    cost: float    type: str = "stock"    @propertydefis_etf(self) -> bool:return self.type == "etf"classConfigManager:defadd_shares(self, code, shares, price):"""加仓:更新持仓数量,计算加权平均成本"""        ...defremove_shares(self, code, shares):"""减仓或清仓"""        ...

2. StockAPIClient – 数据获取

@dataclassclassStockData:    code: str    current_price: float    shares: int    cost: float    @propertydefpnl(self) -> float:"""持仓盈亏 = 市值 - 成本"""return self.shares * (self.current_price - self.cost)defvalidate(self):"""数据合理性验证"""        ...

3. 统一 CLI 入口

AI 生成stock_cli.py 统一入口

python stock_cli.py update    # 更新价格+生成报告python stock_cli.py email     # 发送邮件python stock_cli.py trade     # 记录交易python stock_cli.py list      # 查看持仓

第四阶段:全流程测试

我对 AI 说

“用昨天的数据测试重构以后整体的流程,实际发送邮件。”

AI 执行

  1. stock_cli.py update – 获取 5 只持仓最新价格,更新 6 个 Obsidian 文档,生成收盘记录
  2. stock_cli.py email – 解析收盘记录,生成 HTML 邮件并发送

结果验证

  • 邮件成功发送到指定邮箱
  • 数据准确:总市值、总浮盈、当日盈亏一目了然
  • 格式正确:移动端友好的 HTML 表格

我确认:重构后的 OOP 架构运行正常。


实际运行效果

现在我的每日流程完全自动化:

# 每天 15:30 自动执行python stock_cli.py update    # 获取数据 → 更新文档 → 生成记录python stock_cli.py email     # 发送邮件到邮箱

邮件包含:总市值、总浮盈、当日盈亏、持仓明细、仓位占比、策略提示。

邮件特点

  • 📱 移动端优化,表格自适应屏幕
  • 🔴🟢 涨红跌绿,符合中国股市习惯
  • 📊 仓位占比可视化进度条
  • 💡 每只股票的策略关注要点

Obsidian 文档

  • 现价字段自动更新
  • 数据时间戳自动刷新
  • 历史记录可追溯

我做了什么?AI 做了什么?

我做的(全程自然语言)

阶段
我的指令
启动
“帮我写一个脚本,自动更新 Obsidian 文档的股票价格”
扩展
“生成收盘记录”、”发送邮件报告”、”记录交易”
优化
“检查整体流程是否有遗漏”
重构
“以面向对象方式重构,让代码更健壮”
测试
“用昨天的数据测试完整流程,实际发送邮件”

AI 做的(全部代码工作)

  • ✅ 架构设计
  • ✅ 代码编写
  • ✅ 调试修复
  • ✅ 重构优化
  • ✅ 测试验证

我没有写一行代码。


这个模式能复制吗?

什么场景适合?

  1. 个人工具开发 – 自动化脚本、数据处理、报告生成
  2. 原型验证 – 快速实现想法,验证可行性
  3. 代码重构 – 从混乱到清晰的架构升级
  4. 学习辅助 – 通过观察 AI 生成的代码学习最佳实践

关键成功因素

1. 需求描述要清晰

❌ 不好的描述:”帮我写个股票程序”

✅ 好的描述:”读取 Obsidian 文档,从腾讯 API 获取价格,更新现价字段”

2. 分步骤迭代

不要一次性要求太多。先让 AI 做核心功能,验证通过后再扩展。

3. 及时反馈问题

发现问题立即告诉 AI:”ETF 信息没显示”、”成本换行了不好看”、”发件人改成我的名字”

4. 让 AI 检查自己

“检查整体流程是否有逻辑问题”、”测试发送邮件”


总结

这个项目的特别之处不在于技术有多复杂,而在于开发方式的转变

  • 传统方式:我学习 Python → 查文档 → 写代码 → 调试 → 重构
  • AI 协作方式:我描述需求 → AI 生成代码 → 我验证 → AI 修复

效率对比

  • 传统方式:可能需要一周(学习 + 开发 + 调试)
  • AI 协作:一个上午完成从需求到架构重构

代码质量

  • 面向对象设计
  • 自定义异常处理
  • 类型提示完整
  • 模块职责清晰

更重要的是:这个过程让我意识到,未来的开发可能不再是”写代码”,而是”描述问题”。


附录

AI 工具信息

工具名称:WorkBuddy Claw

底层模型:腾讯云 AI 代码助手(基于腾讯混元大模型)

能力范围:自然语言理解、代码生成、文件操作、命令执行

交互方式:对话式,支持多轮迭代

使用建议

  1. 从简单需求开始,逐步增加复杂度
  2. 每轮对话聚焦一个具体任务
  3. 及时验证结果,给出明确反馈
  4. 让 AI 解释代码,帮助理解实现逻辑

隐私说明

本文涉及的个人数据(邮箱、持仓、路径等)均已脱敏处理。


投资有风险,本文仅供技术交流,不构成投资建议