<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>奇淫巧技 on 洛克里亚的五度 博客</title>
    <link>https://lv-blog.pages.dev/categories/%E5%A5%87%E6%B7%AB%E5%B7%A7%E6%8A%80/</link>
    <description>Recent content in 奇淫巧技 on 洛克里亚的五度 博客</description>
    <generator>Hugo</generator>
    <language>zh</language>
    <lastBuildDate>Wed, 15 Jul 2026 14:39:13 +0800</lastBuildDate>
    <atom:link href="https://lv-blog.pages.dev/categories/%E5%A5%87%E6%B7%AB%E5%B7%A7%E6%8A%80/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>AI Coding 省流指南</title>
      <link>https://lv-blog.pages.dev/posts/programming/some-tricks/%E5%A6%82%E4%BD%95%E5%B0%BD%E5%8F%AF%E8%83%BD%E5%87%8F%E5%B0%91ai-coding%E4%BD%BF%E7%94%A8%E7%9A%84token/</link>
      <pubDate>Wed, 15 Jul 2026 14:39:13 +0800</pubDate>
      <guid>https://lv-blog.pages.dev/posts/programming/some-tricks/%E5%A6%82%E4%BD%95%E5%B0%BD%E5%8F%AF%E8%83%BD%E5%87%8F%E5%B0%91ai-coding%E4%BD%BF%E7%94%A8%E7%9A%84token/</guid>
      <description>&lt;h3 id=&#34;1-核心大招强制增量输出diff-only&#34;&gt;1. 核心大招：强制“增量输出”（Diff-Only）&lt;/h3&gt;
&lt;p&gt;这是节省 &lt;strong&gt;输出 Token&lt;/strong&gt; 最有效的手段。默认情况下，大模型喜欢把整份代码文件重新写一遍，即便它只改了一行。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;笨办法&lt;/strong&gt;：“帮我修改这个文件的 bug。”（模型直接吐出 500 行代码）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;妙招&lt;/strong&gt;：在 Prompt 中明确限制输出格式。
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Prompt 模板：&lt;/strong&gt;
“请只输出修改过的代码片段。未修改的部分请用 &lt;code&gt;// ... 保持不变 ...&lt;/code&gt; 或 &lt;code&gt;# ... existing code ...&lt;/code&gt; 代替。如果可以，请直接以 Git Diff 的格式提供修改方案。”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id=&#34;2-输入骨架而非全量代码skeleton-prompting&#34;&gt;2. 输入“骨架”而非全量代码（Skeleton Prompting）&lt;/h3&gt;
&lt;p&gt;当你需要让模型理解你的项目结构或某个工具类时，&lt;strong&gt;不要&lt;/strong&gt;直接把几千行的源文件贴过去。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;妙招&lt;/strong&gt;：只给模型提供&lt;strong&gt;类型定义（Types/Interfaces）&lt;/strong&gt;、&lt;strong&gt;函数签名（Function Signatures）&lt;/strong&gt; 或 &lt;strong&gt;骨架代码&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;例如（TS/JS）&lt;/strong&gt;：&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-typescript&#34; data-lang=&#34;typescript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;// 不要贴整个实现，只给这个：
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;interface&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;UserService&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#a6e22e&#34;&gt;getUser&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;id&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;string&lt;/span&gt;)&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Promise&lt;/span&gt;&amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;User&lt;/span&gt;&amp;gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#a6e22e&#34;&gt;updateProfile&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;id&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;string&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;data&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;Partial&lt;/span&gt;&amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;User&lt;/span&gt;&amp;gt;)&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Promise&lt;/span&gt;&amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;boolean&lt;/span&gt;&amp;gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;模型只需要知道“有什么方法可用”以及“入参和出参是什么”，并不需要知道你内部复杂的 SQL 是怎么写的。&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&#34;3-巧用-xml-标签对-claude-尤为有效&#34;&gt;3. 巧用 XML 标签（对 Claude 尤为有效）&lt;/h3&gt;
&lt;p&gt;Claude 对 XML 标签（如 &lt;code&gt;&amp;lt;code_&amp;gt;&lt;/code&gt;）有着极强的敏感度。用 XML 标签包裹代码和指令，不仅能提高准确率，还能&lt;strong&gt;减少解释性废话&lt;/strong&gt;。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-xml&#34; data-lang=&#34;xml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;system_instruction&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;你是一个极简主义的编程助手。请直接输出代码，不要解释，不要说“好的，我为你准备了以下代码”。
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/system_instruction&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;source_code&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;// 贴入你的核心代码
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/source_code&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;task&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;重构上面的代码，提高运行效率。
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/task&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;省流原理&lt;/strong&gt;：明确的结构让模型不需要在 Prompt 里猜测“哪里是代码，哪里是要求”，从而大大减少了模型的推理和多余的客套话（&amp;ldquo;Certainly! Here is&amp;hellip;&amp;rdquo; 也是要算 Token 的）。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Wistia视频下载方法</title>
      <link>https://lv-blog.pages.dev/posts/programming/some-tricks/how-to-download-wistia-videos/</link>
      <pubDate>Fri, 23 May 2025 20:26:17 +0800</pubDate>
      <guid>https://lv-blog.pages.dev/posts/programming/some-tricks/how-to-download-wistia-videos/</guid>
      <description>&lt;h2 id=&#34;自动插件不维护&#34;&gt;自动插件（不维护）&lt;/h2&gt;
&lt;p&gt;此处粘贴Wistia播放器右键获取的视频链接：&lt;/p&gt;
&lt;textarea id=&#34;input&#34;&gt;&lt;/textarea&gt;
&lt;br&gt;
&lt;button onclick=&#34;parseVideo()&#34;&gt;解析视频&lt;/button&gt;
&lt;div class=&#34;result&#34; id=&#34;output&#34;&gt;&lt;/div&gt;
&lt;h2 id=&#34;手动方法&#34;&gt;手动方法&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;在正在播放的视频上右键&lt;/strong&gt;
选择“复制链接（Copy link）”。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;从链接里找视频 ID&lt;/strong&gt;
你会看到类似：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;wvideo=tra6gsm6rl
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;这里的 &lt;code&gt;tra6gsm6rl&lt;/code&gt; 就是视频的 ID。&lt;/p&gt;
&lt;p&gt;如果链接里没有，也可以：
打开网页源代码（view source），搜索：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;hashedId=tra6gsm6rl
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;打开嵌入页面&lt;/strong&gt;
在浏览器里访问：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;http://fast.wistia.net/embed/iframe/ + 视频ID
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;比如：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;http://fast.wistia.net/embed/iframe/tra6gsm6rl
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;找真实视频文件地址&lt;/strong&gt;
在打开的页面源代码里搜索：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;优先找：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;&amp;#34;type&amp;#34;:&amp;#34;original&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;然后往下看一行，会有类似：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;&amp;#34;url&amp;#34;:&amp;#34;http://embed.wistia.com/deliveries/xxxxx.bin&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;如果没有 original，就找：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;&amp;#34;type&amp;#34;:&amp;#34;hd_mp4_video&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;下载视频&lt;/strong&gt;
把找到的链接复制出来，把后缀从：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;.bin
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;改成：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;.mp4
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;然后直接打开或下载就行。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;转载自：https://gist.github.com/szepeviktor/2a8a3ce8b32e2a67ca416ffd077553c5&lt;/p&gt;
&lt;style&gt;
   textarea {
  width: 100%;
  height: 140px;
  padding: 10px;
  font-size: 14px;
  box-sizing: border-box;
  border: 1.5px solid #d0cfc8;
  border-radius: 8px;
  background: #fff;
  color: #1a1a1a;
  font-family: inherit;
  resize: vertical;
  outline: none;
  transition: border-color 0.2s;
  line-height: 1.6;
}

textarea::placeholder {
  color: #aaa;
}

textarea:hover {
  border-color: #b0afa8;
}

textarea:focus {
  border-color: #534AB7;
  box-shadow: 0 0 0 3px rgba(83, 74, 183, 0.12);
}

.md-content button {
  margin-top: 10px;
  padding: 10px 20px;
  cursor: pointer;
  font-size: 14px;
  font-family: inherit;
  font-weight: 500;
  border: 1.5px solid #d0cfc8;
  border-radius: 8px;
  background: #fff;
  color: #1a1a1a;
  transition: background 0.15s, border-color 0.15s, transform 0.1s;
  outline: none;
}

.md-content button:hover {
  background: #f5f4f0;
  border-color: #999;
}

.md-content button:active {
  transform: scale(0.98);
  background: #eeede8;
}

.md-content button:focus-visible {
  box-shadow: 0 0 0 3px rgba(83, 74, 183, 0.18);
  border-color: #534AB7;
}
&lt;/style&gt;
&lt;script&gt;
async function parseVideo() {
  const input = document.getElementById(&#34;input&#34;).value;
  const output = document.getElementById(&#34;output&#34;);

  function extractVideoId(text) {
    let m = text.match(/wvideo=([a-zA-Z0-9]+)/);
    if (m) return m[1];

    m = text.match(/hashedId=([a-zA-Z0-9]+)/);
    if (m) return m[1];

    return null;
  }

  function extractVideoUrl(html) {
    let m = html.match(/&#34;type&#34;:&#34;original&#34;.*?&#34;url&#34;:&#34;(https?:\/\/[^&#34;]+)&#34;/);
    if (m) return m[1].replace(&#34;.bin&#34;, &#34;.mp4&#34;);

    m = html.match(/&#34;type&#34;:&#34;hd_mp4_video&#34;.*?&#34;url&#34;:&#34;(https?:\/\/[^&#34;]+)&#34;/);
    if (m) return m[1].replace(&#34;.bin&#34;, &#34;.mp4&#34;);

    return null;
  }

  output.innerHTML = &#34;⏳ 解析中...&#34;;

  const videoId = extractVideoId(input);

  if (!videoId) {
    output.innerHTML = &#34;❌ 没找到 wvideo 或 hashedId&#34;;
    return;
  }

  const embedUrl = `https://fast.wistia.net/embed/iframe/${videoId}`;

  try {
    const res = await fetch(embedUrl);
    const html = await res.text();

    const videoUrl = extractVideoUrl(html);

    if (!videoUrl) {
      output.innerHTML = &#34;❌ 没找到视频直链&#34;;
      return;
    }

    output.innerHTML = `
      &lt;div&gt;&lt;span class=&#34;label&#34;&gt;Video ID：&lt;/span&gt;${videoId}&lt;/div&gt;
      &lt;div style=&#34;margin-top:10px&#34;&gt;&lt;span class=&#34;label&#34;&gt;MP4 直链：&lt;/span&gt;&lt;/div&gt;
      &lt;div&gt;${videoUrl}&lt;/div&gt;
      &lt;br&gt;
      &lt;button onclick=&#34;navigator.clipboard.writeText(&#39;${videoUrl}&#39;)&#34;&gt;📋 复制链接&lt;/button&gt;
    `;

  } catch (e) {
    output.innerHTML = &#34;❌ 请求失败：&#34; + e.message;
  }
}
&lt;/script&gt;</description>
    </item>
  </channel>
</rss>
