VSG阻抗扫描实战:从dq模型到频域稳定性判定
你给VSG做了那么多时域仿真看谐振波形、调阻尼参数、改滤波器系数可一旦换一个电网强度整个结论可能推倒重来。真正把VSG阻抗扫描的流程跑通之后我才体会到频域工具的威力——从解析建模仿真到逐频点扫频验证一条链路下来系统在哪些频段容易出交互振荡、哪些环节贡献了负阻尼基本一目了然。这篇实战记录就是围绕这条链路展开的为什么要扫、怎么从控制方程落到dq阻抗模型、扰动怎么注、信号怎么取、仿真里具体怎么一步步跑以及最后怎么把结果用到稳定性判断和硬件在环验证上。适合正在做虚拟同步发电机并网稳定性研究、或者被现场不明原因振荡折腾过的工程师按这篇的流程走一遍会少踩很多坑。1. 为什么VSG的分析最终要落到扫出来的阻抗上1.1 弱电网下VSG稳定性问题的实质先说清楚我们面对的到底是什么问题。VSG虚拟同步发电机在弱电网里被看成电压源型支撑装置它通过摇摆方程模拟同步电机的惯性和阻尼这是它区别于传统跟网型逆变器的核心价值。但问题恰恰出在这里VSG不是一个孤立的电压源它在并网点要跟电网阻抗、线路阻抗、变压器漏感形成一个闭合回路。电网越弱等效阻抗越大两个子系统之间的耦合就越深。此时如果VSG在某个频段呈现负阻特性或者相位滞后过多回路增益在某个频率点就会逼近临界稳定表现出来就是次同步振荡、功率低频振荡甚至谐波放大。这类交互振荡最麻烦的地方是你很难靠看一眼拓扑判断出来。它不像LCL滤波器谐振那样有明确的LC参数公式因为VSG内部有功率外环、无功下垂、电压电流双闭环、数字控制延迟每个环节对阻抗的贡献都随频率变化。现场里最常见的情况是——同一台机在短路比高的地方跑得好好的换到弱电网并网点就开始不正常或者改变虚拟惯量J之后振荡频率跟着变了。这些现象本质上都可以从阻抗的幅频、相频特性上找到解释。1.2 时域仿真为什么不够用刚接触这个问题的人通常会继续用老办法在时域仿真里把电网阻抗设成不同值跑一大堆工况看波形。不是说时域仿真没用它验证保护逻辑、暂态响应非常好但如果目标是判断系统在多大短路比下会失稳时域仿真的效率低得让人头疼。每个工作点都要跑几秒仿真时间设置十几组参数肉眼判断波形发散还是收敛整个过程既慢又主观。更关键的是时域波形只能告诉你出事了很难告诉你是哪个控制环节在什么频段导致的。想定位根因就得在波形上做频谱分析再逐一排查控制参数等于绕了一大圈。频域阻抗分析把整个问题换了个姿势把VSG连同滤波器、控制环路一起等效成一个端口阻抗把电网那一侧等效成另一个端口的阻抗两个阻抗一碰稳定性判据是现成的。曲线拿在手上哪个频段幅值裕度低、哪个频段相位逼近边界一眼就能看出来。这也是为什么现代并网系统稳定性分析越来越倾向阻抗视角。1.3 阻抗扫描解决什么问题阻抗有两个来源一个是解析推导从控制方程和主电路方程一步步线性化得到另一个就是扫频测量在稳定工作点上叠加不同频率的小正弦扰动测量同频电压电流响应逐个频点把阻抗画出来。前一种叫模型后一种叫实测两者必须配合。扫频验证的价值在于它绕开了解析建模时那些不得不做的简化——比如把调制器当线性增益、忽略限幅、把数字延迟等效成一阶惯性。实际控制器的采样周期、PWM对齐、死区、限幅曲线全部真实地反映在扫频结果里。所以一个靠谱的项目流程通常是这样的先建立解析阻抗模型用扫频仿真去验证和修正它等模型可信了再用硬件在环或实测抽查关键频段。整个过程里扫频既是校验工具也是兜底手段。2. 先建解析模型从VSG控制方程到dq阻抗矩阵2.1 控制环节的建模对象扫频验证不是凭空扫的你得先知道自己在扫一个什么东西。VSG的控制结构直接影响阻抗模型的形态不同结构得出的结论可能完全不同。工程上常见的电压型VSG不依赖锁相环相角由摇摆方程自己生成输出电压幅值由无功下垂调节后面挂电压电流双闭环和调制器。另一种是跟网型VSG底层电流环加PLL上层再用VSG式的功率外环这种结构下PLL的同步动态对阻抗的影响非常大。我第一次做模型时就吃过亏把两种结构的阻抗混在一起比较相位曲线对不上折腾了好久才意识到问题出在参考坐标系上。建模的第一步是把系统拆成几块主电路通常是三相全桥逆变器加LC或LCL滤波器、VSG外环有功-频率通道和无功-电压通道、内环电压环、电流环、限幅、数字控制延迟。每个环节都要做小信号线性化。以电压型VSG为例外环的核心是摇摆方程标幺形式大致可以写成J * dΔω/dt ΔP_ref* - ΔP* - D * Δω这里J是虚拟惯量D是阻尼系数ΔP是可用的有功功率偏差。这个方程决定了VSG在低频段的动态也可以解释为什么增加J之后系统低频响应变慢、某些频段的阻尼会发生变化。无功通道则通常用下垂形式E E0 n * (Q_ref - Q)同样要做线性化。内环电压电流双闭环则是标准的PI结构在dq坐标系下可以整理成传递函数矩阵。把这些模块按信号流顺序串起来再用数字延迟模块近似为1.5个开关周期的惯性环节修正就能得到一个完整的小信号模型。2.2 dq阻抗矩阵与正负序阻抗的关系三相对称系统在基波工作点附近做小信号分析最自然的坐标系是dq同步旋转坐标系。把所有变量投影到d轴和q轴之后时变系数系统变成时不变系统电压电流的扰动关系可以用一个2乘2的阻抗矩阵描述[ Vd ] [ Zdd Zdq ] [ Id ] [ Vq ] [ Zqd Zqq ] [ Iq ]这四个元素都有明确的物理含义Zdd是d轴电压扰动对d轴电流的响应Zqq是q轴通道的自阻抗Zdq和Zqd是交叉耦合项。交叉项体现了dq坐标轴之间的相互作用在有锁相环或者功率外环的VSG里通常不可忽略这也是为什么不能简单地把三相系统当成三个独立的单相通道来处理。工程上还有另一种更直观的表示方式——正序和负序阻抗。在三相对称、正负序解耦的前提下dq阻抗矩阵和正负序阻抗可以互相换算。测量时注入正序的小电压扰动提取正序电流响应得到Zpp注入负序扰动得到Znn。这样做的好处是物理意义清楚硬件实测里更容易实现缺点是一旦系统对不同序分量有耦合例如PLL受负序影响单靠Zpp和Znn就不够了。所以仿真验证阶段我习惯把dq阻抗矩阵四个元素全做出来而硬件实测阶段先做正负序曲线再视情况补全。2.3 解析模型的局限引出扫频解析模型做得再细也有几条绕不开的坎。首先是数字控制器的执行细节比如采样点的实际时刻、PWM载波和参考波形的更新时序这些在数学推导里通常被简化成延迟但真实系统里的延迟可能不是恒定的其次是限幅环节电流限幅、电压限幅在正常工作点附近看起来不活动一旦工作点偏移或者扰动稍大非线性立刻起作用解析模型里如果没建模就必然失准还有调制器的死区、开关管压降这些在高精度阻抗测量中都会留下痕迹。换句话说解析模型告诉你的是理想情况下系统应该长什么样而扫频测量告诉你的是实物实际长什么样。如果在扫频曲线上看到解析模型没有的尖峰或者相位拐点别急着否定测量结果先回头检查是不是漏了某个环节。这种模型预测-扫频实测-修正模型的循环是这套方法真正值钱的地方。3. 扰动注入与信号提取扫频验证的工程细节3.1 三类扰动源怎么选扫频的核心操作就两件事在系统里注入已知频率的小扰动然后从响应里把同一频率的分量提取出来。但扰动怎么产生实现路径差别很大直接决定了测量效率和结果质量。工程里常用的有三种注入方式。第一种是逐频点正弦扫频每个频点单独注入一个固定的正弦扰动等系统稳定后记录数据再换下一个频点。这是最经典、最可靠的方式每个频点的幅值和相位都能控制得很干净代价是慢几十个频点跑下来要不少时间。第二种是线性调频chirp扫频一个扰动信号里频率随时间连续变化一次注入能覆盖很宽的频带效率高但代价是频率分辨率受信号长度限制而且如果系统在扫描过程中出现非线性结果容易混入谐波。第三种是伪随机二进制序列PRBS用随机二进制波形做宽带扰动通过谱估计同时计算多个频点的阻抗特别适合在线测量和硬件实测。三种方式的取舍工程上是这样把握的方式优点缺点适用场景单频正弦扫频精度高、幅相可控、便于逐点排查速度慢、测量时间长仿真阶段精细校验线性调频扫频速度快、一次覆盖宽频带频率分辨率受限、非线性敏感快速摸底、硬件初测PRBS宽带激励效率高、抗噪声能力较好谱估计复杂、序列设计有门槛在线测试、现场实测仿真阶段我一般先用单频正弦把频带完整扫一遍拿到精确曲线再用PRBS做一次快速复验看两条曲线是否吻合既保证了精度又有了效率上的参考。3.2 注入位置与参考方向扰动加在哪里是一个经常被忽略但影响巨大的选择。在仿真里并网点并联一个三相受控电流源是一种常见的做法相当于向这个端口注入一个诺顿形式的电流扰动电压响应自然出现在端口上通过测量电压和电流就能得到阻抗。另一种是串联一个受控电压源等效为戴维南形式。两种方式各有优劣电流源注入对系统基波潮流影响小更容易叠加在额定运行点上电压源注入更符合系统看到的外界阻抗扰动的物理场景但串联电压源在仿真搭建时要处理好隔离问题否则会干扰基波功率流动。还有一个更省事的做法是把扰动直接叠加在VSG内部的参考值上比如在d轴电流指令上加一个小正弦信号。这种方法在仿真里很干净因为没有额外的物理扰动源信号传播路径完全经过真实控制回路但测量算出来的阻抗包含了从控制器参考到端口的整个路径定义上和端口阻抗略有区别解读结果时要小心。方向约定是所有数字化处理里最容易出错的一环。阻抗计算要约定电流正方向到底是从逆变器流向电网还是从电网流向逆变器。如果约定反了阻抗的实部虚部符号全变相位差180度稳定性判据也会彻底翻转。我在这上面栽过跟头——软件里算出来的曲线相位和解析模型对不上检查了半天发现是脚本里把电流符号取反了。所以现在不管做仿真还是硬件数据处理我都先拿一个已知的纯电感做校准扫一次看看相位是不是准确的90度确认方向没问题再处理正式数据。3.3 信号提取的FFT细节与参数标定信号提取看起来就是做个FFT但工程坑全在参数选择上。首先是记录窗口长度它直接决定频率分辨率FFT的频率分辨率等于1除以总记录时间。如果最低扫频频率是5 Hz记录窗口至少要有0.2秒才能勉强分辨想稳定提取这个频点的幅值相位最好记录1秒以上。其次是采样率采样率要满足奈奎斯特条件但也不是越高越好太高的采样率会导致FFT点数巨大、数据量暴涨实际处理起来费时费力。我的经验是最高扫频频率如果是1000 Hz采样率设在10 kHz到20 kHz之间就够用了如果关注的是兆赫兹级的高频噪声那是另一套方法论不在常规阻抗扫描范围内。注入幅值的选择也很微妙。幅值太大会超出小信号线性范围触发限幅、PLL的非线性响应扫出来的阻抗已经不代表工作点附近的小信号特性了幅值太小则淹没在系统噪声里FFT提取的信噪比太差。工程上一般取额定电流的2%到5%比如额定电流15安培的装置注入500毫安左右同时采用多个周期的数据做平均或Welch谱估计把噪声压下去。在仿真环境里这个问题不明显因为没有真实测量噪声但硬件实测里如果发现低频段阻抗曲线毛刺很多第一件事就是检查注入幅值是否太小。4. 仿真搭建逐频点扫频的可复现流程4.1 仿真模型结构与测量支路说完原理说落地。以我最近做的一个电压型VSG为例额定功率10千瓦三相380伏直流侧750伏LCL滤波开关频率10千赫兹。仿真模型用主流的电路仿真平台搭主电路是三相全桥加LCL滤波器控制在离散域实现采样频率与PWM频率保持一致。并网点加一个并联受控电流源作为扰动注入支路同时在PCC节点引出三根测量信号线专门记录并网点的三相电压和流过VSG的三相电流。有一点很关键测量支路要和扰动注入支路分开。有些人图省事直接在同一个节点上测电压电流结果扰动源的基波分量也混进去计算出来的阻抗在高频段完全失真。正确做法是让扰动支路独立存在测量的电压电流只取走向逆变器-电网路径上的物理量。记录数据我用固定采样率比如20 kHz每个频点的记录时长按最低关注频率来确定保证低频点的FFT有足够分辨率。4.2 逐频扫描的操作步骤仿真扫频可以手工做也可以写脚本自动做但要保证每一步都可复现。手工做法基本就是下面的循环我用伪代码描述核心逻辑freq_list [5, 7, 10, 15, 20, 30, 50, 70, 100, 150, 200, 300, 500, 700, 1000] impedance {} for fp in freq_list: set_injection(frequencyfp, amplitude0.5A, phase0) run_simulation_for(settling_time0.5s) # 等待暂态衰减 v_abc, i_abc record_data(duration1.0s, fs20kHz) v_fp fft_pick(v_abc, freqfp) i_fp fft_pick(i_abc, freqfp) impedance[fp] v_fp / i_fp每个频点的工作流程分四步先把扰动注入源的频率设为fp用一个相对小的幅值比如0.5安培叠加进去接着让仿真跑一段时间等待暂态过程衰减完毕这个时间至少是系统最低固有频率对应周期的几倍然后记录一个完整的测量窗口最后对电压电流波形做FFT取fp这个频率点上的复数分量相除得到阻抗值。注意要记录的是稳态段不是刚扰动下去的瞬间否则计算结果是暂态阻抗而不是稳态阻抗。对数分布的频点列表是有讲究的。VSG的功率环频段通常在几赫兹到几十赫兹电压电流内环在几百赫兹滤波器谐振再往上。这些频段跨度太大等间距扫频要么低频点太少、要么高频点浪费对数间隔能保证每个学科相关的频段都有足够的点覆盖。如果只是初步摸底扫15个左右的频点就够了要做高精度校验可以增加到30到40个点。4.3 自动化批量扫描手工换频点做一轮扫频可能得跑半小时还很无聊所以仿真阶段我强烈建议用自动化脚本。把上面的伪代码包在一个循环里配合参数扫描接口可以一次性把整条阻抗曲线扫出来。自动化真正要注意的不是循环本身而是每两个频点之间系统状态的衔接。有些仿真平台在改变扰动频率后如果立刻记录数据前面一个频点的残余动态还留在系统里会让当前频点的FFT结果带上尾巴。处理办法是每次切频点后强制让系统再跑一段固定的稳定时间同时把上一个频点的扰动清零等所有暂态都衰减完了再记录。如果要做完整的dq阻抗矩阵还需要两组独立的扰动实验。第一组只在d轴加扰动q轴不加采集d轴和q轴的电压电流响应得到矩阵的第一列第二组反过来只在q轴加扰动得到第二列。两组实验的工作点必须完全一致任何一组的直流偏置不同都会让矩阵出现奇怪的耦合项。这个细节在仿真里特别容易踩——功率外环的稳态裕度很小一旦两组扰动注入的顺序或者时长不同工作点可能已经漂移了矩阵元素算出来就会自相矛盾。我习惯每次实验前先让系统回到同一额定工作点再开始加扰动。5. 扫频结果解读稳定性判定与模型校验5.1 从阻抗曲线读到什么信息扫频数据整理成波特图之后第一件事不是急着判稳定性而是先看整体形态是否合理。一条典型的电压型VSG正序阻抗曲线低频段应该呈现类似感性的趋势幅值随频率增加相位从零附近逐渐偏移这是功率外环和虚拟惯量作用的体现到了电压内环带宽附近相位开始出现明显的变化这个拐点往往和PI参数、数字延迟相关再往上走LCL滤波器的谐振点会在曲线上留下一个尖峰这个尖峰的位置和阻尼情况可以被直接读出来。曲线上的异常形态通常都有明确的对应关系。如果低频段相位掉到了负值很大的区域说明功率控制环在低频贡献了负阻尼这是弱电网下低频振荡的典型病因如果谐振频点处幅值尖峰特别高、而且相位跳变特别尖锐说明滤波器的阻尼比较弱谐波扰动在这个频段会被放大。扫频曲线其实就是在体检把每个频段的阻尼状况量化给你看。5.2 与电网阻抗的交点用相位裕度看稳定性阻抗曲线的意义要放在整个回路里才体现出来。并网系统的交互稳定性可以抽象成两个阻抗的串联回路VSG等效阻抗Zvsg电网侧等效阻抗Zg通常是感性的随短路比变化。在单入单出的简化情况下稳定条件就是考察Zg / Zvsg这个阻抗比是否满足奈奎斯特判据。工程上更直观的判据是看两条阻抗幅值曲线的交点当|Zvsg|和|Zg|相等时比较两者的相位差如果相位差接近180度系统就处于临界稳定状态。实际设计一般要求至少留45度以上的相位裕度这是保证在各种电网强度下都有足够阻尼的经验值。对于dq阻抗矩阵这类多输入多输出系统单条相位裕度的判据不够用需要把2乘2阻抗矩阵代进去计算特征值轨迹再画广义奈奎斯特曲线。扫频得到了完整的Zdd、Zdq、Zqd、Zqq正好可以支撑这种分析。不过真实工程里很少有人天天画广义奈奎斯特通常的做法是先在几个关键工作点上做简化判断发现问题后再深入做特征值分析。5.3 解析模型与扫频曲线的拟合度判断扫频数据最重要的用途之一是回头校验解析模型。把解析阻抗和扫频阻抗画在同一张图上正常情况下两条曲线应该基本贴合低频段可能略有偏差但趋势一致内环频段的相位拐点位置应该接近谐振频点的幅值尖峰高度可能差几个分贝这是可以接受的。如果偏差很大优先怀疑数字延迟的参数设定、PLL带宽如果有、限幅环节的建模。我遇到过一种很典型的偏差解析模型的谐振尖峰比扫频的低很多查了半天发现是仿真里加了死区而解析模型没有建模死区等效为额外的阻尼电阻把LCL谐振的尖峰压平了。反过来扫频曲线也可能骗人。如果注入幅值太大或者记录窗口太短曲线会出现毛刺或虚假的尖峰。判断是不是可信最直接的办法是重复测量几次看重复性。同一工作点同一条曲线两次测量结果如果相位差超过5度就先别急着下结论回去检查测量设置而不是怀疑系统本身。6. 从仿真到硬件在环的衔接与实测取舍6.1 控制器在环与硬件在环的差异仿真扫频证明了模型的正确性但项目真正交付的是实物所以还有一个中间层必须走——硬件在环。把真实控制器接到实时仿真机上让控制器以为自己带着一台真实逆变器这样可以检查实际数字采样时序、PWM比较、保护限幅逻辑对阻抗的影响。很多振荡问题恰恰出在实现层控制周期执行顺序、采样点滞后、限幅保护触发这些在纯离线仿真里很可能被美化但在控制器和实时仿真器对接时全部暴露出来。硬件在环扫频的操作和离线仿真类似也是加扰动、提取响应、计算阻抗但要注意实时仿真平台的时间步长有限制一般几十微秒量级比离线仿真的固定步长粗得多对高频段阻抗测量会有影响。所以硬件在环扫频通常只做到几百赫兹再高的频段留给实物或离线仿真去覆盖。有一次做控制器在环测试发现扫频相位曲线在中频段跟离线仿真差了一大截最后定位到控制器的采样频率配置被改成了5 kHz而不是预期的10 kHz这种问题不接实物根本发现不了。6.2 实测扫频的代价与抽查策略实物扫频比仿真贵得多。给一套几十千瓦的并网装置做全频段扫频需要专门的扰动注入装置每个频点都要等系统跑稳几十个频点下来可能要好几个小时期间还有额外损耗和发热。所以工程上几乎不会把仿真里的几十个频点全部搬到实物上测而是采取仿真全扫、实测抽查的策略先用仿真把整条阻抗曲线摸清楚定位出谐振峰、相位穿越等危险频段再在实物上只测这些频点附近的数据验证同样的问题是否存在。这样既控制了成本又守住了稳定性判断的关键证据。实测还有一个好处是能够确认传感器和测量通路不影响结果。电流互感器的相频特性、电压采样的滤波延迟都会给阻抗测量带来额外偏差。用已知电感做校准之后再去实测不合格的地方要么换传感器要么在数据处理里加补偿这个环节做完实测数据和仿真数据才有可比性。6.3 一条实际项目的收尾心得我在某个新能源并网项目的最后阶段就体会过全套流程的价值。当时离线仿真模型在额定工作点下扫出的阻抗曲线一切正常但现场在特定短路比下出现了几十赫兹的低频振荡控制器接进硬件在环复测之后发现PLL带宽附近的相位裕度明显低于离线预测。把问题回馈给模型修正了PLL和数字延迟的参数再用扫频验证修正后的曲线最终找到振荡的真正原因。整个过程里扫频一直扮演着裁判员的角色——所有关于模型正确性的争论最后都是靠扫频数据说话的。做阻抗扫描这件事我自己最大的感受是解析模型让你快扫频验证让你稳。先推导出一个大致可信的模型再用扫频把那20%的偏差补上比闷头推导三个月更高效。如果你现在正被一条有问题的振荡波形困住我建议不要只盯着时域波形来回试参数先把VSG的阻抗曲线扫出来问题会在频域里自己现形。

相关新闻

rea:一个自制的命令行正则表达式调试与批处理工具

rea:一个自制的命令行正则表达式调试与批处理工具

"rea"这个名字,看起来就像随手敲出来的三字母缩写。很多朋友第一次见到都会问:这是什么?对我来说,它是 Regex Easy Assistant——一个被我在终端里用了大半年、完全自制的命令行正则表达式调试与批处理工具。如果你经常…

2026/10/12 12:34:50 阅读更多 →
Jenkins持续集成实战:从环境搭建到自动化部署全解析

Jenkins持续集成实战:从环境搭建到自动化部署全解析

很多团队一提到持续集成,第一反应是上复杂的大平台,或者非要搞全套云原生。但回过头看,绝大多数中小团队、企业内部运维组,最缺的其实不是平台,而是一个能把”代码提交”到”自动构建”再到”通知结果”这条路跑通的工具。Jenkins 在这条路上依然是绕不开的角色,而且它最大的优…

2026/10/12 12:34:50 阅读更多 →
AI数据合规全链路指南:从训练语料到模型输出的落地实践

AI数据合规全链路指南:从训练语料到模型输出的落地实践

前阵子跟一个做AI客服系统的朋友喝茶,他一句话让我记了很久:功能做完了,评审会开了一个月,最后砍掉了一半的训练语料。原因不复杂——语料里全是真实用户的聊天记录,里面有手机号、有住址,甚至还有用户照着…

2026/10/12 12:33:49 阅读更多 →

最新新闻

Vue实战进阶:从环境配置到动态路由与多端部署要点

Vue实战进阶:从环境配置到动态路由与多端部署要点

学Vue这几年,从最开始只会照着教程敲todo list,到后来完整负责过好几个基于Spring Boot加Vue的前后端分离项目,中间踩过的坑、绕过的弯,攒下来不少东西。这份Vue网站制作学习心得,我按“从入门到实战的进阶之路”来写&…

2026/10/12 13:21:33 阅读更多 →
豆瓣Top250数据分析大作业:Python爬虫+可视化完整源码与避坑指南

豆瓣Top250数据分析大作业:Python爬虫+可视化完整源码与避坑指南

简介:这份资源是面向高校学生与Python初学者的数据可视化课程设计完整方案,围绕豆瓣电影Top250数据集展开,涵盖数据采集、清洗、统计分析与图表呈现全流程,适合用作毕业设计、期末大作业或课程设计的高分参考。压缩包共221个文件&…

2026/10/12 13:21:33 阅读更多 →
基于SpringBoot+Vue的办公管理系统:全栈设计与实现指南

基于SpringBoot+Vue的办公管理系统:全栈设计与实现指南

每年到这个时间点,都会有一批学弟学妹来问我:"毕设选题到底怎么选?Java后端会不会太难?前端是不是要写很多页面?"我的回答一直很统一:如果方向是Java Web或全栈开发,基于SpringBoot …

2026/10/12 13:21:33 阅读更多 →
claude-mem:为Claude打造跨会话长期记忆的本地记忆管理层

claude-mem:为Claude打造跨会话长期记忆的本地记忆管理层

你有没有过这种体验:跟Claude聊一个项目,前期费了好大劲把背景、依赖、约束讲清楚,刚进入正题,上下文窗口满了,或者新开一个会话,全部打回原形。每次对话就像金鱼一样,七秒记忆,项目…

2026/10/12 13:21:33 阅读更多 →
云数据库HTTP API歌单更新实战:权限、批量与避坑指南

云数据库HTTP API歌单更新实战:权限、批量与避坑指南

1. 从一次歌单同步的诡异失败说起做云音乐类小程序,绕不开的一个核心功能就是歌单管理。用户在小程序端新建、编辑、删除歌单,这些操作最终都要落到云数据库里。我最近在重构一个云音乐小程序的管理系统,前面几篇已经把基础架构、页面路由、用…

2026/10/12 13:21:33 阅读更多 →
C++中判断汉字:从编码原理到跨平台实现

C++中判断汉字:从编码原理到跨平台实现

1. 从一次文本统计翻车说起:为什么“判断汉字”没那么简单前阵子帮一个做数据清洗的朋友处理一批用户提交的文本,需求听起来特别朴素:把每条记录里的汉字挑出来,统计一下字数,非汉字的字符(标点、数字、字母…

2026/10/12 13:20:31 阅读更多 →

日新闻

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

在数码相机、高清显示屏与现代矢量图形技术高度发达的今天,画面可以做到绝对的锐利、平滑与无瑕。然而,当一张秋日手账插画或拍立得照片过于“平整无瑕”时,往往会散发出一种冰冷生硬的“数码塑料感(Digital Plasticity&#xff0…

2026/10/12 0:00:59 阅读更多 →
活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

在现代网页与移动端设计中,横排(Horizontal Layout)早已经成为了绝对的主流。然而,当我们翻开泛黄的线装古籍、宋版木刻诗集,或是欣赏一张茶道雅集的手写便签时,那种**自上而下纵向书写、自右向左逐列铺展&…

2026/10/12 0:00:59 阅读更多 →
周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

每到周日的晚上八点到十点,很多人心里都会悄悄亮起一盏警示灯。 在心理学上,这种现象有一个专门的称谓——“周日夜晚焦虑症(Sunday Scaries)”。明天又是周一,闹钟又要重新在七点响彻卧房;脑海里仿佛有一个…

2026/10/12 0:00:59 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/12 0:16:30 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/12 0:16:43 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 10:45:37 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:53 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:54 阅读更多 →