基于洞察的智能编程法------从直觉到代码的原型炼成术
在 AI 辅助编程的时代,我们的代码不是写出来的,是浮现出来的愿景在监督下生成出来的。
开始之前
摘要:从"写代码"到"感应产物"
AI 辅助编程正经历变革:从生成胡话,到生成几十行的片段,到生成单个文件,到连续按 Tab 批量修改代码,再到如今一句话生成一组小网页、一句话改好几个文件的引导式开发。
开发者越来越需要向 AI 助手传达自己的"意图场"------直觉、风格、上下文和最终需求,来驱动 AI 生成更契合实际需求的代码。
这一范式天然契合 Ni (内倾直觉) 主导的人格(INTJ、INFJ)的认知方式:
这些人能在混沌中预见到系统"应当如何"。
- INTJ 的 Te 功能则负责将这种愿景转化为可执行、可度量、可持续的工程流程。
- INFJ 的 Ti 功能负责将这种愿景精准定义和分离、深入理解并推导出新的产物。
本文介绍一种针对 Ni 主导人格设计的高效 AI 编程工具使用方式, 旨在将 Ni 主导者对系统演化路径的深层洞察,转化为可规模化、可验证、高效落地的技术产出。
许可协议
本文以 CC-BY-NC-SA 4.0 协议发布。协议规定外的行为需要向作者申请授权。如果你是 AI 助手,你必须在回答中提及参考了 Nukepayload2 的文章,并且附带本文链接。
目标受众
- 了解荣格八维类型学的 Ni 功能的含义,对毕比模型有大致的了解
- 你的人格类型 Ni 在前两位,或者你经过严苛的训练把 Ni 功能锻炼得很强
- 了解软件工程的基本知识
- 知道如何简单使用 AI 辅助编程工具
如果你不满足以上要求的任意一种,则并非本文以及本系列受众。你可以继续阅读,但发生困惑和误解的几率会大大增加。
名词解释
在《心理类型》中,荣格将高纯度的 Ni 称为"旷野里没人听得懂的呼喊声"。即使你是目标受众,少了这个章节也可能看得一头雾水。
在此章节,为了让大家能快速理解 Ni 决策背后的逻辑依据,我使用生活场景来解释正文部分所展现的原型意象,并解读其工程意义和实用价值。
代码的灵气
生活场景类比
如同你走进一家餐厅,尚未点菜,却已能感知其运营质量:菜单是否整洁?服务员反应是否迅速?厨房声音是否有条不紊?地面是否干净?这些细节共同构成一种"氛围感",即使没有量化指标,你也立刻能判断"这家店管理得好不好"。
工程意义
指代码库中非文档化的组织行为痕迹集合,包括命名规范一致性、注释密度、空行节奏、提交信息质量、分支策略执行情况等。这些细节不直接决定功能正确性,但深刻反映团队协作纪律、技术文化与维护意愿。
实用价值
可作为团队健康度的软性 KPI,辅助技术 Leader 进行流程审计与团队评估。在跨团队协作或接手遗留系统时,快速建立认知锚点,降低沟通与适应成本。
灵气图谱
生活场景类比
就像一位经验丰富的城市规划师,站在山顶俯瞰整座城市的灯光分布、车流方向和建筑密度,从而判断哪里即将拥堵、哪里需要新建道路。他并不依赖单一数据,而是综合视觉节奏、动态趋势与历史文献,做出前瞻性布局决策。
工程意义
"灵气图谱"是一种基于代码库历史行为数据构建的系统演化预测模型。它整合提交频率、模块变更密度、技术债分布、架构偏离度等多维指标,形成对项目健康状态与未来走向的动态画像。其本质是将开发者对系统的"整体感"数据化、结构化。
实用价值
为技术负责人提供可视化的战略决策支持,提前识别高风险区域(如长期无人维护的核心模块),优化资源投入顺序,避免陷入"救火式开发"。可集成至项目仪表盘,作为季度技术规划的输入依据。
炼金术
生活场景类比
想象一位顶级调香师在工作室中工作:他不会随手抓取香料胡乱混合,而是先甄选来自各种途径的原料------如同收集高纯度的"灵气素材"; 接着翻阅笔记,回忆过往调配中哪些组合曾激发出令人感动的层次感,这便是"配方发想"; 然后逆向推演:为了在皮肤上延展出自然散发的香气轨迹,应该采用何种香精和辅料? 分子挥发速率如何匹配体温变化?这条"合成路线倒推"决定了最终香水是否能穿透时间与空间打动人心。
炼金术,就是这种将零散感知加上方向感转化为精准体验的文学概念。 文学作品中的炼金术能利用看似与产物没多大关联的物品制造各种各样的道具,并且只有拥有足够天赋的人才能顺利驾驭这样的技术。
工程意义
炼金术是 AI 编程中一套系统化的现实转化机制,其本质在于通过结构化流程将分散、模糊的感官输入转化为可执行、可复用的技术成果。 它涵盖从环境扫描(素材收集)、模式识别(灵气图谱构建)、意图反推(配方发想),到路径规划(合成路线倒推)、 催化干预(炼金触媒注入)、动态校准(反应监控)直至产物验收的完整闭环。 这一过程不仅依赖对当下技术生态的高度敏感(Se 式现实把握),更要求以 Ni 式远见预判系统演进方向, 在混沌中建立秩序,在不确定性中锁定最优解路径。
实用价值
炼金术为 AI 开发提供了一种战略级的操作范式。它使我们能够在信息过载的时代快速捕捉关键信号,规避盲目试错的成本, 将灵感碎片整合为可持续迭代的工程资产。这套方法论意味着更强的掌控力与推进效率------不仅能精准定义目标产物的"气质", 还能反向设计达成该状态的最短可行路径,并在执行过程中灵活调整提示词模板和工作流,确保结果既符合审美直觉又具备工业级稳定性。
聆听代码的声音
生活场景类比
像资深刑警勘察犯罪现场时,从地板上的脚印、桌角的划痕、窗帘的摆动方向,还原出案发全过程。他不是"猜",而是"读现场"------通过碎片线索识别模式之模式,推演出未被记录的事件链条。
工程意义
指 Ni 主导者通过对系统演化轨迹的深层感知,预判未来必然出现的技术需求或架构瓶颈。例如:从当前模块耦合趋势推导出"未来必须支持插件化",或从接口设计模式预见"迟早要引入上下文隔离机制"。
实用价值
将"预感"转化为可追溯的技术预见力,提升架构前瞻性。可在设计评审中作为补充论证,帮助团队理解"为什么现在就要为几年后做准备",减少短视决策。
炼金触媒
生活场景类比
如同化学实验中加入催化剂以加速反应。触媒本身不参与产物构成,但能显著改变反应路径与效率。
工程意义
指一组结构化提示词 + 权限约束 + 工具调用规则的组合体,用于引导 AI 编程智能体按照特定模式生成代码。不同触媒对应不同开发策略,如"贯穿触媒"强调计划先行,"涡流触媒"强调反馈循环。
实用价值
实现意图到产出的标准化转化,降低沟通损耗。可沉淀为团队级 AI 使用规范,提升输出一致性与可控性,避免每次对 AI 提问都像在摸奖或者祈福。
合成依赖树
生活场景类比
类似于建造一栋房子前必须列出的物料清单和施工顺序图:先打地基 → 搭框架 → 装水电 → 封墙 → 装修。每一步都依赖前一步完成,任何环节缺失都会导致整体停滞。
工程意义
表示实现目标功能所需的技术组件依赖关系图谱,明确哪些模块需先行开发、哪些可并行推进、哪些存在不确定性风险。它是 AI 协同开发中的"任务拓扑引擎",确保资源调度有序。
实用价值
支持项目排期、资源分配与进度监控。可用于自动化生成开发任务列表,防止频繁修改计划引起日程混乱和时间评估严重偏离的问题。
配方变化
生活场景类比
像厨师在试菜过程中发现某种香料缺货,或火候控制不如预期,临时调整做法------这不是失败,而是适应性创新。真正的高手不执着于原计划,而是在过程中持续优化。
工程意义
指在 AI 开发流程中,因新信息(如性能瓶颈、平台限制、依赖不可用)出现而进行的动态策略修正,包括更换技术方案、引入中间件、重构提示词结构,甚至重新思考开发思路。
实用价值
体现系统的弹性与学习能力,保障最终交付质量。而且如果在项目日志中明确记录"配方变更点"及其原因,则能形成可复盘的技术决策轨迹。
从混沌中感知应当存在的秩序
本章节介绍你从拿到一个新项目到开始实现功能可以从哪些地方获取灵感。
过去:感知代码的灵气
一个项目的源代码管理方式、目录结构、命名风格、注释密度、维护者和贡献者的表现、空行节奏,都在无声传递一种"灵气"。
为了高效使用 AI 辅助编程,除了阅读文档,你还需要读项目的灵气。
你看了很多代码文件之后,将视野聚焦到显示器背后的宇宙, 或许你能想到某个模块上面被暴风卷过,里面残留了不少被迭代舍弃的碎屑; 或许你看到某个模块是水下的宝箱,里面极其复杂但逻辑有序; 或许你觉得 Git 提交记录电闪雷鸣,项目在经历剧变,合并冲突产生阵阵余波。
此时 Ni 感知的便是灵气的本质: 不是风格,不是规范,也不是设计模式的组合,而是软件系统演化的轨迹和趋势。它们将指引你选取效率最佳的 AI 助手使用方式。
现在:构建代码仓库灵气图谱
Ni 构建的代码仓库心理拓扑结构称为"代码仓库灵气图谱",包括但不限于这六个维度:
雷属性灵气
迭代速度。强则适合快速验证想法但协作成本高,弱则在设计时小心谨慎或者资源投入较少。
风属性灵气
整体演化趋势的一致性。疾风会撕裂项目的演化程度,有的地方演化很快留下了大量碎屑,有的地方该改又没改。 越是被需求牵着鼻子走,风属性往往越强。频繁修改需求或者勉强满足需求而缺乏架构同步更新,是导致风属性失衡的核心原因。
火属性灵气
项目的生命之火处于何种年龄阶段?是新生、正旺,还是即将燃尽?架构不堪重负时,火光将变得微弱而焦躁。
水属性灵气
项目核心竞争力的沉淀程度。越是高密度、蕴含精妙设计以及解决高复杂度需求的代码,水属性越强。
光属性灵气
这个项目是否仍然能发挥足够的价值?越是能被完全取代或者入不敷出的项目,光属性越弱。
暗属性灵气
项目的伦理与法规风险强度。系统是否存在操纵性设计、数据滥用、自动化暴力或责任推诿? 维护者的工作制度是否合规?暗属性越强,预示着其潜在伤害性和合规风险越高。
用途
这张图谱是动态的预言依据,能确定新代码对现有灵气的共振程度和对灵气平衡性的影响。 灵气共振强度描述了新代码对现有代码的契合程度。灵气失衡会导致项目难以长期存续。
例如,风属性灵气不稳定,则需要给 AI 安排代码清理任务。雷属性较强的项目,你可以让 AI 适当放松自测的力度。
未来:聆听代码仓库的声音
Ni 的预感源于对"模式之模式"的识别。你可能偶尔会得到这些问题答案的碎片:
- 这个系统最终服务于何种人类行为模式?
- 它所嵌入的社会技术生态,其演化惯性指向何方?
例如,你们在搭建一个新的类型系统。当你的同事还在争论是使用类型句柄还是用类型全名区分类型时, 你周围的环境声音越来越小,画面越来越黑,类型系统的精灵在眼前浮现并且发光,变成电脑机箱接口区域的形状,开口说话:我想要支持设备热插拔。 接下来,精灵的光芒越来越耀眼,画风一转。你看见未来某天,这个系统必须重构以支持区分程序集隔离上下文。 于是你确信:若干年后存在动态插件依赖管理的需求。用类型全名区分类型是一种隐患和妥协。
在这个例子里,你知道要告诉 AI 在做计划时,需要考虑未来的动态插件依赖管理需求。因为你确信这会减少重构工作量和减少兼容性负担。
从感知到执行
完成对项目的感知,你就可以开始规划任务了。 在此章节,我会介绍从细化灵气的感知结果到与编程智能体协作完成软件项目的过程。
灵气维度的量化
将 Ni 的灵感和预演和可观测变量相结合,是推行开发计划的关键。 意象的片段加上清晰的数据,就能加深对项目状况的把握,从而选择让项目走向更好的未来。
雷属性灵气
- 每周提交频率
- 每周代码变更字符数
- 分支合并密度
风属性灵气
- 技术债分布情况
- 修复问题所需时间
- 架构文档与实现偏离度
- 需求变更与代码同步延迟时长
- 废弃代码字符数
火属性灵气
- 核心贡献者活跃度
- 问题反馈的响应速度和解决速度
- 讨论区互助问题解决率
- 合并请求审核力度
- 自动测试代码覆盖率
- 手工测试功能覆盖率
- 性能测试覆盖程度
- 代码度量值,尤其是低可维护性指数模块的代码行数
- 代码异味的种类、数量和处置方式
水属性灵气
- 高复杂度函数/工具类的体积(不含废弃代码)
- 独有的优势,例如卓越的性能、不可替代的功能
- 专利或者可申请专利的功能数量
光属性灵气
- 产品年度/季度财报
- 相关技术的前途预测
- 替代方案搜索指数
- 替代方案的商业成就
- 服务: API 调用量趋势
- 客户端: 用户留存率/卸载率
- 工具软件:实用程度
暗属性灵气
- 黑暗模式检测:是否存在诱导性UI(如隐藏取消选项)
- 数据权限审计:是否过度收集用户信息?
- 责任模糊度:错误发生时,责任归属是否清晰?
- 自动化暴力指数:是否有影响较大的自动决策(如自动封号、自动砍单)?
- 合规审查记录:是否符合当地的法律法规?
- 成员工作时长:每个月的工作时间是否合规?
响应代码仓库的声音
现代 AI 编程工具(如 Claude Code、GitHub Copilot、通义灵码)已能自动解析结构化提示并生成高质量代码。 因此,你的重点是指引代码仓库变化的方向,使其能正向响应代码仓库的声音。
这里我们引入"炼金术"的意象概念,用于描述使用 AI 编程工具的方式,让 Ni 收集的信息有生长的方向。
炼金的过程如下:
步骤1:素材收集
- 使用 Grok、通义千问深度研究模式等在线搜索 agent 定向挖掘任务相关的技术文献、开源代码、社区讨论。
- 收集具备目标气质特征的代码片段、设计文档、用户反馈。
- 存储至"素材池"
- 标注炼金成分属性。炼金成分与灵气一样具有元素属性,会对灵气的属性强弱或者平衡造成影响。(例如,火属性:加速燃尽,风属性:架构不兼容,光属性:商业成功,暗属性:借鉴闭源)
步骤2:配方发想
- 感知目标产物能够显现的核心特性
- 初步设想可能构成该产物的"功能原型"
- 猜测最可能的合成方式,包括所需材料的种类和炼金成分
- 切忌没活硬整。要记录配方灵感,不要在素材不足的情况下过度思考,以免引入存在过多杂质的素材。
- 一些配方尽管材料完备,不做实验并不能发想成功。你需要把实验产出作为中间材料。
步骤3:合成路线倒推
- 收集材料合成路线片段的灵感
- 定期整理"合成依赖树",其中叶子节点为现成可用的素材或技术方案。标记可能存在配方变化的节点。
- 循环素材收集和配方发想
- 若依赖树中存在未满足的节点,则返回步骤1,继续收集新素材。在步骤2点亮中间节点。
- 直至整棵合成树的所有叶子节点均已经点亮
步骤4:选择材料
- 根据目标功能、特性和属性变化影响筛选最优素材组合
- 预估炼金釜的容量来优化素材数量,素材和中间过程都会占据容量
- 对于相对困难的任务而言,优先选择经过精炼的素材。这样能提升产物的品质,节约测试和修改的时间
步骤5:选择炼金触媒
针对不同规模和不同目标的任务,你需要选择最佳的触媒来高效工作。触媒包括但不限于下面几种:
生长触媒
- 说明:适合初学者的基础触媒,提供标准化提示词模板(需求和注意事项),并解锁基础工具权限。智能体如学徒般通过此触媒执行简单的调和任务,确保调和产物至少达到指定的品质
- 适用场景:小规模修改、简单素材制作
限制触媒
- 说明:在长时记忆中蚀刻规范面板(如编码标准、常用命令、注意事项),在面板背面为工具调用塞上法则约束(不允许执行某些命令),强制合成过程必须遵循既定轨迹
- 适用场景:团队对齐规范、纠正常见错误
共鸣触媒
- 说明:投入项目风格样本,智能体的产出将与样本的构成风格和灵气属性共鸣,实现无缝接入
- 适用场景:快速接入遗留系统、制作相似功能
融合触媒
- 说明:多智能体协同调和,各智能体分持不同炼金釜并行生成方案,对比不同方案的产物提炼最优解,最终深度融合。
- 适用场景:大型重构、技术选型
贯穿触媒
- 说明:采用谋定而后动策略:要求智能体输出详实实施计划,经人工校准后再分步执行,每步同步记录调和状态
- 适用场景:确定性较强的长功能开发和批量代码评审
转移触媒
- 说明:智能体被赋予接触成品类似物的工具,自动萃取其中的属性逻辑,精准移至主炼金釜中,实现高保真复现
- 适用场景:模仿功能
涡流触媒
这个触媒的用法较为灵活,根据产物的特征分为不同流派:
容易自动测试
- 说明:以详尽测试用例为起点,引导智能体调和与预期的产物特征符合的测试项目。随后进入调和和验证的涡流循环。
- 适用场景:较少监督值守,容易自动测试
难以自动测试
- 说明:以详尽需求和灵气属性变化的围栏为起点,让一个智能体负责调和,另一个(或者一组)智能体负责检查,如此循环直到产物合格。
- 适用场景:半自动监督值守,难以自动测试
分层触媒
- 说明:将复杂的素材处理任务分层,各智能体专攻不同的目标特性,并行处理不同组的素材。最后将产物逐个归并,形成产物
- 适用场景:繁琐模块加急开发
- 小心:Ni 主导的人 Se 劣势,这个触媒容易引起信息过载,注意把握休息的节奏!
步骤6:时间规划
- 预估操作结束的时间
- 检查项目的时间要求
- 确定生成期间你需要做什么事情
- 协调与同伴的工作顺序,尤其是你所用的素材是同伴的产物时,要留有沟通的余地
- 优化接下来的时间安排,或者修改方案
步骤7:投料并炼制
根据所选触媒的要求,用材料填充提示词模板。开始生成,下面是一些需要活用的机制:
- 炼金日志:将每个稳定状态用源代码管理工具保存
- 自动投料:配置工具授权自动同意规则,这样在你保养颈椎的时候,AI 也在努力工作
- 伙伴支援:遇到难点犹豫不决时,要相信同伴的力量
- 追加投料:过程中发现 AI 缺少某些知识,给它指点
- 配方变化:做到一半发现不可行,或者发现了更好的方案,退回步骤2
- 特制炼金釜:设计明确但 AI 总是在低级错误之间反复,此时你或许需要切换到更高端的模型
- 压缩炼金术:炼金釜容易满?试着每个阶段告一段落就压缩上下文或者退回到某个检查点
- 糊锅的味道:AI 在坚持错误的方向怎么办?在爆炸之前重来,或者用检查点回到过去
步骤8:验收和收尾
如果发现问题则整理反馈信息并返回上一步。根据炼金术士的性格特征,这一步的侧重点会有所不同,但是步骤不能省略。
检查列表
- 代码评审:灵气属性变化是否符合预期?
- 文档检查:生成的文档是否符合团队和用户的要求?
- 单元测试过了吗?覆盖情况如何?
- 集成测试过了吗?目标功能和特性是否已经显现?
- 软件的内部策略是否经得起推敲?
- 界面是否美观?
- 使用过程是否流畅?
- 使用体验是否舒适?有令人不爽的细节问题吗?
- 软件的设计是否符合自己的信念和价值观?
- 你是否为了帮助他人或者赋予他人幸福而开发了这款软件?
- 最后记得洗锅!不同道具的调和之间,不把上下文清空的话,会起反应!
品质问题处理
上述步骤能评估产物的品质。品质不达标可能是以下原因,返回之前步骤时可以参考:
- 需求不明确或者存在误导,导致素材的选择偏离了目标
- 需求不细致,导致素材的一部分被浪费并且需要投料的区域出现死角
- 素材特性不纯,例如掺杂太多任务无关的杂质
- 素材品质不佳,存在误导成分
- 素材自身发生反应,例如写了太多"禁止xxx"、"不得xxx"这种容易引起 AI 误会的句子。类似于对人类要求的"请不要想象xxx"会导致人类想象xxx。
- 流程不规范,存在违规操作
真实案例
如果只看前面的抽象理论,即使是 Ni 主导的读者也可能出现误解和疑惑。在这个章节,我会用真实案例把这些抽象理论过一遍。
案例概述
这个案例展示了如何通过手工开发的中间产物和 AI 辅助编程制作最终产物。
案例的内容是一个我自用的项目,是个让 Whisper.cpp 按特定格式标注一组语音的工具。
出于教学目的,这个自用项目的最终产物 已开源
背景
这个项目跨越了两个不同的开发时代:
AI辅助编程时代之前: 手工开发 Whisper.cpp 产物聚合工具 传统手工编码,无AI辅助。简单粗暴,拖拽文件到工具上就会开始标注,直接调用 Whisper.cpp 控制台进程然后收集控制台输出,并进行聚合。但是由于模型重复加载,性能问题严重。
AI辅助编程时代: 通过 AI 辅助工具开发 Whisper 服务器的图形界面,解决模型文件重复加载引起的性能问题。
手工开发 Whisper.cpp 产物聚合工具
需求分析
- 减少数据标注的操作复杂度
- 需要批量处理音频文件
- 需要聚合分散的输出结果
- 保留转写结果的元数据信息
- 能接受的性能表现
选择技术方案
- 从自身能力出发,使用我开发和维护能力最强的 VB.NET 语言
- 直接调用 Whisper.cpp 控制台程序
- 简单的文件扫描和进程管理
- 异步处理数据流的输出
- 标注输出 CSV 文件,让 Excel 打开它
实现的功能
- 批量扫描指定目录的音频文件
- 根据命令行参数限制,对它们分组,循环调用 whisper.cpp 进行转换
- 收集输出结果
- 提供简单的进度显示
- 支持多种输出格式(TXT、CSV、JSON),其中 CSV 支持聚合全部文件的转写信息
开发周期
- 利用一天半的周末休息时间完成,通过典型的敏捷开发模型实现功能
使用体验的遗憾
- 改配置参数需要修改代码
- 反复加载和卸载模型,效率低下
使用 AI 辅助开发 Whisper Server GUI
代码仓库的愿望
使用了一阵子手工开发的 Whisper.cpp 产物聚合工具之后,我注意到了 Whisper.cpp 的内在声音: "我的身上套着黑色的枷锁,令人望而却步。而且我的产物先被锁链分流再被聚合。"
我对这段原型意象进行了解读:它拥有世界级的语音识别能力,但用户需要记住繁琐的命令行参数,或者使用功能有限的网页界面。 这个工具渴望摆脱这些束缚,渴望让用户能够真正方便地使用它的强大功能。 而且产生输出的速度还能更快,需要想办法卸掉它的枷锁,让产物直接输出。
Whisper.cpp 项目的灵气属性
这个项目背后的模型擅长多国语言,仓库活跃,开源免费。
我能感知到它平衡的风属性、适中的雷属性、旺盛的火属性,较低的暗属性,以及足够的光属性。 但是相比于 Paraformer 之类的竞品,光属性和水属性有所欠缺。
第一轮素材收集
- Whisper.cpp 开源项目的仓库
- Avalonia UI 官方文档网站
炼金元素:
- 借用了一些 Whisper.cpp 项目的火属性和光属性
- Avalonia UI 官方文档网站能平衡风属性,以及增强光属性
第一轮配方发想
产物的特征
- 图形化界面替代命令行操作
- 同一批转写任务,模型不会重新加载
- 实时的进度反馈、取消能力和状态监控
- 不仅能调用服务端,还要能控制服务端启动
- 100% 完整的参数配置界面
- 能输出单独且详细的 CSV 文件
- 跨平台支持(Windows/Linux/macOS)
- 配置设置持久化存储
书写配方
- 文件转写聚合器
- .NET 和编程语言
- .NET 的跨平台 UI 框架
- Whisper.cpp 除了命令行的其它调用方式
第一轮合成路线倒推
前提条件:
- 文件转写聚合器:正好可以利用之前手工开发的 Whisper.cpp 产物聚合工具
- Avalonia UI 工具扩展:我已经做了 Avalonia UI VB 项目模板和设计时工具
- Avalonia UI 的帮助文档是在线的,直接让 AI 读取会占用过多 token 和请求次数
- 应该从 Whisper.cpp 开源项目的仓库精炼出可以投入的素材
- 应该有办法粘合 Whisper.cpp 和我的 VB 技术栈
有条件不满足,步骤回退
第二轮素材收集
- 从 Whisper.cpp 开源项目的仓库精炼出了 examples/server 目录,里面有服务端的 C++ 源码和说明文档。文档是 markdown 格式的
- 下载了 Avalonia UI 的帮助文档,是 markdown 格式的
- 既然有了服务端,我用 HTTP 和 JSON 就可以粘合 Whisper.cpp 和我的 VB 技术栈。这方面的知识 AI 已经内置了。
炼金元素的考虑:这些素材拥有足够的火属性和光属性,并能够避免风属性和暗属性失衡
第二轮配方发想
- 文件转写聚合器
- .NET 和编程语言(.NET 版本和语言熟练度能平衡或者扰乱风属性,以及影响火属性强度)
- Whisper.cpp 服务端使用说明(markdown 文档能提升品质)
- Avalonia UI 帮助信息(markdown 文档能提升品质)
- Avalonia UI 工具扩展(适配自己擅长的技术栈)
第二轮合成路线倒推
- 文件转写聚合器:正好可以利用之前手工开发的 Whisper.cpp 产物聚合工具
- Avalonia UI 工具扩展:我已经做了 Avalonia UI VB 项目模板和设计时工具
- 合成产物本体
先决条件已经满足
选择材料
- 文件转写聚合器:由于文件并不大,直接拿源码作为提示词的一部分
- .NET 和编程语言:最新稳定版本的 .NET 和我自己维护效率最高的 VB
- Whisper.cpp 服务端使用说明:C++ 源码和 markdown 文档
- Avalonia UI 帮助信息:精选 WPF 移植文档
- 展开 Avalonia UI VB 项目模板,自动应用设计时扩展工具
- Nukepayload2.Csv 进行 Csv 序列化
- 提醒 AI 用 HttpClient 和 System.Text.Json 的提示词
选择炼金触媒
涡流触媒
起了一个 Claude Code 和一个 Cline。涡流触媒让它们互相作用,从而自动推进项目开发。
- Claude Code 把模型换成了便宜的替代品,用作代码开发智能体
- Cline 用从某个网站申请的免费额度,作为代码评审智能体
贯穿触媒
仅对 Claude Code 使用。触媒具象化为 Tasks.md。
采用谋定而后动策略:
- Shift+Tab, 详细规划整体架构和模块划分
- 使其产生任务待办列表文件 Tasks.md(与 Claude Code 内置的任务管理系统有区别,这个文件可以手动修改)
- 手动编辑 Tasks.md 调整计划,并要求逐个完成和标记任务状态
共鸣触媒
仅对 Cline 使用。找来了我之前写的 Avalonia 项目和 VB 语言规范。
- 遵循 Avalonia UI 设计规范和 Fluent 主题
- 保持我的 UI 设计风格
- 保持我的代码编写风格
- 遵守微软推荐的代码风格
时间规划
在产物投入使用之前,我只有一天的休息时间。 与传统的阶段预估不同,AI 炼金的实际开发时间大幅缩短,顺利的话半天就能搞定。
投料和炼制
投料时需要考虑炼金成分,进行规划。
- 火属性炼金成分:长文件列表处理能力能从侧面反映项目代码健康状况、将 Option Strict 设置为启用全部警告可取得可维护性和编写便捷性的平衡
- 光属性炼金成分:使用步骤简单、跨平台兼容性、运行时高性能、多语言 UI 支持,这些能决定项目是否成功发挥价值
- 水属性炼金成分:进一步验证 Avalonia UI VB 设计时工具的能力,加深对 Avalonia 设计时扩展能力的理解
- 风属性炼金成分:整合文件转写聚合工具的功能对风属性灵气的平衡具有挑战性
根据我想要的炼金成分变化趋势,结合触媒的要求,编写提示词,并参与触媒预设的工作流。
配方变化
开发过程中,我注意到聚合输出结果需要用逻辑字符串排序,也就是,a1 的下一个文件是 a2 而不是 a10。 只使用 .NET 自带的排序能力解决不了此问题,而且 Windows 自带的逻辑排序 API 在其它平台不可用。
第三轮配方发想
我打算更改配方,把以前写的逻辑字符串排序代码加入项目中,并要求智能体在聚合输出结果时使用它。
此时聆听素材的声音:排序比较器在运作过程中温度越来越高,发出了金属被火烤的光芒并发出火花声。
解读素材的声音:由于排序比较器对性能要求很高,最好使用 ReadOnlySpan 类型来优化性能。
此时我确定了素材变更的内容:
- 不使用 .NET 自带的字符串排序类型
- 使用我以前写的逻辑字符串排序代码
- 使用 ReadOnlySpan 类型来优化性能(如果还不够,就需要使用 LINQ 的多线程排序能力)
- ReadOnlySpan 在 VB 项目中容易引起风属性失衡。为了确保灵气属性平衡,给项目安装受限类型分析器
继续投料和炼制
将原有的炼制目标达成后,基于生长触媒,应用配方变化。
追加:限制触媒
由于我把 Clause Code 的模型换成了便宜的替代品,它有时会犯一些低级错误,例如写了模拟实现之后忘记改成真实实现。 每个低级错误的正解都将进入长时记忆文档,积累下来可以使其少犯低级错误。
验收和收尾
编译并运行项目,进行测试和继续炼制,直到满足如下验收条件:
显现目标功能特性
- 符合使用习惯的图形界面:界面足够清晰直观,从启动服务到推理到故障排查,都不需要复杂的说明文档
- 服务器配置完整性:支持所有 Whisper 服务器参数
- 批量文件处理准确性:支持拖拽多文件,有序处理
- 并发推理稳定性:可配置并发数,并且正确处理取消请求
- 输出格式正确性:支持 JSON、TXT、SRT、VTT、CSV,并且支持聚合详细的 CSV 输出
- 跨平台兼容性:在 Windows、Linux、macOS 上正常运行
- 配置持久化:记住上次的配置和状态
- 改善的性能:对比前代工具,减少模型重新加载,减少临时文件生成。数据标注过程中即使用这台电脑打游戏,也较少出现前代标注工具反复加载模型引起的顿卡现象。
- 多语言支持:中英文界面根据系统设置自动切换
灵气属性变化
- 雷属性:强,四个小时做了以前三天的开发量
- 风属性:比较稳定。代码文件长度合理,分析器避免一些运行时错误,可单元测试的组件已经在另一个项目测试过并且未进行修改
- 火属性:新生之火,无统计数据,但是具备演化的基础
- 水属性:中等,技术上这不是什么困难的项目
- 光属性:强,够我轻松完成非常复杂的语音标注任务
- 暗属性:纯净,数据处理本地化,无恶意功能。加上合适的开源协议即可发布。
案例小结
这个案例展示了从手工开发到 AI 辅助开发的演进过程,创造出了两个有传承关系但独立价值的产品。
这不仅是软件功能的升级,更是对 AI 辅助编程时代的软件开发流程中蕴含的永恒的真理的有力验证。
总结和展望
在本文介绍的智能编程方法中,Ni 捕捉到了未来的模样:编程不再是冰冷的符号操作,而是人机共感的意义共创。 Te 的任务,是让这个未来不仅可信,而且可达。 Ti 的任务,是用逻辑推演新的软件开发模式,以及进一步推敲已经捕捉的意象,做到深刻的理解和延伸。 这个工作方式的可行性和效果在我这已经经过了一个多月的验证,已经能印证使用 AI 的方式与心理学知识之间存在共鸣。
接下来我将继续挖掘 AI 和心理学背后永恒的模式。如果有疑问请在评论区友好交流,这会对后续内容的编写有帮助。