<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Lark on All about Raspberry Pi</title><link>https://hugozhu.site/tags/lark/</link><description>Recent content in Lark on All about Raspberry Pi</description><generator>Hugo</generator><language>en</language><lastBuildDate>Mon, 06 Jul 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://hugozhu.site/tags/lark/index.xml" rel="self" type="application/rss+xml"/><item><title>API 友好不等于开发者友好，也不等于模型友好</title><link>https://hugozhu.site/post/2026/285-three-levels-interface-design-api-developer-model/</link><pubDate>Mon, 06 Jul 2026 00:00:00 +0000</pubDate><guid>https://hugozhu.site/post/2026/285-three-levels-interface-design-api-developer-model/</guid><description>&lt;p&gt;上周我让一个 Coding Agent 帮我用飞书发一条群消息。&lt;/p&gt;
&lt;p&gt;它读完了 &lt;code&gt;lark-cli im --help&lt;/code&gt;，看到了 &lt;code&gt;messages&lt;/code&gt; 子命令，继续往下翻——发现 &lt;code&gt;messages&lt;/code&gt; 下面只有 &lt;code&gt;delete&lt;/code&gt;、&lt;code&gt;forward&lt;/code&gt;、&lt;code&gt;urgent_app&lt;/code&gt; 这些操作。 &lt;strong&gt;没有 &lt;code&gt;send&lt;/code&gt;。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Agent 懵了。发消息这么基础的操作，怎么可能没有？&lt;/p&gt;
&lt;p&gt;它又去翻了 raw API 路径 &lt;code&gt;lark-cli api POST /open-apis/im/v1/messages&lt;/code&gt;，拼了一大坨 JSON body，调通了。但这条路绕过了 CLI 的所有设计——参数校验、身份管理、错误处理——全部自己来。&lt;/p&gt;
&lt;p&gt;后来我告诉它：你应该用 &lt;code&gt;lark-cli im +send&lt;/code&gt;。这个 &lt;code&gt;+send&lt;/code&gt; 是一个 &lt;strong&gt;shortcut&lt;/strong&gt;——飞书 CLI 为高频操作预置的语义快捷方式，比 raw API 路径短得多，也比它好用得多。&lt;/p&gt;
&lt;p&gt;Agent 不知道有这回事，因为 &lt;code&gt;--help&lt;/code&gt; 的输出里没有明显标记 shortcut 的存在。&lt;/p&gt;
&lt;p&gt;同样的事情也发生在钉钉上。我让另一个 Agent 用 DWS 给同事发一条消息，它调了 &lt;code&gt;dws chat message send&lt;/code&gt;，参数都对了，返回结果是：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nt"&gt;&amp;#34;success&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nt"&gt;&amp;#34;result&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nt"&gt;&amp;#34;openTaskId&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;...&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;}}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Agent 认为发送成功了，继续下一步。但十分钟后我打开钉钉——消息根本没到。&lt;/p&gt;
&lt;p&gt;Agent 不知道发生了什么。&lt;code&gt;success: true&lt;/code&gt; 告诉它「成功了」，但现实是消息石沉大海。后来排查发现是 PAT 权限不够——API 返回了「成功」，但实际投递被权限系统拦截了。&lt;/p&gt;
&lt;p&gt;对人类来说，打开手机看一眼就知道没收到。但对 Agent 来说，&lt;code&gt;success: true&lt;/code&gt; 就是真理——它没有能力验证现实，只能信任返回值。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;这就是「API 友好」和「模型友好」之间的鸿沟。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://hugozhu.site/img/2026/three-levels-interface-design.png"&gt;&lt;img src="https://hugozhu.site/img/2026/three-levels-interface-design-thumb.jpg" alt="接口设计三层模型：API 友好 → 开发者友好 → 模型友好"&gt;&lt;/a&gt;&lt;/p&gt;</description></item></channel></rss>