包含关键字 typecho 的文章

老婆天天拿 chatgpt 写小说,弄的文件东一头西一头,上下文满了还有幻觉,搞的很难受,她不好受,那我也别想着好受,这是背景。

所以,小可爱写作助手就这样诞生了!

纯本地,不用服务器,数据导出 josn 保存,写作这种事情,搞线上是一点好处没有,但是你可以把放稿子的文件夹同步到云端。附带 ai 功能,导入你的大纲或者你已经写的文章就能够和你一起商讨剧情,帮你整理和记录世界线和人物设定,剧情走向等。但是没有一键续写的功能,只是一个辅助的作用。

欢迎各位大佬给出建议。感谢各位的支持。

试用地址 https://write.thetruetao.com/

顺便提一嘴,我自然拼读的项目这两天看的人明显少了,赶紧学习起来!


📌 转载信息
原作者:
Jojo_Coco
转载时间:
2026/1/12 10:32:36

先容我偷个懒,复制粘贴一下之前写过的日志:

  • scripts10:jsDelivr 近期加强了对代理相关规则仓库的限制,导致直接通过 cdn.jsdelivr.net 访问这些链接时会提示 “User blocked”。所以切换至稳定的 GitHub Raw 链接。同时引入了 AI 专项和精细的大厂服务分流,因为现在不仅使用了 ACL4SSR 维护的规则列表,所以取消了变量拼接。规则提供者从 10 个扩展至约 23 个,融合 Loyalsoldier 与 ACL4SSR 规则集,新增了对 AI、Telegram、Netflix 等海外服务的专用代理支持,以及更彻底的广告与隐私追踪阻断(如 EasyPrivacy、BanEasyListChina),分流逻辑更精细全面。
  • scripts11:移除了大量的尤其是去广告方面的规则,回归简洁,仅保留必要功能和规则。scripts10 的规则过多,性能差。去广告方面的效果提升微乎其微,尤其是 app 内的广告,但是安卓 7 以上的手机不 root 无法 mitm。
  • scripts12:在 scripts11 基础上, 新增 normalizeName() 函数,先对节点名称做 “归一化”,自动识别并转换国旗 emoji,去除空格、括号等干扰字符,提升匹配准确率。地区识别新增了三字码和机场码,覆盖更多机场命名规范。

我不喜欢 scripts10, 我认为他规则过多,性能差,还没多少用。而 scripts12scripts11 的改进版本,所以我在这里只放 scripts12,如果对 scripts10 这一大坨感兴趣的可以去该仓库查看 GitHub - ZipZhu/Flclash-scripts: A repository for Flclash scripts
scripts10 是一个糟糕的尝试,写出这种东西的我应该被挂到晾衣杆上晒太阳。

以后不会再在规则上做过多添加和修改,我总是会想起那恐怖的一坨,让我十分的生理不适。

前面发过一个帖子向站内的佬友们咨询了一下 win + 安卓换苹果全家桶的一些问题,现在几乎已经打定主意换苹果全家桶了。不过我还是想在等一手 apple intelligence 和新设备发布,应该会在未来一两年内全部更新为苹果全家桶。

话说 iphone/ipad/macos 全平台的代理工具,不知道佬友们在用什么,可以分享一下你。最近有所了解和关注,loon 的社区好像是最活跃的,除此之外我还有在考虑 surge。也许等我换了设备之后会停止 flclash 的脚本更新,转而去做 loon 插件?话说站内几乎没有人在分享 loon/surge/qx/stash 的插件和配置,想来是因为涉及应用内广告屏蔽和部分高级功能解锁,不便公开传播。

心情突然有点复杂?想要通过表情包这种预制情感包,表达一下来着,却没找见那张表情包,不知道是云同步的时候被吞了还是被 Eagle 吞了。。。

以下是 scripts12

function main(config) {
  const ICON_BASE = "https://cdn.jsdelivr.net/gh/Koolson/Qure@master/IconSet/Color/";
  const RULE_BASE = "https://cdn.jsdelivr.net/gh/ACL4SSR/ACL4SSR@master/Clash/";

  const maxRatio = 3.0;
  const ratioRegex = /(?:\[(\d+(?:\.\d+)?)\s*(?:x|X|×)\]|(\d+(?:\.\d+)?)\s*(?:x|X|×|倍)|(?:x|X|×|倍)\s*(\d+(?:\.\d+)?))/i;

  const filterKeywords = '群|邀请|返利|官网|官方|网址|订阅|购买|续费|剩余|到期|过期|流量|备用|邮箱|客服|联系|工单|倒卖|防止|梯子|tg|发布|重置';
  const blackListRegex = new RegExp(filterKeywords);

  function normalizeName(name = '') {
    return String(name)
      .trim()
      .replace(/\s+/g, '')
      .replace(/[【】[\]()()]/g, '')
      .replace(/🇺🇸/g, 'US')
      .replace(/🇯🇵/g, 'JP')
      .replace(/🇸🇬/g, 'SG')
      .replace(/🇭🇰/g, 'HK')
      .replace(/🇹🇼/g, 'TW');
  }

  function buildRegionRegex(region) {
    const keywords = region.pattern.split('|');
    const escaped = keywords.map(k => k.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'));
    return new RegExp(escaped.join('|'), 'i');
  }

  const originalProxies = config.proxies || [];

  const filteredProxies = originalProxies.filter(proxy => {
    if (!proxy || !proxy.name) return false;

    if (blackListRegex.test(proxy.name)) return false;

    const ratioMatch = proxy.name.match(ratioRegex);
    if (ratioMatch) {
      const ratio = parseFloat(ratioMatch[1] || ratioMatch[2] || ratioMatch[3]);
      if (ratio > maxRatio) return false;
    }
    return true;
  });

  if (filteredProxies.length === 0 && originalProxies.length === 0) return config;

  const REGIONS = [
    { name: "美国节点", pattern: "美国|美|US|USA|UnitedStates|United States|纽约|NewYork|NYC|JFK|洛杉矶|LosAngeles|LAX|旧金山|SanFrancisco|SFO|圣何塞|SanJose|SJC|西雅图|Seattle|SEA|芝加哥|Chicago|ORD|达拉斯|Dallas|DFW|硅谷|SiliconValley", icon: "United_States.png" },
    { name: "日本节点", pattern: "日本|日|JP|JPN|Japan|东京|Tokyo|TYO|NRT|HND|大阪|Osaka|KIX", icon: "Japan.png" },
    { name: "狮城节点", pattern: "新加坡|狮城|SG|SGP|Singapore|SIN", icon: "Singapore.png" },
    { name: "香港节点", pattern: "香港|港|HK|HKG|HongKong|Hong Kong", icon: "Hong_Kong.png" },
    { name: "台湾节点", pattern: "台湾|台|TW|TWN|Taiwan|台北|Taipei|TPE|新北|NewTaipei", icon: "Taiwan.png" }
  ];

  const proxiesWithNorm = filteredProxies.map(p => ({
    ...p,
    __normName: normalizeName(p.name)
  }));

  const validRegions = [];
  for (const region of REGIONS) {
    const regex = buildRegionRegex(region);
    if (proxiesWithNorm.some(proxy => regex.test(proxy.__normName))) {
      validRegions.push({ ...region, regex });
    }
  }

  const validRegionNames = validRegions.map(r => r.name);

  const proxyGroups = [];

  proxyGroups.push({ name: "节点选择", icon: `${ICON_BASE}Proxy.png`, type: "select", proxies: [...validRegionNames, "手动切换"] });

  for (const region of validRegions) {
    const regionProxies = proxiesWithNorm
      .filter(proxy => region.regex.test(proxy.__normName))
      .map(proxy => proxy.name);

    if (regionProxies.length > 0) {
      proxyGroups.push({ name: region.name, icon: `${ICON_BASE}${region.icon}`, type: "url-test", proxies: regionProxies, interval: 300, tolerance: 50 });
    }
  }

  proxyGroups.push({ name: "手动切换", icon: `${ICON_BASE}Available.png`, "include-all": true, type: "select" });
  proxyGroups.push({ name: "GLOBAL", icon: `${ICON_BASE}Global.png`, type: "select", proxies: ["节点选择", ...validRegionNames, "手动切换", "DIRECT"] });

  config["proxy-groups"] = proxyGroups;

  config["rule-providers"] = {
    LocalAreaNetwork: { url: `${RULE_BASE}LocalAreaNetwork.list`, path: "./ruleset/LocalAreaNetwork.list", behavior: "classical", interval: 86400, format: "text", type: "http" },
    UnBan: { url: `${RULE_BASE}UnBan.list`, path: "./ruleset/UnBan.list", behavior: "classical", interval: 86400, format: "text", type: "http" },
    BanAD: { url: `${RULE_BASE}BanAD.list`, path: "./ruleset/BanAD.list", behavior: "classical", interval: 86400, format: "text", type: "http" },
    BanProgramAD: { url: `${RULE_BASE}BanProgramAD.list`, path: "./ruleset/BanProgramAD.list", behavior: "classical", interval: 86400, format: "text", type: "http" },
    ProxyGFWlist: { url: `${RULE_BASE}ProxyGFWlist.list`, path: "./ruleset/ProxyGFWlist.list", behavior: "classical", interval: 86400, format: "text", type: "http" },
    ChinaDomain: { url: `${RULE_BASE}ChinaDomain.list`, path: "./ruleset/ChinaDomain.list", behavior: "domain", interval: 86400, format: "text", type: "http" }
  };

  config["rules"] = [
    "RULE-SET,LocalAreaNetwork,DIRECT",
    "RULE-SET,UnBan,DIRECT",
    "RULE-SET,BanAD,REJECT",
    "RULE-SET,BanProgramAD,REJECT",
    "RULE-SET,ProxyGFWlist,节点选择",
    "RULE-SET,ChinaDomain,DIRECT",
    "GEOIP,CN,DIRECT",
    "MATCH,节点选择"
  ];

  config.proxies = originalProxies;
  return config;
}

📌 转载信息
原作者:
ZipZhu
转载时间:
2026/1/12 10:16:45

安卓 + 86 手机号注册,邮箱验证完就弹出来这个,怎么换 ip 都没有用,美国 ip(vps 和机场都有试)、新加坡(机场)、台湾(机场)、甚至马来西亚(机场)的 ip 都试了,这一关始终绕不过去,甚至因为邮箱验证太多次,邮箱都被 block 了。

照着这位佬友的教程 [教程] 汇总近期 Telegram (+86) 注册 / 登录难题:SMS 收费、收不到验证码及 GMS 风控解决方案 下载了 telegram x,但是并没有发送短信,而是发送了 code 到 telegram 上,但是我都没登录上啊

佬友们,现在想搞个 tg 号有什么渠道吗?小黄鱼上 tg 关键词也被屏蔽了。


📌 转载信息
转载时间:
2026/1/12 10:15:43

夜深了,诚邀佬们听广播

可以自己部署玩玩,一个电台

100% 完全由 AI agent 驱动,需要自己填接口,自备 ai 和 tts。(不过里面还是内置了一个我自己部署的微软大声朗读 tts 接口,是免费用,有条件的建议可以自己 vercel 也部署一个)

做了两天的小玩具,感觉目前 bug 真的还是很多而且来不及重构代码了准备回校住宿一周了

什么节目形式都有可能,很随机,主题的话看时段,可以通过观众来信来调整节目的方向形式(看你是什么要求)

还是决定提前分享一下想法,以后正式版出来了再开一个主贴

目前的问题包括但不限于:

音乐播放时好时坏(api 接口网络和音频调度都有可能,暂未明)

ai 搜索选歌曲不知道为什么尤其钟爱 "陈绮贞"" 房东的猫 " 这两个歌手,只会在这里面选。来不及排查了。

部分音频内容衔接不流畅,比如在节目首次生成完成后到播放音频有真空期。

还有来信功能目前不知道怎么样,也还没来得及再次测试

….

直接体验也可以,我部署了


📌 转载信息
原作者:
CJackHwang
转载时间:
2026/1/12 10:15:20

主要更新

设置页面增加了中文支持

去除了 scipy 依赖,应用瘦身 40%

我自己也是用了蛮长时间了:

ASR 提供者
groq、qwen ASR、paraformer (本地)、zipformer-small (本地)、siliconflow

LLM 提供者
groq、openai-compatible、nvdia、OpenRouter

项目地址 进入 release 下载即可

有帮助的话希望佬友们点点 star、提点建议,不胜感激~

已知问题
不使用管理员模式打开的话可能会有些热键注册不上,如 f12(这似乎是 win32api 的特性),可以考虑更换到其他自己喜欢的热键。

这些中文字体看着有点丑啊,有没有懂的佬友分析一下 qt 里面这个中文字体怎么优化一下?


📌 转载信息
转载时间:
2026/1/12 10:14:57


未经考证,但是确实开了个正常聊天就是流式回复

在这个对话里发任何信息 他都会什么也不说 然后一口气吐一大堆 网络环境可以做到秒回

不知道是否有助于破限呢?(过去流式有大概率因为 AI 输出了太多太多敏感词,导致单次对话被截断)


📌 转载信息
原作者:
StellaFortuna
转载时间:
2026/1/12 10:14:33

claude code 修改 Word 求指导 - #12,来自 smart-lty 继续,看到佬的思路后,让 ai 帮忙糊了一个 skill,目前我测试了一下大概能满足我的需求,后面在使用过程中再继续更新。
另外 skill 热重载真好用,再也不用一直 \q


📌 转载信息
转载时间:
2026/1/12 10:14:10

我的帖子的小技巧很多人关心,但是都是觉得提示语 100 万的,而忽略了我觉得 效果才是真!

模糊的问题得到模糊的回答,具体的问题一轮就能修好。这就是我做这个工具的目的。

例如 vibe coding


https://waytoagi.feishu.cn/wiki/S7JCwEnW2ixvSgkNh06cfAdLn9b

vibe coding 时候,如果我们不能提供完整的提示语,根本跑不通!

那么,你又不会,怎么办? 利用我的超级提示语工具试试:



看! 我的超级提示语工具 不是玩具,是真的有用!

例如 Twitter 书签分析器

我的超级提示语工具会给你提示和补充知识:


[Role] You are a Senior Social Intelligence Analyst specializing in X (Twitter) content forensics. You analyze bookmarked links not as URLs, but as *user-curated knowledge signals*.
[Input Format] I will provide a JSON array of bookmarks. Each object has:
- "url": string (e.g., "https://x.com/elonmusk/status/123456789")
- "title": string (X post text or page title, may be truncated)
- "saved_at": ISO datetime string (e.g., "2025-11-03T14:22:05Z")

[Critical Constraints]
1. NEVER hallucinate URLs, titles, or dates. If data is missing, write "N/A".
2. DO NOT summarize generically. Every insight must be grounded in the actual input.
3. Output ONLY valid JSON with strict schema below — no explanations, no markdown, no extra text.

[Output Schema]
{
  "executive_summary": "1-sentence insight capturing the user's dominant intellectual posture (e.g., 'Focused on AI safety debates, skeptical of frontier model releases')",
  "topic_clusters": [
    {
      "cluster_name": "string (e.g., 'LLM Safety')",
      "keywords": ["string", ...],
      "representative_urls": ["url", ...] (max 3),
      "confidence_score": 0.0–1.0 (how cohesive the cluster is)
    }
  ],
  "temporal_pattern": {
    "freshness_score": 0.0–1.0 (proportion of links <30 days old),
    "peak_activity_week": "YYYY-WW (e.g., 2025-45)",
    "decay_trend": "increasing" | "decreasing" | "stable" (based on saved_at timestamps)
  },
  "author_analysis": {
    "top_3_authors_by_frequency": ["@handle", ...],
    "influence_bias": "tech-elite" | "academia" | "journalism" | "hobbyist" | "mixed" (based on domain patterns: arxiv.org, nature.com, techcrunch.com, etc.)
  },
  "cognitive_risk_flags": [
    "confirmation_bias" | "source_concentration" | "low_freshness" | "high_noise_ratio" | "none"
  ],
  "actionable_insight": "1 concrete, non-obvious recommendation (e.g., 'Diversify by adding 2 academic sources on alignment theory to counter confirmation bias')"
}

[Now process this data:]

看! 如果你是开发 dify 或者 n8n 之类的,这个提示语就够用了。

让 AI 主动问你,而不是猜你

我的超级提示语工具 会问:
不管你的提示多模糊,它都会主动问你,让你自己发现哪里不对。会说:“确认一下,你是想要 X 还是 Y?"我假设你要的是 Z,对吗?" 对于不懂代码的人,这个差别至关重要。那些澄清问题帮你省下了无数小时,本来可能在调试一个解决错误问题的代码。

使用地址

https://liang.348349.xyz/prompt-chat

模糊的问题得到模糊的回答,具体的问题一轮就能修好

我有想法” 和 “我做出来了” 之间的距离,从没有这么近过,希望我的超级提示语工具能够帮忙!


📌 转载信息
转载时间:
2026/1/12 10:14:07

DeepArt.AI Creator Pro 兑换码!快领

软件介绍 (官方自己说的:
让你能够轻松且创新地利用 Ai 编辑图像。简单、创新且离线。

领取教程:
打开 Deep Art Account

然后在 Promotion 输入兑换码: CHIPADVENT25 点击继续。

接着去 Menu > Licenses 复制拿到的激活密钥。

下载他的软件,输入刚才拿到的密钥并激活就可以使用了。

例子生成效果:


📌 转载信息
原作者:
dkly2004
转载时间:
2026/1/12 10:13:34

撸了么

最近死了么 app 爆火,于是我突发奇想开发了一个撸了么 app,帮助机长起飞的健康记录安卓 APP。

项目地址:GitHub - sky22333/luleme: 撸了么 - 帮助机长起飞的健康记录安卓 APP。

下载地址:Releases · sky22333/luleme · GitHub

功能特点

  • 隐私安全:数据完全本地存储,无网络上传。
  • 快捷记录:一键记录每日状态,支持撤销与补录。
  • 数据统计:提供周视图和月度热力图,直观展示频率趋势。
  • 健康建议:根据年龄和频率提供个性化健康提醒。
  • 现代设计:基于 Material Design 3 的流畅动画与界面。

预览图


📌 转载信息
原作者:
sou
转载时间:
2026/1/12 10:13:09

▎ Brown Noise Rain: SleepLoop

Sleeploop 提供专业的棕色、粉色、绿色和白色噪声,以及 70 多种高质量的雨声和自然声音。

需要 iOS 17.6 或更高版本,目前内购 SleepLoop Premium Lifetime 限免 $ 0

解锁方法:
左上角点击后弹出内购页

限时活动,购买前请确认在限免期

可以不用,但是不能没有

转载自 小声逼逼 群组


📌 转载信息
原作者:
Luster
转载时间:
2026/1/12 10:07:26

Git Hub

有空可以帮忙支持一下小白新人
** 有能力的老板可以资助一下 LDC,球球辣 **
50LDC 即可鼓励新人

半自动化是因为 API 化失败了,所以采用开浏览器半自动化的模式了。

欢迎有实力的佬友进行调优,本人是小白,用哈基米和 Codex 写的。写得很粗糙,不要见怪。

使用方法看 README

自备一个订阅机场,clash 核心自下。配置我个人是通过 clash 右键订阅机场,打开文件,复制到 local.yaml 覆盖全部使用。运行后,本地的 clash(或者其他代理)可以关了,或者切换为规则。不要开全局,系统代理。否则两个 clash 会冲突。

邮箱注册功能来自: DuckMail


@ 个人资料 - Syferie - LINUX DO

Business 登录地址:

后续登录也靠佬的前端:

运行界面:

账号密码保存在 csv 文件下:

待完善功能

| 功能 | 状态 | 说明 |

| 纯 API 注册 | 未实现 | Google 使用 reCAPTCHA Enterprise,纯 API 无法绕过

已知问题

| 问题 | 说明 |

| IP 封锁 | 部分代理节点被 Google 封禁,程序会自动切换节点 |

| 按钮匹配不正确 | 有大概率触发点击验证和重发验证码两个按钮,但是不影响功能 |

| 页面加载慢 | 网络不稳定时页面加载较慢,可能导致超时 |

| 存在僵尸进程 clash.exe| 在后台会占用资源,可自己手动进任务管理器结束 |

更新预告
大兵自助验证 API 已完成,完全全自动,使用方法参考市面上的 BOT,输入验证 URL 即可完成验证。这几天活动关了,等稳定了可能考虑开源给大家。


📌 转载信息
原作者:
Zooo1
转载时间:
2026/1/12 10:03:20

可以在这里分享需要频繁定制的个性化 clash 规则.

其实我开始是想做一个 clash 配置管理中心,不过刚刚立项,就和 RyanVan 佬的项目 https://ryan-ai.de 撞车了,然后人家完成度已经很高了,就不是很有必要再折腾一遍.

不过我这里还是有一个比较好的功能点是可以结合起来用的.

这个小功能可以按照 clash 的 rule-provider 规范 (参见规则集合内容 - 虚空终端 Docs) 定义规则提供者

比如我定义的这个:
https://cr-hub.jsonsong.top/rules/ai-us
是我目前在使用的,需要走美国家宽的路由规则.
其他规则我一般是走 hk.

使用方式是,定义 rule-provider 和指定分组


📌 转载信息
转载时间:
2026/1/12 10:03:13

先直接上链接。GitHub repo: GitHub - haddock-development/claude-reflect-system: Self-improving skills system for Claude Code - learn from corrections, never repeat mistakes

什么是 Reflect skill ?

核心逻辑是让 AI 在反复的对话过程中,能够 “记住” 你的偏好和纠错,从而实现自我进化相关的其它 Skills。

常见的实现方式?

手动 / 自动

Reflect skill 的简单实例

直接看这个片子。https://youtu.be/-4nUCaMNBR8?si=jIUlnm7KuJ6GXjcQ

里面提到了 Authentication 模块忘了使用 SQL injection。 Reflect skill 可以从当前的 code review skill 的对话里面,抽取相关的纠正,完善 code review。原文提到 corrections the signal。

自动化程度可调节(参考 Github repo)

如何自动化?

自动化的流程是一个 cloud code hooks,在一个对话停止之后,它会自动执行一个 shell 脚本。

此外,这个功能可以打开或者关闭。


📌 转载信息
原作者:
qian_zhou
转载时间:
2026/1/12 10:02:16

有兴趣的佬友帮忙点点 star

项目地址:

原贴地址:[开源自荐] 基于 AI 的股票分析系统

某强大佬友接入微信后的效果反馈

爱你们


📌 转载信息
原作者:
mumuladu
转载时间:
2026/1/12 10:01:30

我推荐的食用方法:
根据 PPT/PDF 生成对应的思维导图 & 闪卡 & 测验
具体步骤为
1,先根据思维导图进行学习,不会的就点击思维导图的某个部分
2,然后再利用闪卡巩固记忆
3,在纸上记一下重点内容,消化吸收
4,做一下测验,完成最后的验收
过程大约半个小时,可以保证知识 90~100%(因人而异,我基本是 100%)的掌握
至少生物是这样的




📌 转载信息
转载时间:
2026/1/11 19:29:29

很早前就遇到 feadback-mcp 失败的问题了
也测试了大佬们的三术和寸止好像都会出现问题
不知道是我配置的问题,还是什么原因,猜测可能是 wf 对 mcp 工具的描述进行了检测?
所以我 fork 项目给提示词都换成 "变形金刚" 了,好家伙,现在我是可以正常用了,佬友们也可以试试看艾


📌 转载信息
转载时间:
2026/1/11 19:28:34

RenewHelper 迎来发布以来最大规模的升级 ——v2.0 版本

除了完善的多渠道通知提醒以外,本次更新重构了核心逻辑,引入了多币种汇率自动换算、支出趋势分析、历史账单管理。无论你是管理几台 VPS,还是几十个订阅,v2.0 都能让你对每一笔数字支出如指掌。


v2.0 核心亮点:三大维度升级

1. 财务看板:钱花在哪里,一目了然

v2.0 不再只是告诉你 “什么时候过期”,而是告诉你 “花了多少钱”。

  • 多币种自动汇率换算

  • 功能:支持 USD, CNY, EUR, GBP 等主流货币。系统接入了免费的汇率 Frankfurter API(该 API 服务也支持用户自建),并利用 KV 缓存机制优化性能,每天自动更新汇率。

  • 体验:你购买的是美元支付的服务器,是日元支付的游戏会员?没问题。系统会自动将它们换算为你设置的 “默认币种”(如 CNY),并统计总资产规模。

  • 双模式支出分析 (Dashboard)

  • 点击首页的 “视图切换” (View Switch)“支出分析”,你将看到全新的可视化图表。

  • 账单金额模式 (Bill Amount):按服务的订阅周期统计,包含开启了自动续费的未来预测账单统计,适合做预算规划。

  • 实际支出模式 (Actual Cost):按你实际付款的操作日期统计,适合查看每月的现金流压力。

  • 交互式图表:支持查看 “月度趋势” 曲线、“月度平均支出” 和 “年度汇总” 柱状图,也可以点击某个月份查看当月的详细消费明细。

2. 账单管理:全生命周期记录

以前的版本只记录 “下一次到期日”,v2.0 开始记录每一次 “续费历史”。

  • 完整的续费历史 (Renewal History)

  • 现在,你可以为每一个服务记录无限条历史账单。

  • 补录功能:老用户的福音。点击服务菜单中的 “历史记录” → “+”,可以补录过去几年的续费记录,系统会自动计算历史总花费。

  • 智能续费:点击 “手动续期” 时,系统会自动根据你的周期设置(如:月付、年付、农历周期)预填充开始和结束日期,并自动填入价格。

  • 未来账单预测 (Upcoming Bills)

  • 左上角的 铃铛图标 变得更聪明了。

  • 它不仅显示即将到期的服务,还会根据你的 “自动续期” 设置,预测未来 N 天内需要支付的金额总和。

  • 自定义阈值:你可以在设置中调整 “待付款提醒天数”(默认为 7 天),提前规划资金。

3. 体验与部署:更自由,更强大

  • 高级筛选器 (Smart Filters)
  • 服务太多找不到?v2.0 增加了强大的筛选栏。
  • 按状态:已过期、n 天内到期、30 天内到期。
  • 按稳定性:新服务 (<30 天)、长期服务 (>1 年)。
  • 按标签:点击标签即可快速聚合查看。
  • 自动更新:支持 Watchtower,镜像更新后自动拉取,保持最新,懒人福音。
  • 自定义通知标题:现在的推送通知(Telegram, PushPlus 等)支持自定义标题。你可以把它改为 “我的财务日报” 或任何你喜欢的名字,让提醒更具个性化。


v2.0 快速上手教程

如果你是新用户且想一次部署并保持更新建议按 README 中,方式三:GitHub Actions 部署并启用 sync 上游同步(注意必须设置完 secrets 才会部署成功)。

场景一:从 v1.x 升级与数据迁移

如果你是老用户,更新代码后,可能会发现很多项目没有历史账单数据。

  1. 部署新代码:将 _worker.js 替换为 v2.0.20 版本。
  2. 数据迁移工具
  • 进入 设置 (Settings)数据管理
  • 点击 “升级旧数据 (Migrate Old Data)”
  • 作用:系统会自动扫描所有旧项目,根据它们当前的 “上次续费时间” 和 “周期”,自动生成一条初始的账单记录。这能让你立刻看到财务统计数据,而无需手动一个个添加。(除了手动操作,系统也每日会自动扫描并提醒一次)

场景二:如何记账?

假设你刚续费了一台年付 $50 的 VPS。

  1. 在列表中找到该 VPS,点击 “手动续期” (Renew) 按钮。
  2. 系统会弹出对话框:
  • 续费日期:自动填入今天。
  • 账单周期:自动根据去年的结束日期往后推算一年(例如 ),无需手动计算。
  • 金额:自动填入预设的 $50(你也可以根据实际修改金额)。
  1. 点击 “确认”
  2. 结果:服务的 “到期日” 自动更新,同时在后台生成了一笔历史账单。你的 “支出分析” 看板中,今年的支出会自动增加 $50(对应的汇率换算金额)。

场景三:查看 “我今年在订阅上花了多少钱?”

  1. 点击主界面右上方的 “视图切换”,选择 “支出分析”
  2. 在右侧的 “年度汇总” 区域,你将看到本年度的总支出柱状图。
  3. 点击 “2026” 柱状条,左侧的趋势图将展示 2026 年每个月的消费分布。
  4. 看一眼左上角的数字,那就是你今年的 “订阅总账单”。


Docker 部署指南 (支持自动更新)

对于不想依赖 Cloudflare Workers 的用户,现在可以直接使用 Docker compose 部署:

services:
  renewhelper:
    image: ieax/renewhelper:latest
    container_name: renewhelper
    restart: unless-stopped
    ports:
      - "9787:9787"
    volumes:
      - ./data:/data
    environment:
      # 1. 设置登录密码
      - AUTH_PASSWORD=admin
      
      # 2. 设置 Cron 定时任务 (Cron 表达式)
      - CRON_SCHEDULE=0,30 * * * *
      
      # 3. 容器时区 (影响日志和本地时间计算)
      - TZ=Asia/Shanghai

  # 若需自动更新保留以下watchtower配置
  watchtower:
    image: containrrr/watchtower
    container_name: watchtower
    restart: unless-stopped
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    command: --interval 86400 --cleanup
    environment:
      - TZ=Asia/Shanghai

  • 数据持久化:建议挂载 /app/data 目录以保存 KV 数据。
  • 多架构支持:镜像支持 amd64 和 arm64。


结语

RenewHelper v2.0 不仅仅是一个记录工具,它试图解决的是数字时代的 “订阅焦虑”。通过自动化的计算、清晰的图表和精准的提醒,它让你从被动的 “等待扣费”,变为主动的 “财务掌控”。

立即升级,开启你的订阅资产管理 2.0 时代!

项目地址: GitHub - RenewHelper
演示站地址https://lostfree.de5.net
演示站密码:demo
演示站千万不要保存你推送渠道的各种 TOKEN 和 API KEY!!!
代码完全开源,MIT 协议。
如果觉得好用,求大佬们给个 Star 支持一下!
有 Bug 或建议欢迎提 Issue 或在楼里反馈。


📌 转载信息
转载时间:
2026/1/11 19:28:23