我没写一行代码:AI帮我打造股票管理工具
前言
作为一个 A 股韭菜,我每天收盘后都要查看持仓盈亏。但我不会写 Python,自己手动更新每天的数据又太烦了。
于是我做了个实验:全程用自然语言描述需求,让 AI 来完成所有代码编写。
这篇文章记录了这个过程——从最初的一个简单想法,到最后完整的面向对象架构,我没有写一行代码,全靠 AI 完成。
我的原始需求
我的投资笔记都在 Obsidian 里,每只股票一个 Markdown 文件:
---股票名称:招商银行股票代码:'600036'成本价:30.723现价:39.26---
每天收盘后,我需要手动:
-
打开股票软件看收盘价 -
修改每个文件的”现价”字段 -
更新数据时间戳
我对 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 执行:
-
stock_cli.py update– 获取 5 只持仓最新价格,更新 6 个 Obsidian 文档,生成收盘记录 -
stock_cli.py email– 解析收盘记录,生成 HTML 邮件并发送
结果验证:
-
邮件成功发送到指定邮箱 -
数据准确:总市值、总浮盈、当日盈亏一目了然 -
格式正确:移动端友好的 HTML 表格
我确认:重构后的 OOP 架构运行正常。
实际运行效果
现在我的每日流程完全自动化:
# 每天 15:30 自动执行python stock_cli.py update # 获取数据 → 更新文档 → 生成记录python stock_cli.py email # 发送邮件到邮箱
邮件包含:总市值、总浮盈、当日盈亏、持仓明细、仓位占比、策略提示。
邮件特点:
-
📱 移动端优化,表格自适应屏幕 -
🔴🟢 涨红跌绿,符合中国股市习惯 -
📊 仓位占比可视化进度条 -
💡 每只股票的策略关注要点
Obsidian 文档:
-
现价字段自动更新 -
数据时间戳自动刷新 -
历史记录可追溯
我做了什么?AI 做了什么?
我做的(全程自然语言)
|
|
|
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
AI 做的(全部代码工作)
-
✅ 架构设计 -
✅ 代码编写 -
✅ 调试修复 -
✅ 重构优化 -
✅ 测试验证
我没有写一行代码。
这个模式能复制吗?
什么场景适合?
-
个人工具开发 – 自动化脚本、数据处理、报告生成 -
原型验证 – 快速实现想法,验证可行性 -
代码重构 – 从混乱到清晰的架构升级 -
学习辅助 – 通过观察 AI 生成的代码学习最佳实践
关键成功因素
1. 需求描述要清晰
❌ 不好的描述:”帮我写个股票程序”
✅ 好的描述:”读取 Obsidian 文档,从腾讯 API 获取价格,更新现价字段”
2. 分步骤迭代
不要一次性要求太多。先让 AI 做核心功能,验证通过后再扩展。
3. 及时反馈问题
发现问题立即告诉 AI:”ETF 信息没显示”、”成本换行了不好看”、”发件人改成我的名字”
4. 让 AI 检查自己
“检查整体流程是否有逻辑问题”、”测试发送邮件”
总结
这个项目的特别之处不在于技术有多复杂,而在于开发方式的转变:
-
传统方式:我学习 Python → 查文档 → 写代码 → 调试 → 重构 -
AI 协作方式:我描述需求 → AI 生成代码 → 我验证 → AI 修复
效率对比:
-
传统方式:可能需要一周(学习 + 开发 + 调试) -
AI 协作:一个上午完成从需求到架构重构
代码质量:
-
面向对象设计 -
自定义异常处理 -
类型提示完整 -
模块职责清晰
更重要的是:这个过程让我意识到,未来的开发可能不再是”写代码”,而是”描述问题”。
附录
AI 工具信息
工具名称:WorkBuddy Claw
底层模型:腾讯云 AI 代码助手(基于腾讯混元大模型)
能力范围:自然语言理解、代码生成、文件操作、命令执行
交互方式:对话式,支持多轮迭代
使用建议
-
从简单需求开始,逐步增加复杂度 -
每轮对话聚焦一个具体任务 -
及时验证结果,给出明确反馈 -
让 AI 解释代码,帮助理解实现逻辑
隐私说明
本文涉及的个人数据(邮箱、持仓、路径等)均已脱敏处理。
投资有风险,本文仅供技术交流,不构成投资建议
夜雨聆风
