我大概两个月前开始做一个抖音账号。

因为是业余时间做的,基本上都是下班路上随便找个地方坐下来讲一些话题,或者就是在书房录制一些视频。算是佛系更新吧。

我前天没有啥话题,正好在南京南的站台上有很多人抽烟,我就随手拍了一张照片吐槽一下。没想到因为这个只有一张照片的短视频,我被喷惨了。

作为一名cursor的重度用户,在差不多连续订阅一年之后,它几乎成为了我在编码过程中不可或缺的助手。

但是,就像跟任何队友协作一样,沟通的质量决定的协作的效率。

尽管已经使用cursor快一年了,但是还从来没有写过任何关于cursor的博客。

引言

我前两个月用业余时间开发了一个学习英语的工具,长下面这个样子。

Language Leap预览

那些让我拖延的事情

多年来,我在工作和生活中都特别讨厌紧急但不重要的事情

比如家里的灯坏了需要修(我家里前一段时间灯真的坏了,我拖了一个月才修好…),
发一份一天后的会议邀约,甚至是给领导发我的半年度工作总结(这个我也拖着呢…).

我去年换工作后,新岗位是专职做 Gen AI 相关的开发,到现在有 8 个月多。这8 个月来,我变得越来越迷茫。

换工作之前,虽然不是专职做 AI 相关的工作,但是也很积极地去使用和尝试各种 AI,那个时候是很激动的。

AI 产品的局限:聊天工具的同质化

我最近几年非常怀念高中时期,尤其是高一第二个学期和高二的第一个学期,准确地说是怀念高中时期可以专注的那种状态。

那段时间,是我人生三十多年来“最专注”的一段时间。

我还很清楚地记得那段时间可以忘记一切专心写试卷(看错题或者看书)的状态,甚至有点对那种状态有一点上瘾。我现在知道那种状态叫做“心流”。

这篇文章是由我跟 AI(大模型)共同创作的,大致的流程是我在写代码的时候用到了这个模块,在 IDE 中通过 AI(Github Copilot/cursor 等)已经关于这个话题有了一个比较深入的交流,AI 和我都阅读了相关的代码,然后让它写成一个博客。我会人工 review 这个博客,修改其中不合理或者不正确的地方。

我发现这么做可以加深我对相关技术栈的印象和理解,但是这好像也不太符合独立博客的调性,所以我为了这一类博客加了一个特定的 tag:AI共创,如果你不喜欢这一类文章,就请忽略带有这个tag 的文章。

什么是MarkItDown?

MarkItDown是由微软AutoGen团队开发的轻量级Python工具,专注于将各种文件格式转换为Markdown。与其他文本提取工具相比,它的特点在于能够保留文档的重要结构和内容元素(如标题、列表、表格和链接等),使转换后的内容更加适合大模型(LLM)处理和文本分析。

我昨天看到一个朋友发了一个动态,内容是他让 chatgpt 根据对他的记忆提出批判性的建议,帮助他改善人生。(chatgpt 有一个功能,可以引用我们跟它所有的聊天记录)

我觉得很有趣,而且提出来建议也确实很准,我今天也试了一下。感觉一下子就被戳中心灵。

我的问题是:

我想记录一下我最近是怎么使用 AI 的,这里说的 AI 主要是大模型,我会列举几个具体的场景。

搜索

我现在用搜索引擎的次数比以往已经下降了非常多

下面的内容是我跟 Gemini 2.5 Pro 探讨关于Pydantic 的 Alias 问题之后,让它总结的一篇技术博客。
我已经有很长一段时间没有好好写技术类的博客了,这就是原因。

作为一名后端开发者,我经常面临的一个挑战是如何优雅地处理外部数据表示(比如 JSON API 中的字段名)与我期望在 Python 代码中使用的内部表示之间的差异。很多时候,前端开发者或者外部服务期望 JSON 键使用camelCase(驼峰命名),而我那颗 Pythonic 的心则呼唤着snake_case(蛇形命名)。又或者,我可能需要与一些遗留系统集成,它们使用的字段名可能相当晦涩,我希望能将它们映射到内部更有意义的名称上。

这正是 Pydantic——FastAPI 的数据验证和序列化主力军——凭借其强大的别名功能大放异彩的地方。在这篇博客中,我想和大家分享我对aliasserialization_aliasvalidation_alias以及强大的model_config(在 Pydantic V1 中是Config类)的理解和实践经验,看看它们是如何帮助我驯服这些命名“丛林”的。

0%