<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[boydfd的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/boydfd</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; boydfd]]></copyright><item><title><![CDATA[拆解Harness Engineering和Loop Engineering]]></title><link>https://blog.youkuaiyun.com/boydfd/article/details/161987088</link><guid>https://blog.youkuaiyun.com/boydfd/article/details/161987088</guid><author>boydfd</author><pubDate>Mon, 15 Jun 2026 01:25:01 +0800</pubDate><description><![CDATA[本文系统梳理了AI Agent工程中的关键概念演进，从Prompt Engineering到Context Engineering再到Harness和Loop Engineering。文章指出这些概念并非简单的层级关系，而是抽象程度的递进： Prompt Engineering：聚焦单次调用的输入优化，解决"如何说"的问题，包括指令设计、示例选择、推理引导等技术。 Context Engineering：关注"给什么信息"，解决上下文选择和组织问题，包含知识检索、工具定义、记忆管理等6个关键维度。 Harn]]></description><category></category></item><item><title><![CDATA[为了随时随地控制 AI Agent，我做了一个 Web Terminal]]></title><link>https://blog.youkuaiyun.com/boydfd/article/details/161573489</link><guid>https://blog.youkuaiyun.com/boydfd/article/details/161573489</guid><author>boydfd</author><pubDate>Sun, 31 May 2026 23:45:37 +0800</pubDate><description><![CDATA[本文探讨了开发者在使用AI编程工具时面临的终端管理痛点，以及作者如何通过Web Terminal ACP解决方案优化工作流。主要问题包括：传统tmux在多Agent会话管理上的不足、现成工具难以跟上AI工具的迭代速度、终端会话缺乏语义化管理等。作者提出将tmux window与Web Terminal一一对应，通过LLM自动生成会话标题和摘要，持久化终端元信息实现快速恢复，并设计智能会话回收机制避免内存浪费。这套方案既保留了原生终端工具链的稳定性，又通过浏览器界面实现了跨设备访问和可视化任务管理，显著提升了]]></description><category></category></item><item><title><![CDATA[彻底告别OpenClaw使用焦虑：我给他装上了“透视眼”和“批量克隆模组]]></title><link>https://blog.youkuaiyun.com/boydfd/article/details/159380511</link><guid>https://blog.youkuaiyun.com/boydfd/article/details/159380511</guid><author>boydfd</author><pubDate>Mon, 23 Mar 2026 09:17:20 +0800</pubDate><description><![CDATA[为了解决OpenClaw使用中的痛点问题，我开发了一个开源Dashboard工具，主要功能包括：1）实时监控Agent状态和任务执行情况；2）提供直观的会话和模型调用追踪；3）引入Blueprint模板系统实现批量Agent管理；4）增加版本控制确保修改可追溯；5）优化移动端适配。该工具已在GitHub开源，旨在提升OpenClaw的使用体验和工作效率。]]></description><category></category></item><item><title><![CDATA[万字长文详解Text-to-SQL]]></title><link>https://blog.youkuaiyun.com/boydfd/article/details/146605141</link><guid>https://blog.youkuaiyun.com/boydfd/article/details/146605141</guid><author>boydfd</author><pubDate>Fri, 28 Mar 2025 16:46:06 +0800</pubDate><description><![CDATA[在各个企业数据量暴涨的现在，Text-to-SQL越来越重要了，所以今天就来聊聊Text-to-SQL。]]></description><category></category></item><item><title><![CDATA[LLM应用落地实施手册]]></title><link>https://blog.youkuaiyun.com/boydfd/article/details/146501612</link><guid>https://blog.youkuaiyun.com/boydfd/article/details/146501612</guid><author>boydfd</author><pubDate>Tue, 25 Mar 2025 14:50:23 +0800</pubDate><description><![CDATA[自ChatGPT诞生以来，各个企业都开始尝试引入LLM落地实施“智能”应用，而目前并没有太多文章系统地介绍应该怎么落地实施一个基于LLM的应用，到底应该做哪些步骤。本人从2023年12月份开始，陆陆续续开发了3个LLM应用的项目了。这几个项目都是会话型的应用，都借助了LLM的能力，所以想趁着记忆还算新鲜，来总结一下这类项目的一些落地实施经验。最后面我会以最近的一个项目做的事情来作为案例，供大家学习和探讨。]]></description><category></category></item><item><title><![CDATA[LLM生成代码后，如何一键合并到源代码中（FastApply技术研究）]]></title><link>https://blog.youkuaiyun.com/boydfd/article/details/146118402</link><guid>https://blog.youkuaiyun.com/boydfd/article/details/146118402</guid><author>boydfd</author><pubDate>Sat, 08 Mar 2025 16:43:44 +0800</pubDate><description><![CDATA[本文探讨了LLM生成代码后的一键合并技术FastApply。针对全量替换方案的高成本问题，研究提出Planning+Applying两阶段方案：大模型生成代码片段后，通过智能合并技术精准定位。分析显示传统Code Diff格式存在模型幻觉风险，而常见的Lazy Format模式需创新合并方法。研究重点突破基于Prompt Lookup Decoding的加速技术，结合代码特性实现输入内容复用，在A6000显卡上达到600 tokens/s处理速度，使千行代码合并耗时仅1.7秒。实验验证PLD+方案可提升13]]></description><category></category></item><item><title><![CDATA[为了改一行代码，我花了10多天时间，让性能提升了40多倍---Pascal架构GPU在vllm下的模型推理优化]]></title><link>https://blog.youkuaiyun.com/boydfd/article/details/144469499</link><guid>https://blog.youkuaiyun.com/boydfd/article/details/144469499</guid><author>boydfd</author><pubDate>Sat, 14 Dec 2024 13:04:27 +0800</pubDate><description><![CDATA[这篇博客记录了作者在家中使用Pascal显卡运行大型模型时遇到的挑战和解决方案。随着本地大型模型性能的提升，作者选择使用vllm库进行推理。然而，作者遇到了多个技术难题，需要自行编译vllm和PyTorch，以支持Pascal架构的显卡。编译过程中，作者深入研究了显卡不支持的问题，特别是在量化矩阵乘法计算中发现性能瓶颈。最终，解决了性能问题，让性能提升了43倍。这次技术探索不仅解决了具体问题，还为作者提供了深入学习和扩展其他相关技术的机会，同时也展示了LLM在整个过程中提供的帮助。]]></description><category></category></item><item><title><![CDATA[喝个水也要整智能家居？]]></title><link>https://blog.youkuaiyun.com/boydfd/article/details/143669632</link><guid>https://blog.youkuaiyun.com/boydfd/article/details/143669632</guid><author>boydfd</author><pubDate>Mon, 11 Nov 2024 00:04:15 +0800</pubDate><description><![CDATA[这篇博客讲述了作者在家庭日常用水管理方面的改进经历。由于家里用水量增多，作者不断优化解决方案，从最初用农夫山泉桶装水，到购买反渗透净水机，再到通过智能化手段 简化补水流程。过程中，作者不断提高设备自动化程度，最终实现了全自动化补水，并且详尽描述了每个优化步骤和使用的技术（如Node-RED、homeassistant、小米设备等）。此外，作者还介绍了如何利用压力传感器和智能控制来实现更精确的水量控制，并用语音命令来实现自动接水功能。同时，还记录了优化过程中的一些挑战及解决方案。你以为到这就完了么？]]></description><category></category></item><item><title><![CDATA[大语言模型中一个调皮的EOS token]]></title><link>https://blog.youkuaiyun.com/boydfd/article/details/131739655</link><guid>https://blog.youkuaiyun.com/boydfd/article/details/131739655</guid><author>boydfd</author><pubDate>Sat, 15 Jul 2023 15:13:30 +0800</pubDate><description><![CDATA[看到这原因的就很明显了，因为这个EOS添加的是字符，而不是token_id，所以tokenizer有时候会把当成了分开的token，比如，模型就把这3它当成了三个token，而不是一个token，所以在推理的时候，遇到结尾，有时候就会输出。如果以为例，一般模型在推理的时候，觉得可以结束一句话了，就会输出，但是模型的脑子里肯定没有的概念呀，它只能输出数字，所以我们需要把转换成数字，这个数字就是EOS token ID。模型选择得自然是现在中文做的比较好的ChatGLM2-6B。]]></description><category></category></item><item><title><![CDATA[如何定制一个智能洒水装置（养狗/养花人士请进）]]></title><link>https://blog.youkuaiyun.com/boydfd/article/details/129218751</link><guid>https://blog.youkuaiyun.com/boydfd/article/details/129218751</guid><author>boydfd</author><pubDate>Sat, 25 Feb 2023 18:21:44 +0800</pubDate><description><![CDATA[我在搜索资料的过程中，知道了自动感应水龙头的原理，没错就是你想的那样，它就是用电磁阀来控制出水的。不管是养狗，还是养花的同学都可以考虑自己动手搭建一套这样的方案了哈，这套方案绝对比成套的方案好多了，而且如果电磁阀坏了，换个新的成本也不高，但是如果是一整套的那种方案，人家给不给保修都要另说。说到洒水工具，之前买的那个浇花的工具附带的管子和出水喷头都太差了：管子软软的没法固定，喷头是塑料的，要么就是360度喷雾，要么就是出一大道水，没法做到集中喷雾。但是，人的懒惰是上限的，现在我开始嫌冲狗厕所太麻烦了。]]></description><category></category></item><item><title><![CDATA[如何用智能地教狗狗上厕所]]></title><link>https://blog.youkuaiyun.com/boydfd/article/details/128603107</link><guid>https://blog.youkuaiyun.com/boydfd/article/details/128603107</guid><author>boydfd</author><pubDate>Sun, 08 Jan 2023 17:06:51 +0800</pubDate><description><![CDATA[这让我们想当场奖励，或当场训斥都没法做到。由于我有一台服务器，一台普通电脑（带GPU），服务器是7x24开机的，而电脑不是，所以模型就得放在服务器上，用cpu来做serving，这个时候，serving的性能就不是很够了，一个图片需要100ms才能识别完，相当于10FPS。这里我并没有针对模型的性能进行优化，而且取了个巧，先通过进行两帧图片的对比，识别出变化，在有变化产生后再进行模型的确认，所以模型serving的压力只有在崽崽或者我们进厕所的时候才会产生，而一旦厕所没有任何动静，模型自己慢慢就处理完了。]]></description><category></category></item><item><title><![CDATA[端到端智能音箱]]></title><link>https://blog.youkuaiyun.com/boydfd/article/details/124959798</link><guid>https://blog.youkuaiyun.com/boydfd/article/details/124959798</guid><author>boydfd</author><pubDate>Wed, 25 May 2022 09:32:12 +0800</pubDate><description><![CDATA[背景
前段时间买了个小米的空调伴侣，想用来查看空调的功率，以确认空调到底会用掉多少电。
买的时候发现空调伴侣也支持红外控制，这就得好好利用一下了。但是有个尴尬的问题，就是空调插座在很偏的地方，导致了无法控制空调，也没法控制投影仪。
当一个东西你拥有了以后又失去的时候，你会很难受，所以我就想着要再买它一个红外控制设备来做这个事，看了一圈发现，小米万能遥控没得买了，变成了理财产品，所以就找了一款替代产品。欧瑞博的一款万能遥控。买完之后才发现，虽然能控制空调和投影仪了，但是有两个很严重的问题：

是没法使用小爱来]]></description><category></category></item><item><title><![CDATA[再看Lambda架构]]></title><link>https://blog.youkuaiyun.com/boydfd/article/details/118658474</link><guid>https://blog.youkuaiyun.com/boydfd/article/details/118658474</guid><author>boydfd</author><pubDate>Sun, 11 Jul 2021 19:25:52 +0800</pubDate><description><![CDATA[博客原文地址
最近看了一本《大数据系统构建》的书，发现之前对于Lambda架构的理解还是不够深入和清晰。
之前对Lambda架构的理解
Azure文档上有一张Lambda架构的图，

同时也配有对Lambda架构最基本的理解：
批处理层（冷路径）以原始形式存储所有传入数据，对数据进行批处理。 该处理的结果作为 批处理视图 存储。

速度层（热路径）可实时分析数据。 设计此层是为了降低延迟，但代价是准确性也会降低。

当初看Lambda架构的时候，更在意的点其实是将数据处理分成批处理层 和速度层 两个部分，批]]></description><category></category></item><item><title><![CDATA[如何写一个好的测试]]></title><link>https://blog.youkuaiyun.com/boydfd/article/details/104603388</link><guid>https://blog.youkuaiyun.com/boydfd/article/details/104603388</guid><author>boydfd</author><pubDate>Sun, 01 Mar 2020 23:59:13 +0800</pubDate><description><![CDATA[博客原文地址
背景
在上一个项目上，由于项目成员大部分是新入职的同事，所以对于测试不是很熟悉，
这就导致了在项目前期，项目上的很多测试都不太make sense，虽然没有什么定量的东西来描述，
但是总结起来就2个点:

测试的名字比较模糊。
测试代码不易读。

深入剖析
测试名字比较模糊
对于这一个问题，是因为很多刚开始写测试的开发脑子里不会快就想到given、when、then这三个词，
一般我...]]></description><category></category></item><item><title><![CDATA[Kafka源码研究--Comsumer获取partition下标]]></title><link>https://blog.youkuaiyun.com/boydfd/article/details/102768811</link><guid>https://blog.youkuaiyun.com/boydfd/article/details/102768811</guid><author>boydfd</author><pubDate>Sun, 27 Oct 2019 17:07:59 +0800</pubDate><description><![CDATA[背景
由于项目上Flink在设置parallel多于1的情况下，job没法正确地获取watermark，所以周末来研究一下一部分，大概已经锁定了原因：
虽然我们的topic只设置了1的partition，但是Kafka的Comsumer还是起了好几个subtask去读索引是2、3的partition，然后这几个subtask的watermark一直不更新，导致我们job整体的watermark一直...]]></description><category></category></item><item><title><![CDATA[用Python和Pandas以及爬虫技术统计历史天气]]></title><link>https://blog.youkuaiyun.com/boydfd/article/details/96601562</link><guid>https://blog.youkuaiyun.com/boydfd/article/details/96601562</guid><author>boydfd</author><pubDate>Sat, 20 Jul 2019 16:23:16 +0800</pubDate><description><![CDATA[这里写自定义目录标题背景爬取数据用Pandas显示数据太多雨天多个月的数据画图功能扩展遇到的坑
背景
最近在计划明年从北京rebase到深圳去，所以最近在看深圳的各个方面。去年在深圳呆过一段时间，印象最深的是，深圳总是突然就下雨，还下好大的雨。对于我这种从小在南方长大但是后面又在北京呆了2年多的人来说，熟悉而又无奈。
今天早上本来想随便浏览浏览一个天气网站，看看深圳的历史天气如何的，但是，一不小心...]]></description><category></category></item><item><title><![CDATA[看直播到底能得到什么]]></title><link>https://blog.youkuaiyun.com/boydfd/article/details/72818326</link><guid>https://blog.youkuaiyun.com/boydfd/article/details/72818326</guid><author>boydfd</author><pubDate>Wed, 31 May 2017 10:37:59 +0800</pubDate><description><![CDATA[博客已经迁移到这里啦背景我是一个很喜欢看直播的人，平时下班回来吃晚饭的时候觉得没事干就会打开直播，边吃边看，然后就一发不可收拾。一个晚上就都用来看直播了。 
我也是一个很喜欢在洗澡的时候想问题的人，今天洗澡的时候我就在考虑，我看了这么久的直播我到底得到了什么？第一反应就是快乐，或者说是“一时的快乐”？因为对于现在的我来说，我已经完全记不得我1个月或者说一星期前看直播得到的快乐了？我顶多就能记住刚刚看]]></description><category></category></item><item><title><![CDATA[Item 27: 明白什么时候选择重载，什么时候选择universal引用]]></title><link>https://blog.youkuaiyun.com/boydfd/article/details/72455169</link><guid>https://blog.youkuaiyun.com/boydfd/article/details/72455169</guid><author>boydfd</author><pubDate>Wed, 17 May 2017 23:35:47 +0800</pubDate><description><![CDATA[博客已经迁移到这里啦Item 26已经解释了，不管是对全局函数还是成员函数（尤其是构造函数）而言，对universal引用的重载会导致一系列的问题。到目前为止，我也已经给出了好几个例子，如果它能表现得和我们期待的一样，这种重载也能很实用。此Item会探索如何让这种重载能实现我们所需求的行为。我们可以设计出避免对universal引用进行重载的实现，也可以通过限制参数的类型，来使得它们能够匹配。我们的]]></description><category></category></item><item><title><![CDATA[对于大学4年的反思(续)，记我的ThoughtWorks面试]]></title><link>https://blog.youkuaiyun.com/boydfd/article/details/51103250</link><guid>https://blog.youkuaiyun.com/boydfd/article/details/51103250</guid><author>boydfd</author><pubDate>Sat, 09 Apr 2016 09:13:41 +0800</pubDate><description><![CDATA[之前我写了一篇对于大学四年的反思，时隔一个月，为什么我这么快就要来写这篇续章呢？主要有两个原因，第一是感谢静子姐姐，记得知乎上有个回答里面说过人生需要有贵人的帮助，遇到贵人是一件很幸运的事情。我想，静子姐姐就是我人生中的第一个贵人吧（或者说第二个？感觉动漫是我的第一个贵人，不管你信不信，我的很多人生观都是从动漫中获取的，它教会了我诚实，教会了我正直，教会了我友谊，教会了我情亲，教会了我爱情，教会了我]]></description><category></category></item><item><title><![CDATA[Item 26: 避免对universal引用进行重载]]></title><link>https://blog.youkuaiyun.com/boydfd/article/details/50991219</link><guid>https://blog.youkuaiyun.com/boydfd/article/details/50991219</guid><author>boydfd</author><pubDate>Sun, 27 Mar 2016 13:03:21 +0800</pubDate><description><![CDATA[本文翻译自《effective modern C++》，由于水平有限，故无法保证翻译完全正确，欢迎指出错误。谢谢！
如果你需要写一个以名字作为参数，并记录下当前日期和时间的函数，在函数中还要把名字添加到全局的数据结构中去的话。你可能会想出看起来像这样的一个函数：std::multiset<std::string> name;            // 全局数据结构void logAndAdd(co]]></description><category></category></item></channel></rss>