<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>AI on LiaoKE</title>
        <link>https://blog.liao-ke.com/tags/ai/</link>
        <description>Recent content in AI on LiaoKE</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh</language>
        <lastBuildDate>Mon, 15 Jun 2026 01:11:52 +0800</lastBuildDate><atom:link href="https://blog.liao-ke.com/tags/ai/index.xml" rel="self" type="application/rss+xml" /><item>
            <title>Page-agent项目改进日志</title>
            <link>https://blog.liao-ke.com/p/pageagent/</link>
            <pubDate>Sun, 14 Jun 2026 00:00:00 +0000</pubDate>
            <guid>https://blog.liao-ke.com/p/pageagent/</guid>
            <description>&lt;h2 id=&#34;前言&#34;&gt;前言&#xA;&lt;/h2&gt;&lt;p&gt;有一次在&lt;a class=&#34;link&#34; href=&#34;https://linux.do&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;linux.do&lt;/a&gt;上逛的时候,发现了一个有趣的项目(&lt;a class=&#34;link&#34; href=&#34;https://alibaba.github.io/page-agent/docs/introduction/quick-start&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;page-agent&lt;/a&gt;),可以用自然语言让ai控制网页，不像传统的自动化网页方案，需要利用Python使用有头或者无头浏览器之类的。这个项目直接是作为js脚本，直接可以嵌入或hook在浏览器中,不需要依赖Python或者其他的东西,更简单易用，好上手。&#xA;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;457px&#34; data-flex-grow=&#34;190&#34; height=&#34;1342&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://blog.liao-ke.com/p/pageagent/1.png&#34; srcset=&#34;https://blog.liao-ke.com/p/pageagent/1_hu_b6d41df0edf02f5c.png 800w, https://blog.liao-ke.com/p/pageagent/1_hu_f74f2451677e814.png 1600w, https://blog.liao-ke.com/p/pageagent/1_hu_d3d3a8853174f47a.png 2400w, https://blog.liao-ke.com/p/pageagent/1.png 2556w&#34; width=&#34;2556&#34;&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;思考&#34;&gt;思考&#xA;&lt;/h2&gt;&lt;p&gt;不过很可惜，原项目是完全基于网页dom文本化的操作方案，网页上的图片信息并不会输出在给ai的文本信息里面，也就是说无法识别网页图片，并且在在网页的文字识别上也加了很多限制，有时候有一些网站的有效信息无法被正常识别。于是乎我想研究一下，看一下能不能在原项目的基础上，让它支持识别图片，并且可以识别更多的网页文字。在经过几天的努力，也是终于把这两个问题给搞定了。&lt;/p&gt;&#xA;&lt;h2 id=&#34;改进方法&#34;&gt;改进方法&#xA;&lt;/h2&gt;&lt;h3 id=&#34;一让-ai-识别图片将图片链接注入-dom-树&#34;&gt;一、让 AI 识别图片：将图片链接注入 DOM 树&#xA;&lt;/h3&gt;&lt;p&gt;原项目在生成 DOM 树字符串时，默认的属性白名单 &lt;code&gt;r&lt;/code&gt; 中 &lt;strong&gt;不包含 &lt;code&gt;src&lt;/code&gt;&lt;/strong&gt;，因此 &lt;code&gt;&amp;lt;img&amp;gt;&lt;/code&gt; 标签的链接不会传递给 AI。此外，图片元素通常不被标记为“可交互”，导致其属性在 &lt;code&gt;F()&lt;/code&gt; 函数中根本不会被提取。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;修改步骤&lt;/strong&gt;：&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;将 &lt;code&gt;src&lt;/code&gt; 加入属性白名单&lt;/strong&gt;&lt;br&gt;&#xA;在 &lt;code&gt;flatTreeToString&lt;/code&gt; 函数的开头，&lt;code&gt;r&lt;/code&gt; 数组中添加 &lt;code&gt;&#39;src&#39;&lt;/code&gt;，这样 &lt;code&gt;src&lt;/code&gt; 属性就会在 &lt;code&gt;matchAttributes&lt;/code&gt; 中被匹配并输出。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;在 &lt;code&gt;dom_tree_default&lt;/code&gt; 的 &lt;code&gt;F()&lt;/code&gt; 函数中手动提取 &lt;code&gt;&amp;lt;img&amp;gt;&lt;/code&gt; 的属性&lt;/strong&gt;&lt;br&gt;&#xA;原代码只有满足 &lt;code&gt;k(e)&lt;/code&gt;（交互元素）或 &lt;code&gt;iframe&lt;/code&gt;/&lt;code&gt;body&lt;/code&gt; 的元素才会提取属性。我们在 &lt;code&gt;F()&lt;/code&gt; 中增加一个分支：当 &lt;code&gt;e.tagName.toLowerCase() === &#39;img&#39;&lt;/code&gt; 时，手动将其所有属性复制到 &lt;code&gt;r.attributes&lt;/code&gt; 对象中。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;在 &lt;code&gt;flatTreeToString&lt;/code&gt; 中为 &lt;code&gt;&amp;lt;img&amp;gt;&lt;/code&gt; 特殊输出&lt;/strong&gt;&lt;br&gt;&#xA;在 &lt;code&gt;u()&lt;/code&gt; 函数中，当遇到 &lt;code&gt;e.tagName === &#39;img&#39;&lt;/code&gt; 时，直接输出 &lt;code&gt;&amp;lt;img src=&amp;quot;...&amp;quot; alt=&amp;quot;...&amp;quot; /&amp;gt;&lt;/code&gt; 格式，并附带 &lt;code&gt;[图片链接: ...]&lt;/code&gt; 标记，便于 AI 识别。为了避免输出 &lt;code&gt;data:image&lt;/code&gt; 等内嵌图片，用正则过滤掉 Base64 链接。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;&lt;strong&gt;效果&lt;/strong&gt;：&lt;br&gt;&#xA;AI 收到的 &lt;code&gt;&amp;lt;browser_state&amp;gt;&lt;/code&gt; 中会出现如 &lt;code&gt;[图片链接: https://example.com/photo.jpg]&lt;/code&gt; 的信息，AI 知道这是一张图片，可以调用后续的工具来识别。&lt;/p&gt;&#xA;&lt;h3 id=&#34;二突破文字识别限制移除文本节点的可见性过滤&#34;&gt;二、突破文字识别限制：移除文本节点的可见性过滤&#xA;&lt;/h3&gt;&lt;p&gt;原项目对文本节点的输出设有多重限制：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;l(e)&lt;/code&gt; 检查：若文本位于可交互元素内部则跳过。&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;isTopElement&lt;/code&gt; 检查：只有父元素是“顶层元素”（未被遮挡、不在视口外）时才输出。&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;isVisible&lt;/code&gt; 检查：父元素必须可见（&lt;code&gt;offsetWidth/Height &amp;gt; 0&lt;/code&gt; 且 CSS 未隐藏）。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;这些限制导致许多嵌套较深或位置特殊的文本（如 Monaco 编辑器内的代码、被 &lt;code&gt;overflow: hidden&lt;/code&gt; 包裹的内容）无法被 AI 读取。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;修改步骤&lt;/strong&gt;：&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;移除 &lt;code&gt;l(e)&lt;/code&gt; 检查&lt;/strong&gt;：在 &lt;code&gt;flatTreeToString&lt;/code&gt; 中删除 &lt;code&gt;if (l(e)) return;&lt;/code&gt; 这一行。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;移除 &lt;code&gt;isTopElement&lt;/code&gt; 检查&lt;/strong&gt;：将文本输出的条件从 &lt;code&gt;e.parent.isTopElement&lt;/code&gt; 改为直接忽略，只保留 &lt;code&gt;e.parent.isVisible&lt;/code&gt;（或完全去掉，保留所有可见文本）。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;放宽 &lt;code&gt;x(e)&lt;/code&gt; 函数&lt;/strong&gt;：在 &lt;code&gt;dom_tree_default&lt;/code&gt; 中，将 &lt;code&gt;x(e)&lt;/code&gt; 改为始终返回 &lt;code&gt;true&lt;/code&gt;，让所有文本节点都被视为可见，不会被丢弃。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;可选：移除 &lt;code&gt;C(e)&lt;/code&gt; 中的尺寸检查&lt;/strong&gt;：如果希望进一步解除限制，可将 &lt;code&gt;C(e)&lt;/code&gt; 中的 &lt;code&gt;offsetWidth &amp;gt; 0 &amp;amp;&amp;amp; offsetHeight &amp;gt; 0&lt;/code&gt; 条件改为始终 &lt;code&gt;true&lt;/code&gt;，但这会导致大量不可见元素被纳入，建议谨慎。&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;&lt;strong&gt;效果&lt;/strong&gt;：&lt;br&gt;&#xA;现在几乎所有可见的文本节点都会被输出，包括代码编辑器内部的代码、被遮挡的说明文字、侧边栏小字等。AI 的上下文信息量显著增加，但同时 token 消耗也会上升，可根据实际场景调整。&lt;/p&gt;&#xA;&lt;h3 id=&#34;三让-ai-自主调用图片识别工具&#34;&gt;三、让 AI 自主调用图片识别工具&#xA;&lt;/h3&gt;&lt;p&gt;仅让 AI “看到”图片链接还不够，还需要让它能够&lt;strong&gt;理解图片内容&lt;/strong&gt;。我们增加一个自定义工具 &lt;code&gt;recognize_image&lt;/code&gt;，AI 可以调用它来识别指定 URL 的图片，并将结果写回图片的 &lt;code&gt;alt&lt;/code&gt; 属性。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;工具定义&lt;/strong&gt;（使用 Zod 进行参数校验）：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;&#xA;&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;recognize_image&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;description&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;识别指定 URL 的图片内容，将识别结果写入该图片的 alt 属性，并返回描述文本。&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;inputSchema&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;z&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;object&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;({&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;imageUrl&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;z&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;string&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;().&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;url&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(),&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;}),&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;execute&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;async&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;input&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;signal&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;})&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;imageUrl&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;input&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;// 优先尝试直接使用 URL，失败则转换为 Base64&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;// 调用视觉 API（如 Qwen-VL、GPT-4V 等）&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;response&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;fetch&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;...&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;...&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;description&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;...;&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;// 从 API 响应中提取描述&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;// 查找页面中对应的 img 元素，写入 alt&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;img&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;document&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;querySelector&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;sb&#34;&gt;`img[src=&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;imageUrl&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;sb&#34;&gt;&amp;#34;]`&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;img&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;img&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;alt&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;description&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;sb&#34;&gt;`图片识别完成，描述为：“&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;description&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;sb&#34;&gt;”`&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&lt;h2 id=&#34;总结&#34;&gt;总结&#xA;&lt;/h2&gt;&lt;p&gt;于是乎，在经过了以上这些操作，成功让原项目支持了图片识别以及解除了一些网页文字识别的限制。以下是我改进版的仓库地址&#xA;&lt;a class=&#34;link&#34; href=&#34;https://github.com/iliaoke/page-agent&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;https://github.com/iliaoke/page-agent&lt;/a&gt;&lt;/p&gt;&#xA;</description>
        </item><item>
            <title>我对几种LLM扩展工具的区别与使用心得</title>
            <link>https://blog.liao-ke.com/p/llm-tool-calls/</link>
            <pubDate>Mon, 02 Feb 2026 00:00:00 +0000</pubDate>
            <guid>https://blog.liao-ke.com/p/llm-tool-calls/</guid>
            <description>&lt;h1 id=&#34;关于llm的几种工具扩展方法的区别和见解&#34;&gt;关于LLM的几种工具扩展方法的区别和见解&#xA;&lt;/h1&gt;&lt;p&gt;LLM本身只能当做&lt;strong&gt;聊天对话机器&lt;/strong&gt;,他只可以接收对话，然后返回回答,本身是&lt;strong&gt;不能干任何额外的事情&lt;/strong&gt;.&lt;/p&gt;&#xA;&lt;p&gt;我们使用ai的一些扩展功能，比如联网搜索和其他的工具本质上是让&lt;strong&gt;AI返回指定参数&lt;/strong&gt;,&lt;strong&gt;交由外部工具去完成&lt;/strong&gt;,然后在拿&lt;strong&gt;外部工具执行到的信息作为上下文&lt;/strong&gt;,再返回给AI,&lt;strong&gt;llm只是决策者而并非执行者&lt;/strong&gt;,&lt;strong&gt;工具真正的逻辑执行部分和判断部分需要人为的完成&lt;/strong&gt;.&lt;/p&gt;&#xA;&lt;p&gt;而市面上主流的LLM主要有以下几种方法扩展工具&lt;/p&gt;&#xA;&lt;h2 id=&#34;1tool-calls很少使用&#34;&gt;1.Tool Calls(很少使用)&#xA;&lt;/h2&gt;&lt;p&gt;这个是一些大语言模型本身自带的功能,可以让用户&lt;strong&gt;自定义一段工具介绍&lt;/strong&gt;，然后让LLM在适当的时候&lt;strong&gt;返回工具调用的结构体&lt;/strong&gt;,然后由用户&lt;strong&gt;解析结构体执行程序&lt;/strong&gt;之后，再返回获取到的结果来完善上下文&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;缺点:&lt;/strong&gt;&#xA;LLM和工具的衔接部分&lt;strong&gt;需要自己人为书写&lt;/strong&gt;,比如需要&lt;strong&gt;判断LLM有没有返回工具调用信息&lt;/strong&gt;,如果返回了，要根据返回的信息进行选择调用,&lt;strong&gt;写的工具越复杂&lt;/strong&gt;，衔接部分需要花费的时间就越大,并且不同的模型的Tool Calls返回的信息可能还有所不同，&lt;strong&gt;不同模型的Tool Calls标准不一样，同一个工具需要对不同的模型单独做适配&lt;/strong&gt;,所以并不流行(不过算是最早的给llm扩展工具的方法)&lt;/p&gt;&#xA;&lt;h2 id=&#34;2mcp流行&#34;&gt;2.Mcp(流行)&#xA;&lt;/h2&gt;&lt;p&gt;这是一套&lt;strong&gt;严格的标准&lt;/strong&gt;,不会像Tool Calls一样可能因为模型的问题，返回的结构体有所差异,有&lt;strong&gt;mcp客户端&lt;/strong&gt;,还有&lt;strong&gt;mcp服务器&lt;/strong&gt;,工具的连接方式有&lt;strong&gt;远程&lt;/strong&gt;，也有&lt;strong&gt;本地调用&lt;/strong&gt;,是一套很完善的规则.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;缺点:&lt;/strong&gt;&#xA;因为&lt;strong&gt;调用流程过于严谨和繁琐&lt;/strong&gt;,所以很容易引起&lt;strong&gt;llm上下文直接爆炸&lt;/strong&gt;,让llm抓不到重点,对话越到后面效果越差。&lt;strong&gt;部署和开发也相对麻烦&lt;/strong&gt;,因为有服务端，客户端，还有一些七七八八.而Tool Calls,可以直接在一个片段代码里面完成开发.&lt;/p&gt;&#xA;&lt;h2 id=&#34;3skills流行&#34;&gt;3.Skills(流行)&#xA;&lt;/h2&gt;&lt;p&gt;这个是最近claude推出,我对他的理解是&lt;strong&gt;最高级别的prompt&lt;/strong&gt;,这个严格来说&lt;strong&gt;并不是一个标准,而是共识&lt;/strong&gt;,更偏向于一个技术理念,&lt;strong&gt;需要IDE自己去实现这个理念（&lt;a class=&#34;link&#34; href=&#34;https://github.com/anthropics/skills&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;Claude开源了他们官方skills的实现&lt;/a&gt;）&lt;/strong&gt;,不像mcp和Tool Calls是有一定的标准的,要严格按照官方的标准来。&lt;/p&gt;&#xA;&lt;p&gt;Skills某种程度上来说和Tool Calls有点类似,但是&lt;strong&gt;他不需要写LLM和工具之间的桥接代码&lt;/strong&gt;,并且还可以完成一些prompt才可以做的事，比如说&lt;strong&gt;自定义一下语气和注意事项&lt;/strong&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Tool Calls每写一个工具，我需要自己再写程序去判断LLM返回的工具调用信息，然后再去执行运算(并且还可能因为不同的模型返回的信息有差异而导致兼容性问题),&lt;strong&gt;而放到Skills&lt;/strong&gt;,我只需要&lt;strong&gt;自定义一段话&lt;/strong&gt;,&lt;strong&gt;不需要写具体的代码&lt;/strong&gt;(工具本身是要写代码的，只是&lt;strong&gt;调用不需要写代码&lt;/strong&gt;),比如在特定的时候执行某个文件目录下面的某个代码片段传入某些参数,相当于把&lt;strong&gt;桥接部分交由了程序本身&lt;/strong&gt;(如Vscode和windsurf)去执行,所以说需要程序去适配Skills,&lt;strong&gt;它是共识和理念，而不是一套标准&lt;/strong&gt;.(不过当流行起来的时候，共识理念最终也会成为大家默认的标准)&lt;/p&gt;&#xA;&lt;h2 id=&#34;总结&#34;&gt;总结&#xA;&lt;/h2&gt;&lt;p&gt;总结:以上三种给LLM扩展工具的方式,我个人对未来最看好的是&lt;strong&gt;Skills&lt;/strong&gt;,我认为把这套逻辑和共识再进行优化加强是完全可以比过Tool Calls和mcp。Tool Calls桥接部分比较麻烦,&lt;strong&gt;一切运转都要依靠代码&lt;/strong&gt;,还有&lt;strong&gt;兼容性问题&lt;/strong&gt;;mcp&lt;strong&gt;开发部署繁琐,且容易引起上下文爆炸&lt;/strong&gt;,LLM运行缓慢.Skills&lt;strong&gt;恰好能解决这两者的缺点&lt;/strong&gt;&lt;/p&gt;&#xA;</description>
        </item><item>
            <title>谈谈我对AI的一些理解</title>
            <link>https://blog.liao-ke.com/p/ai-understanding/</link>
            <pubDate>Tue, 09 Dec 2025 00:00:00 +0000</pubDate>
            <guid>https://blog.liao-ke.com/p/ai-understanding/</guid>
            <description>&lt;h2 id=&#34;前言&#34;&gt;前言:&#xA;&lt;/h2&gt;&lt;p&gt;用ai也用了这么久了,今天想谈一下自己对AI的理解.从chatgpt刚问世开始,我就在开始使用大模型.也算是最早使用大模型的那批人.随着大模型的发展愈演愈烈,也衍生出了很多分支比如&lt;strong&gt;AI IDE&lt;/strong&gt;,应用内集成AI聊天助手,大模型识别图像等等.&lt;/p&gt;&#xA;&lt;p&gt;而随着AI能干的事越来越多,有些人产生了&lt;strong&gt;自我怀疑&lt;/strong&gt;(我能做的事AI都能做,那还需要我干什么),而另外一部分人则产生了&lt;strong&gt;依赖&lt;/strong&gt;(你看ai都是这么说的了(盲目相信AI)).&lt;/p&gt;&#xA;&lt;p&gt;而我也用大模型用了这么久了,今天便在这里谈一下我自己的认知&lt;/p&gt;&#xA;&lt;h2 id=&#34;我的认知&#34;&gt;我的认知&#xA;&lt;/h2&gt;&lt;p&gt;我始终认为&lt;strong&gt;Ai始终是作为一个工具,用来提升工作效率,而非核心&lt;/strong&gt;.大模型本身的特点就注定了有一些工作是无法代替人类.比如&lt;strong&gt;项目的一些宏观设计和管理&lt;/strong&gt;,一些最新的技术的使用和获取.它是一个超大知识的集合体,它的作用是降低我在知道该怎么做的情况下，让我避免去查代码文档，一步一步慢慢实现功能所带来的时间成本.而不是想做什么，跟AI说一句话，让他帮我实现就行了,我们要做的是工程师，是设计师，而不是让AI作为核心，我们负责提要求。不然就相当于我们是甲方，AI是乙方。&lt;strong&gt;我们应该当的是boss，是甲方,AI当我们底下的员工，来负责完成我设计的东西（乙方需求）。&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;所以在我看来使用ai无非就两个档次&#34;&gt;所以在我看来,使用AI无非就两个档次&#xA;&lt;/h2&gt;&lt;ul&gt;&#xA;&lt;li&gt;初级者:什么都不懂,只知道自己想要什么,反正让AI完成就行了。(这在学习的初期确实可以很快带来成就感,但始终无法避免一个问题,&lt;strong&gt;你不懂的始终不懂，懂的是AI而不是你&lt;/strong&gt;,你并没有任何的核心竞争力)&lt;/li&gt;&#xA;&lt;li&gt;真正掌握AI的人:自己设置架构，自己设置语法要求,自己设置UI层级和UI设计风格,规定使用的技术栈,让AI按照自己的规定去完成对应的工作。&lt;strong&gt;AI是提升效率的工具，而不是自己的大脑&lt;/strong&gt;,真正应该怎么做，应该是自己知道，而不是AI知道。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;所以在这个时代有人害怕ai有人依赖ai那我的答案是掌握ai&#34;&gt;所以在这个时代,有人害怕ai,有人依赖AI,那我的答案是掌握AI.&#xA;&lt;/h2&gt;</description>
        </item><item>
            <title>如何选择最适合你的 AI IDE 与扩展插件</title>
            <link>https://blog.liao-ke.com/p/ai-ide/</link>
            <pubDate>Mon, 08 Dec 2025 00:00:00 +0000</pubDate>
            <guid>https://blog.liao-ke.com/p/ai-ide/</guid>
            <description>&lt;h1 id=&#34;ai-ide-工具推荐&#34;&gt;AI IDE 工具推荐&#xA;&lt;/h1&gt;&lt;h2 id=&#34;为什么使用-ai-ide&#34;&gt;为什么使用 AI IDE？&#xA;&lt;/h2&gt;&lt;ul&gt;&#xA;&lt;li&gt;传统 AI 聊天无法：&#xA;&lt;ul&gt;&#xA;&lt;li&gt;实时读取本地文件&lt;/li&gt;&#xA;&lt;li&gt;兼顾项目的宏观框架管理&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;偏商业化的 AI IDE：&#xA;&lt;ul&gt;&#xA;&lt;li&gt;一般不允许自定义第三方服务商接口&lt;/li&gt;&#xA;&lt;li&gt;强制使用平台模型收取订阅费&lt;/li&gt;&#xA;&lt;li&gt;实时读取本地文件&lt;/li&gt;&#xA;&lt;li&gt;适配开发的执行流程与逻辑&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;因此，为了高效开发和项目管理，需要使用 AI IDE。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;ai-ide-的能力评价指标&#34;&gt;AI IDE 的能力评价指标&#xA;&lt;/h2&gt;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;硬实力：自带模型能力&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;软实力：上下文补全与逻辑能力&lt;/strong&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;通过插件、执行策略、隐藏的上下文prompt 等实现&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;两者缺一不可&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;ai-编程工具分类&#34;&gt;AI 编程工具分类&#xA;&lt;/h2&gt;&lt;h3 id=&#34;1-cli-命令行ai开发工具&#34;&gt;1. CLI 命令行AI开发工具&#xA;&lt;/h3&gt;&lt;ul&gt;&#xA;&lt;li&gt;开发效率比 IDE 差&#xA;&lt;ul&gt;&#xA;&lt;li&gt;文件引用需手动输入&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;不适合宏观项目管理&lt;/li&gt;&#xA;&lt;li&gt;适合单一功能的改进&lt;/li&gt;&#xA;&lt;li&gt;代表工具：&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://openai.com/blog/openai-codex&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;OpenAI Codex★★★&lt;/a&gt;(也有vscode 插件版本,但开发效率不如集成式ai ide,仍然是片段式更改)&lt;/li&gt;&#xA;&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://claude.com/product/claude-code&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;Claude Code★★★&lt;/a&gt;(也有vscode 插件版本,但开发效率不如集成式ai ide,仍然是片段式更改)&lt;/li&gt;&#xA;&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/sst/opencode&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;OpenCode（开源）&lt;/a&gt;（可自定义服务商接口，但上下文能力较弱）&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;2-ide-ai-开发工具&#34;&gt;2. IDE AI 开发工具&#xA;&lt;/h3&gt;&lt;ul&gt;&#xA;&lt;li&gt;直接从文件管理器拖入文件即可&lt;/li&gt;&#xA;&lt;li&gt;支持项目级宏观管理&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;国内-ai-ide&#34;&gt;国内 AI IDE&#xA;&lt;/h2&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.trae.ai/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;Trae&lt;/a&gt;&lt;/strong&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;特有 Solo 模式（和普通模式感觉主要是 UI 差别，在功能上感觉差的不是很大，可能隐藏 prompt 有所优化）&lt;/li&gt;&#xA;&lt;li&gt;可使用规定的国内其他服务商接口&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;https://qoder.ai/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;Qoder&lt;/a&gt;&lt;/strong&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;无特色&lt;/li&gt;&#xA;&lt;li&gt;上下文消耗快&lt;/li&gt;&#xA;&lt;li&gt;无法使用国外模型或其他接口&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;https://lingma.aliyun.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;通义灵码&lt;/a&gt;&lt;/strong&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;无特色&lt;/li&gt;&#xA;&lt;li&gt;无法使用国外模型或其他接口&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;国内-ide-的共性&#34;&gt;国内 IDE 的共性&#xA;&lt;/h3&gt;&lt;ul&gt;&#xA;&lt;li&gt;喜欢构建工作区文件全量索引，每次提问前先查索引文件，消耗大量上下文 token，有时查找的文件过多反而忽略关键问题&lt;/li&gt;&#xA;&lt;li&gt;国内模型编码能力较弱，且不允许使用国外更强的模型&lt;/li&gt;&#xA;&lt;li&gt;方便支付订阅, 界面中文支持较好&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;国外-ai-ide&#34;&gt;国外 AI IDE&#xA;&lt;/h2&gt;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/features/copilot&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;GitHub Copilot★★&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;VSCode 插件形式&lt;/li&gt;&#xA;&lt;li&gt;适合片段式的文件&lt;/li&gt;&#xA;&lt;li&gt;上下文补全能力较弱&lt;/li&gt;&#xA;&lt;li&gt;无法全面定制化&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/cline/cline&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;Cline★★&lt;/a&gt;（开源）&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;可自定义任意服务商&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;VSCode 插件形式&lt;/li&gt;&#xA;&lt;li&gt;适合片段式的文件&lt;/li&gt;&#xA;&lt;li&gt;上下文补全能力较弱&lt;/li&gt;&#xA;&lt;li&gt;无法全面定制化&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/Kilo-Org/kilocode&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;Kilo&lt;/a&gt;（开源）&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;可使用规定的第三方服务商api&lt;/li&gt;&#xA;&lt;li&gt;VSCode 插件形式&lt;/li&gt;&#xA;&lt;li&gt;适合片段式的文件&lt;/li&gt;&#xA;&lt;li&gt;上下文补全能力较弱&lt;/li&gt;&#xA;&lt;li&gt;无法全面定制化&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.cursor.so/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;Cursor★★★&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;基于 VSCode 深度定制&lt;/li&gt;&#xA;&lt;li&gt;自研模型 Composer 1 (专为编程训练, 功能强大)&lt;/li&gt;&#xA;&lt;li&gt;可使用规定的其他服务商 API&lt;/li&gt;&#xA;&lt;li&gt;agent可以直接连接github远程储存库(特色功能)&lt;/li&gt;&#xA;&lt;li&gt;预设 Prompt 优秀输出质量高，但免费额度少，订阅贵&lt;/li&gt;&#xA;&lt;li&gt;亮眼功能：&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;浏览器设计模式&lt;/strong&gt;：可以直接在ide里面打开网页，并且选择元素，方便设计网页&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;debug&lt;/strong&gt;：可以根据log寻找隐藏bug&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;https://kiro.dev&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;kiro&lt;/a&gt;&lt;/strong&gt;&#xA;电脑安装闪退，我用不了(哭)&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;https://windsurf.ai/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;Windsurf★★★&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;基于 VSCode 深度定制&lt;/li&gt;&#xA;&lt;li&gt;自研模型 SWE-1.5 (专为编程训练, 功能强大)&lt;/li&gt;&#xA;&lt;li&gt;亮眼功能：&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Memories&lt;/strong&gt;：可以根据对话和习惯生成对应的记忆（ai自动生成记忆，以在对话之间保持上下文连贯性）&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;DeepWiki&lt;/strong&gt;：独家功能,定位项目中关键函数或变量，了解用途和在项目其他地方引用 (方便学习他人的开源项目)&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;CodeMap&lt;/strong&gt;：独家功能,用于分析现有项目代码结构,可以根据输入的问题生成项目代码实现的流程图,点击流程图可以定位对应代码实现的部分（对于解剖他人项目的功能实现很有用）&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;浏览器设计模式&lt;/strong&gt;：可以直接在ide里面打开网页，并且选择元素，方便设计网页&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;对话消息互通&lt;/strong&gt;：独家功能,不同对话之间可以选择互通消息，如两个不同的项目,具有一定的关联性，我们就可以通过这个功能实现两个项目在对话层面上的互通，而不需要ai去研究另外一个项目的代码，防止添加过多的内容，导致上下文混乱&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;免费额度高，价格便宜&lt;/li&gt;&#xA;&lt;li&gt;支持规定的其他服务商 API&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;https://zed.dev&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;Zen Editor&lt;/a&gt;（开源）&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;可使用任意服务商接口&lt;/li&gt;&#xA;&lt;li&gt;自带免费额度高&lt;/li&gt;&#xA;&lt;li&gt;上下文补全能力较弱&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;总结推荐&#34;&gt;总结推荐&#xA;&lt;/h2&gt;&lt;ul&gt;&#xA;&lt;li&gt;综合价格、模型能力和上下文补全能力，我个人首推 &lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;https://windsurf.ai/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;Windsurf&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;DeepWiki、CodeMap 和消息互通是其最大亮点，让其上下文补全能力非常强大&lt;/li&gt;&#xA;&lt;li&gt;其他 AI IDE 在 UI 功能上同质化严重，差别主要在 AI 模型、执行逻辑和预设 Prompt&lt;/li&gt;&#xA;&lt;li&gt;如果不考虑开发效率，单论编码能力,openai的codex和claude code这种命令行式开发可能是最强的一批,其次就是cursor和windsurf&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;</description>
        </item></channel>
</rss>
