本文是一份内部操作指引性质的复盘,不是算法论文。它以"路口多时段识别划分算法"这个真实需求为例,完整记录我们如何跨模型协作把它做出来:算法雏形在 DeepSeek(DS)中与 DS 讨论得到,再把核心 Python 文件带到 WorkBuddy 做算法调优与应用侧落地(前端、分享、调试)。希望给同样想用 AI 提效、但不知道"怎么把活真的干完"的同事一个可参照的范本。
很多同事对"用 AI 写代码"的印象还停留在"它给段伪代码、我自己接着调"。但这次实践体验完全不同:算法雏形、调优、前端、调试、交付,分别由不同模型在不同阶段接力完成,每一棒都产出了可运行的东西,我几乎没有离开对话框手写核心代码。
整个项目(一个交通信号控制时段划分应用)从雏形到最终可分享的网页,全部产出来自连续对话,过程中我只在发现怪结果时截图反馈、让 AI 就地修复。本文把这条"雏形 → 调优 → 前端 → 调试 → 交付"的链路拆开讲,方便你照着抄作业。
这次最值得先讲清的,是多模型接力的真实路径,而非"某个模型包办一切":
analyzer_v2.py)。这种"DS 负责想法孵化、WorkBuddy 负责工程化与迭代提速"的分工,比单一模型死磕某一环更高效。后面每个阶段都对应这条链路。
经验提示 1:别迷信"一个模型干到底"。让擅长推理/讨论的模型出雏形,让擅长工程落地与多轮调试的模型做实现,往往比强求一个模型同时擅长两者更快。
城市路口信号控制需要根据全天流量把 24 小时切成若干个"时段",每个时段套一套固定配时方案。传统做法靠工程师凭经验划,三个痛点:
目标:做一个本地可用的小工具,导入路口流量 CSV,自动输出"连续、段数合理、带高峰/次高峰/平峰/低峰类型标签"的时段划分,最好能可视化、能直接发给同事用。
和 WorkBuddy 先定下的工作方式:
本项目最终落地的文件结构(本地磁盘):
经验提示 2:一开始就告诉 AI"强关联任务合并在同一对话",能省掉后期大量"它忘了前面约定"的返工。这是用 AI 做稍复杂项目最值得先定下的规矩。
起点:DS 给的 analyzer_v2.py 是 K-means 思路,跑真实数据会碎成 17 段且不连续。
我的需求(口语化):把 K-means 改成"递归有序聚类",生成新文件。
WorkBuddy 产出 analyzer_v3.py,核心是递归有序聚类(最优分割树 / Fisher 动态规划):序列本身有序,只把连续区间当候选切分点;用前缀和 O(1) 算区间方差增益,自上而下二分直到增益不足或达到最大段数;保证时间连续、段数可控。关键片段:
与此同时,WorkBuddy 还顺手解释了工程问题:多个 py 文件都含同名 TrafficFlowAnalyzer 类时靠 import 来源路径区分、包 __init__.py 的初始化时机等——后续维护都用得上。
验证:用中山路口真实 CSV 跑通,段数从 17 降到合理范围、时间连续。这一步建立"算法 + 数据"闭环,后面所有调试都基于它。
经验提示 3:别只让 AI "讲算法",让它直接产出可运行文件并用真实数据验证。第一版就跑通,比反复讨论思路省十倍时间。
需求:测试算法不方便,帮我设计前端,本地选 CSV 导入、计算、页面显示。
WorkBuddy 做了两件事:
algorithm.js),挂成 window.SegmentAnalyzer 的 UMD 模块,浏览器直接调用,和 Python 版逻辑一一对应。segment_analyzer.html:左侧参数面板,中间 CSV 拖拽/选择导入,右侧图表按"高峰红 / 次高峰橙 / 平峰绿 / 低峰蓝"着色,下方给出时段摘要表。页面骨架片段:设计决策:算法内核独立 algorithm.js,页面 <script src> 引用。改算法不用动 UI;但也埋下缓存坑(见第七节)。
经验提示 4:让 AI 把算法和界面分离(内核独立模块 + 页面引用),后续改算法逻辑不用动 UI,维护成本低。
最能体现"AI 陪你调试"的阶段。每次拿真实数据跑出怪结果,截图发给 WorkBuddy,它定位根因、改代码、再验证。四个坑按时间顺序记录。
最小时段样本数 = max(最小样本, ceil(时长/间隔) + 1)。注意 +1——时长换算成样本数是"间隔数",真正段长要加一个间隔才够。07:15–09:15,但递归细分其余区间又把 09:20–11:20 高均值子段判成"高峰";两"高峰"仅隔 5 分钟,后处理却因"其中一段是锁定高峰"跳过合并。21:45 同理。贯穿修复的核心设计:先锁定全天流量最大的 ≤2h 窗口为高峰,再对其余区间有序细分;细分用"全局段数预算"防过碎。让"高峰约 2 小时"这个业务习惯被直接编码进算法,而非事后凑。片段:
经验提示 5:调试 BUG 时,给 AI 真实数据 + 截图 + 具体时间点,比泛泛说"结果不对"效率高得多。它能在对话里直接跑脚本复现—定位—修复—验证,全程不离开对话框。 经验提示 6:算法类需求,JS 和 Python 双版交叉校验防回归。本次每次改完都让 WorkBuddy 在两份数据上各跑一遍,确保两端一致。
segment_analyzer.html 依赖外部 algorithm.js,发给同事可能丢文件。WorkBuddy 生成 segment_analyzer_standalone.html——把 algorithm.js 内联进 HTML,一个文件就能跑,双击即用,无需服务器、无需装环境。每次改完算法都重新生成内联版,保证分享出去的永远是最新版。
导入 CSV 后,页面顶部加醒目横幅:显示当前文件名(路口名+日期都在文件名里)和记录数。文件名通常就是"XX路口YYYYMMDD-已处理",一眼确认在测哪个路口、哪天数据,避免测试搞混。
本地打开 segment_analyzer.html 若仍显示旧结果,大概率是浏览器缓存了旧 algorithm.js。解决:Ctrl/Cmd + Shift + R 硬刷新。分享给他人不受影响——他们拿到的是已内联算法的 standalone 单文件。
经验提示 7:前端依赖外部 JS 时,务必提醒"硬刷新清缓存";或干脆用单文件版分享,从根上规避。
时段划分的输入是一份标准 CSV。这部分最初是另一轮对话里完成的——我给了一份原始 Excel(路口各车道的机动车流量记录),并下达了如下 5 条明确指令,AI 据此产出清洗脚本:
要求 1:转换为两列
[time]、[flow]。time从00:05至24:00、每 5 分钟一行,全天正常 288 条记录。 要求 2:原始表格时间从00:03开始,需全部后移 2 分钟(00:03→00:05,23:58→24:00)。 要求 3:flow是路口在该time时间点前 5 分钟内的总体流量;原始记录是各车道统计流量,需汇总计算。 要求 4:原始时间有缺失,目标表必须补全——输出一定是 288 条;缺失点流量用前后有记录点的插值补全。 要求 5:处理后在原位置输出新 CSV,命名为【中山较场西路口】路口流量数据20260624-已处理.csv。
关键处理脚本思路(pandas):
标准 CSV 格式约定(本项目实测可用):
time(如 2026-06-17 00:00:00 或 00:05)、flow(数值)。算法主要消费这两列。经验提示 8:数据预处理别手工做。把原始样本 + "我要的格式"贴给 AI,让它写清洗脚本批量处理——可复现、可重跑。上述 5 条指令就是一份可直接复用的"数据整理需求模板"。
把实践抽象成可复用方法:
想照着做类似的"数据 → 算法 → 网页"小工具,按顺序走:
这个交通信号控制时段划分应用,从"K-means 碎成 17 段"到"连续、段数合理、带四类标签、可本地可视化、可单文件分享",是 DeepSeek 出雏形 + WorkBuddy 调优落地 接力完成的。它证明:对于中小型"数据 + 算法 + 轻量前端"需求,多模型协作已经能从需求一路干到可交付,而不只是给参考。
后续方向:把"≤2h、四类阈值、最小段长"等参数做成按路口类型自适应的配置;把算法内核抽成可独立调用的服务;或接入更多数据源做批量路口划分。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。