<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type="text/xsl" href="https://leisiyu.dev/atom.xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-CN">
  <id>https://leisiyu.dev/</id>
  <title>Siyu Lei&amp;apos;s Blog</title>
  <subtitle>Siyu Lei&amp;apos;s Blog</subtitle>
  <updated>2026-09-05T05:12:52.196Z</updated>
  <generator>@vuepress/plugin-feed</generator>
  <link rel="self" href="https://leisiyu.dev/atom.xml"/>
  <link rel="alternate" href="https://leisiyu.dev/"/>
  <category term="技术分享"/>
  <category term="开源项目"/>
  <category term="日常"/>
  <category term="游戏"/>
  <entry>
    <title type="text">G502(X)通用射击游戏宏V2</title>
    <id>https://leisiyu.dev/articles/Ghub_Shoot_game_Macros.html</id>
    <link href="https://leisiyu.dev/articles/Ghub_Shoot_game_Macros.html"/>
    <updated>2026-09-05T05:11:46.000Z</updated>
    <summary type="html"><![CDATA[<p class="textkai">射击游戏G502/G502X通用宏</p>
]]></summary>
    <content type="html"><![CDATA[<p class="textkai">射击游戏G502/G502X通用宏</p>
<!-- more -->
<p>仅在G502X上测试过，使用G HUB版本为2025.2.687008。</p>
<p>必须安装G HUB，其他罗技鼠标可能在修改键位后兼容。</p>
<h3>简介</h3>
<p>通过鼠标滚轮左G10（-）右G11（+）来控制自动压枪力度</p>
<p>通过按住射击精度键G6的方式切换修改垂直/水平后座，按下以在控制台显示当前速率和工作状态，双击以重置默认值。</p>
<p>通过内存切换键G9开关此宏</p>
<p>基础代码借鉴自Bilibili@第一局永远tec-9</p>
<h3>关于版权</h3>
<p>原作者声明放弃版权公开，但此修改版保留版权并根据<a href="https://creativecommons.org/licenses/by-nc-sa/4.0/" target="_blank" rel="noopener noreferrer">署名-非商业性-相同方式分享 4.0 国际 CC BY-NC-SA 4.0</a>许可.</p>
<p>特对商业性使用定义：</p>
<p>未经作者明确许可，您不得出售、授权或以其他方式收取此代码的费用，包括但不限于销售软件或将其纳入商业产品产生盈利的部分（例如收费使用或者要求关注等行为）。</p>
<h3>代码</h3>
<div class="language-lua line-numbers-mode" data-highlighter="shiki" data-ext="lua" data-title="lua" style="--shiki-light:#383A42;--shiki-dark:#abb2bf;--shiki-light-bg:#FAFAFA;--shiki-dark-bg:#282c34"><pre class="shiki shiki-themes one-light one-dark-pro vp-code"><code><span class="line"><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF">EnablePrimaryMouseButtonEvents</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">(</span><span style="--shiki-light:#986801;--shiki-dark:#D19A66">1</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">)</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#A0A1A7;--shiki-light-font-style:italic;--shiki-dark:#7F848E;--shiki-dark-font-style:italic">-- ===== 用户可调参数（常量） =====</span></span>
<span class="line"><span style="--shiki-light:#A0A1A7;--shiki-light-font-style:italic;--shiki-dark:#7F848E;--shiki-dark-font-style:italic">-- 按键映射</span></span>
<span class="line"><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">KEY_TOGGLE</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">   = </span><span style="--shiki-light:#986801;--shiki-dark:#D19A66">9</span><span style="--shiki-light:#A0A1A7;--shiki-light-font-style:italic;--shiki-dark:#7F848E;--shiki-dark-font-style:italic">   -- 总开关（按一次切换 ON/OFF）</span></span>
<span class="line"><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">KEY_MODE</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">     = </span><span style="--shiki-light:#986801;--shiki-dark:#D19A66">5</span><span style="--shiki-light:#A0A1A7;--shiki-light-font-style:italic;--shiki-dark:#7F848E;--shiki-dark-font-style:italic">   -- 调整模式（按住进入水平调整，释放退出）</span></span>
<span class="line"><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">KEY_INCREASE</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF"> = </span><span style="--shiki-light:#986801;--shiki-dark:#D19A66">8</span><span style="--shiki-light:#A0A1A7;--shiki-light-font-style:italic;--shiki-dark:#7F848E;--shiki-dark-font-style:italic">   -- 增加速度（垂直或水平）</span></span>
<span class="line"><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">KEY_DECREASE</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF"> = </span><span style="--shiki-light:#986801;--shiki-dark:#D19A66">7</span><span style="--shiki-light:#A0A1A7;--shiki-light-font-style:italic;--shiki-dark:#7F848E;--shiki-dark-font-style:italic">   -- 降低速度（垂直或水平）</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#A0A1A7;--shiki-light-font-style:italic;--shiki-dark:#7F848E;--shiki-dark-font-style:italic">-- 速度初始值及步长</span></span>
<span class="line"><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">INIT_SPEED</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">   = </span><span style="--shiki-light:#986801;--shiki-dark:#D19A66">7.5</span><span style="--shiki-light:#A0A1A7;--shiki-light-font-style:italic;--shiki-dark:#7F848E;--shiki-dark-font-style:italic">   -- 默认垂直速度</span></span>
<span class="line"><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">INIT_HORI</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">    = </span><span style="--shiki-light:#986801;--shiki-dark:#D19A66">0.0</span><span style="--shiki-light:#A0A1A7;--shiki-light-font-style:italic;--shiki-dark:#7F848E;--shiki-dark-font-style:italic">    -- 默认水平速度</span></span>
<span class="line"><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">VERT_STEP</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">    = </span><span style="--shiki-light:#986801;--shiki-dark:#D19A66">1.5</span><span style="--shiki-light:#A0A1A7;--shiki-light-font-style:italic;--shiki-dark:#7F848E;--shiki-dark-font-style:italic">    -- 垂直调整步长</span></span>
<span class="line"><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">HORI_STEP</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">    = </span><span style="--shiki-light:#986801;--shiki-dark:#D19A66">0.5</span><span style="--shiki-light:#A0A1A7;--shiki-light-font-style:italic;--shiki-dark:#7F848E;--shiki-dark-font-style:italic">    -- 水平调整步长</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#A0A1A7;--shiki-light-font-style:italic;--shiki-dark:#7F848E;--shiki-dark-font-style:italic">-- 双击重置阈值（毫秒）</span></span>
<span class="line"><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">DOUBLE_CLICK_MS</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF"> = </span><span style="--shiki-light:#986801;--shiki-dark:#D19A66">300</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#A0A1A7;--shiki-light-font-style:italic;--shiki-dark:#7F848E;--shiki-dark-font-style:italic">-- 总开关默认状态true/false</span></span>
<span class="line"><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">k</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">     = </span><span style="--shiki-light:#986801;--shiki-dark:#D19A66">true</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#A0A1A7;--shiki-light-font-style:italic;--shiki-dark:#7F848E;--shiki-dark-font-style:italic">-- ===== 运行状态变量（勿动） =====</span></span>
<span class="line"><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">speed</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF"> = </span><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">INIT_SPEED</span></span>
<span class="line"><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">hori</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">  = </span><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">INIT_HORI</span></span>
<span class="line"><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">adjustHorizontal</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF"> = </span><span style="--shiki-light:#986801;--shiki-dark:#D19A66">false</span></span>
<span class="line"><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">lastPressMode</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF"> = </span><span style="--shiki-light:#986801;--shiki-dark:#D19A66">0</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#A0A1A7;--shiki-light-font-style:italic;--shiki-dark:#7F848E;--shiki-dark-font-style:italic">-- ============================================</span></span>
<span class="line"><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD">function</span><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF"> OnEvent</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">(</span><span style="--shiki-light:#383A42;--shiki-light-font-style:inherit;--shiki-dark:#ABB2BF;--shiki-dark-font-style:italic">event</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">, </span><span style="--shiki-light:#383A42;--shiki-light-font-style:inherit;--shiki-dark:#ABB2BF;--shiki-dark-font-style:italic">arg</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">)</span></span>
<span class="line"><span style="--shiki-light:#A0A1A7;--shiki-light-font-style:italic;--shiki-dark:#7F848E;--shiki-dark-font-style:italic">    -- OutputLogMessage("Event: " .. event .. " Arg: " .. arg .. "\n")</span></span>
<span class="line"><span style="--shiki-light:#A0A1A7;--shiki-light-font-style:italic;--shiki-dark:#7F848E;--shiki-dark-font-style:italic">    -- 需要调整按键删除面一行的“-- ”保存后点击即可获得当前按键代号，替换设置中的对应值即可</span></span>
<span class="line"><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD">    if</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF"> (</span><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">event</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF"> == </span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379">"MOUSE_BUTTON_PRESSED" </span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">and </span><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">arg</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF"> == </span><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">KEY_TOGGLE</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">) </span><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD">then</span></span>
<span class="line"><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">        k</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF"> = not </span><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">k</span></span>
<span class="line"><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD">        if</span><span style="--shiki-light:#E45649;--shiki-dark:#E06C75"> k</span><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD"> then</span><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF"> OutputLogMessage</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">(</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379">"ON</span><span style="--shiki-light:#0184BC;--shiki-dark:#56B6C2">\n</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379">"</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">) </span><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD">else</span><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF"> OutputLogMessage</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">(</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379">"OFF</span><span style="--shiki-light:#0184BC;--shiki-dark:#56B6C2">\n</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379">"</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">) </span><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD">end</span></span>
<span class="line"><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD">    end</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD">    if</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF"> (</span><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">event</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF"> == </span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379">"MOUSE_BUTTON_PRESSED" </span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">and </span><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">arg</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF"> == </span><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">KEY_MODE</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">) </span><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD">then</span></span>
<span class="line"><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD">        local</span><span style="--shiki-light:#E45649;--shiki-dark:#E06C75"> currentTime</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF"> = </span><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF">GetRunningTime</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">()</span></span>
<span class="line"><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD">        if</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF"> (</span><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">currentTime</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF"> - </span><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">lastPressMode</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF"> &lt; </span><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">DOUBLE_CLICK_MS</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">) </span><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD">then</span></span>
<span class="line"><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">            speed</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF"> = </span><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">INIT_SPEED</span></span>
<span class="line"><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">            hori</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">  = </span><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">INIT_HORI</span></span>
<span class="line"><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">            adjustHorizontal</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF"> = </span><span style="--shiki-light:#986801;--shiki-dark:#D19A66">false</span></span>
<span class="line"><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF">            OutputLogMessage</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">(</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379">"Reset to default: vertical=%.1f, horizontal=%.1f</span><span style="--shiki-light:#0184BC;--shiki-dark:#56B6C2">\n</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379">"</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">, </span><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">INIT_SPEED</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">, </span><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">INIT_HORI</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">)</span></span>
<span class="line"><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">            lastPressMode</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF"> = </span><span style="--shiki-light:#986801;--shiki-dark:#D19A66">0</span></span>
<span class="line"><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD">        else</span></span>
<span class="line"><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">            adjustHorizontal</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF"> = </span><span style="--shiki-light:#986801;--shiki-dark:#D19A66">true</span></span>
<span class="line"><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF">            OutputLogMessage</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">(</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379">"Horizontal adjustment mode activated</span><span style="--shiki-light:#0184BC;--shiki-dark:#56B6C2">\n</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379">"</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">)</span></span>
<span class="line"><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">            lastPressMode</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF"> = </span><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">currentTime</span></span>
<span class="line"><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD">        end</span></span>
<span class="line"><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD">    end</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD">    if</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF"> (</span><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">event</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF"> == </span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379">"MOUSE_BUTTON_RELEASED" </span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">and </span><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">arg</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF"> == </span><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">KEY_MODE</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">) </span><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD">then</span></span>
<span class="line"><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">        adjustHorizontal</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF"> = </span><span style="--shiki-light:#986801;--shiki-dark:#D19A66">false</span></span>
<span class="line"><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF">        OutputLogMessage</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">(</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379">"Current vertical speed: %.1f</span><span style="--shiki-light:#0184BC;--shiki-dark:#56B6C2">\n</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379">"</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">, </span><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">speed</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">)</span></span>
<span class="line"><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF">        OutputLogMessage</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">(</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379">"Current horizontal speed: %.1f</span><span style="--shiki-light:#0184BC;--shiki-dark:#56B6C2">\n</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379">"</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">, </span><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">hori</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">)</span></span>
<span class="line"><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD">        if</span><span style="--shiki-light:#E45649;--shiki-dark:#E06C75"> k</span><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD"> then</span><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF"> OutputLogMessage</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">(</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379">"ON</span><span style="--shiki-light:#0184BC;--shiki-dark:#56B6C2">\n</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379">"</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">) </span><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD">else</span><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF"> OutputLogMessage</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">(</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379">"OFF</span><span style="--shiki-light:#0184BC;--shiki-dark:#56B6C2">\n</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379">"</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">) </span><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD">end</span></span>
<span class="line"><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD">    end</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD">    if</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF"> (</span><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">event</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF"> == </span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379">"MOUSE_BUTTON_PRESSED" </span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">and </span><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">arg</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF"> == </span><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">KEY_INCREASE</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">) </span><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD">then</span></span>
<span class="line"><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD">        if</span><span style="--shiki-light:#E45649;--shiki-dark:#E06C75"> adjustHorizontal</span><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD"> then</span></span>
<span class="line"><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">            hori</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF"> = </span><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">hori</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF"> + </span><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">HORI_STEP</span></span>
<span class="line"><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF">            OutputLogMessage</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">(</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379">"Horizontal speed increased to: %.1f</span><span style="--shiki-light:#0184BC;--shiki-dark:#56B6C2">\n</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379">"</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">, </span><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">hori</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">)</span></span>
<span class="line"><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD">        else</span></span>
<span class="line"><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">            speed</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF"> = </span><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">speed</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF"> + </span><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">VERT_STEP</span></span>
<span class="line"><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF">            OutputLogMessage</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">(</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379">"Vertical speed increased to: %.1f</span><span style="--shiki-light:#0184BC;--shiki-dark:#56B6C2">\n</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379">"</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">, </span><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">speed</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">)</span></span>
<span class="line"><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD">        end</span></span>
<span class="line"><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD">    end</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD">    if</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF"> (</span><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">event</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF"> == </span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379">"MOUSE_BUTTON_PRESSED" </span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">and </span><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">arg</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF"> == </span><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">KEY_DECREASE</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">) </span><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD">then</span></span>
<span class="line"><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD">        if</span><span style="--shiki-light:#E45649;--shiki-dark:#E06C75"> adjustHorizontal</span><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD"> then</span></span>
<span class="line"><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">            hori</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF"> = </span><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">hori</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF"> - </span><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">HORI_STEP</span></span>
<span class="line"><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF">            OutputLogMessage</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">(</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379">"Horizontal speed decreased to: %.1f</span><span style="--shiki-light:#0184BC;--shiki-dark:#56B6C2">\n</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379">"</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">, </span><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">hori</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">)</span></span>
<span class="line"><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD">        else</span></span>
<span class="line"><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">            speed</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF"> = </span><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">speed</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF"> - </span><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">VERT_STEP</span></span>
<span class="line"><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF">            OutputLogMessage</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">(</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379">"Vertical speed decreased to: %.1f</span><span style="--shiki-light:#0184BC;--shiki-dark:#56B6C2">\n</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379">"</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">, </span><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">speed</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">)</span></span>
<span class="line"><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD">        end</span></span>
<span class="line"><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD">    end</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD">    if</span><span style="--shiki-light:#E45649;--shiki-dark:#E06C75"> k</span><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD"> then</span></span>
<span class="line"><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF">        Sleep</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">(</span><span style="--shiki-light:#986801;--shiki-dark:#D19A66">5</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">)</span></span>
<span class="line"><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD">        if</span><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF"> IsMouseButtonPressed</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">(</span><span style="--shiki-light:#986801;--shiki-dark:#D19A66">1</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">) </span><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD">then</span></span>
<span class="line"><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD">            if</span><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF"> IsMouseButtonPressed</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">(</span><span style="--shiki-light:#986801;--shiki-dark:#D19A66">3</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">) </span><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD">then</span></span>
<span class="line"><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF">                MoveMouseRelative</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">(</span><span style="--shiki-light:#0184BC;--shiki-dark:#56B6C2">math.floor</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">(</span><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">hori</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF"> + </span><span style="--shiki-light:#986801;--shiki-dark:#D19A66">0.5</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">), </span><span style="--shiki-light:#0184BC;--shiki-dark:#56B6C2">math.floor</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">(</span><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">speed</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF"> + </span><span style="--shiki-light:#986801;--shiki-dark:#D19A66">0.5</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">))</span></span>
<span class="line"><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD">                repeat</span></span>
<span class="line"><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF">                    Sleep</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">(</span><span style="--shiki-light:#986801;--shiki-dark:#D19A66">5</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">)</span></span>
<span class="line"><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF">                    MoveMouseRelative</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">(</span><span style="--shiki-light:#0184BC;--shiki-dark:#56B6C2">math.floor</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">(</span><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">hori</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF"> + </span><span style="--shiki-light:#986801;--shiki-dark:#D19A66">0.5</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">), </span><span style="--shiki-light:#0184BC;--shiki-dark:#56B6C2">math.floor</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">(</span><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">speed</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF"> + </span><span style="--shiki-light:#986801;--shiki-dark:#D19A66">0.5</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">))</span></span>
<span class="line"><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD">                until</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF"> not </span><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF">IsMouseButtonPressed</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">(</span><span style="--shiki-light:#986801;--shiki-dark:#D19A66">1</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">) or not </span><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF">IsMouseButtonPressed</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">(</span><span style="--shiki-light:#986801;--shiki-dark:#D19A66">3</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">)</span></span>
<span class="line"><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD">            end</span></span>
<span class="line"><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD">        end</span></span>
<span class="line"><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD">    end</span></span>
<span class="line"><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD">end</span></span></code></pre>
<div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>本文为作者 Siyu Lei 原创内容，转载请注明出处并附上原文链接。（leisiyu.dev）</p>
]]></content>
    <category term="技术分享"/>
    <published>2026-06-24T00:00:00.000Z</published>
  </entry>
  <entry>
    <title type="text">epilogue —— 桌面端 AI 文件工作流</title>
    <id>https://leisiyu.dev/articles/epilogue.html</id>
    <link href="https://leisiyu.dev/articles/epilogue.html"/>
    <updated>2026-09-05T05:11:46.000Z</updated>
    <summary type="html"><![CDATA[<p class="textkai"><strong>files, remembered.</strong> 不收集任何信息，所有数据留在本机。</p>
]]></summary>
    <content type="html"><![CDATA[<p class="textkai"><strong>files, remembered.</strong> 不收集任何信息，所有数据留在本机。</p>
<!-- more -->
<h2>是什么</h2>
<p><a href="https://github.com/lsy-404/epilogue" target="_blank" rel="noopener noreferrer">epilogue</a> 是一款运行在 macOS / Windows / Linux 的桌面端 AI 文件工作流应用。核心设计理念是「本地优先」——配置、索引、向量全部存在本机，音视频转写默认本机完成，音频不出设备。</p>
<h2>能做什么</h2>
<p><strong>清理</strong>：定期扫描长期未动的过期文件，AI 按你的自然语言习惯给出归位建议，逐项确认后移动。理解成套内容（课件系列、便携软件、剧集）并整体归档，能利用目标文件夹的多层结构。</p>
<p><strong>寻物</strong>：「上学期的实验报告放哪了？」一句话找回文件——关键字 / 相似度 / AI 问答三种模式，支持用文字描述找图片，理解「去年」「上周」等相对时间。</p>
<p><strong>助手</strong>：内置对话智能体，可以改设置、把习惯记成规则（「以后发票都放 财务/」）、查文件。</p>
<p><strong>可选自动化</strong>（默认关闭，仅可手动开启）：Solo 模式定时自动归类免审批；允许 AI 将无价值临时文件移入系统回收站。</p>
<h2>AI 多 Provider 灾备架构</h2>
<p>每类 AI 能力都是一个<strong>灾备列表</strong>（拖动排序、行级启用、一键测试），从上到下依次尝试：</p>
<p>| 能力 | 内置预设 |
|</p>
]]></content>
    <category term="开源项目"/>
    <published>2026-06-11T00:00:00.000Z</published>
  </entry>
  <entry>
    <title type="text">Waline On Worker —— Cloudflare Workers 评论系统</title>
    <id>https://leisiyu.dev/articles/Waline_On_Worker.html</id>
    <link href="https://leisiyu.dev/articles/Waline_On_Worker.html"/>
    <updated>2026-09-05T05:11:46.000Z</updated>
    <summary type="html"><![CDATA[<p class="textkai">Waline 评论系统的 Cloudflare Workers 实现，免服务器，免费部署。</p>
]]></summary>
    <content type="html"><![CDATA[<p class="textkai">Waline 评论系统的 Cloudflare Workers 实现，免服务器，免费部署。</p>
<!-- more -->
<h2>是什么</h2>
<p><a href="https://github.com/lsy-404/Waline_On_Worker" target="_blank" rel="noopener noreferrer">Waline On Worker</a> 是将开源评论系统 <a href="https://waline.js.org/" target="_blank" rel="noopener noreferrer">Waline</a> 完整移植到 Cloudflare Workers 平台的后端实现，使用 D1（SQLite）作为数据存储。</p>
<p>相比官方 Vercel 部署方案，它：</p>
<ul>
<li>无需独立服务器，运行在 Cloudflare 边缘网络</li>
<li>免费额度充足，适合个人博客</li>
<li>完全兼容 <code>@waline/client</code> 前端和 <code>@waline/admin</code> 管理面板</li>
</ul>
<h2>技术栈</h2>
<p>| 项目 | 选型 |
|</p>
]]></content>
    <category term="开源项目"/>
    <published>2026-06-05T00:00:00.000Z</published>
  </entry>
  <entry>
    <title type="text">UofT-Tools —— 多伦多大学学生工具集</title>
    <id>https://leisiyu.dev/articles/UofT_Tools.html</id>
    <link href="https://leisiyu.dev/articles/UofT_Tools.html"/>
    <updated>2026-09-05T05:11:46.000Z</updated>
    <summary type="html"><![CDATA[<p class="textkai">非官方开源项目，为多大学生提供的实用工具合集。</p>
]]></summary>
    <content type="html"><![CDATA[<p class="textkai">非官方开源项目，为多大学生提供的实用工具合集。</p>
<!-- more -->
<h2>是什么</h2>
<p><a href="https://uoft.voidcarve.com" target="_blank" rel="noopener noreferrer">UofT-Tools</a> 是为多伦多大学（University of Toronto）学生提供的开源工具集，部署于 uoft.voidcarve.com。</p>
<p><strong>声明</strong>：本项目为独立学生项目，与多伦多大学官方无任何关联，重要信息请以大学官方网站为准。</p>
<h2>包含工具</h2>
<ul>
<li><strong>课程日历</strong>：自动同步学期课程与考试时间表，支持导入到 iCal / Google Calendar</li>
<li><strong>学期规划器</strong>：课程选择与时间规划辅助工具</li>
</ul>
<h2>技术架构</h2>
<p>| 层级 | 选型 |
|</p>
]]></content>
    <category term="开源项目"/>
    <published>2026-04-03T00:00:00.000Z</published>
  </entry>
  <entry>
    <title type="text">亲友画的神仙无偿迷迭香</title>
    <id>https://leisiyu.dev/daliy/rosmontis_heizi.html</id>
    <link href="https://leisiyu.dev/daliy/rosmontis_heizi.html"/>
    <updated>2026-09-05T05:11:46.000Z</updated>
    <summary type="text">感谢回归线的老师@黒子画的无偿迷迭香，简直就是仙品~</summary>
    <content type="html"><![CDATA[<!-- more -->
<p>感谢回归线的老师@黒子画的无偿迷迭香，简直就是仙品~</p>
<p></p>
<p></p>
<p></p>
<p></p>
]]></content>
    <category term="日常"/>
    <published>2026-02-06T00:00:00.000Z</published>
  </entry>
  <entry>
    <title type="text">Timberborn Mods Universal Translate —— 海狸浮生记 Mod AI 翻译框架 v2</title>
    <id>https://leisiyu.dev/articles/Timberborn_Mods_Universal_Translate.html</id>
    <link href="https://leisiyu.dev/articles/Timberborn_Mods_Universal_Translate.html"/>
    <updated>2026-09-05T05:11:46.000Z</updated>
    <summary type="html"><![CDATA[<p class="textkai">海狸浮生记 Steam 创意工坊 Mod AI 翻译框架，支持多语言自动化本地化。</p>
]]></summary>
    <content type="html"><![CDATA[<p class="textkai">海狸浮生记 Steam 创意工坊 Mod AI 翻译框架，支持多语言自动化本地化。</p>
<!-- more -->
<h2>是什么</h2>
<p><a href="https://github.com/lsy-404/Timberborn_Mods_Universal_Translate" target="_blank" rel="noopener noreferrer">Timberborn Mods Universal Translate</a> 是为 Steam 游戏《海狸浮生记（Timberborn）》的创意工坊 Mod 提供的 AI 自动翻译框架（v2 版本），目标是让社区 Mod 能快速支持多语言。</p>
<p>这是 <a href="https://github.com/lsy-404/Timberborn_Mods_zhCN_Translate" target="_blank" rel="noopener noreferrer">v1 版本（zhCN）</a> 的完整重写，从仅支持中文汉化升级为通用多语言框架。</p>
<h2>特性</h2>
<ul>
<li><strong>多语言支持</strong>：不限于中文，可扩展至任意语言</li>
<li><strong>AI 驱动翻译</strong>：批量自动处理 Mod 本地化文件</li>
<li><strong>多版本自动支持</strong>：自动适配游戏不同版本的 Mod</li>
<li><strong>自动化发布流程</strong>：重构了构建与发布脚本，CI/CD 全自动</li>
<li><strong>持续更新</strong>：订阅 Steam 创意工坊后可自动获取最新翻译</li>
</ul>
<h2>进展</h2>
<p>v2 框架已发布并持续迭代（当前版本 v2026.6.x），正在推进数据 AI 聚合更新功能。</p>
<p><a href="https://github.com/lsy-404/Timberborn_Mods_Universal_Translate" target="_blank" rel="noopener noreferrer">GitHub →</a></p>
<p>本文为作者 Siyu Lei 原创内容，转载请注明出处并附上原文链接。（leisiyu.dev）</p>
]]></content>
    <category term="开源项目"/>
    <published>2025-11-21T00:00:00.000Z</published>
  </entry>
  <entry>
    <title type="text">V宇宙词站（LRC）</title>
    <id>https://leisiyu.dev/articles/LRC.html</id>
    <link href="https://leisiyu.dev/articles/LRC.html"/>
    <updated>2026-09-05T05:11:46.000Z</updated>
    <summary type="html"><![CDATA[<p class="textkai">虚拟歌姬专辑信息导航与 LRC 歌词文件储存共享仓库。</p>
]]></summary>
    <content type="html"><![CDATA[<p class="textkai">虚拟歌姬专辑信息导航与 LRC 歌词文件储存共享仓库。</p>
<!-- more -->
<h2>是什么</h2>
<p><a href="https://lrc.voidcarve.com" target="_blank" rel="noopener noreferrer">V宇宙词站</a> 是专注于 V 家（虚拟歌姬）专辑的歌词收录与共享站点，通过 GitHub 仓库进行版本管理与社区协作维护。</p>
<h2>功能</h2>
<ul>
<li><strong>专辑导航</strong>：按专辑分类整理，支持快速检索</li>
<li><strong>多种下载方式</strong>：可下载全库、单专辑包或单首歌曲</li>
<li><strong>LRC 格式</strong>：标准歌词格式，兼容主流播放器与歌词插件</li>
<li><strong>持续收录</strong>：目前已收录数十张专辑，涵盖言和、洛天依等 V 家歌手</li>
</ul>
<h2>已收录专辑（部分）</h2>
<p>SEVEN、溯流、维·爱 L'amouЯ、光年回响、九光年宇宙、Twilights EP、深空余音、终梦 Journeyed on Everdream、夏浪派对 2025、秘宝旅人 II Polaris……</p>
<p>完整列表见 <a href="https://github.com/lsy-404/LRC" target="_blank" rel="noopener noreferrer">GitHub 仓库</a>。</p>
<p><a href="https://github.com/lsy-404/LRC" target="_blank" rel="noopener noreferrer">GitHub →</a> | <a href="https://lrc.voidcarve.com" target="_blank" rel="noopener noreferrer">站点 →</a></p>
<p>本文为作者 Siyu Lei 原创内容，转载请注明出处并附上原文链接。（leisiyu.dev）</p>
]]></content>
    <category term="开源项目"/>
    <published>2025-09-19T00:00:00.000Z</published>
  </entry>
  <entry>
    <title type="text">【避雷】成智留学学签续签欺诈</title>
    <id>https://leisiyu.dev/daliy/ilearnincanada_cheat.html</id>
    <link href="https://leisiyu.dev/daliy/ilearnincanada_cheat.html"/>
    <updated>2026-09-05T05:11:46.000Z</updated>
    <summary type="html"><![CDATA[<p>微信ID：iLiCJohn</p>
<p>微信名称：John 🇨🇦 成智留学^<sup>_</sup>^</p>
<p>收款邮箱：John.lee@ilearnincanada.com</p>
]]></summary>
    <content type="html"><![CDATA[<p>微信ID：iLiCJohn</p>
<p>微信名称：John 🇨🇦 成智留学^<sup>_</sup>^</p>
<p>收款邮箱：John.lee@ilearnincanada.com</p>
<!-- more -->
<p>事件概述：</p>
<p>本人在与微信用户iLiCJohn（自称“成智留学”）协商学签续签服务过程中，遭遇其不透明收费、恶意扣款及拒绝退款的行为。对方在初期报价330加币全包服务，却在办理过程中额外索要150加币“签证申报费”，并在我提出质疑并协商取消服务时，以“时间已消耗”为由拒绝退款，甚至单方面终止服务并拉黑客户。</p>
<h2>事件详细经过：</h2>
<h3>本人2025年3月在微信上联系iLiCJohn，询问学签续签服务价格。</h3>
<p>对方明确表示：“如果是朋友推荐的，服务费用是$330”，并未提及任何额外费用。</p>
<p>基于这一报价，本人通过e-transfer于7月向John.lee@ilearnincanada.com转账330加币。</p>
<p>对方告知我尚未进入加拿大境内，无法继续办理可以退款，我出于信任告知“你先收着吧，省的到时候再折腾了”。</p>
<h3>2025年8月24日办理过程中突然加价</h3>
<p>在提供全部所需身份材料后，对方突然告知330加币不包含“移民局申报费”150加币，要求额外支付。</p>
<p>本人提出质疑，认为价格不透明且总额过高（合计480加币，常见中介服务费在150~200加币之间），并尝试协商取消服务并退款。</p>
<h3>恶意拒绝退款并威胁</h3>
<p>对方以“时间已消耗”为由拒绝退款，声称“已经没有退款可能”。</p>
<p>甚至在本人提出协商方案（退300加币，扣30加币作为时间成本）后，对方态度强硬，单方面终止服务并称“不要再找我，你已经不是我们的客户”。并且拒绝继续进行办理。</p>
<p>对方没有提供合同，并且有充足理由怀疑其漏税。</p>
<p></p>
<h2>最终结果</h2>
<p>截至于2025年8月26日，服务未完成，330加币款项未退还，对方拒绝进一步沟通及继续办理。</p>
<p>已向加拿大反欺诈系统与微信安全进行报告</p>
<p>本人特意公开此事以避免更多人受害，网络交易有风险，转账需谨慎！</p>
]]></content>
    <published>2025-08-24T00:00:00.000Z</published>
  </entry>
  <entry>
    <title type="text">G Hub彩虹六号不切换配置文件修复</title>
    <id>https://leisiyu.dev/articles/GHubRainbowSixSiege.html</id>
    <link href="https://leisiyu.dev/articles/GHubRainbowSixSiege.html"/>
    <updated>2026-09-05T05:11:46.000Z</updated>
    <summary type="html"><![CDATA[<p class="textkai">全网首发详细修复教程</p>
]]></summary>
    <content type="html"><![CDATA[<p class="textkai">全网首发详细修复教程</p>
<!-- more -->
<h2>1. 准备工作</h2>
<p>需要任何可以编辑DB文件的编辑器，如果没有可以下载<a href="https://sqlitebrowser.org/dl/" target="_blank" rel="noopener noreferrer">DB Browser for SQLite</a>（选择no installer便携版本）</p>
<p>以下教程基于DB Browser for SQLite编写，其他编辑器类似</p>
<p>解压压缩包，打开<code>DB Browser for SQLite.exe</code></p>
<p>退出G HUB</p>
<h2>2. 打开G Hub settings.db</h2>
<p>按下 <code>ctrl + O</code> - 地址栏输入：<code>C:%homepath%\AppData\Local\LGHUB\</code>并回车</p>
<p>先右键<code>settings.db</code>，复制，粘贴到任何安全位置（备份）</p>
<p>选择文件<code>settings.db</code>并打开</p>
<h2>3. 打开保存的配置</h2>
<p>切换到<code>浏览数据（B）</code>点击id为1的对应file的空（显示为<code>{...</code>）</p>
<p>在右侧窗口会显示数据，选中窗口</p>
<h2>4. 移除错误数据</h2>
<p>按下<code>ctrl + F</code>搜索rainbow关键词</p>
<p>删除所有在<code>APPLICATION_NAME_DESKTOP</code>的rainbow six siege文件，最后应该看起来像是<code>[]</code>，如果有非rainbow six的其他项目，请确保最后一条后面没有接<code>,</code></p>
<h2>5. 写入更改</h2>
<p>点击id为1的对应_date_created，此时询问是否保存，点击保存</p>
<p>然后点击上面的<code>写入更改（W）</code>，关闭<code>DB Browser for SQLite</code></p>
<h2>6. 重新启动G HUB</h2>
<p>从开始菜单中重新启动G HUB，正常情况下不会跳数据损坏，如果跳了让他自己修复，修不了就把备份文件替换回去。</p>
<p>搞不懂可以查Json语法或者问ChatGPT</p>
<h2>7. ENJOY GAME</h2>
<p>感谢<a href="https://www.reddit.com/r/LogitechG/comments/ysef0i/g_hub_not_switching_profiles" target="_blank" rel="noopener noreferrer">G HUB not switching profiles - Reddit</a>提到的修复config数据库的解决方案</p>
<p>但是原文提到的太模糊，没有详细的修复步骤</p>
<p><s>G HUB这TM是哪个实习生写出来的Bug，甚至是GUI界面是完全不可见的</s></p>
<p>本文为作者 Siyu Lei 原创内容，转载请注明出处并附上原文链接。（leisiyu.dev）</p>
]]></content>
    <category term="技术分享"/>
    <published>2024-12-04T00:00:00.000Z</published>
  </entry>
  <entry>
    <title type="text">Outlook增强指南</title>
    <id>https://leisiyu.dev/articles/Outlook.html</id>
    <link href="https://leisiyu.dev/articles/Outlook.html"/>
    <updated>2026-09-05T05:11:46.000Z</updated>
    <summary type="html"><![CDATA[<p class="textkai">桌面版后台常驻&amp;禁用垃圾邮件</p>
]]></summary>
    <content type="html"><![CDATA[<p class="textkai">桌面版后台常驻&amp;禁用垃圾邮件</p>
<!-- more -->
<h2>classic版本通过插件实现后台常驻，保持后台运行</h2>
<p>微软的谜之设定，outlook没法设置成后台常驻，经常出现手机都收到邮件了但是电脑还得手动去看的问题。</p>
<p>目前的解决方法只有KeepOutlookRunning（开源免费）/QuickTweaks（收费，$19.95）两个插件。</p>
<p>开源插件KeepOutlookRunning有在office更新后掉插件的问题，故在此基础上二次开发KeepOutlookRunningInstaller，通过注册office和插件dll来避免问题。</p>
<p>可以从<a href="https://github.com/lsy-404/KeepOutlookRunningInstaller/releases" target="_blank" rel="noopener noreferrer">Github</a>/<a href="https://icloud.wuyilingwei.com/Release/" target="_blank" rel="noopener noreferrer">个人网盘</a>获取</p>
<p>双击安装即可，安装时需要联网访问Github获取DLL</p>
<p>QuickTweaks收费，$19.95，不建议。</p>
<h2>通过Microsoft Power Automate禁用垃圾邮件功能</h2>
<p>微软很神奇的强制为所有个人/工作邮箱使用它那个误判贼高的垃圾邮件过滤系统，导致翻垃圾文件夹是必要的，那么这个功能除了让我丢通知没有一点作用。<s>他妈的你怎么连多大自己的邮件都拦</s></p>
<p>还没有给关闭的选项，只能通过微软自家的自动化变相来实现。</p>
<p>登录 <a href="https://make.powerautomate.com/" target="_blank" rel="noopener noreferrer">power automate</a></p>
<p>创建-Outlook-新电子邮件到达时</p>
<p>授予相关邮箱访问授权</p>
<p>选择新电子邮件到达时-文件夹（垃圾邮件）</p>
<p>添加操作移动电子邮件-消息ID（选择上一步的ID）-文件夹（收件箱）</p>
<p>保存即可</p>
<p>这样会在垃圾邮件文件夹有新邮件的时候自动提出到收件箱，当然是比直接收邮件略慢几秒的。</p>
<p>Microsoft Power Automate也是微软自家的功能，理论上不存在说安全问题。</p>
<p>本文为作者 Siyu Lei 原创内容，转载请注明出处并附上原文链接。（leisiyu.dev）</p>
]]></content>
    <category term="技术分享"/>
    <published>2024-11-27T00:00:00.000Z</published>
  </entry>
  <entry>
    <title type="text">通过GH Action自动更新Waline</title>
    <id>https://leisiyu.dev/articles/Waline_Update.html</id>
    <link href="https://leisiyu.dev/articles/Waline_Update.html"/>
    <updated>2026-09-05T05:11:46.000Z</updated>
    <summary type="html"><![CDATA[<p class="textkai">每次Waline都要跳有更新了，一般也是兼容更新，可能还会有安全修复，跟上肯定属于没坏处那种，故想了个办法可以自动更新。</p>
<h2>通过github仓库更新来触发vercel更新</h2>
<h3>1. 确保你的Vercel Project和仓库相连</h3>
<p>如果没有相连可以手动创建仓库连接</p>
<h3>2. Package.json 更改为最新版本</h3>
<p>这样可以省去填版本号的麻烦，不用workflow也可以配置一个</p>
<p>在package.json，改为：</p>
<div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" data-title="json" style="--shiki-light:#383A42;--shiki-dark:#abb2bf;--shiki-light-bg:#FAFAFA;--shiki-dark-bg:#282c34"><pre class="shiki shiki-themes one-light one-dark-pro vp-code"><code><span class="line"><span style="--shiki-light:#50A14F;--shiki-dark:#98C379">"@waline/vercel"</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">: </span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379">"latest"</span></span></code></pre>
<div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0"><div class="line-number"></div></div></div>]]></summary>
    <content type="html"><![CDATA[<p class="textkai">每次Waline都要跳有更新了，一般也是兼容更新，可能还会有安全修复，跟上肯定属于没坏处那种，故想了个办法可以自动更新。</p>
<h2>通过github仓库更新来触发vercel更新</h2>
<h3>1. 确保你的Vercel Project和仓库相连</h3>
<p>如果没有相连可以手动创建仓库连接</p>
<h3>2. Package.json 更改为最新版本</h3>
<p>这样可以省去填版本号的麻烦，不用workflow也可以配置一个</p>
<p>在package.json，改为：</p>
<div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" data-title="json" style="--shiki-light:#383A42;--shiki-dark:#abb2bf;--shiki-light-bg:#FAFAFA;--shiki-dark-bg:#282c34"><pre class="shiki shiki-themes one-light one-dark-pro vp-code"><code><span class="line"><span style="--shiki-light:#50A14F;--shiki-dark:#98C379">"@waline/vercel"</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">: </span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379">"latest"</span></span></code></pre>
<div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0"><div class="line-number"></div></div></div><h3>3. Workflow触发</h3>
<p>已权限最小化，仅申请contents: write（提交commit必要），不需要额外的token。由于有提交，action会自动保活，不会出现半年自动禁用的问题。</p>
<p>原理是通过有write权限的GITHUB_TOKEN提交一个完全空白的commit，触发vercel自动部署。</p>
<p>默认cron定时为一个月。</p>
<p>新建文件/.github/Auto_update.yml：</p>
<div class="language-yml line-numbers-mode" data-highlighter="shiki" data-ext="yml" data-title="yml" style="--shiki-light:#383A42;--shiki-dark:#abb2bf;--shiki-light-bg:#FAFAFA;--shiki-dark-bg:#282c34"><pre class="shiki shiki-themes one-light one-dark-pro vp-code"><code><span class="line"><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">name</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">: </span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379">Trigger Vercel Deployment</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#986801;--shiki-dark:#D19A66">on</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">:</span></span>
<span class="line"><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">  schedule</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">:</span></span>
<span class="line"><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">    - </span><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">cron</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">: </span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379">'0 0 1 * *'</span></span>
<span class="line"><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">  workflow_dispatch</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">:</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">permissions</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">:</span></span>
<span class="line"><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">  contents</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">: </span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379">write</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">jobs</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">:</span></span>
<span class="line"><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">  trigger-vercel</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">:</span></span>
<span class="line"><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">    runs-on</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">: </span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379">ubuntu-latest</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">    steps</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">:</span></span>
<span class="line"><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">    - </span><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">name</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">: </span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379">Checkout repository</span></span>
<span class="line"><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">      uses</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">: </span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379">actions/checkout@v3</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">    - </span><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">name</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">: </span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379">Configure Git</span></span>
<span class="line"><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">      run</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">: </span><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD">|</span></span>
<span class="line"><span style="--shiki-light:#50A14F;--shiki-dark:#98C379">        git config user.name "github-actions[bot]"</span></span>
<span class="line"><span style="--shiki-light:#50A14F;--shiki-dark:#98C379">        git config user.email "github-actions[bot]@users.noreply.github.com"</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">    - </span><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">name</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">: </span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379">Create an empty commit</span></span>
<span class="line"><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">      run</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">: </span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379">git commit --allow-empty -m "Trigger Vercel deployment"</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">    - </span><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">name</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">: </span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379">Push changes</span></span>
<span class="line"><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">      run</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">: </span><span style="--shiki-light:#A626A4;--shiki-dark:#C678DD">|</span></span>
<span class="line"><span style="--shiki-light:#50A14F;--shiki-dark:#98C379">        git remote set-url origin https://x-access-token:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}.git</span></span>
<span class="line"><span style="--shiki-light:#50A14F;--shiki-dark:#98C379">        git push origin HEAD</span></span></code></pre>
<div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h2>另外的思路</h2>
<p>这些思路理论上可行，但由于麻烦/权限管理问题没尝试。</p>
<ul>
<li>
<p>通过vercel.json中配置定时任务去触发，由于不太搞得清楚api调用方式没搞。</p>
</li>
<li>
<p>通过Action直接发送vercel部署命令，由于涉及到额外的token权限管理，加之相比起交白commit好像没啥特别的优势，白白增加配置的复杂度和增加安全隐患（毕竟再怎么说是长期token）。</p>
</li>
</ul>
<p>本文为作者 Siyu Lei 原创内容，转载请注明出处并附上原文链接。（leisiyu.dev）</p>
]]></content>
    <category term="技术分享"/>
    <published>2024-11-26T00:00:00.000Z</published>
  </entry>
  <entry>
    <title type="text">回归线特别访谈与森空岛岛友茶话会的一些对比</title>
    <id>https://leisiyu.dev/daliy/AneotAndSkd.html</id>
    <link href="https://leisiyu.dev/daliy/AneotAndSkd.html"/>
    <updated>2026-09-05T05:11:46.000Z</updated>
    <summary type="html"><![CDATA[<p>这是不是未免同步率太高了一点</p>
]]></summary>
    <content type="html"><![CDATA[<p>这是不是未免同步率太高了一点</p>
<!-- more -->
<h2>写在前面</h2>
<p>在此，我首先为可能占用了大家宝贵的时间、牺牲了大家的阅读体验、影响了大家的好心情道歉，各位如果不喜欢还请忽略本文。不过有一点无需担心回归线Staff各司其职，本文的写作不会影响杂志制作进度，近期延期主要原因是春节期间不少Staff都有事情，所以进度会慢一些。</p>
<p>我能理解到在广阔的创作领域内，灵感的交汇和想法的相似是自然而然的现象。然而，当发现官方栏目与我们同人作品相似的程度似乎<strong>有点点</strong>超出了普通灵感相遇的范畴。</p>
<p>我们投入时间、精力，乃至心血，仅仅是为了表达对原作的热爱和对同好之间分享的喜悦，然而这些付出不仅往往得不到应有的回报，甚至会被不当借鉴或商用。虽然我们有捐赠收益、B站激励，虽顽子也曾打赏百来元。但这些远远不够负担参展、免费发放的费用，每一次参展背后，都是各位Staff自掏数千的印刷费用，更何谈付得起哪怕其中任何一位Staff时以年计无私奉献的报酬？我们一直是为热爱在进行创作，这完完全全是赔本买卖，到头来我们还要接受官方的不正当借鉴。这不该，也不应是非盈利社团的宿命。</p>
<p>有一些也许不是巧合的巧合：岛友茶话会的问题设置和版块安排（如杨颜专访中将问题分为“关于方舟”“关于创作”“关于生活”）与2022年8月开始沿用至今的《回归线》特别专访版块有很多相似之处。</p>
<p>尤其是在前两期采访杨颜和zc的文章中（最新一期大部分问题都注明了来自网友暂不讨论）有些并没有说来自于网友的问题，题目几乎和回归线一字不差。</p>
<p>我完全能理解大家做这种专访思路有时会很相近，但是思路相近也很难会产生出一模一样的题目和排版；我也完全能理解（且欢迎）写稿子的时候学习前人经验，但是学习之前可不可以先和原作者说一声呢？</p>
<p>本文仅将<strong>回归线特别访谈</strong>（最早2022年8月；同人）与<strong>森空岛岛友茶话会</strong>（最早2023年10月；官方）进行对比，以便于读者更好地理解两者的异同。</p>
<h2>Part I</h2>
<p>| 森空岛“岛友茶话会”第一期：魔法Zc目录（2023年10月30日） | 《回归线》 |
| :</p>
]]></content>
    <category term="日常"/>
    <published>2024-02-12T00:00:00.000Z</published>
  </entry>
  <entry>
    <title type="text">浅记一次北美Frp搭建</title>
    <id>https://leisiyu.dev/articles/buildfrp.html</id>
    <link href="https://leisiyu.dev/articles/buildfrp.html"/>
    <updated>2026-09-05T05:11:46.000Z</updated>
    <summary type="html"><![CDATA[<p class="textkai">轻量级个人FRP服务搭建教程</p>
]]></summary>
    <content type="html"><![CDATA[<p class="textkai">轻量级个人FRP服务搭建教程</p>
<!-- more -->
<p>国内就没必要这玩意了，SakuraFrp就行。要自建也可以当参考。</p>
<p>Frp是一个轻量级的反向代理工具，可以将内网服务映射到公网，实现内网穿透。</p>
<p>这大概算我找到的最便宜的内网穿透方案了。可以用来部署远程桌面、FTP文件传输或者Minecraft服务器啥的。</p>
<p>需要的东西：</p>
<ul>
<li>一个VPS（一般价格在15-30元/月）</li>
<li>一个域名（可选，com一般在75-100元/年左右）</li>
<li>Xshell（或者其他SSH管理工具）</li>
<li>Xftp（或者其他文件传输工具）</li>
</ul>
<p>服务商选用<a href="https://www.ionos.ca/servers/vps" target="_blank" rel="noopener noreferrer">IONOS</a>我选的是最便宜的$2/月的VPS，配置为（1 vCore CPU，1 GB RAM，10 GB SSD storage，1 Gbit/s unlimited traffic），这玩意搭建个人FRP绰绰有余。（折合约人民币15元/月）</p>
<p>实测IONOS Speedtest，有frp使用情况下，Hosted by Clouvider Ltd (New York, NY) [6199.77 km]，Download: 1557.67 Mbit/s - 2678.73 Mbit/s；Upload: 886.07 Mbit/s - 1017.50 Mbit/s（多次测试）</p>
<p>建议仅限北美，其他地区自行寻找。</p>
<p>服务器系统方面选用ubuntu，买完等他配置一会就行，用Xshell连接服务器，输入用户名密码即可。（我懒得改密码了，就这样吧）</p>
<p>安装FRP，从github下载linux版本的FRP文件，解压，用xftp，连上服务器。</p>
<p>手动用xftp把Frps那个二进制文件丢到/usr/bin/下面，再找个你喜欢的地方写个ini文件，我这里是/etc/frp/frps.ini，内容如下：</p>
<div class="language-ini line-numbers-mode" data-highlighter="shiki" data-ext="ini" data-title="ini" style="--shiki-light:#383A42;--shiki-dark:#abb2bf;--shiki-light-bg:#FAFAFA;--shiki-dark-bg:#282c34"><pre class="shiki shiki-themes one-light one-dark-pro vp-code"><code><span class="line"><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF">[common]</span></span>
<span class="line"><span style="--shiki-light:#A0A1A7;--shiki-light-font-style:italic;--shiki-dark:#7F848E;--shiki-dark-font-style:italic"># frp对客户端的服务端口</span></span>
<span class="line"><span style="--shiki-light:#E45649;--shiki-dark:#C678DD">bind_port</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF"> =</span><span style="--shiki-light:#383A42;--shiki-dark:#98C379"> {frp-port}</span></span>
<span class="line"><span style="--shiki-light:#A0A1A7;--shiki-light-font-style:italic;--shiki-dark:#7F848E;--shiki-dark-font-style:italic"># token，客户端会用到，改的复杂些</span></span>
<span class="line"><span style="--shiki-light:#E45649;--shiki-dark:#C678DD">token</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF"> =</span><span style="--shiki-light:#383A42;--shiki-dark:#98C379"> {token}</span></span>
<span class="line"><span style="--shiki-light:#A0A1A7;--shiki-light-font-style:italic;--shiki-dark:#7F848E;--shiki-dark-font-style:italic"># 访问frp客户端web服务的端口</span></span>
<span class="line"><span style="--shiki-light:#E45649;--shiki-dark:#C678DD">vhost_http_port</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF"> =</span><span style="--shiki-light:#383A42;--shiki-dark:#98C379"> {web-port}</span></span>
<span class="line"><span style="--shiki-light:#A0A1A7;--shiki-light-font-style:italic;--shiki-dark:#7F848E;--shiki-dark-font-style:italic"># pool_count（下限），max_pool_count（上限）</span></span>
<span class="line"><span style="--shiki-light:#E45649;--shiki-dark:#C678DD">max_pool_count</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF"> =</span><span style="--shiki-light:#383A42;--shiki-dark:#98C379"> 50</span></span>
<span class="line"><span style="--shiki-light:#A0A1A7;--shiki-light-font-style:italic;--shiki-dark:#7F848E;--shiki-dark-font-style:italic"># tcp流多路复用，默认为true</span></span>
<span class="line"><span style="--shiki-light:#E45649;--shiki-dark:#C678DD">tcp_mux</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF"> =</span><span style="--shiki-light:#383A42;--shiki-dark:#98C379"> true</span></span>
<span class="line"><span style="--shiki-light:#383A42;--shiki-dark:#98C379"> </span></span>
<span class="line"><span style="--shiki-light:#A0A1A7;--shiki-light-font-style:italic;--shiki-dark:#7F848E;--shiki-dark-font-style:italic"># frp管理后台端口</span></span>
<span class="line"><span style="--shiki-light:#E45649;--shiki-dark:#C678DD">dashboard_port</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF"> =</span><span style="--shiki-light:#383A42;--shiki-dark:#98C379"> {dashboard-port}</span></span>
<span class="line"><span style="--shiki-light:#A0A1A7;--shiki-light-font-style:italic;--shiki-dark:#7F848E;--shiki-dark-font-style:italic"># frp管理后台用户名和密码</span></span>
<span class="line"><span style="--shiki-light:#E45649;--shiki-dark:#C678DD">dashboard_user</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF"> =</span><span style="--shiki-light:#383A42;--shiki-dark:#98C379"> {admin}</span></span>
<span class="line"><span style="--shiki-light:#E45649;--shiki-dark:#C678DD">dashboard_pwd</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF"> =</span><span style="--shiki-light:#383A42;--shiki-dark:#98C379"> {password}</span></span>
<span class="line"><span style="--shiki-light:#A0A1A7;--shiki-light-font-style:italic;--shiki-dark:#7F848E;--shiki-dark-font-style:italic"># 允许服务监控</span></span>
<span class="line"><span style="--shiki-light:#E45649;--shiki-dark:#C678DD">enable_prometheus</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF"> =</span><span style="--shiki-light:#383A42;--shiki-dark:#98C379"> true</span></span>
<span class="line"><span style="--shiki-light:#A0A1A7;--shiki-light-font-style:italic;--shiki-dark:#7F848E;--shiki-dark-font-style:italic"># frp日志配置</span></span>
<span class="line"><span style="--shiki-light:#E45649;--shiki-dark:#C678DD">log_file</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF"> =</span><span style="--shiki-light:#383A42;--shiki-dark:#98C379"> /srv/frp/log</span></span>
<span class="line"><span style="--shiki-light:#E45649;--shiki-dark:#C678DD">log_level</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF"> =</span><span style="--shiki-light:#383A42;--shiki-dark:#98C379"> info</span></span>
<span class="line"><span style="--shiki-light:#E45649;--shiki-dark:#C678DD">log_max_days</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF"> =</span><span style="--shiki-light:#383A42;--shiki-dark:#98C379"> 3</span></span></code></pre>
<div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>将{frp-port}、{token}、{web-port}、{dashboard-port}、{admin}、{password}替换成你自己的端口和账户密码。</p>
<p>日志文件夹自己建一个，有权限就行。</p>
<p>然后退出去去IONOS VPS控制台，找到防火墙，把以上端口都开放或直接关闭（不是那么推荐，不过单frp的话直接关比较省心）。</p>
<p>然后在服务器上输入以下指令：</p>
<div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" data-title="shell" style="--shiki-light:#383A42;--shiki-dark:#abb2bf;--shiki-light-bg:#FAFAFA;--shiki-dark-bg:#282c34"><pre class="shiki shiki-themes one-light one-dark-pro vp-code"><code><span class="line"><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF">nohup</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379"> frps</span><span style="--shiki-light:#986801;--shiki-dark:#D19A66"> -c</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379"> ini文件路径</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF"> &amp;</span></span></code></pre>
<div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0"><div class="line-number"></div></div></div><p>试着登录一下分配ip，端口为{dashboard-port}，用户名密码为{admin}{password}，能登就行。</p>
<p>然后去创建一个systemd服务，路径为/etc/systemd/system/frps.service，内容如下：</p>
<div class="language-ini line-numbers-mode" data-highlighter="shiki" data-ext="ini" data-title="ini" style="--shiki-light:#383A42;--shiki-dark:#abb2bf;--shiki-light-bg:#FAFAFA;--shiki-dark-bg:#282c34"><pre class="shiki shiki-themes one-light one-dark-pro vp-code"><code><span class="line"><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF">[Unit]</span></span>
<span class="line"><span style="--shiki-light:#A0A1A7;--shiki-light-font-style:italic;--shiki-dark:#7F848E;--shiki-dark-font-style:italic"># 服务名称，可自定义</span></span>
<span class="line"><span style="--shiki-light:#E45649;--shiki-dark:#C678DD">Description</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF"> =</span><span style="--shiki-light:#383A42;--shiki-dark:#98C379"> frp server</span></span>
<span class="line"><span style="--shiki-light:#E45649;--shiki-dark:#C678DD">After</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF"> =</span><span style="--shiki-light:#383A42;--shiki-dark:#98C379"> network.target syslog.target</span></span>
<span class="line"><span style="--shiki-light:#E45649;--shiki-dark:#C678DD">Wants</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF"> =</span><span style="--shiki-light:#383A42;--shiki-dark:#98C379"> network.target</span></span>
<span class="line"><span style="--shiki-light:#383A42;--shiki-dark:#98C379"> </span></span>
<span class="line"><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF">[Service]</span></span>
<span class="line"><span style="--shiki-light:#A0A1A7;--shiki-light-font-style:italic;--shiki-dark:#7F848E;--shiki-dark-font-style:italic"># 启动失败后重启服务</span></span>
<span class="line"><span style="--shiki-light:#E45649;--shiki-dark:#C678DD">Restart</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">=</span><span style="--shiki-light:#383A42;--shiki-dark:#98C379">on-failure</span></span>
<span class="line"><span style="--shiki-light:#A0A1A7;--shiki-light-font-style:italic;--shiki-dark:#7F848E;--shiki-dark-font-style:italic"># 重启间隔时间</span></span>
<span class="line"><span style="--shiki-light:#E45649;--shiki-dark:#C678DD">RestartSec</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">=</span><span style="--shiki-light:#383A42;--shiki-dark:#98C379">5</span></span>
<span class="line"><span style="--shiki-light:#A0A1A7;--shiki-light-font-style:italic;--shiki-dark:#7F848E;--shiki-dark-font-style:italic"># 修改为自己的frp目录，注意是frps</span></span>
<span class="line"><span style="--shiki-light:#E45649;--shiki-dark:#C678DD">ExecStart</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">=</span><span style="--shiki-light:#383A42;--shiki-dark:#98C379">/usr/bin/frps -c /etc/frp/frps.ini</span></span>
<span class="line"><span style="--shiki-light:#383A42;--shiki-dark:#98C379"> </span></span>
<span class="line"><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF">[Install]</span></span>
<span class="line"><span style="--shiki-light:#E45649;--shiki-dark:#C678DD">WantedBy</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF">=</span><span style="--shiki-light:#383A42;--shiki-dark:#98C379">multi-user.target</span></span></code></pre>
<div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>然后去添加服务自启动：</p>
<div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" data-title="shell" style="--shiki-light:#383A42;--shiki-dark:#abb2bf;--shiki-light-bg:#FAFAFA;--shiki-dark-bg:#282c34"><pre class="shiki shiki-themes one-light one-dark-pro vp-code"><code><span class="line"><span style="--shiki-light:#4078F2;--shiki-dark:#61AFEF">systemctl</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379"> enable</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379"> frps</span></span></code></pre>
<div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0"><div class="line-number"></div></div></div><p>然后重启服务器，看看能不能自启动。如果一切正常，这个服务器除了续费就不用管了。</p>
<p>如果有域名，可以配置一个子域名A记录到服务器ip就行，比如像我的就是frp.wuyilingwei.com。</p>
<p>然后去客户端下载对应平台的frp客户端，windows可以试试Frp GUI，用对应token和域名+端口配置就行了。配置完记得开防火墙就行。</p>
<p>北美低成本FRP服务搭建完毕。月均成本15元人民币（或2美刀，支持paypel），带宽1Gbps，独享ip，流量无限制。</p>
<p>本文为作者 Siyu Lei 原创内容，转载请注明出处并附上原文链接。（leisiyu.dev）</p>
]]></content>
    <category term="技术分享"/>
    <published>2024-01-26T00:00:00.000Z</published>
  </entry>
  <entry>
    <title type="text">群星：多彩银河mod安装方法</title>
    <id>https://leisiyu.dev/daliy/Colorful_Galaxy.html</id>
    <link href="https://leisiyu.dev/daliy/Colorful_Galaxy.html"/>
    <updated>2026-09-05T05:11:46.000Z</updated>
    <summary type="html"><![CDATA[<p>群星涩涩mod多彩银河安装及打开菜单教程</p>
]]></summary>
    <content type="html"><![CDATA[<p>群星涩涩mod多彩银河安装及打开菜单教程</p>
<!-- more -->
<p>*该教程仅适用于steam版群星，受发布时间影响，可能会有部分内容与实际情况不符。</p>
<h2>安装</h2>
<p>按下Win+R，输入<code>steam://open/console</code>，按下回车键打开steam控制台，输入<code>workshop_download_item 281990 2923834739</code>，回车，等待资源包 <em>无我原非你，从他不解伊</em> 下载完成，接着输入<code>workshop_download_item 281990 2748029219</code>，回车，等待脚本包 <em>缤纷多彩の银河</em> 下载完成，下载完成后关闭控制台。</p>
<p>开启游戏，确保播放集中启用mod并将资源包置于脚本包之前。</p>
<p>开始游戏，enjoy it!</p>
<h2>打开涩涩菜单</h2>
<p>群星-政府-法令即可看到一个只需要5宝石打开的一天法令</p>
<p>*注意，星海共同体法令看清楚别点错了，不然会直接开战</p>
<p>摸鱼这么久才想起来更新blog，果然涩涩是第一生产力（逃</p>
<p>本文为作者 Siyu Lei 原创内容，转载请注明出处并附上原文链接。（leisiyu.dev）</p>
]]></content>
    <category term="游戏"/>
    <published>2023-09-18T00:00:00.000Z</published>
  </entry>
  <entry>
    <title type="text">OneDrive增强指南</title>
    <id>https://leisiyu.dev/articles/OneDrive_Link.html</id>
    <link href="https://leisiyu.dev/articles/OneDrive_Link.html"/>
    <updated>2026-09-05T05:11:46.000Z</updated>
    <summary type="html"><![CDATA[<p class="textkai">同步任意文件夹</p>
]]></summary>
    <content type="html"><![CDATA[<p class="textkai">同步任意文件夹</p>
<!-- more -->
<p>首先按下Win+R，输入<code>cmd</code>，同时按住shift+ctrl的情况下点击确定，提权打开命令行。（正确情况下会有UAC提示及标题栏中的管理员字样）</p>
<p>按下Win+E，打开资源管理器，右键OneDrive文件夹，点击属性，复制地址栏中的路径。</p>
<p>使用以下指令链接你想要的文件夹到OneDrive文件夹，例如：</p>
<div class="language-cmd line-numbers-mode" data-highlighter="shiki" data-ext="cmd" data-title="cmd" style="--shiki-light:#383A42;--shiki-dark:#abb2bf;--shiki-light-bg:#FAFAFA;--shiki-dark-bg:#282c34"><pre class="shiki shiki-themes one-light one-dark-pro vp-code"><code><span class="line"><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">mklink</span><span style="--shiki-light:#383A42;--shiki-dark:#ABB2BF"> /</span><span style="--shiki-light:#E45649;--shiki-dark:#E06C75">D</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379"> "{OneDrive文件夹路径}\{OneDrive文件夹中的相对路径}"</span><span style="--shiki-light:#50A14F;--shiki-dark:#98C379"> "{你要链接的文件夹路径}"</span></span></code></pre>
<div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0"><div class="line-number"></div></div></div><p>将{}及其中的内容替换为你的路径。</p>
<p>这是使用Windows的符号链接功能，可以将文件夹链接到其他位置，但是在资源管理器中仍然显示为原文件夹。</p>
<p>可以在不移动文件夹的情况下将文件夹链接到其他位置，例如将将其加入到Onedrive文件夹中，以方便同步。</p>
<p>在命令行中输入<code>mklink /?</code>查看更多用法。</p>
<p>本文为作者 Siyu Lei 原创内容，转载请注明出处并附上原文链接。（leisiyu.dev）</p>
]]></content>
    <category term="技术分享"/>
    <published>2023-09-18T00:00:00.000Z</published>
  </entry>
  <entry>
    <title type="text">自动构建带root与Google Play的安卓子系统</title>
    <id>https://leisiyu.dev/articles/WSA.html</id>
    <link href="https://leisiyu.dev/articles/WSA.html"/>
    <updated>2026-09-05T05:11:46.000Z</updated>
    <summary type="html"><![CDATA[<p class="textkai"><a href="https://github.com/lsy-404/MagiskOnWSAOnlineBuild" target="_blank" rel="noopener noreferrer">MagiskOnWSAOnlineBuild</a></p>
]]></summary>
    <content type="html"><![CDATA[<p class="textkai"><a href="https://github.com/lsy-404/MagiskOnWSAOnlineBuild" target="_blank" rel="noopener noreferrer">MagiskOnWSAOnlineBuild</a></p>
<!-- more -->
<h2>写在最前</h2>
<p>本项目基于<a href="https://github.com/LSPosed/MagiskOnWSALocal" target="_blank" rel="noopener noreferrer">Magisk on WSA (with Google Apps)</a>，该仓库<s>在古老的年代</s>曾经有过通过Github Action来自动部署的功能。</p>
<p>但因为过于火爆和fork仓库过多，该仓库被判定为滥用Github Action而被封禁。</p>
<p>但是对于很多人来说，安装Linux或者WSL自行下载源代码过于困难，我自己构建好拷贝给朋友来说又太麻烦了。</p>
<h2>使用</h2>
<p>直接下载<a href="https://github.com/lsy-404/MagiskOnWSAOnlineBuild/releases/latest" target="_blank" rel="noopener noreferrer">最新的Release</a>即可</p>
<h2>解决方案</h2>
<p>于是我在仔细查看项目结构后通过Github Action来执行build，直接通过预设步骤进行构建并上传到release，方便大多数人使用。</p>
<p>目前而言，通过强制性的要求Github Token的要求应该能避免很多人直接fork了去用，需要自己配置Token和仓库路径。</p>
<p>不过workflow文件中写上了充分的注释，可以轻松的改进。</p>
<h2>具体步骤：</h2>
<ul>
<li>安装Git</li>
<li>克隆MagiskonWSA</li>
<li>运行依赖安装文件</li>
<li>构建版本</li>
<li>下载Github CLI工具</li>
<li>通过Token登录并发布新版本</li>
</ul>
<p>本文为作者 Siyu Lei 原创内容，转载请注明出处并附上原文链接。（leisiyu.dev）</p>
]]></content>
    <category term="技术分享"/>
    <published>2023-06-06T00:00:00.000Z</published>
  </entry>
  <entry>
    <title type="text">TO DO LIST</title>
    <id>https://leisiyu.dev/sp/ToDo.html</id>
    <link href="https://leisiyu.dev/sp/ToDo.html"/>
    <updated>2026-09-05T05:11:46.000Z</updated>
    <summary type="html"><![CDATA[<p>咕↗咕↘咕↗↗↗</p>
]]></summary>
    <content type="html"><![CDATA[<p>咕↗咕↘咕↗↗↗</p>
<!-- more -->
<p class="textkai">我只是一个学生，为爱发电，并没有对任何项目有维护和保障可用性的义务。</p>
<h2>正在做的项目</h2>
<p>海狸浮生记Steam创意工坊mod AI汉化v2.2多版本支持。（当前进度 画饼[x] - 重构发布系统构建脚本[x] - 自动版本支持 - 数据AI聚合更新）</p>
<p><a href="https://github.com/lsy-404/epilogue" target="_blank" rel="noopener noreferrer">epilogue</a> 桌面端 AI 文件工作流——本地优先、多 provider 故障转移、轻量托盘应用。让 AI 理解、整理并帮你回忆文件。（进行中）</p>
<h2>维护中的项目</h2>
<p><a href="https://github.com/lsy-404/Aneot_Alpha" target="_blank" rel="noopener noreferrer">Aneot_Alpha</a> 为明日方舟同人杂志回归线提供网页更新 ） (Full support)</p>
<p><a href="https://github.com/lsy-404/Timberborn_Mods_Universal_Translate" target="_blank" rel="noopener noreferrer">Timberborn Mods Universal Translate</a> 海狸浮生记Steam创意工坊mod AI翻译v2。 (Full support)</p>
<p><a href="https://github.com/lsy-404/LRC" target="_blank" rel="noopener noreferrer">LRC</a> V宇宙词站，歌词收录站点。 (Full support)</p>
<p><a href="https://github.com/lsy-404/Waline_On_Worker" target="_blank" rel="noopener noreferrer">Waline On Worker</a> Waline 评论系统在 Cloudflare Workers 上的实现。 (Full support)</p>
<p><a href="https://github.com/lsy-404/UofT-Tools" target="_blank" rel="noopener noreferrer">UofT-Tools</a> 多伦多大学学生工具集。 (Full support)</p>
<p><a href="https://github.com/seuyh/stellaris-dlc-unlocker" target="_blank" rel="noopener noreferrer">Stellaris-DLC-Unlocker</a> (Only zhCN translates support)</p>
<p><a href="https://github.com/lsy-404/MyUserScript/commits/main/" target="_blank" rel="noopener noreferrer">MyUserScript</a> 个人用用户脚本 (Only bugs fix)</p>
<p><a href="https://github.com/lsy-404/rdpwrap_AutoUpdate_CN" target="_blank" rel="noopener noreferrer">rdpwrap_AutoUpdate_CN</a> RDP Wrapper Autoupdate 中文汉化版 (Only bugs fix)</p>
<h2>完成的项目</h2>
<p><a href="https://github.com/lsy-404/Waline_Autoupdate" target="_blank" rel="noopener noreferrer">Waline Auto update</a>开源评论系统Waline的自动更新 (Finished on Nov 26, 2024)</p>
<p><a href="https://github.com/lsy-404/SatisfactoryDedicatedServer" target="_blank" rel="noopener noreferrer">Satisfactory Dedicated Server</a>对游戏幸福工厂v1.0错误关闭udp链接的守护进程(Finished on Nov 17, 2024)</p>
<p><a href="https://github.com/lsy-404/KeepOutlookRunningInstaller" target="_blank" rel="noopener noreferrer">Keep Outlook Running Installer</a>Outlook Classic保持后台运行和插件注册 (Finished on Nov 2, 2024)</p>
<p><a href="https://github.com/lsy-404/7D2D_CTVI_i18n" target="_blank" rel="noopener noreferrer">7D2D CVTI MOD Part I</a>主材料Mod完成汉化 (Finished on Apr 30, 2024)</p>
<p><a href="https://github.com/lsy-404/Audio-Video-Merger" target="_blank" rel="noopener noreferrer">Audio-Video-Merger</a>基于batch+ffmpeg的音画合并脚本，适用于Bilibili Evolved，用于合并下载的原音轨和视频 (Finished on Dec 7, 2023)</p>
<p><a href="https://github.com/lsy-404/PRTS_cursor" target="_blank" rel="noopener noreferrer">PRTS_cursor Public</a>明日方舟PRTS主题的光标包 (Finished on Jul 19, 2023)</p>
<p><a href="https://github.com/lsy-404/rdpwrap_AutoUpdate_CN" target="_blank" rel="noopener noreferrer">rdpwrap_AutoUpdate_CN</a>RDP Wrapper Autoupdate 中文汉化加强版 (Finished on May 28, 2023)</p>
<h2>停止支持的项目</h2>
<p><a href="https://github.com/lsy-404/MAAResUpdater" target="_blank" rel="noopener noreferrer">MAAResUpdater</a> MAA已自带github源直接更新 (End Support on Apr 12, 2025)</p>
<p><a href="https://github.com/lsy-404/Timberborn_Mods_Universal_zhCN_Translate" target="_blank" rel="noopener noreferrer">Timberborn Mods Universal zhCN Translate</a> 海狸浮生记Steam创意工坊mod AI汉化v1。 (End Support on Dec 31, 2024, now it is v2)</p>
<p><a href="https://github.com/lsy-404/LiteLoaderQQNT-HighlightReplies" target="_blank" rel="noopener noreferrer">LiteLoaderQQNT-HighlightReplies</a>LLQQNT更换加载器方式，无空提供更新，相关功能已并入轻量工具箱。 (End Support on Mar 3, 2024)</p>
<p><a href="https://github.com/lsy-404/MagiskOnWSAOnlineBuild" target="_blank" rel="noopener noreferrer">MagiskOnWSAOnlineBuild</a>后续维护计划，WSA已被微软放弃 (End Support on Jan 12, 2024)</p>
<h2>放弃的项目</h2>
<p><a href="https://github.com/lsy-404/helldivers2AutoStratagems" target="_blank" rel="noopener noreferrer">Helldiver 2 OCR/设置混合搓球器</a> HDR支持属于小众需求，与整体OCR设计冲突。 (Canceled)</p>
<p><a href="https://github.com/lsy-404/StarRail_anjian" target="_blank" rel="noopener noreferrer">StarRail按键精灵脚本</a>难写，占用焦点不划算 (Canceled)</p>
<p>研究PCRS，改进其效率和前端体验。现在不用这个玩意了<s>userjs凑合凑合差不多也够用</s>。 (Canceled)</p>
<p>为7D2D CVTI其他MOD模块提供全面汉化（暂时没有新服计划） (Canceled)</p>
]]></content>
    <published>2026-09-05T05:11:46.000Z</published>
  </entry>
  <entry>
    <title type="text">News</title>
    <id>https://leisiyu.dev/sp/Update.html</id>
    <link href="https://leisiyu.dev/sp/Update.html"/>
    <updated>2026-09-05T05:11:46.000Z</updated>
    <summary type="html"><![CDATA[<p>What happen?</p>
]]></summary>
    <content type="html"><![CDATA[<p>What happen?</p>
<!-- more -->
<h2>2025/11/29</h2>
<p>重新设计openlist扩展功能和UI</p>
<p>openlist现在支持智能路径修复</p>
<h2>2025/11/28</h2>
<p>icloud声明和数据更新</p>
<h2>2025/11/15</h2>
<p>音乐服务Music-Tag-Web v2完成功能扩展和权限控制设计</p>
<h2>2025/11/12</h2>
<p>音乐服务Music-Tag-Web v2切换数据库至mySQL</p>
<h2>2025/11/11</h2>
<p>音乐服务Music-Tag-Web v2完成安全补丁</p>
<h2>2025/11/10</h2>
<p>音乐服务Navidrome切换为Music-Tag-Web v2</p>
<h2>2025/9/29</h2>
<p>优化了部分资源大小，加快加载速度</p>
<h2>2025/09/23</h2>
<p>音乐服务Navidrome v0.55.1 -&gt; v0.58.0 Latest</p>
<h2>2025/09/22</h2>
<p>网盘上传接口直接上传至VPS，这应该会显著加快最大上传速度。</p>
<h2>2025/09/15</h2>
<p>Timberborn模组翻译更新完全通过编译实现，应该能避免导致游戏崩溃的问题。</p>
]]></content>
    <published>2026-09-05T05:11:46.000Z</published>
  </entry>
</feed>