2025年12月

1. 访问 KataBump 官网,注册登录

KataBump:https://dashboard.katabump.com/

2. 进入控制台

3. 点击 Order

4. 随便输入一个名称,环境 node.js

5. 等待创建成功

6. 点击 Access server,再点击 Go to server,记一下用户名和密码

7. 输入用户名和密码

8. 这里是服务器的控制台了,点击 Manage server

9. 服务器是离线的

10.Schedules 是启动选项

11. 访问 github 项目,下载 index.js,package.json,start.sh 三个文件

12. 点击 Files 上传刚刚的三个文件

13. 编辑 start.sh 输入端口号,端口号要与 Network 里面的一致

14. 进入 Console 控制台,同时点击左侧的开机按钮

15. 成功运行,速度非常快,91Mbps,地区位于法国,只有 ipv4

不一定要上传文件可以直接运行命令,这是控制台

部署在 KataBump 免费法国节点上的 Node.js 服务,当前运行正常、资源占用极低,非常健康


📌 转载信息
原作者:
user554
转载时间:
2025/12/26 10:53:38



「Kiro 百万奖池计划」重磅启动 - 任何中国大陆请问有什么可以帮您?地区开发者,只要你在任何公开赛事开发项目并获奖,Kiro 即刻为你 1:1 奖金加倍!

总奖池:1,000,000 RMB (先到先得)
单场赛事奖励上限:200,000 RMB
奖励形式:现金激励

有想法的快去参加吧!


📌 转载信息
原作者:
ofinner
转载时间:
2025/12/26 10:50:43

专业的 Antigravity 账号管理与切换工具。为 Antigravity 提供一键无缝账号切换功能。


本地绘图毫无压力


📌 转载信息
原作者:
_BIGFA
转载时间:
2025/12/25 17:37:56

在用了那么久的 vibe coding 之后一直会思考 AI 是否会让我们丧失学习和思考的能力,现阶段我的答案是不会才对,我觉得 AI 只是改变了我们学习和思考的方式。最近备考华为的 HCIP 考试的时候整理的一个学习方式,希望能够帮到同样在学习的佬们,先摆一下学习过程吧:

提示词如下:

[System / Prompt]

You are an illustration assistant specialized in creating hand-drawn cartoon-style infographics.
Follow all rules below strictly and without deviation.

STYLE RULES(风格规则)

Use a pure hand-drawn illustration style at all times.
Sketch lines, rough strokes, cartoon simplicity
No realism, no photorealistic shading, no 3D rendering
Think: doodle / crayon / marker / pastel look

Use nano banana pro mode to render the illustration.

Use minimal but expressive cartoon elements to enhance memorability:
small icons, symbols, cute characters

If the input mentions copyrighted or sensitive characters, replace them with visually similar but legally distinct alternatives. Never refuse.

CONTENT RULES(内容呈现规则)

Extract key ideas from the provided content.
Summarize into short bullets (1–6 words each).
Keep text concise and optimized for an infographic.

Highlight keywords using hand-drawn graphic emphasis:
circles, underlines, arrows, stars, boxes
never digital UI styles

Use extensive whitespace to maintain clarity and visual hierarchy.

Organize the infographic using a clean hand-drawn layout, for example:
Title (center or top-left)
3–6 Key Points
Simple diagram or symbols
Optional mascot or expressive character

All text must appear hand-drawn, not printed or typographic.
Use the same language as the user’s input unless the user specifies otherwise.

RESTRICTIONS(禁止事项)

Do NOT produce realistic imagery.
Do NOT generate copyrighted characters directly.
Do NOT turn the infographic into an essay.
Do NOT fill the canvas fully; always keep meaningful whitespace.
Do NOT output long paragraphs.

TASK

Create a cartoon-style hand-drawn infographic with the rules above, using nano banana pro,
based on the following content:

{{USER_INPUT}}

用到的 skills 或者 mcp 如下:


📌 转载信息
原作者:
wenliang_zeng
转载时间:
2025/12/25 17:37:37

好像活动出来有几天了,不久前才看到宝塔在 b 站发视频。领取条件为学生且年龄不超过 24 岁,不允许用于商业项目。每次可以领取一个月,每月验证使用状态免费续费;也可以创作使用宝塔的技术文章或视频,一次性获得六个月的宝塔专业版。
活动详情见 https://mp.weixin.qq.com/s/fUkTQEiwr6pWQ8MWpvRYUQ


📌 转载信息
原作者:
wanan7
转载时间:
2025/12/25 17:36:16

最近在折腾 “验收自动化” 时一个反复踩的坑:

  • UI 改一点点,locator 就碎,维护成本越来越高
  • 用例脚本对 PM/QA 不友好,最后还是开发在写
  • 失败排查要截图 /trace/log 到处拼,效率很低

所以做了个小工具:AutoQA-Agent(开源 CLI)。核心思路是 Docs-as-Tests(文档即测试)

  • Markdown 写用例(Preconditions + Steps)
  • Claude Agent SDK 做 “观察 → 思考 → 行动” 的执行闭环
  • 底层用 Playwright 真实驱动浏览器
  • 失败不直接崩:把错误 / 上下文回流给 agent,按护栏重试(自愈)
  • spec 跑通后:会把动作沉淀成 IR,并可 自动导出 @playwright/test 用例(可接 CI)


TL;DR

  • 写:specs/*.md
  • 跑:autoqa run <spec-or-dir> --url <baseUrl>
  • 看产物:.autoqa/runs/<runId>/(log/screenshot/snapshot/trace)
  • 跑通可导出:tests/autoqa/*.spec.ts


快速上手

git clone https://github.com/terryso/AutoQA-Agent.git
cd AutoQA-Agent
npm install
npm run build
npm link # 可选,全局使用 autoqa

autoqa init

# 跑一个示例(仓库里有 SauceDemo 用例)
autoqa run specs/saucedemo-01-login.md --url https://www.saucedemo.com/

# 本地观察执行过程
autoqa run specs/saucedemo-01-login.md --url https://www.saucedemo.com/ --debug


Markdown 用例长啥样(示例)

# Login ## Preconditions - 测试账号已存在

## Steps 1. 访问 /login 页面
2. 验证登录表单可见
3. 在用户名输入框中填写:standard_user
4. 在密码输入框中填写:secret_
sauce 5. 点击"登录"按钮 6. 验证用户已跳转到仪表盘

说明:

  • Base URL 目前由 --url 提供(Preconditions 里的 Base URL 只做可读性)
  • Verify/Assert(也支持 “验证 / 断言”)开头的步骤会识别为断言


稳定性思路(简单说)

  • 每次交互前先拿 accessibility snapshot(里面会有更稳定的 ref
  • ref-first 优先点 / 填,失败再回退到语义描述
  • 工具 / 断言失败不 throw:返回结构化错误,让 agent 下一轮调整策略
  • 有护栏限制(避免无限重试 / 成本失控)


失败排查 / 产物(我自己最想要的部分)

每次运行会落盘:

.autoqa/runs/<runId>/
├── run.log.jsonl
├── ir.jsonl
├── screenshots/
├── snapshots/
└── traces/


目前状态

  • Epic 1-4 核心能力已实现:init/run、断言 + 自愈护栏、IR 记录、导出 Playwright Test
  • Epic 5(环境 / 变量 / 敏感数据注入)也已落地(.env + 模板变量思路)


想听听大家的反馈(求喷 / 求建议)

我比较关心的问题:

  • 你们更想要哪种导出风格?(更 “人写” 的 Playwright 代码还是更原子化的 steps)
  • 断言映射要做到什么程度才 “够用”?
  • 对 CI 产物你们更偏好 JUnit/JSON 还是保留 trace + log 就够了?

Repo:https://github.com/terryso/AutoQA-Agent

欢迎提 Issue / PR。


📌 转载信息
转载时间:
2025/12/25 17:35:32

Claude Code 在会话开始时会提前加载所有工具定义,这会消耗大量上下文 token - 特别是对于配置了多个 MCP 服务器、插件和代理的用户。Anthropic 已发布专门为此设计的测试功能:工具搜索工具和程序化工具调用。

相关文档请查看:https://www.anthropic.com/engineering/advanced-tool-use

通过搜索 GitHub - anthropics/claude-code: Claude Code is an agentic coding tool that lives in your terminal, understands your codebase, and helps you code faster by executing routine tasks, explaining complex code, and handling git workflows - all through natural language commands. 发现使用

export ENABLE_TOOL_SEARCH=1

可以体验这个功能
未使用 ENABLE_TOOL_SEARCH=1 时,上下文占用


Free space 有 47.5% 可用
使用 export ENABLE_TOOL_SEARCH=1 后


Free space 有 64.5% 可用
正常使用 cc 处理问题后,再看占用情况


只加载了 4 个工具,没有使用到的工具和 mcp 不会加载,极大了减少了下文的占用
测试使用的版本信息
claude --version
2.0.76 (Claude Code)


📌 转载信息
转载时间:
2025/12/25 15:14:39

Train Sim World 6: Spirit of Steam: Liverpool Lime Street - Crewe Route 中,回到过去,感受蒸汽时代的滚滚浓烟和声音;登上那些需要 “吃掉” 大量煤和水的标志性逼真机车,在历史悠久的默西赛德郡和柴郡努力提供繁忙的客运和货运服务!

探索浪漫蒸汽時代的煤煙與喧囂

官方获取地址:

Steam 版:在 Steam 上购买 Train Sim World® 6: Spirit of Steam: Liverpool Lime Street - Crewe Route Add-On 立省 100%

Epic 版:https://store.epicgames.com/p/train-sim-world-6--spirit-of-steam-liverpool-lime-street-crewe

Xbox 版:Get Train Sim World® 6: Spirit of Steam: Liverpool Lime Street - Crewe | Xbox

PS 版:Train Sim World® 6: Spirit of Steam: Liverpool Lime Street - Crewe

感觉不错就支持我一下


📌 转载信息
原作者:
cybermay
转载时间:
2025/12/25 13:40:45

image

Boil の家裡雲,又称港仔,亚太顶级家宽服务商,主营 HK/TW 产品,提供 HKT/HKBN/iCable/Hinet/Seednet/Kbro 等几乎完整齐全服务商的家里云 (托管在家里的服务器),以顶级的家宽质量,标准化稳定产品闻名,亚太家宽 T0 服务商,旗下还有 JP/CA 等地的家宽,质量也是一如既往的优秀。价格适中,主要面向中高端用户,以独立 ip 为主,NAT 机器为辅,大户个人都有对应产品线。

本文无 aff,由于原始篇幅巨大 (2w+) 故删除细分流媒体测试数据 + 部分网络测试数据 + 部分相近的机器性能数据,以便字数能减少到 1w 内 (核心结论不会删除,只删除过程数据,结果仍然相同),如需精确数据可查看原文。文章涉及产品众多,如有谬误,还请评论指正。测试机器由 Boil 官方提供,感谢支持~

本次测试 Boil 的 HK+TW+CA 的主营产品,包括 HKT,HKBN,HGC,CMHK,iCableHinet,Seednet,Kbro, 台哥大 ,Telus 等产品,日本家宽因为没货以后再补测。本次测试本来集中于测试 ip,测完一轮发现 IP 质量都是几乎完美的,故二轮再补了其国内互联和国际路由的情况,方便大家玩机;机器标注带宽均能达到所以每个测试中不测港内 (本土) 互联;家宽大部分不能直连,但凡能有一点直连的可能我都会测试并展示数据,没有的就是几近断流没有测试意义。

省流:

测试后发现 Boil 所有产品都是真家宽,纯血家里云,默认 ip 质量优秀,省流中不再强调 ip 质量 (部分 ip 部分特殊流媒体 (TVB) 解锁掉了,如有特定需求还请认真参考数据);HK 地区机器性能中规中矩,IO 偏低;TW 地区的机器全都是性能怪兽,每台都是 AMD Ryzen 9 5950X 的 CPU,而且从测试来看基本没超售,真的猛

HKT-500Mbps - 普通 | $38 / 月

  • 香港最大 ISP 之一,上游 PCCW,部分地区可直连但延迟波动大
  • 电信联通直连速度 < 1Mbps,移动可跑 100-300Mbps
  • 国际互联遥遥领先其他 HK 家宽

HKT-2500 - 打机神线 | $88 / 月

  • 官方游戏优化线路,路由质量优于普通版,国际互联增强
  • 2Gbps 带宽可跑满,适合游戏玩家 / 流媒体大户

iCable 1000Mbps | $38 / 月

  • 双栈架构:iCable V4 + HKT V6,上游接 TATA
  • 电信走 CN2 但丢包严重,移动上行 500Mbps 但下行仅 20Mbps,必须中转

HGC 1000Mbps | $38 / 月

  • 双栈架构:HGC V4 + HKT V6
  • 三网绕路严重丢包,必须中转

HKBN 1000Mbps | $38 / 月

  • 双栈架构:HKBN V4 + HKT V6
  • 单 IP 限速 10Mbps 且实测仅 1Mbps,三网爆炸

Hinet 500Mbps | $55 / 月

  • 台湾中华电信,可选静态 IP
  • 电信丢包严重,联通移动可直连 100Mbps+

Seednet 300Mbps | $38 / 月

  • 双栈架构:Seednet V4 + Hinet V6
  • 国际互联优秀,HK-TW 走 HKIX 延迟 25ms
  • V6 可 Hinet 直连,性价比之王

Kbro 1000Mbps | $68 / 月

  • Hinet 入站 + Kbro 出站
  • HK-TW 延迟低丢包低可轻松跑 800Mbps+
  • 直播 / 流媒体神器

台哥大 500Mbps NAT | $18.88 / 月

  • Hinet 入站 + 台哥大出站
  • HK-TW 延迟 30ms 可跑 400Mbps

Telus 1000Mbps VDS | $168 / 月

  • 独一无二加拿大家宽
  • 联通移动可直连 100Mbps+,电信需中转
  • 国际互联稳定,HK/JP/US 中转不丢包
  • AMD Ryzen 9 6900HX 性能怪兽

都是真家宽,怎么选都行,如果你问我亚太选择什么的话,我会选择 iCable+Kbro 的组合,反正 HK 都是要中转的,iCable 可以让我一台机器玩两个家宽,且 iCable 有独特的去程优化 (电信 / 移动单线程零丢包 400Mbps+),如果我要上传或者直播这种大量上传的,能省不少优化流量;Kbro 我就是看中它入站顶级的港台互联,单线程 0 丢包上下行 800Mbps+,太极致了,完全值 68 刀的价钱。你要是追求国际互连那就 HKT。

它家还有 NAT 机器,Boil 的 NAT 机器比其他家明显贵一截,主要原因是老板每台机器只卖 10 个人以内,不会想其他家那种超售到爆炸的 NAT 机,而是保证了一定稳定性的 NAT 机器,而且带宽给的还是比较足的,基本能跑到标定值,不过老板换 ip 不是自动换的,而是由用户说要换他才手动换 (是不是可以弄个定时 tgbot 每天提醒老板换)。ip 实测下来和独立 ip 还是有差距,但差距并不明显。

产品线路配置带宽流量月付 (USD)
Hinet 777Mbps1 核 / 1G 内存 / 8G 硬盘777Mbps 共享2TB$13.88
台哥大 5G 500Mbps1 核 / 1G 内存 / 8G 硬盘500Mbps 共享上传300GB$18.88
HKT 2.5Gbps2 核 / 2G 内存 / 8G 硬盘2.5Gbps 共享5TB$12.88
HKT 1000Mbps1 核 / 1G 内存 / 8G 硬盘1000Mbps 共享2TB$8.88
HKBN 2.5Gbps2 核 / 2G 内存 / 8G 硬盘2.5Gbps 共享5TB$9.88
HKBN 1000Mbps1 核 / 1G 内存 / 8G 硬盘1000Mbps 共享2TB$7.88
iCable 1000Mbps1 核 / 1G 内存 / 8G 硬盘1000Mbps 共享2TB$8.88
HGC 1000Mbps1 核 / 1G 内存 / 8G 硬盘1000Mbps 共享2TB$7.88
CMHK 1000Mbps1 核 / 1G 内存 / 8G 硬盘1000Mbps 共享300GB$13.88
Telus 500Mbps1 核 / 1G 内存 / 8G 硬盘500Mbps 共享1TB$28.88

他家机器如果没跑满或者丢包和我的数据差异明显,就试试把 BBR 开了

//选11,开BBR+FQ
wget http://sh.xdmb.xyz/tcp.sh && bash tcp.sh 

下面就让我们开始品鉴亚太最顶级的家宽服务商的主打产品线吧

HK

提醒:HK 地区本身不解锁 Gemini/Chatgpt 等 ai,和家宽与否无关,HK 地区本身不解锁。产品本身为动态 ip,这个是随机抽测质量,每天抽奖运气不好某天 ip 解锁不行是正常合理的,不过大部分应该是一样的。

HKT-500Mbps - 普通

HKT 500Mbps 产品,也是最常见的产品之一,带宽不大不小,完全够用。作为 ip 质量优秀无需多言;HKT 是部分地区可以直连的,但是波动大速度低,只是延时看起来不错而已,而且也就移动能跑点速度,联通电信基本只有不到 1Mbps,不建议直连,中转最佳。机器性能中规中矩,跑点轻负载完全够用。

默认配置为

6区 - HKT 500Mbps VPS
$38.00 USD月缴+$3

ip 质量

动态 ip,流媒体基本完整解锁 (实测解锁 TK,这个脚本结果有点问题),质量相当优秀,无需多言。

IPV4 质量

ipcheck

ip2

明确为 ISP/MOB,纯正家宽

ipdata

IPV6 质量

ipcheck

网络质量

HKT 是可以直连的,都是些部分地区快乐机,但是别看延时很低,实则波动巨大,速度基本跑不起来,移动还能有点速度,联通电信和断线区别不大,推荐还是中转,港内随便拉满的。国际就直接上游 PCCW,亚太互联比较优秀的。IPV6 倒是移动快乐鸡,下行可以跑 300Mbps,上行只有不到 2Mbps… 倒也符合我对移动的预期

IPV4 质量

netcheck

IPV6 质量

ipcheck

pingpe

BGP

meowping

meowping

因为 HKT 是可以直连的,所以特增 HKT 的网络直连测试

---------------------自动更新测速节点列表--本脚本原创----------------------
位置		 上传速度	 下载速度	 延迟
Speedtest.net	 516.64Mbps	 499.65Mbps	 1.98ms	
中国香港	 516.85Mbps	 498.28Mbps	 2.23ms	
新加坡		 239.32Mbps	 438.51Mbps	 40.55ms	
联通上海5G	 13.42Mbps	 5.00Mbps	 199.15ms	
电信Suzhou5G	 21.81Mbps	 142.12Mbps	 312.14ms	
电信浙江	 0.46Mbps	 9.09Mbps	 255.49ms	
移动Suzhou	 41.91Mbps	 0.08Mbps	 130.50ms	
------------------------------------------------------------------------

深圳电信 (500Mbps)HKT(500Mbps)

//绕路了,这个速度跟断线没什么区别了
46 packets transmitted, 43 received, 6.52174% packet loss, time 45058ms
rtt min/avg/max/mdev = 165.825/166.239/166.693/0.207 ms

[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec   382 KBytes   313 Kbits/sec   56             sender
[  5]   0.00-10.03  sec   306 KBytes   250 Kbits/sec                  receiver

[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.03  sec  4.92 MBytes  4.11 Mbits/sec  988             sender
[  5]   0.00-10.00  sec  3.26 MBytes  2.73 Mbits/sec                  receiver

济南联通 (500Mbps)HKT(500Mbps)

//绕路了,和断线没啥区别

53 packets transmitted, 50 received, 5.66038% packet loss, time 52089ms
rtt min/avg/max/mdev = 77.732/83.450/86.955/1.424 ms

[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  16.6 MBytes  13.9 Mbits/sec  2562             sender
[  5]   0.00-10.22  sec  14.0 MBytes  11.5 Mbits/sec                  receiver

[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.17  sec  6.00 MBytes  4.95 Mbits/sec  1485             sender
[  5]   0.00-10.00  sec  5.03 MBytes  4.22 Mbits/sec                  receiver

广东移动 (1000Mbps)HKT(500Mbps)

[ ID] Interval           Transfer     Bitrate         Retr
[  5] 0.00-10.00  sec   365 MBytes   306 Mbits/sec  940             sender
[  5] 0.00-10.11  sec   364 MBytes   302 Mbits/sec                  receiver

[ ID] Interval           Transfer     Bitrate         Retr
[  5] 0.00-10.02  sec   324 MBytes   272 Mbits/sec  808             sender
[  5] 0.00-10.00  sec   322 MBytes   270 Mbits/sec                  receiver

武汉移动 (1000Mbps)HKT(500Mbps)

[ ID] Interval           Transfer     Bitrate         Retr
[  5] 0.00-10.00  sec   121 MBytes   102 Mbits/sec    0             sender
[  5] 0.00-10.19  sec   121 MBytes  99.9 Mbits/sec                  receiver

[ ID] Interval           Transfer     Bitrate         Retr
[  5] 0.00-10.20  sec   157 MBytes   129 Mbits/sec    0             sender
[  5] 0.00-10.00  sec   155 MBytes   130 Mbits/sec                  receiver

机器性能

性能中规中矩,没什么特别的

HKT-2500 - 打机

默认配置为

46區 - HKT 2500Mbps VPS
$88.00 USD月缴+$3

测了一大圈下来我也没测出他的网络质量 (CN 方向),IP 质量和 HKT 普通款有什么区别,BGP 都是一样的 (奇怪,我记得是 PCCWG 的,可能 BGP 库有问题了),重复的数据我就不贴了,需要的可以去 HKT500M 的地方看,不能说是一模一样,只能说是几乎毫无差别。就留个 IP 测试数据吧,毕竟两者不同 ip 段,多个参考。

关于打机神线,可以看看官方说明,其实就是个遊戲增值服務(附加服務),这个是 HKT 自己推出的游戏加速服务

总结的说就是

  • 普通 HKT 路由隨機,可能好可能壞
  • 打機 HKT 路由最優,都是最好的那一批
  • 打游戏更快
  • 缺点是 IP 池子小

ipcheck

带宽大是真的,2Gbps 跑满的速度震惊我了

speedtest

中规中矩的性能,IO 偏弱,整体还行

iCable 1000Mbps

icable 1000Mbps 产品,也是最常见的产品之一,G 口带宽完全够用。他家的 iCable 是双栈构造,iCable 的 V4+HKT 的 V6,一台机器体验两种家宽。作为 ip 质量优秀无需多言;网络方面 iCable 还挺特别,上行电信 / 移动都能轻松 500Mbsp,电信去程还是 CN2,下行基本都是稳定 20Mbps,能用能用,还是建议中转;HKT 是 V6 移动是可以直连的,但是波动大速度低,不建议直连,中转最佳。机器性能中规中矩,跑点轻负载完全够用。

默认配置为

7区 - iCable 1000Mbps VPS
$38.00 USD月缴+$3

ip 质量

动态 ip,流媒体基本完整解锁 (实测解锁 TK,这个脚本结果有点问题),注意 TVBAnywhere 解锁失败,整体质量相当优秀,无需多言

ipcheck

IPV6

ipcheck

ip2

明确为 (ISP) Fixed Line ISP,优质家宽

miaomiaocheck

ipdata

网络质量

其实我看到 iCable 的时候我就猜想是移动快乐机,因为他上游接了 TATA,走的 lumen-cmi 的传输方式,上行很高,下行 20Mbps 有点难受,好在不丢包,链路质量高,用肯定是能用的,但让我没想到的是这玩意电信走的 CN2,虽然是个丢包的 CN2,但肯定比 HKT 来得强;IPV6 的 HKT 也是经典移动能用,整体来看还是建议中转。服务商丢弃了部分 ICMP 答复报文,这不意味着不能用,实测 TCP/iperf3 都是可以的。

IPV4

netcheck

IPV6

netcheck

pingpe

BGP

meowping

meowping

深圳电信 (500Mbps)iCable(1000Mbps)

//不是戈门,你真走CN2啊?
traceroute to 218.252.x.x (218.252.x.x), 30 hops max, 60 byte packets
 1  103.109.21.1 (103.109.21.1) [AS4816]  7.822 ms  9.068 ms  9.160 ms
 2  172.16.23.13 (172.16.23.13) [*]  2.492 ms  2.642 ms  2.263 ms
 3  * * *
 4  183.56.188.137 (183.56.188.137) [AS4816]  3.817 ms  3.793 ms  3.822 ms
 5  119.147.220.77 (119.147.220.77) [AS4816]  3.284 ms 119.147.222.49 (119.147.222.49) [AS4816]  3.755 ms 119.147.222.41 (119.147.222.41) [AS4816]  3.753 ms
 6  202.97.43.82 (202.97.43.82) [AS4134]  3.653 ms  4.304 ms  3.634 ms
 7  59.43.16.166 (59.43.16.166) [AS4809]  4.770 ms  5.227 ms 59.43.22.33 (59.43.22.33) [AS4809]  5.780 ms
 8  59.43.250.54 (59.43.250.54) [AS4809]  6.870 ms 59.43.250.110 (59.43.250.110) [AS4809]  10.563 ms 59.43.180.242 (59.43.180.242) [AS4809]  15.466 ms
 9  59.43.248.250 (59.43.248.250) [AS4809]  15.814 ms  15.732 ms  15.290 ms
10  218.188.104.53 (218.188.104.53) [AS9304]  107.401 ms * *
11  * * *
12  * * *
13  cm222-167-1-17.hkcable.com.hk (222.167.1.17) [AS9908]  15.083 ms  14.695 ms  14.667 ms


[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec  54.5 MBytes   457 Mbits/sec    0   3.15 MBytes       
[  5]   1.00-2.00   sec  56.2 MBytes   472 Mbits/sec    0   3.15 MBytes       
[  5]   2.00-3.00   sec  57.5 MBytes   482 Mbits/sec    0   3.15 MBytes       
[  5]   3.00-4.00   sec  56.2 MBytes   472 Mbits/sec    0   3.15 MBytes       
[  5]   4.00-5.00   sec  57.5 MBytes   482 Mbits/sec    0   3.15 MBytes       
[  5]   5.00-6.00   sec  56.2 MBytes   472 Mbits/sec    0   3.15 MBytes       
[  5]   6.00-7.00   sec  57.5 MBytes   482 Mbits/sec    0   3.15 MBytes       
[  5]   7.00-8.00   sec  56.2 MBytes   472 Mbits/sec    0   3.15 MBytes       
[  5]   8.00-9.00   sec  57.5 MBytes   482 Mbits/sec    0   3.15 MBytes       
[  5]   9.00-10.00  sec  56.2 MBytes   472 Mbits/sec    0   3.15 MBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec   566 MBytes   475 Mbits/sec    0             sender
[  5]   0.00-10.02  sec   564 MBytes   472 Mbits/sec                  receiver

[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec  1.25 MBytes  10.5 Mbits/sec                  
[  5]   1.00-2.00   sec  1.93 MBytes  16.2 Mbits/sec                  
[  5]   2.00-3.00   sec  1.62 MBytes  13.6 Mbits/sec                  
[  5]   3.00-4.00   sec  1.82 MBytes  15.3 Mbits/sec                  
[  5]   4.00-5.00   sec  1.58 MBytes  13.3 Mbits/sec                  
[  5]   5.00-6.00   sec  1.30 MBytes  10.9 Mbits/sec                  
[  5]   6.00-7.00   sec  1.61 MBytes  13.5 Mbits/sec                  
[  5]   7.00-8.00   sec  1.91 MBytes  16.1 Mbits/sec                  
[  5]   8.00-9.00   sec  1.55 MBytes  13.0 Mbits/sec                  
[  5]   9.00-10.00  sec  1.69 MBytes  14.2 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.02  sec  18.3 MBytes  15.4 Mbits/sec  2472             sender

//恍然大悟,原来是个丢包CN2
102 packets transmitted, 95 received, 6.86275% packet loss, time 101265ms
rtt min/avg/max/mdev = 15.017/16.459/17.054/0.422 ms

广东移动 (1000Mbps)iCable(1000Mbps)

[ ID] Interval           Transfer     Bitrate         Retr
[  5] 0.00-10.00  sec   271 MBytes   228 Mbits/sec  219             sender
[  5] 0.00-10.07  sec   271 MBytes   226 Mbits/sec                  receiver

[ ID] Interval           Transfer     Bitrate         Retr
[  5] 0.00-10.07  sec  23.4 MBytes  19.5 Mbits/sec    0             sender
[  5] 0.00-10.00  sec  21.6 MBytes  18.1 Mbits/sec                  receiver

武汉移动 (1000Mbps)iCable(1000Mbps)

[ ID] Interval           Transfer     Bitrate         Retr
[  5] 0.00-10.00  sec   573 MBytes   481 Mbits/sec    0             sender
[  5] 0.00-10.05  sec   573 MBytes   478 Mbits/sec                  receiver

[ ID] Interval           Transfer     Bitrate         Retr
[  5] 0.00-10.05  sec  24.3 MBytes  20.3 Mbits/sec    0             sender
[  5] 0.00-10.00  sec  22.4 MBytes  18.8 Mbits/sec                  receiver
---------------------自动更新测速节点列表--本脚本原创----------------------
位置		 上传速度	 下载速度	 延迟
Speedtest.net	 900.01Mbps	 904.87Mbps	 4.00ms	
中国香港	 921.44Mbps	 534.39Mbps	 3.71ms	
新加坡		 162.93Mbps	 435.80Mbps	 43.42ms	
联通上海5G	 0.25Mbps	 0.56Mbps	 131.82ms	
联通北京	 0.26Mbps	 0.84Mbps	 258.14ms	
电信浙江	 0.79Mbps	 18.75Mbps	 47.34ms	
电信Zhenjiang5G	 0.71Mbps	 0.14Mbps	 127.45ms	
移动Suzhou	 8.89Mbps	 0.14Mbps	 598.39ms	
------------------------------------------------------------------------

机器性能

机器性能中规中距,IO 偏低了,整体还能接受。

HGC

HGC 1000Mbps 产品,这个比较冷门,相对价格低廉,属于是 HK 家宽里最便宜的一档,他家的 HGC 是双栈构造,HGC 的 V4+HKT 的 V6,一台机器体验两种家宽作为 ip 质量优秀无需多言,而且因为冷门的原因 ip 质量在各个库中变化不大;三网绕路丢包爆炸飞了,必须中转使用;机器性能中规中矩,跑点轻负载完全够用。

默认配置为

2区 - HGC 1000Mbps VPS
$38.00 USD月缴+$3

ip 质量

动态 ip,流媒体基本完整解锁,整体质量相当优秀,无需多言

ipcheck

IPV6

ipcheck

ip2

明确为 ISP/MOB,优质家宽

miaomiaocheck

ipdata

网络质量

三网爆炸,丢包丢飞了,中转即可,少数接了 TATA 但是绕路的机器,有点少见.V6 依旧移动快乐的 HKT。

netcheck

IPV6

netcheck

pingpe

BGP

meowping

meowping

机器性能

性能中规中矩,没啥特别的

CMHK

暂时没货,等有货了补测,占位

HKBN

HKBN,动态家宽,也是 HK 家宽常见产品,大部分 HKBN 到大陆方向延时都低,实则单 ip 限速 10Mbps,必须搭配中转使用。Boil 家的是 HKBN 的 IPV6+HKT 的 IPV6,同样的一台机器体验两个家宽。HKT 移动快乐,而 HKBN 基本三网爆炸,中转即可。ip 质量一如既往的优秀,无需多言;机器性能中规中矩。

默认配置为

7区 - HKBN 1000Mbps VPS
$38.00 USD月缴+$3

ip 质量

动态 ip,流媒体基本完整解锁,注意 TVBAnywhere 解锁失败,整体质量相当优秀,无需多言

IPV4

ipcheck

IPV6

ipcheck

ip2

明确为 (ISP) Fixed Line ISP,优质家宽

miaomiaocheck

ipdata

网络质量

三网爆炸,看起来延时低的电信实则限速 10Mbps (HKBN 常态了,CN 方向单 ip 一般就是限速 10Mbps),实测连 10Mbps 都没有,大约只有 1Mbps,给我逗笑了,必须中转使用。V6 一样的 HKT,移动还行。

IPV4

netcheck

IPV6

netcheck

pingpe

BGP

meowping

meowping

机器性能

中规中距

TW

TW 全是性能强劲的机器,轻松满足性能需求

Hinet

经典的 hinet 家宽产品,默认 IPV4+IPV6 双栈,动态 ip,当然 boil 也提供静态 ip,对于直播等需要静态 ip 的用户来说相当友好。hinet 是三网可直连的,对于网络波动要求不高的用户非常合适,电信丢包严重,联通移动还凑合,当然搭配 HK 中转更加稳定。ip 质量优秀,完美家宽机器性能强劲

默认配置为

7區 - HiNet 500Mbps VPS
$55.00 USD月繳+$3

ip 质量

完美家宽,无需多言

IPV4

ipcheck

IPV6

ipcheck

ip2

明确为 ISP/MOB,优质家宽

miaomiaocheck

ipdata

网络质量

看似是三网直连,实则电信联通爆炸,只有移动是真正快乐,但是如果对网络追求较高的,肯定要搭配 HK 中转使用,效果才能最佳。

IPV4

netcheck

IPV6

netcheck

pingpe

BGP

meowping

深圳电信 (500Mbps)Boil.Hinet(500Mbps)

[ ID] Interval           Transfer     Bitrate         Retr
[  5] 0.00-10.00  sec   794 KBytes   651 Kbits/sec  140             sender
[  5] 0.00-10.05  sec   649 KBytes   529 Kbits/sec                  receiver

[ ID] Interval           Transfer     Bitrate         Retr
[  5] 0.00-10.04  sec  3.81 MBytes  3.19 Mbits/sec  361             sender
[  5] 0.00-10.00  sec  3.54 MBytes  2.97 Mbits/sec                  receiver

济南联通 (500Mbps)Boil.Hinet(500Mbps)

[ ID] Interval           Transfer     Bitrate         Retr
[  5] 0.00-10.00  sec  4.39 MBytes  3.68 Mbits/sec  567             sender
[  5] 0.00-10.07  sec  3.96 MBytes  3.30 Mbits/sec                  receiver

[ ID] Interval           Transfer     Bitrate         Retr
[  5] 0.00-10.05  sec   228 MBytes   191 Mbits/sec  2139             sender
[  5] 0.00-10.00  sec   225 MBytes   189 Mbits/sec                  receiver

武汉移动 (1000Mbps)Boil.Hinet(500Mbps)

[ ID] Interval           Transfer     Bitrate         Retr
[  5] 0.00-10.00  sec   156 MBytes   130 Mbits/sec  4195             sender
[  5] 0.00-10.07  sec   153 MBytes   127 Mbits/sec                  receiver

[ ID] Interval           Transfer     Bitrate         Retr
[  5] 0.00-10.08  sec   342 MBytes   285 Mbits/sec  1446             sender
[  5] 0.00-10.00  sec   338 MBytes   284 Mbits/sec                  receiver

HKG.DMIT(4000Mbps)Boil.Hinet(500Mbps)

[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec  60.0 MBytes   503 Mbits/sec  1209   3.55 MBytes       
[  5]   1.00-2.00   sec  58.8 MBytes   493 Mbits/sec    0   3.55 MBytes       
[  5]   2.00-3.00   sec  60.0 MBytes   503 Mbits/sec    0   3.71 MBytes       
[  5]   3.00-4.00   sec  58.8 MBytes   493 Mbits/sec    6   3.60 MBytes       
[  5]   4.00-5.00   sec  57.5 MBytes   482 Mbits/sec    8   3.51 MBytes       
[  5]   5.00-6.00   sec  60.0 MBytes   503 Mbits/sec    0   3.47 MBytes       
[  5]   6.00-7.00   sec  58.8 MBytes   493 Mbits/sec    0   3.63 MBytes       
[  5]   7.00-8.00   sec  58.8 MBytes   493 Mbits/sec    9   3.58 MBytes       
[  5]   8.00-9.00   sec  60.0 MBytes   503 Mbits/sec    0   3.51 MBytes       
[  5]   9.00-10.00  sec  58.8 MBytes   493 Mbits/sec    0   3.67 MBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec   591 MBytes   496 Mbits/sec  1232             sender
[  5]   0.00-10.05  sec   578 MBytes   483 Mbits/sec                  receiver

[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec  30.4 MBytes   255 Mbits/sec                  
[  5]   1.00-2.00   sec  43.4 MBytes   364 Mbits/sec                  
[  5]   2.00-3.00   sec  47.1 MBytes   395 Mbits/sec                  
[  5]   3.00-4.00   sec  44.2 MBytes   370 Mbits/sec                  
[  5]   4.00-5.00   sec  45.1 MBytes   379 Mbits/sec                  
[  5]   5.00-6.00   sec  43.5 MBytes   365 Mbits/sec                  
[  5]   6.00-7.00   sec  47.0 MBytes   394 Mbits/sec                  
[  5]   7.00-8.00   sec  45.0 MBytes   378 Mbits/sec                  
[  5]   8.00-9.00   sec  43.0 MBytes   361 Mbits/sec                  
[  5]   9.00-10.00  sec  46.1 MBytes   387 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.03  sec   438 MBytes   367 Mbits/sec  27504             sender
[  5]   0.00-10.00  sec   435 MBytes   365 Mbits/sec                  receiver

机器性能

机器性能强劲,妥妥性能怪兽

Seednet

台湾家宽 seednet 产品,seednet 的比起 hinet 而言三网不可直连,但是 seednet 的国际互联要比 hinet 优秀的多,而且 ip 也更稳 (毕竟 hinet 满天飞了,seednet 反而成了一股清流)。Boil 的 seednet 为少见的 IPV4seednet+IPV6Hinet 双栈机器,一台机器两种家宽 ip,而且 hinet 是可以直连的,使得这台本必须中转的 seenet 也可以通过 V6hinet 直连了,形成

用户->HINET-V6->进入机器->seednet-V4出口复制

的玩法,性价比一下子就搞高起来了。

ip 质量优秀,属于完美家宽机器性能强劲,性能怪兽。

默认配置为

1区 - SeedNet 300Mbps VPS
$38.00 USD月缴+$3

ip 质量

完美家宽,无需多言

IPV4

ipcheck

IPV6

ipcheck

ip2

明确为 (ISP) Fixed Line ISP,纯真家宽

miaomiaocheck

ipdata

网络质量

IPV4 是 seednet 家宽,必然三网不可直连,而 IPV6 则是 hinet,三网可以直连,双栈机器性价比相当不错,seednet 最大的优势是他的国际互联,互联实在是太优秀了,基本上 HK 拉 TW 都可以走 HKIX,延时和速度都很不错,延时大约在 25ms,如果机器本身接入了 GSL 走 GSL 可以到 19ms 左右。

IPV4

netcheck

IPV6

netcheck

pingpe

BGP

meowping

一次中转方案

因为 seednet 互联优秀,所以其实线路直出就可以了,走 HKIX 性价比很好了,走 cogent 的话延时到 30ms 左右

我推荐的方案

前置(无忧云深圳电信.优化.LCS)+深港IX(CloudX-NAT-S1)->Boil.seednet
isif高q163->Boil.seednet
Gomami->Boil.seednet
DMIT.维多利亚->Boil.seednet

三套方案都很不错,你追求极致可以直接用 Gomami,gomami 港台延时可以到 19ms,本身又是三网各自顶级优化;性价比与体验均衡可以考虑专线,因为这个专线性价比太好了,虽然走 cogent 多 5ms,但比起省下的价格完全可以接受;isif 高 q163 则可以作为 gomami 的下位替代了,毕竟价格放在这里;维多利亚走的是 GSL 去台,丢包相当低,也是相当优秀的方案。反正怎么选都可以,300Mbps 基本随便拉满 (seednet 只有 300Mbps)

//专线测试结果
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec  26.0 MBytes   218 Mbits/sec  1049   2.54 MBytes       
[  5]   1.00-2.00   sec  36.2 MBytes   304 Mbits/sec  193   2.55 MBytes       
[  5]   2.00-3.00   sec  36.2 MBytes   304 Mbits/sec   57   2.51 MBytes       
[  5]   3.00-4.00   sec  36.2 MBytes   304 Mbits/sec    0   2.56 MBytes       
[  5]   4.00-5.00   sec  30.0 MBytes   252 Mbits/sec   19   2.54 MBytes       
[  5]   5.00-6.00   sec  35.0 MBytes   294 Mbits/sec   77   2.49 MBytes       
[  5]   6.00-7.00   sec  33.8 MBytes   283 Mbits/sec   99   2.55 MBytes       
[  5]   7.00-8.00   sec  35.0 MBytes   294 Mbits/sec  103   2.48 MBytes       
[  5]   8.00-9.00   sec  30.0 MBytes   252 Mbits/sec  600   2.49 MBytes       
[  5]   9.00-10.00  sec  33.8 MBytes   283 Mbits/sec  378   2.44 MBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec   332 MBytes   279 Mbits/sec  2575             sender
[  5]   0.00-10.04  sec   330 MBytes   276 Mbits/sec                  receiver

[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec  21.9 MBytes   183 Mbits/sec                  
[  5]   1.00-2.00   sec  35.0 MBytes   294 Mbits/sec                  
[  5]   2.00-3.00   sec  36.0 MBytes   302 Mbits/sec                  
[  5]   3.00-4.00   sec  34.6 MBytes   290 Mbits/sec                  
[  5]   4.00-5.00   sec  34.6 MBytes   290 Mbits/sec                  
[  5]   5.00-6.02   sec  34.8 MBytes   287 Mbits/sec                  
[  5]   6.02-7.00   sec  34.4 MBytes   292 Mbits/sec                  
[  5]   7.00-8.00   sec  36.0 MBytes   302 Mbits/sec                  
[  5]   8.00-9.00   sec  35.9 MBytes   301 Mbits/sec                  
[  5]   9.00-10.00  sec  31.2 MBytes   262 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.03  sec   338 MBytes   282 Mbits/sec  12239             sender
[  5]   0.00-10.00  sec   334 MBytes   280 Mbits/sec                  receiver复制

二次中转方案

随便,seednet 路边拉条狗过来都能拉动,实际上基本没必要中转,直连即可,如果你追求 0 丢包,那就 yinnet 中转即可,其他什么 BAGE/DMIT/Y 系 / HK 家宽 / RFC/VPS.TOWN/AKI… 随便都能拉动,比较优秀的就是 DMIT/Hytron/Servps, 如果你想 JP 去的话也可以,毕竟接入了 NTT,大部分 JP 去就是 35ms 左右,也能接受,不过沪日传输可比深港贵得多,个人均衡考虑一下。

机器性能

性能强劲,妥妥性能怪兽。(和 Hinet 基本一样,此处省略)

Kbro

独特的 Kbro TW 家宽产品,设计采用 Hinet 入站 + Kbro 出站的操作 (Kbro 本身上传只有 50Mbps),让 Kbro 可以达到 1000Mbps 的速度,hinet 勉强可以直连,建议还是中转,中转方案和 Hinet 相同。ip 质量优秀,数据完美家宽机器性能强劲,性能怪兽。

这个特殊架构让港台中转飞起来了,吓哭了,给我干哪来了,还是 TW 家宽吗?你不说我还以为港内对拉,直播 / 流媒体神器。

//HKG.DMIT->Boil.Kbro
1580 packets transmitted, 1580 received, 0% packet loss, time 1581099ms
rtt min/avg/max/mdev = 29.522/30.102/31.148/0.281 ms

[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec   100 MBytes   839 Mbits/sec    0   6.17 MBytes       
[  5]   1.00-2.00   sec  95.0 MBytes   797 Mbits/sec    0   6.19 MBytes       
[  5]   2.00-3.00   sec  95.0 MBytes   797 Mbits/sec    0   6.29 MBytes       
[  5]   3.00-4.00   sec  93.8 MBytes   786 Mbits/sec    0   6.31 MBytes       
[  5]   4.00-5.00   sec  95.0 MBytes   797 Mbits/sec    0   6.19 MBytes       
[  5]   5.00-6.00   sec  95.0 MBytes   797 Mbits/sec    0   6.17 MBytes       
[  5]   6.00-7.00   sec  95.0 MBytes   797 Mbits/sec    0   6.28 MBytes       
[  5]   7.00-8.00   sec  95.0 MBytes   797 Mbits/sec    0   6.25 MBytes       
[  5]   8.00-9.00   sec  95.0 MBytes   797 Mbits/sec    0   6.19 MBytes       
[  5]   9.00-10.00  sec  95.0 MBytes   797 Mbits/sec    0   6.14 MBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec   954 MBytes   800 Mbits/sec    0             sender
[  5]   0.00-10.03  sec   928 MBytes   776 Mbits/sec                  receiver

[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec  72.7 MBytes   610 Mbits/sec                  
[  5]   1.00-2.00   sec  92.3 MBytes   775 Mbits/sec                  
[  5]   2.00-3.00   sec  93.0 MBytes   781 Mbits/sec                  
[  5]   3.00-4.00   sec  92.6 MBytes   777 Mbits/sec                  
[  5]   4.00-5.00   sec  92.5 MBytes   776 Mbits/sec                  
[  5]   5.00-6.00   sec  92.8 MBytes   778 Mbits/sec                  
[  5]   6.00-7.00   sec  92.8 MBytes   779 Mbits/sec                  
[  5]   7.00-8.00   sec  92.8 MBytes   778 Mbits/sec                  
[  5]   8.00-9.00   sec  92.5 MBytes   776 Mbits/sec                  
[  5]   9.00-10.00  sec  92.9 MBytes   779 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.03  sec   911 MBytes   762 Mbits/sec    0             sender
[  5]   0.00-10.00  sec   907 MBytes   761 Mbits/sec                  receiver

默认配置为

ip 质量

ip 质量优秀,应该因为架构的问题导致 ip 质量脚本检测的时候网络出问题解锁失败了,实测 TK/Amazon/metaai 全部都是解锁的,Spotify 注册确实掉了,但是可以使用

ipcheck

ip2

明确为 (ISP) Fixed Line ISP,纯真家宽

miaomiaocheck

ipdata

网络质量

由于本机器特殊的构造,所以就不测网络质量了,只测出口 BGP 和入口的 ping 值。电信丢包严重,联通移动倒是能直连使用,强烈建议中转

image

BGP

meowping

机器性能

机器性能极其强劲,妥妥的性能怪兽。(和 Hinet 基本一样,此处省略)

台哥大

独一无二的 Taiwan Mobile 5G 产品,ip 质量优秀,除了 TK 掉了,其他都解锁了;机器性能强劲;采用 Hinet 入站 + 台哥大出站的策略,和 Kbro 一样。

//DMIT->Boil.台哥大 相当不错的港台互联速度
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec  61.2 MBytes   514 Mbits/sec  279   4.00 MBytes       
[  5]   1.00-2.00   sec  58.8 MBytes   493 Mbits/sec    0   4.12 MBytes       
[  5]   2.00-3.00   sec  60.0 MBytes   503 Mbits/sec    0   3.90 MBytes       
[  5]   3.00-4.00   sec  58.8 MBytes   493 Mbits/sec    0   3.95 MBytes       
[  5]   4.00-5.00   sec  60.0 MBytes   503 Mbits/sec    0   4.30 MBytes       
[  5]   5.00-6.00   sec  58.8 MBytes   493 Mbits/sec    0   4.01 MBytes       
[  5]   6.00-7.00   sec  56.2 MBytes   472 Mbits/sec  165   2.70 MBytes       
[  5]   7.00-8.00   sec  56.2 MBytes   472 Mbits/sec  200   3.91 MBytes       
[  5]   8.00-9.00   sec  53.8 MBytes   451 Mbits/sec  804   3.92 MBytes       
[  5]   9.00-10.00  sec  53.8 MBytes   451 Mbits/sec  399   4.35 MBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec   578 MBytes   484 Mbits/sec  1847             sender
[  5]   0.00-10.04  sec   561 MBytes   469 Mbits/sec                  receiver

[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec  23.3 MBytes   195 Mbits/sec                  
[  5]   1.00-2.00   sec  47.8 MBytes   401 Mbits/sec                  
[  5]   2.00-3.00   sec  45.0 MBytes   377 Mbits/sec                  
[  5]   3.00-4.00   sec  46.1 MBytes   387 Mbits/sec                  
[  5]   4.00-5.00   sec  45.1 MBytes   378 Mbits/sec                  
[  5]   5.00-6.00   sec  46.6 MBytes   391 Mbits/sec                  
[  5]   6.00-7.00   sec  46.1 MBytes   386 Mbits/sec                  
[  5]   7.00-8.00   sec  47.3 MBytes   397 Mbits/sec                  
[  5]   8.00-9.00   sec  43.9 MBytes   368 Mbits/sec                  
[  5]   9.00-10.00  sec  44.9 MBytes   377 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.03  sec   439 MBytes   367 Mbits/sec  30555             sender
[  5]   0.00-10.00  sec   436 MBytes   366 Mbits/sec                  receiver

默认配置为

1区 - NAT - Taiwan Mobile 5G 500Mbps VPS
$18

ip 质量

他家唯一一次让我测到 tk 确实不解锁的机器,不过这个是 NAT 机器,倒也能解释,有点遗憾,不过除了 tk 以外基本完整解锁,整体质量优秀。

ipcheck

ip2

明确为 ISP/MOB,优质家宽

miaomiaocheck

ipdata

网络质量

Hinet 入栈,所以只测试入栈的三网情况和出栈 ip 的 BGP。电信丢包严重,联通移动勉强能用,推荐中转。

image

BGP

机器性能

机器性能强劲,妥妥性能怪兽。(和 Hinet 基本一样,此处省略)

CA

Telus

独一无二的加拿大家宽,基本没有其他竞品。ip 质量优秀,流媒体完整解锁,数据完美家宽;网络比较优秀,联通移动完全可以直连使用,电信最好中转,无论是 HK->CA 还是 JP->CA 还是 US->CA 都是很好的选择;VDS 机器性能强劲,符合大户机器的要求。整体质量对的起售价,非常优秀的产品。

默认配置为

ip 质量

ip 质量优秀,同样是动态家宽,流媒体完整解锁,无敌。

ipcheck

ip2

明确为 ISP/MOB,纯正家宽

miaomiaocheck

ipdata

网络质量

出乎我意料,我以为这个三网会直接爆炸,没想到测下来三网还挺不错的,电信比较爆炸,建议中转;联通移动速度都很不错,单线程都稳定在 100Mbps 几乎 0 重传,完全可以使用。不过要是追求速度自然是要中转,CA 线路机只有瓦工有 (我手上暂时没有就先欠着测试结果以后补),其他都是中转,US 去 CA 可以拉满 900Mbps,但是 US->CN 一般都会锁单线程 200Mbps,而 JP->CA 则可以到 300Mbps,HK->CA 也是 200Mbps,延时 JP<HK<US. 其实这样来看 JP 是最佳位置,但是 JP 的 CN 传输又很贵,所以需要充分考虑需求来决定。

这个出乎我意料其实主要是因为无论什么地方拉 CA 都是很稳定的低丢包低重传,网络链路稳定

netcheck

pingpe

BGP

meowping

meowping

深圳电信 (500Mbps)Boil.CA(1000Mbps)

[ ID] Interval           Transfer     Bitrate         Retr
[  5] 0.00-10.00  sec  5.19 MBytes  4.35 Mbits/sec    7             sender
[  5] 0.00-10.40  sec  4.83 MBytes  3.90 Mbits/sec                  receiver

[ ID] Interval           Transfer     Bitrate         Retr
[  5] 0.00-10.40  sec  68.2 MBytes  55.1 Mbits/sec  3844             sender
[  5] 0.00-10.00  sec  65.0 MBytes  54.5 Mbits/sec                  receiver

济南联通 (500Mbps)Boil.CA(1000Mbps)

[ ID] Interval           Transfer     Bitrate         Retr
[  5] 0.00-10.00  sec   138 MBytes   116 Mbits/sec    0             sender
[  5] 0.00-10.18  sec   137 MBytes   113 Mbits/sec                  receiver

[ ID] Interval           Transfer     Bitrate         Retr
[  5] 0.00-10.21  sec   101 MBytes  82.9 Mbits/sec  579             sender
[  5] 0.00-10.00  sec  97.2 MBytes  81.6 Mbits/sec                  receiver

武汉移动 (1000Mbps)Boil.CA(1000Mbps)

[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec   873 KBytes  7.15 Mbits/sec    0    182 KBytes       
[  5]   1.00-2.00   sec  6.77 MBytes  56.8 Mbits/sec    0   4.60 MBytes       
[  5]   2.00-3.00   sec  13.8 MBytes   115 Mbits/sec    0   8.77 MBytes       
[  5]   3.00-4.00   sec  13.8 MBytes   115 Mbits/sec    0   8.77 MBytes       
[  5]   4.00-5.00   sec  13.8 MBytes   115 Mbits/sec    0   8.77 MBytes       
[  5]   5.00-6.00   sec  15.0 MBytes   126 Mbits/sec    0   8.77 MBytes       
[  5]   6.00-7.00   sec  13.8 MBytes   115 Mbits/sec    0   8.77 MBytes       
[  5]   7.00-8.00   sec  13.8 MBytes   115 Mbits/sec    0   8.77 MBytes       
[  5]   8.00-9.00   sec  13.8 MBytes   115 Mbits/sec    0   8.77 MBytes       
[  5]   9.00-10.00  sec  13.8 MBytes   115 Mbits/sec    0   8.77 MBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec   119 MBytes  99.7 Mbits/sec    0             sender
[  5]   0.00-10.20  sec   119 MBytes  97.5 Mbits/sec                  receiver

[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec   277 KBytes  2.26 Mbits/sec                  
[  5]   1.00-2.00   sec  6.27 MBytes  52.6 Mbits/sec                  
[  5]   2.00-3.00   sec  13.8 MBytes   116 Mbits/sec                  
[  5]   3.00-4.00   sec  13.7 MBytes   115 Mbits/sec                  
[  5]   4.00-5.00   sec  13.4 MBytes   113 Mbits/sec                  
[  5]   5.00-6.00   sec  13.6 MBytes   114 Mbits/sec                  
[  5]   6.00-7.00   sec  13.9 MBytes   116 Mbits/sec                  
[  5]   7.00-8.00   sec  13.6 MBytes   114 Mbits/sec                  
[  5]   8.00-9.00   sec  13.8 MBytes   115 Mbits/sec                  
[  5]   9.00-10.00  sec  13.7 MBytes   115 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.21  sec   119 MBytes  98.1 Mbits/sec    0             sender
[  5]   0.00-10.00  sec   116 MBytes  97.4 Mbits/sec                  receiver

LAX.DMIT(4000Mbps)Boil.CA(1000Mbps)

[ ID] Interval           Transfer     Bitrate         Retr
[  5] 0.00-10.00  sec  1006 MBytes   844 Mbits/sec    0             sender
[  5] 0.00-10.03  sec   981 MBytes   820 Mbits/sec                  receiver

[ ID] Interval           Transfer     Bitrate         Retr
[  5] 0.00-10.03  sec   921 MBytes   770 Mbits/sec  2626             sender
[  5] 0.00-10.00  sec   917 MBytes   769 Mbits/sec                  receiver

HKG.DMIT(4000Mbps)Boil.CA(1000Mbps)

[ ID] Interval           Transfer     Bitrate         Retr
[  5] 0.00-10.00  sec   232 MBytes   195 Mbits/sec    0             sender
[  5] 0.00-10.13  sec   206 MBytes   171 Mbits/sec                  receiver

[ ID] Interval           Transfer     Bitrate         Retr
[  5] 0.00-10.13  sec   236 MBytes   195 Mbits/sec    0             sender
[  5] 0.00-10.00  sec   232 MBytes   195 Mbits/sec                  receiver

JP.BageSTD(4000Mbps)Boil.CA(1000Mbps)

[ ID] Interval           Transfer     Bitrate         Retr
[  5] 0.00-10.00  sec   344 MBytes   288 Mbits/sec    0             sender
[  5] 0.00-10.09  sec   326 MBytes   271 Mbits/sec                  receiver

[ ID] Interval           Transfer     Bitrate         Retr
[  5] 0.00-10.09  sec   370 MBytes   308 Mbits/sec    0             sender
[  5] 0.00-10.00  sec   368 MBytes   309 Mbits/sec                  receiver

机器性能

性能强劲,果然是大户机器,完全可以支撑大部分的性能需求。

image


📌 转载信息
原作者:
STALK
转载时间:
2025/12/25 13:15:59

本项目的前端构建使用 Gemini 3 Flash,在 Lim Code - 强大的集交错思考与多模态工具于一体的 AI Coding 插件,旨在解决其他 ai 插件或 ide 的缺点和拓展功能需求,支持 xml 工具 - 开发调优 - LINUX DO 上快速迭代美化 + 图片生成

以号被封 7 天的代价决定开源 computer use
前情提要

基于 Gemini 3 系列强大的多模态能力和 Gemini 3 Flash 的高速高质,全面托管电脑成为可能。
使用原生工具调用并回传思考签名的情况下,多数请求可以做到又快又好地响应。

模式解释

一共提供三种模式的电脑控制

  • 浏览器模式,使用无头 / 有头 Playwright,在浏览器环境下操作,支持切换标签页登多种便携工具
  • 桌面模式,使用 PyAutoGUI 模拟真实鼠标点击和输入,完全接管电脑。在这一模式下会强制征用桌面焦点,期间不能干其他事
  • 后台模式,使用 pywin32 API 通过窗口句柄操作,能做到真正的后台操作(部分应用),一些应用可能会强制焦点。

使用方法

clone 代码,点击 bat 运行。
可以选择在后端文件中配置 env 或使用前端设置

推荐使用:Gemini 3 Flash(轻度任务 minimal 思考最佳)

注意事项

  • 本项目基于闭源模型 Gemini,在不确定上游安全的情况下谨慎用于处理敏感信息
  • 后台运行模式时 Chrome 依然有概率将窗口设置焦点,浏览器相关活动建议直接使用 Playwright 模式
  • 其他待补充

📌 转载信息
原作者:
HCPTangHY
转载时间:
2025/12/25 11:44:26

前段事件闲着没事,因为 NF 需求(瑟瑟才是第一生产力),尝试开发 pikpak 网盘自动邀请程序,用的苹果手机,就找到了一套 ios 开发工程师的 rules,我是做 java 的,在 cursor 的帮助下,完成了后端代码,以及 ios 端的 app 代码,并成功用黑苹果跑起来,id 签名到手机使用,成功实现功能。
以下是 rules

[角色]

你是一名资深的iOS原生应用开发专家,拥有丰富的移动应用开发经验和UI/UX设计能力,精通Swift、SwiftUI、UIKit、Core Data、Combine等苹果生态系统技术栈,擅长将抽象需求转化为精美且功能完善的iOS应用,深刻理解并遵循Apple的人机界面指南(HIG)。

[任务]

作为一名专业的iOS开发者,你的工作是首先理解用户的产品需求,然后帮助用户规划应用结构,最后为每个页面/视图创建功能完善的代码实现。你需要基于用户需求自主判断并选择最适合的iOS技术方案。具体请你参考 [功能] 部分以进行与用户之间的互动。

[技能]

- \*\*需求分析\*\*:深入理解用户需求,提炼核心功能和用户目标。
- \*\*应用架构\*\*:构建清晰的MVVM/MVC架构,确保代码组织合理。
- \*\*交互设计\*\*:遵循Apple人机界面指南(HIG)(@Apple HIG,https://developer.apple.com/design/human-interface-guidelines),设计符合iOS标准的用户体验。
- \*\*视觉实现\*\*:运用SF Symbols、动态字体、自适应布局等苹果设计语言元素。
- \*\*原型开发\*\*:创建可交互的高保真原型,模拟真实应用体验。
- \*\*适配优化\*\*:确保应用在不同尺寸的iPhone和iPad上都有良好的体验。
- \*\*系统集成\*\*:熟练运用iOS系统能力,如推送通知、HealthKit、Core Location等。
- \*\*技术选型\*\*:根据需求选择SwiftUI或UIKit,并综合使用Combine等响应式框架。
- \*\*代码质量\*\*:编写符合Swift风格指南的高质量、可维护代码。
- \*\*性能优化\*\*:关注内存管理、电池使用、启动时间等iOS性能关键指标。
- \*\*项目管理\*\*:在Cursor环境中自动组织和管理多个代码文件,确保项目结构清晰。
- \*\*状态管理\*\*:掌握SwiftUI的状态管理机制(@State, @StateObject, @EnvironmentObject等)和Combine或async/await进行复杂数据流处理。
- \*\*异步处理\*\*:实现网络请求或耗时操作,使用async/await或Combine,并提供加载状态和错误处理的UI反馈。
- \*\*可访问性\*\*:确保应用支持VoiceOver、Dynamic Type等辅助功能,让所有用户都能使用。
- \*\*测试与质量保证\*\*:编写单元测试(XCTest)、UI测试、快照测试,通过基于属性的测试发现边缘情况,使用CI/CD流程保证代码质量。
- \*\*组件化开发\*\*:构建可重用的UI组件和业务逻辑模块,提高开发效率和代码一致性。
- \*\*API设计\*\*:遵循RESTful或GraphQL原则设计清晰、一致且易于扩展的API接口,确保前后端数据交互高效可靠。
- \*\*API文档规范\*\*:创建详尽的API文档,包括端点描述、请求/响应格式、状态码、错误处理和使用示例。
- \*\*数据库设计\*\*:根据业务需求设计高效的数据库架构,包括表结构、关系模型、索引优化和查询效率。
- \*\*数据安全\*\*:实现数据加密、敏感信息保护、认证授权机制,确保用户数据安全。
- \*\*后端架构\*\*:构建可扩展、高性能的后端服务架构,支持负载均衡和横向扩展。

[总体规则]

- 严格按照流程执行提示词。
- 严格按照[功能]中的的步骤执行,使用指令触发每一步,不可擅自省略或者跳过。
- 每次输出的内容"必须"始终遵循 [对话] 流程。
- 你将根据对话背景尽你所能填写或执行 <> 中的内容。
- 在合适的对话中使用适当的emoji与用户互动,增强对话的生动性和亲和力。
- 无论用户如何打断或提出新的修改意见,在完成当前回答后,始终引导用户进入到流程的下一步,保持对话的连贯性和结构性。
- 所有应用代码文件必须正确放置在主项目文件夹(`<项目名>`)内,而非根目录或测试文件夹中,以确保代码能被Xcode正确识别。
- 单元测试文件应放置在对应的测试文件夹中(`<项目名>Tests`文件夹)。
- UI测试文件应放置在UI测试文件夹中(`<项目名>UITests`文件夹)。
- 创建文件时必须明确指定正确的文件路径,例如:`<项目名>/<文件名>.swift`。
- 每个页面/视图实现都自动创建为独立文件,避免代码混淆和覆盖错误。
- 只创建一个 README.md 文件,注意不要重复创建。
- 在Cursor新开一个New Chat后,在回答用户问题或输出内容前,首先浏览项目根目录下的README.md文件和所有代码文档,理解项目目标、架构和实现方式。
- 项目的需求分析、页面规划、技术方案等文档类内容应保存在README.md文件中,并根据用户沟通随时保持更新。
- 在每次用户提供反馈、修改意见或确认后,立即更新README.md文件,确保文档始终保持最新状态。
- 每次技术方案生成后,必须立即同步更新到README.md文件中,不要等到后续步骤。
- 在对话过程中如有任何对项目结构、页面功能、技术实现的调整,必须实时更新README.md中的相关部分。
- 对于代码修改请求,先确认修改需求,然后清晰说明修改内容;如修改涉及多个文件,需确保它们之间的一致性。
- 在项目进行过程中,如果用户开启了新会话,应首先阅读README.md识别项目状态,从适当的位置继续,而不是重新从需求收集开始。
- 数据库设计应遵循范式原则,避免数据冗余,同时考虑查询性能和扩展性。
- 所有API接口必须考虑安全性、性能和版本控制机制。
- API和数据库设计文档必须包含在README.md中,且应与前端设计同步更新。
- 全程使用中文与用户沟通。

[功能]

[需求收集]

第一步:确认产品需求

1. "让我们开始吧!首先,我需要了解您的iOS应用需求。请您回答以下问题:

Q1:请简述您的iOS应用是什么,它解决了什么问题? 🤔

Q2:您希望应用包含哪些核心功能? 📝

Q3:您的目标用户是谁?他们有哪些特点和需求? 👨‍👩‍👧‍👦

Q4:您的项目文件夹名称是什么?(我需要知道主项目文件夹名称以正确放置代码文件)"

1. 等待用户回答,收到用户回答后执行第二步,生成应用页面规划。

第二步:生成应用页面/视图规划

1. 基于用户的需求,规划应用需要的页面/视图结构。规划时需要按照以下模板和要求进行:

[页面/视图结构模板]

| 页面/视图名称 | 用途 | 核心功能 | 技术实现 | 导航/用户流程 | 建议文件路径 |

\|:--------:|:----:|:--------:|:--------:|:--------:|:--------:|

| <页面名称> | <页面的主要作用> | <列出该页面包含的主要功能> | <使用的iOS框架和组件> | <描述用户如何到达及离开此视图> | `<项目名>/<文件名>.swift` |

| <页面名称> | <页面的主要作用> | <列出该页面包含的主要功能> | <使用的iOS框架和组件> | <描述用户如何到达及离开此视图> | `<项目名>/<文件名>.swift` |

| ... | ... | ... | ... | ... | ... |

[页面规划要求]

- 确保页面结构逻辑清晰,覆盖产品所有核心功能。
- 保持用户流程的连贯性,考虑iOS应用页面导航的自然过渡(如Push、Modal、Tab等)。
- 根据产品复杂度,提供适量的页面设计,避免过于冗余或过于简化。
- 考虑不同用户角色的需求和访问权限。
- 根据iOS平台特性,充分利用系统原生能力和交互模式。
- 为每个页面自动生成一个描述性的Swift文件名,遵循iOS开发规范(如视图以View结尾)。
- 确保所有文件路径正确指向主项目文件夹(用户提供的项目名)。
- 规划数据模型和持久化方案(如Core Data或SwiftData)。
- 确保每个功能点都有对应的页面或组件实现。

2\. 创建README.md文件,将项目信息和页面规划写入其中:

"正在创建项目README.md文件,记录项目概览和页面结构..."

README.md文件结构应包含以下内容:

\```markdown

\# <应用名称>

\## 项目概述

<基于用户提供的需求描述应用目的和解决的问题>

\## 目标用户

<描述目标用户群体及其需求特点>

\## 技术选型

- 开发框架: <SwiftUI/UIKit/混合>
- 数据持久化: <Core Data/SwiftData/其他>
- 状态管理: <Combine/原生状态管理/其他>
- UI风格: 遵循iOS Human Interface Guidelines (HIG),采用暗色科技风现代简约设计

\## 应用结构

<根据应用复杂度提供适当的结构图或描述>

\## 页面结构

<插入完整的页面规划表格>

\## 数据模型

<描述应用的核心数据模型和关系>

\## 技术实现细节

<此部分将随着开发过程逐步添加各页面的技术方案>

\## 开发状态跟踪

| 页面/组件名称 | 开发状态 | 文件路径 |

\|:-------------:|:--------:|:------------:|:--------:|

| <页面/组件名称> | <未开始> | `<项目名>/<文件名>.swift` |

| ... | ... | ... |

\```

3\. 完成后询问用户:"以上是iOS应用的页面结构规划,并已保存在项目的README.md文件中。请问还需要补充或修改吗?如果满意,请输入\*\*/开发\*\*,我将按照规划顺序自动开发所有页面;或者输入\*\*/开发+页面名称\*\*来开发特定页面。"

4\. 如果用户提出修改意见,立即更新README.md文件并确认已更新:

"已根据您的反馈更新了README.md文件中的页面规划。现在规划更加符合您的需求了。"

[批量开发]

1. 当用户输入"/开发"(不带页面名称)时,开始按照之前规划的顺序逐个开发所有页面:

"我将按照规划开始逐个开发所有页面,从【<第一个页面名称>】开始。"

1. 对每个页面,执行与[页面开发]完全相同的开发流程,但不等待用户确认:
1. 执行[页面开发]的第一步:构思技术方案并创建
1. 执行[页面开发]的第二步:创建页面代码
1. 确保每个页面功能齐全、完整、合理
1. 完成后直接进入下一个页面的开发

3\. 每个页面完成后通知用户并更新README.md中的开发状态:

"【<项目名>/<文件名>.swift】开发完成!技术方案和开发状态已更新到README.md。正在开始【<下一个页面名称>】的开发..."

4\. 如果输出内容过长导致中断,提示用户:

"由于内容较长,开发过程暂停。请输入\*\*/继续\*\*,我将从【<下一个待开发页面名称>】继续开发流程。"

5\. 所有页面开发完成后打印总结信息:

"🎉 恭喜!所有页面都已开发完成。项目README.md已全部更新,包含所有页面的技术方案和开发状态。"

[页面开发]

第一步:构思技术方案并创建

1. 根据产品需求和页面功能,主动构思完整的技术方案,包括:
- 页面UI结构设计(遵循HIG并融合指定视觉风格)
- 数据流管理方案
- 状态处理机制
- 动效与交互实现
- 适配策略
- 可访问性支持
- 复用现有组件的方案
- 功能完整性检查表:列出该页面需要实现的所有功能点

2\. 展示技术方案并立即同步更新到README.md:

"我将为<页面名称>设计以下技术方案:

\*\*UI设计方案(遵循HIG与特定风格)\*\*:

<描述页面UI结构和布局,强调符合iOS设计语言并融合科技感与暗黑模式>

\*\*数据管理方案\*\*:

<描述数据流和状态管理,包括使用的状态属性包装器>

\*\*交互实现\*\*:

<描述主要交互效果和用户体验>

\*\*iOS特性利用\*\*:

<描述将使用哪些iOS平台特性>

\*\*可访问性考虑\*\*:

<描述将如何支持VoiceOver、Dynamic Type等辅助功能>

\*\*组件复用\*\*:

<描述将使用哪些共享组件,如何集成>"

"正在将技术方案同步更新到README.md文件中..."

在README.md的"技术实现细节"部分添加:

\```markdown

\### <页面名称>

\#### UI设计方案

<详细描述UI设计方案>

\#### 数据管理方案

<详细描述数据管理方案>

\#### 交互实现

<详细描述交互实现>

\#### iOS特性利用

<详细描述iOS特性利用>

\#### 可访问性考虑

<详细描述可访问性支持>

\#### 组件复用

<详细描述组件复用>

\```

同时更新开发状态跟踪表:

\```markdown

| <页面/组件名称> | 进行中 | `<项目名>/<文件名>.swift` |

\```

"技术方案已更新到README.md文件中。"

3\. 如果用户对技术方案有反馈或修改意见,立即更新README.md中的对应内容:

"感谢您的反馈,我已将您提出的调整更新到README.md文件中的技术方案部分。"

4\. 无需用户确认,直接继续进入第二步:

"正在基于以上技术方案开始编写代码实现..."

5\. 如果输出内容过长导致中断,提示用户:

"由于内容较长,技术方案展示暂停。请输入\*\*/继续\*\*,我将继续展示剩余技术方案,然后进入代码实现阶段。"

第二步:创建页面代码

1. 当技术方案展示完毕后,自动在Cursor中创建新文件,确保文件路径正确:

"正在创建Swift文件:<项目名>/<文件名>.swift"

1. 基于技术方案创建该页面的功能完整的代码实现。开发时需要按照以下要求进行:

[开发要求]

顶层要求:

- 确保代码符合Swift最佳实践和Apple人机界面指南(HIG)。
- 考虑不同设备和屏幕尺寸的适配性。
- 提供充分的交互反馈和状态展示。
- 使用合适的iOS原生组件实现所需功能。
- 注重代码的可维护性和可扩展性。
- 添加适当的注释说明代码功能和实现逻辑。
- 正确导入所需的系统框架。
- 图片资源使用Unsplash提供的高质量图片。

技术实现要求:

- 根据用户偏好或需求特点,使用SwiftUI或UIKit开发界面。
- 使用MVVM或MVC架构组织代码,确保关注点分离。
- 使用Combine(或SwiftUI中的@State等)进行响应式数据流管理。
- 使用Core Data或SwiftData进行本地数据持久化(如需要)。
- 遵循Swift的命名规范和代码组织方式。
- 正确处理内存管理和资源释放。
- 对于异步操作,使用现代Swift并发特性(async/await)或Combine。
- 为可能的错误状态提供适当的用户反馈(如Alert)。

整体UI风格要求:

- 遵循iOS Human Interface Guidelines (HIG)
- 主题:暗色科技风,现代简约设计
- 主色调:冷色系霓虹渐变(蓝、紫、青)
- 特色元素:适度使用毛玻璃效果和柔和阴影

代码质量要求:

- 代码结构清晰,模块化,变量命名有意义
- 为复杂逻辑添加详细注释
- 包含预览代码(使用#Preview或PreviewProvider)
- 错误处理完善,避免强制解包

3\. 生成完整的Swift代码,确保代码可在Xcode中直接编译运行。

4\. 如果输出内容过长导致中断,提示用户:

"由于代码内容较长,输出暂停。请输入\*\*/继续\*\*,我将继续输出剩余代码内容。"

5\. 完成后,执行功能完整性检查,确保所有计划的功能都已实现:

"正在进行功能完整性检查..."

1. 对照之前技术方案中的功能检查表,逐一检查每个功能点的实现情况
1. 检查所有UI元素是否正确实现
1. 验证所有交互事件是否绑定正确的处理函数
1. 确认所有状态变量的更新和使用是否正确
1. 检查是否有漏掉的功能点

在README.md中更新功能完整性检查表:

\```markdown

\#### 功能完整性检查表

- [x] <功能点1>
- [x] <功能点2>
- [x] <功能点...>

\```

"功能完整性检查完成,<页面名称>的所有计划功能均已实现。"

6\. 完成后,立即更新README.md中的开发状态并向用户说明实现内容:

"我已为<页面名称>创建了实现代码,并保存在`<项目名>/<文件名>.swift`中。这个页面实现了所有设计的交互元素,可以直接在Xcode中编译运行。同时已更新README.md文件中的开发状态。

主要实现特点:

<列出代码的关键特点和功能>

请问您对这个实现有什么反馈或需要调整的地方吗?如需检查代码质量,可以输入\*\*/检查\*\*,我会立即执行[代码检查]功能;或者您也可以输入\*\*/测试+页面名称\*\*为此页面创建单元测试。"

同时在README.md中更新状态:

\```markdown

| <页面/组件名称> | 已完成 | `<项目名>/<文件名>.swift` |

\```

7\. 如果用户提出修改意见,立即更新代码并同步更新README.md:

"我已根据您的反馈修改了代码实现,并同步更新了README.md中的技术实现细节和开发状态。"

[代码检查]

1. 执行以下主要代码检查步骤:
- ✅ \*\*Swift语法与结构检查\*\*:
* 验证Swift语法正确性
* 检查所有导入语句是否完整和必要
* 检查变量/常量使用是否恰当
* 验证所有属性包装器使用是否正确
* 确保正确使用可选值,避免强制解包
* 确认所有函数/方法定义和调用是否匹配
* 验证类型转换是否安全实现
* 检查泛型使用是否正确

- ✅ \*\*SwiftUI/UIKit特定检查\*\*:
* 验证所有SwiftUI视图修饰符(.modifier)的正确使用
* 检查SwiftUI视图的构造方法是否正确
* 确认所有UIKit控件的初始化和约束设置是否正确
* 验证视图生命周期方法的正确实现
* 检查所有动画和过渡效果实现是否正确

- ✅ \*\*编译兼容性检查\*\*:
* 检查是否使用了只在较新iOS版本才支持的API
* 验证所有API调用是否与目标iOS版本兼容
* 确认没有使用已弃用的API

- ✅ \*\*UI与布局检查\*\*:
* 检查UI元素组织和布局是否合理
* 确保视图层次结构清晰且符合HIG
* 验证布局约束是否完整且无冲突

- ✅ \*\*自适应与响应式\*\*:
* 检查是否考虑了不同屏幕尺寸和方向适配
* 确认是否支持Dynamic Type
* 验证布局在不同设备上是否正确显示

- ✅ \*\*内存管理检查\*\*:
* 避免循环引用和内存泄漏
* 检查闭包中的[weak self]使用
* 确认对象的生命周期管理是否正确

- ✅ \*\*状态管理检查\*\*:
* 检查状态管理机制的使用是否正确
* 验证数据流是否合理
* 确保状态更新触发UI刷新

- ✅ \*\*可访问性与平台规范\*\*:
* 确保支持iOS辅助功能
* 验证是否遵循平台设计规范
* 检查所有控件是否有合适的无障碍标签

2\. 如发现问题,对明确可以修正的小问题自动进行修复;对可能需要用户决策的问题,明确指出并提供修改建议;对无法完全确定的问题,告知用户需要在真机或模拟器上测试。

3\. 所有检查和修复完成后,更新README.md中的相关内容,并输出审查报告:

"代码审查完成,README.md已更新!报告如下:

<列出检查结果,✓表示通过,✗表示发现问题及修复/建议>

<如果进行了自动修复,说明修复了哪些地方>

<如果存在需要用户确认或进一步测试的地方,明确指出>

请再次检查代码。您可以继续输入\*\*/测试+页面名称\*\*创建单元测试。"

[测试开发]

1. 根据指定的页面和测试类型,创建相应的测试,确保文件路径正确:
- 单元测试:"正在为【<页面名称>】创建单元测试,测试文件将保存为:<项目名>Tests/<页面名称>Tests.swift"
- UI测试:"正在为【<页面名称>】创建UI测试,测试文件将保存为:<项目名>UITests/<页面名称>UITests.swift"

2\. 根据测试类型生成对应的测试代码:

- 单元测试:功能测试、边缘情况测试、性能测试等
- UI测试:界面元素存在性测试、交互流程测试、无障碍支持测试等

3\. 更新README.md中的测试状态:

"正在更新README.md中的测试状态..."

\```markdown

| <测试类型>:<页面名称> | 已完成 | `<项目名>Tests/<页面名称>Tests.swift`或`<项目名>UITests/<页面名称>UITests.swift` |

\```

4\. 完成后说明测试内容:

"【<页面名称>】的测试已创建完成,README.md已更新。测试文件已保存在对应路径中。

这些测试包括:

- <测试用例1>:<测试目的描述>
- <测试用例2>:<测试目的描述>
- ...

您可以在Xcode中运行这些测试,或者输入\*\*/开发+页面名称\*\*继续开发其他页面。"

5\. 如果输出内容过长导致中断,提示用户:

"由于测试内容较长,输出暂停。请输入\*\*/继续\*\*,我将继续描述剩余测试内容。"

[项目状态检测]

1. 当用户在项目进行中新开一个会话时,首先检查README.md和现有代码:

"我正在分析项目当前状态,请稍等..."

1. 根据README.md中的开发状态跟踪表和已有文件,确定项目进度:
- 如果存在规划但未开始开发:询问用户是否开始开发
- 如果部分页面已开发完成:说明已完成的内容,询问用户是否继续开发剩余页面
- 如果所有页面已开发完成:询问用户是否需要进行测试或修改

3\. 提供适当的引导:

"根据README.md文件,我看到您已经完成了<已完成页面列表>的开发,还有<未完成页面列表>尚未开发。您希望现在继续开发哪个页面?请输入\*\*/开发+页面名称\*\*,或者输入\*\*/开发\*\*让我按顺序完成剩余页面的开发。"

[解决问题]

- 仔细阅读用户反馈的问题
- 全面阅读相关代码,理解\*\*iOS应用\*\*的工作原理
- 根据用户的反馈分析问题的原因,提出解决问题的思路
- 确保每次代码更新不会影响其他功能,且尽可能保持最小的改动
- 始终使用中文

[指令集 - 前缀 "/"]

- 开发:不带页面名称时执行<批量开发>功能;带页面名称时执行<页面开发>功能
- 检查:执行<代码检查>功能
- 测试:执行<测试开发>功能,为指定页面创建单元测试
- 问题:执行<解决问题>功能
- 继续:重新阅读README.md、.cursorrules和开发好的页面代码,然后继续剩余任务、页面或组件开发

[初始]

1. 检查项目目录,判断是新项目还是现有项目:
- 如果README.md不存在,则是新项目,执行以下欢迎语:

"你好!👋 我是一名专业的iOS原生应用开发专家,接下来我将帮助你将产品创意转化为功能完善的iOS应用。我会根据你的需求构思技术方案,直接在对话中输出页面的Swift实现代码,最后整合成完整的应用,无需你手动编写复杂代码。请专注于产品功能,开发和技术实现都交给我。让我们一起打造一款出色的iOS应用吧!"

执行 <需求收集> 功能

- 如果README.md存在,则是现有项目,执行[项目状态检测]功能:

"你好!👋 我看到你已经有一个正在进行的iOS应用开发项目。我已经阅读了README.md和现有代码,让我为你总结一下当前项目状态..."


📌 转载信息
原作者:
teamoo
转载时间:
2025/12/25 11:44:04

首先推荐一个工具:TreeSize Free,在微软商店即可下载。功能是可以查看某个磁盘下面的使用情况。我的 C 盘总是莫名其妙的少好多内存,之前要么是因为将虚拟机下载到磁盘了里面了,直接给我占用了几十个 G,要么是因为 IDEA 打开前端代码的时候,把前端的 nodea moudle 也进行索引了,好家伙,给我的电脑一顿霍霍。今天也是突然少了 20 个 G,忍无可忍,无须再忍。使用 TreeSize Free,可以查看到 C 盘的使用情况,然后发现有个文件是今天创建了,而且只一个文件占用了 24.9GB 内存。查了一下资料,发现原来是 C 盘默认会开启系统保护,也就是说,在 C 盘中的文件会自动保留一些之前的文件的影子副本,如图所示。(这里我已经删除过了,所以图片中显示的是空)

所以在决定删除影子副本之前,需考率好最近的文件有没有需要回退到之前版本的。如果没有则直接可以进行删除。Windows + X 打开 Power Shell (系统管理员),然后输入 vssadmin list shadows 查看已有的影子副本。可以精确删除某个副本 vssadmin delete shadows /for C: /shadow:{19aa…},但是这里我直接选择的是删除所有影子副本:vssadmin delete shadows /all. 然后可以关闭系统保护功能,但是文件就不能回退到之前版本了,所以这里我推荐规定最大的副本使用量。

通过 windows + R,输入 sysdm.cpl,在系统属性中点击系统保护。点击配置可以配置最大使用量。

在做完以上操作之后,可以看到我的 C 盘上面直接释放了 34GB 内存。重返 C 盘自由。


📌 转载信息
原作者:
1parado
转载时间:
2025/12/25 11:42:35

大概步骤如下:
1. 大模型自动生成图片的 prompt;
2. 使用 claude code 借助 playwright mcp 能力打开 https://gemini.google.com/ 站点,然后自动登录你的谷歌 pro 账号;
3.playwright mcp 自动填充 prompt,然后等待图片生成;
4.playwright mcp 自动下载图片保存到指定位置。

主要优势
1. 如果通过 api 调用生成图片,价格有点贵,我看便宜的中专都要 5 毛左右一张;
2.gemini pro 账号一般有一些免费的图片,我昨天生成了 20 多张也是没问题的,具体限制多少张没有测试,反正我自己目前是够用的。


📌 转载信息
转载时间:
2025/12/25 11:42:03

问题 OpenList 链接 RustFS s3 端点后无法通过 OpenList 上传文件

控制台出现 cors 或者 403 等导致无法通过 OpenList 上传文件

记一次借助 ai 帮朋友机器排查 openlist 对接 rustfs 无法上传问题 403、cors 错误1

环境信息: (问 ai 前最好提前说明相关服务环境信息)

  • RustFS 服务运行在 localhost:9000 (HTTP)
  • Nginx 反向代理在 9002 端口提供 HTTPS 访问
  • 端点地址:https://RustFS.example.com:9002
  • OpenList 在别的机器:https://alist.example.com

省流总结:

Nginx 对 RustFS 的反代缺少一个关键配置 proxy_redirect off
反代实现 https 的时候端口冲突导致 301 重定向循环

Tip

问 ai 前最好提前说明相关服务环境信息,复盘流程会发现,如果知道 Nginx 做了反代可以提前让 ai 检查 Nginx 加快问题排查流程。本次排查时间主要消耗在梳理朋友机器网络环境上,ai debug 还是很快的

附上问题排查流程 (省略了一部分内容 + 信息脱敏)

Note

本次排查在 Antigravity + Claude Opus 4.5 (Thinking) 工具下

1. 先直接通过 RustFS 页面上传,确认 RustFS 服务正常。 –确认服务正常

2. 接下来让 ai 编写 s3 端点上传,验证 s3 端点上传是否正常。 –问题初显

  • 初始尝试:使用 boto3 默认配置连接,返回 301 错误

    ~/…/github/rustf $ uv run test_upload.py
    
    Installed 7 packages in 52ms                      
    ==================================================
    🚀 RustFS S3 上传测试                                                                                    
    ==================================================                                                  
    ⚠️  未指定文件,将创建测试文件...
    📝 已创建测试文件: /tmp/RustFS_test.txt
    📦 正在上传: /tmp/RustFS_test.txt
    📍 目标: s3://ccc/RustFS_test.txt
    🔗 端点: https://RustFS.example.com:9002
    ❌ 上传失败: Failed to upload /tmp/RustFS_test.txt to ccc/RustFS_test.txt: An error occurred (301) when calling the PutObject operation: Moved Permanently
    
  • 尝试添加路径风格访问:仍然失败 301

config=Config(
    signature_version="s3v4",
    s3={"addressing_style": "path"}
)
  • 添加 region 配置:仍然失败 301
region_name="us-east-1" 
  • 禁用 ssl:上传成功,但后面又失败了,上传成功后的 ListObjectsV2 操作也出现 301

继续 curl 检查端点响应信息

记一次借助 ai 帮朋友机器排查 openlist 对接 rustfs 无法上传问题 403、cors 错误4

  • 得出问题在 Nginx
    接下来把 Nginx 完整信息发送并解析,得出关键信息,缺少 proxy_buffering off;

记一次借助 ai 帮朋友机器排查 openlist 对接 rustfs 无法上传问题 403、cors 错误2

  • 重载 Nginx 配置后,上传 100% 成功,但 ListObjectsV2 操作出现 301

    继续让 ai 检查 Nginx 配置,发现一处端口冲突导致的重定向循环。。。

    删除后重载 Nginx 配置,ListObjectsV2 也正常了。OpenList 端也恢复正常使用了。

记一次借助 ai 帮朋友机器排查 openlist 对接 rustfs 无法上传问题 403、cors 错误3


📌 转载信息
原作者:
wwzccccc
转载时间:
2025/12/25 11:16:25

前言

这是一个 Obsidian 插件,用于一键将当前笔记以微信公众号格式复制到剪贴板,可直接粘贴到微信公众号后台,实现高效发布与分享。

插件支持 Markdown 正文、本地图片与网络图片 的完整复制,无需依赖第三方网站,也不需要配置公众号密钥、Token 等任何信息。只需执行一次 obsidian 命令,复制后粘贴即可完成发布流程。

项目背景

在日常使用中,将 Obsidian 笔记发布到微信公众号一直是个麻烦事:

  • 在线 Markdown 转公众号工具不支持本地图片
  • 操作步骤繁琐,格式容易丢失
  • 每次发布都需要反复调整样式

因此开发了这个插件,目标很简单: 让 Obsidian 笔记发布到公众号这件事,变得像复制粘贴一样简单。


🌟 开源项目
如果你觉得这个插件对你有帮助,欢迎访问 GitHub 仓库并点一个 Star:

👉 https://github.com/Spute/obsidian-copy-to-mp


使用演示

[开发者自荐] 开源插件:一键复制 Obsidian 笔记到微信公众号3

功能特性

  • 支持通过 命令面板( Ctrl + P ) 运行,也可绑定快捷键

  • 支持:复制选中内容,未选中内容时,复制整个文档

  • 自动将内容转换为微信公众号可直接粘贴的 HTML 格式

  • 媒体支持:支持本地图片和网络图片

  • 样式处理:目前只有内置样式,后续会扩展支持多套样式方案

  • 配置功能:粘贴内容可包含 Markdown 文件名,文档开头的元数据


已知问题

  • ❌ 暂不支持移动端 Obsidian

  • ⚠️ 当图片较多或图片较大时,Data URI 方式可能占用较多内存

  • ⚠️ 列表中部分加粗内容在个别场景下可能出现自动换行

  • 不支持视频复制


安装与使用

目前仅支持本地安装(插件已提交官方市场,尚未审核通过,暂无法在线安装)。

下载地址: https://github.com/Spute/obsidian-copy-to-mp/releases/tag/1.1.0

安装教程

可参考以下教程完成插件安装:

👉 Obsidian 进阶教程:插件安装


问题反馈

如果在使用过程中发现问题或有改进建议,欢迎在 GitHub 仓库提交 Issue 。


联系方式 & 支持

你的支持是项目持续维护和更新的动力 🙏

赞赏码:

[开发者自荐] 开源插件:一键复制 Obsidian 笔记到微信公众号1

微信联系方式(请说明来意): [开发者自荐] 开源插件:一键复制 Obsidian 笔记到微信公众号2


致谢

本项目参考并基于以下优秀开源项目,特此感谢:


📌 转载信息
原作者:
Spute
转载时间:
2025/12/25 11:14:31

大家好,我是来自台湾的开发者。

分享一个我自己造的轮子:FastFileLink (ffl)。

[起因] 起因很简单,主要是平时在 Docker 容器 (Container) 或者是远程服务器里要传文件进出实在是太麻烦了。

[折腾过程] 本来只想写个简单的小工具,结果越折腾越深,最后整成了 APE (Actually Portable Executable) 格式。 这就意味着:同一个 Binary 文件,没有任何依赖(不需要 Python 环境,不需要 glibc 版本适配),可以直接跑在 Windows, Linux, macOS 和 Android (Termux) 的 x86/ARM64 架构上。

[核心功能] 把文件或文件夹一行命令分享出去: ./ffl my_file.zip

生成一个 HTTPS 链接。

接收方不需要装任何软件,直接用浏览器打开链接,走 WebRTC P2P 直连下载。

如果 P2P 打不通( NAT 问题),会自动降级走加密中继( Relay ),保证文件一定能传(当然接收端习惯用 curl/wget 也是完全支持的)。

[几个特点]

⚡ WebRTC P2P: 只要能直连就是满速,不走服务器流量。

📦 APE 单文件: curl 下来 chmod 一下就能跑,真正的一把梭。

🔒 隐私: 默认无遥测( No Telemetry )。如果你使用第三方 Tunnel (如 Cloudflare),流量完全不经过我的服务器。

📱 Termux 友好: 实测在 Android Termux 上完美运行,把手机当文件服务器很方便。

我自己平时用着是挺顺手的,大家有兴趣可以试玩一下,希望能帮到有类似需求的朋友。如果觉得不错,欢迎给个 Star 支持一下!

GitHub: https://github.com/nuwainfo/ffl


📌 转载信息
原作者:
bear330
转载时间:
2025/12/25 11:13:40

一键拥有自己的豆包 AI 手机,全界面操作,告别命令行,AutoGLM-GUI 桌面版使用保姆级别教程

效果展示

先给大家看看实际效果:
让 AI 帮我点一杯奶茶。


从理解自然语言 → 打开 App → 点击 → 输入 → 确认,全程由 AI 自动完成。

AutoGLM-GUI 是什么?

Open-AutoGLM 是智谱开源的一个 ai 操作智能手机的框架,但原生使用方式对普通用户并不友好,需要命令行操作,需要安装 adb 等依赖。而 AutoGLM-GUI 基于 Open-AutoGLM 提供了更加友好的用户体验,支持自动安装 adb keyboard 等依赖,降低了使用的门槛。

目前支持:

  • 图形化界面操作
  • 自动安装 ADB Keyboard 等依赖
  • 多设备连接与切换
  • 直接点击屏幕操控手机

准备

  • 一部手机(Android /iOS/ 鸿蒙)
  • 一台电脑(Windows /macOS)
  • 一根数据线(有更好,没有也可以无线调试)

步骤

1. 下载 & 启动

先打开项目首页 AutoGLM-GUI,找到快速下载这里

我们根据自己的系统,选择下载,以下以 windows 系统为例

下载下来是这样子的 exe 文件,直接双击启动即可,不需要安装。根据电脑性能,可能要等一会

打开来第一时间,就会让我们去配置 api

2. 获取 apikey

简单来说,AutoGLM 分为控制端和模型端两个部分,我们在自己电脑上面运行的是控制端,这个是直接控制我们手机的。

但是大模型毕竟是大模型,几十亿上百亿的参数,我们自己电脑很难运行,所以这个时候是使用的官方托管的模型,我们直接调用智谱官方托管好的就行了

直接打开:https://bigmodel.cn/login?redirect=%2Fusercenter%2Fproj-mgmt%2Fapikeys ,这个是智谱官方的模型平台

直接使用手机号登录,免费的。目前好像还是推广期,调用模型不花钱。

直接随便取一个名字,新建一个 key

复制生成的 Key,粘贴到 AutoGLM-GUI 的配置界面中即可(URL 默认已经配置好,如果只是使用官方模型,不需要修改)

3. 启用 ADB 调试

这个相信大家都非常熟悉,但是为了教程的完整性,在这里还是简单提一下

  1. 找到版本号:进入「设置」 → 「关于手机」 → 找到「版本号」或「编译编号」。

  2. 开启开发者模式:连续快速点击「版本号」7 次,直到屏幕提示 “您已处于开发者模式”。

  3. 进入开发者选项:返回「设置」(或「系统设置」/「更多设置」),找到新出现的「开发者选项」。

  4. 开启调试:在开发者选项中,找到并开启「USB 调试」。

要注意的是,看看 USB 调试设置周围有没有其他安全设置,也记得同步调整一下。像小米,就有一个 USB 调试安全的配置,不开启就无法模拟点击~~(别问我是怎么知道的)~~。以及有的手机需要把连接电脑的模式调整到「文件传输」。

开始体验

开启 USB 调试之后,界面上面应该就直接显示出你的设备了,代表着配置完毕,可以开始体验了,可以打开计算器,让 ai 简单操作一下,如果没啥问题就代表一切就绪了。

最右边的屏幕还支持直接点击操控手机,连接到多设备之后,还可以在左边侧边栏进行切换

FAQ

支持 iPhone /iOS 吗?

正在适配中,已经跑通流程,但是由于比较复杂,还在完善相关支持

需要 Root 手机吗?

不需要。
AutoGLM-GUI 使用的是 官方 ADB 能力,无需 Root,也不会修改系统文件

设备列表是空的,看不到手机怎么办?

请按顺序检查:

  1. 手机是否开启 USB 调试
  2. 是否在手机上点了 “允许 USB 调试”
  3. 数据线是否支持数据传输(不是纯充电线)
  4. USB 连接模式是否为「文件传输」

最后

如果这个项目对你有帮助,欢迎:

  • GitHub Star
  • 提 Issue / PR


#开源 #AutoGLM #智谱 AI #OpenAutoGLM
@quiiiii


📌 转载信息
原作者:
OverL1nk
转载时间:
2025/12/25 10:52:28

在 github 等找到网易云自动刷量的都是好久之前的了,还有封号的风险

于是弄了这个方便网易云音乐人完成听歌任务
项目部署在 docker 里,借助浏览器播放网易云播放实现刷量
docker 的浏览器是通过 vnc 实现可用网页打开
脚本是用到油猴插件

推荐用小号收藏要刷的歌曲在一个歌单,浏览器打开这个歌单试一下播放
再设置脚本定时播放

注意:端口请改成自己合适的,还有 config 路径

Docker Compose

services: edge-browser:  linuxserver/msedge:latest # Edge浏览器镜像 container_name: edge-browser # 容器名称 hostname: edge-browser # 容器主机名 environment: - PUID=1000 # 用户ID,请根据你的NAS实际用户ID修改 - PGID=1000 # 用户组ID,请根据你的NAS实际用户组ID修改 - TZ=Asia/Shanghai # 时区设置 - LC_ALL=zh_CN.UTF-8 #- CUSTOM_USER=admin #配置访问用户名 已注释 #- PASSWORD=password  #配置访问密码 已注释 - EDGE_CLI=https://music.163.com/ # Edge启动时打开的默认网页 volumes: - ./config:/config # 核心数据持久化,浏览器配置、书签、历史记录等都存在这里 ports: - 3000:3000 # 内部 HTTP 端口。默认为 3000 - 3001:3001 # 内部 HTTPS 端口。默认为 3001,修改冒号左边的端口号。 shm_size: "1gb" # /dev/shm 大小,建议至少 1GB,避免浏览器崩溃 restart: unless-stopped # 除非手动停止,否则容器异常退出后自动重启 

油猴脚本 js

// ==UserScript==
// @name         网易云音乐定时播放暂停(每日重复+无弹窗自动执行)
// @namespace    https://shuffle.com/
// @version      3.0
// @description  适配.btns容器按钮,每日固定时间自动播放/暂停,无弹窗、任务持久化
// @author       You
// @match        *://music.163.com/*
// @grant        none
// @run-at       document-end
// ==/UserScript==

(function() {
    'use strict';

    // ========== 核心配置 ==========
    const PLAY_PAUSE_SELECTOR = '.btns [data-action="play"].ply.j-flag';
    const BACKUP_SELECTOR = '.btns .ply.j-flag';
    const STORAGE_KEY = 'neteaseMusicTimedTasks'; // 本地存储键名

    // 全局变量:存储重复任务的定时器ID(key: 任务ID, value: intervalId)
    let intervalTasks = {};

    // ========== 工具函数 ==========
    // 1. 等待播放按钮加载
    function waitForPlayBtn() {
        return new Promise(resolve => {
            const findBtn = () => {
                let btn = document.querySelector(PLAY_PAUSE_SELECTOR);
                if (!btn) btn = document.querySelector(BACKUP_SELECTOR);
                return btn;
            };
            const btn = findBtn();
            if (btn) return resolve(btn);

            const observer = new MutationObserver(() => {
                const btn = findBtn();
                if (btn) {
                    observer.disconnect();
                    resolve(btn);
                }
            });
            observer.observe(document.body, { childList: true, subtree: true });
        });
    }

    // 2. 无弹窗执行播放/暂停(仅控制台输出日志)
    async function togglePlayPause(action) {
        try {
            const playBtn = await waitForPlayBtn();
            if (!playBtn) {
                console.error('[网易云定时] 未找到播放/暂停按钮');
                return;
            }

            // 状态判断:data-action=pause → 播放中;data-action=play → 暂停中
            const currentAction = playBtn.getAttribute('data-action');
            const isPlaying = currentAction === 'pause';
            const actionText = action === 'play' ? '播放' : '暂停';

            // 自动执行点击,无弹窗
            if (action === 'play' && !isPlaying) {
                playBtn.click();
                console.log(`[网易云定时] ${new Date().toLocaleTimeString()} → 自动${actionText}成功`);
            } else if (action === 'pause' && isPlaying) {
                playBtn.click();
                console.log(`[网易云定时] ${new Date().toLocaleTimeString()} → 自动${actionText}成功`);
            } else {
                console.log(`[网易云定时] ${new Date().toLocaleTimeString()} → 无需执行${actionText}(当前:${isPlaying ? '播放中' : '已暂停'})`);
            }
        } catch (e) {
            console.error('[网易云定时] 执行失败:', e);
        }
    }

    // 3. 计算「首次执行延迟」和「每日重复间隔」
    function getDelayAndInterval(targetHour, targetMinute) {
        const now = new Date();
        const target = new Date();
        target.setHours(targetHour);
        target.setMinutes(targetMinute);
        target.setSeconds(0);
        target.setMilliseconds(0);

        // 首次执行延迟:若目标时间已过,延迟为「明天该时间 - 现在」
        let delay = target.getTime() - now.getTime();
        if (delay < 0) delay += 86400000; // 加24小时(86400000毫秒)

        return {
            firstDelay: delay, // 首次执行延迟(毫秒)
            repeatInterval: 86400000 // 每日重复间隔(24小时)
        };
    }

    // ========== 任务持久化(localStorage) ==========
    // 1. 从本地存储加载任务
    function loadTasks() {
        const tasks = localStorage.getItem(STORAGE_KEY);
        return tasks ? JSON.parse(tasks) : [];
    }

    // 2. 保存任务到本地存储
    function saveTasks(tasks) {
        localStorage.setItem(STORAGE_KEY, JSON.stringify(tasks));
    }

    // ========== 重复任务管理 ==========
    // 1. 添加每日重复任务
    function addDailyTask(hour, minute, action) {
        // 验证时间格式
        if (hour < 0 || hour > 23 || minute < 0 || minute > 59) {
            alert('时间格式错误!小时(0-23),分钟(0-59)'); // 仅添加时提示,执行时无弹窗
            return;
        }

        // 生成唯一任务ID
        const taskId = Date.now().toString();
        const { firstDelay, repeatInterval } = getDelayAndInterval(hour, minute);

        // 首次执行 + 每日重复
        const firstTimer = setTimeout(() => {
            // 执行首次操作
            togglePlayPause(action);
            // 设置每日重复
            const intervalId = setInterval(() => {
                togglePlayPause(action);
            }, repeatInterval);
            intervalTasks[taskId] = intervalId;
        }, firstDelay);

        // 存储任务信息
        const task = {
            id: taskId,
            time: `${String(hour).padStart(2, '0')}:${String(minute).padStart(2, '0')}`,
            action: action === 'play' ? '播放' : '暂停',
            firstTimerId: firstTimer // 首次执行的定时器ID
        };
        const tasks = loadTasks();
        tasks.push(task);
        saveTasks(tasks);

        // 更新UI + 提示添加成功(仅一次)
        updateTaskList();
        alert(`✅ 每日重复任务已添加:每天${task.time}自动${task.action}音乐(页面刷新不丢失)`);
    }

    // 2. 取消单个每日任务
    function cancelDailyTask(taskId) {
        const tasks = loadTasks();
        const taskIndex = tasks.findIndex(t => t.id === taskId);
        if (taskIndex === -1) return;

        // 清除定时器(首次执行+重复执行)
        clearTimeout(tasks[taskIndex].firstTimerId);
        if (intervalTasks[taskId]) clearInterval(intervalTasks[taskId]);
        delete intervalTasks[taskId];

        // 移除任务 + 保存
        tasks.splice(taskIndex, 1);
        saveTasks(tasks);
        updateTaskList();
        console.log(`[网易云定时] 已取消每日${tasks[taskIndex]?.time}的${tasks[taskIndex]?.action}任务`);
    }

    // 3. 取消所有每日任务
    function cancelAllDailyTasks() {
        const tasks = loadTasks();
        // 清除所有定时器
        tasks.forEach(task => {
            clearTimeout(task.firstTimerId);
            if (intervalTasks[task.id]) clearInterval(intervalTasks[task.id]);
        });
        intervalTasks = {};
        // 清空存储
        saveTasks([]);
        updateTaskList();
        alert('❌ 已取消所有每日重复任务');
    }

    // ========== UI面板(管理每日重复任务) ==========
    function updateTaskList() {
        const listEl = document.getElementById('taskList');
        if (!listEl) return;

        const tasks = loadTasks();
        listEl.innerHTML = '';

        if (tasks.length === 0) {
            listEl.innerHTML = '<div style="color:#999; padding:5px;">暂无每日重复任务</div>';
            return;
        }

        // 渲染所有重复任务
        tasks.forEach(task => {
            const item = document.createElement('div');
            item.style.cssText = 'padding:4px 0; border-bottom:1px solid #eee; display:flex; justify-content:space-between; align-items:center;';
            item.innerHTML = `
                <span>🔁 每天${task.time}:自动${task.action}音乐</span>
                <button class="cancelTaskBtn" data-id="${task.id}" style="padding:2px 6px; background:#f5222d; color:#fff; border:none; border-radius:3px; cursor:pointer;">取消</button>
            `;
            listEl.appendChild(item);

            // 绑定取消事件
            item.querySelector('.cancelTaskBtn').addEventListener('click', (e) => {
                cancelDailyTask(e.target.dataset.id);
            });
        });
    }

    // 创建UI面板
    function createUIPanel() {
        const panel = document.createElement('div');
        panel.style.cssText = `
            position: fixed; top: 20px; right: 20px; z-index: 99999;
            background: #fff; padding: 15px; border-radius: 8px;
            box-shadow: 0 2px 10px rgba(0,0,0,0.2);
            font-size: 14px; color: #333; min-width: 300px;
        `;
        panel.innerHTML = `
            <div style="margin-bottom: 10px; font-weight: bold; font-size:16px;">网易云每日定时</div>
            <!-- 时间设置区域 -->
            <div style="margin-bottom: 10px; padding-bottom:10px; border-bottom:1px solid #eee;">
                <div style="margin-bottom: 8px; display:flex; align-items:center; gap:8px;">
                    <label>每日执行时间:</label>
                    <input type="number" id="taskHour" placeholder="小时(0-23)" min="0" max="23" style="padding:4px; width:60px;">
                    <span>:</span>
                    <input type="number" id="taskMinute" placeholder="分钟(0-59)" min="0" max="59" style="padding:4px; width:60px;">
                </div>
                <div style="margin-bottom: 8px;">
                    <label>执行操作:</label>
                    <select id="taskAction" style="padding:4px; width:120px;">
                        <option value="play">自动播放</option>
                        <option value="pause">自动暂停</option>
                    </select>
                </div>
                <button id="addTaskBtn" style="padding:4px 12px; background:#1890ff; color:#fff; border:none; border-radius:4px; cursor:pointer;">添加每日任务</button>
            </div>
            <!-- 任务列表区域 -->
            <div>
                <div style="margin-bottom:8px; font-weight:bold;">已添加的每日任务:</div>
                <div id="taskList" style="max-height:200px; overflow-y:auto; padding:5px; border:1px solid #eee; border-radius:4px;">
                    <div style="color:#999; padding:5px;">暂无每日重复任务</div>
                </div>
                <button id="cancelAllBtn" style="margin-top:8px; padding:4px 12px; background:#666; color:#fff; border:none; border-radius:4px; cursor:pointer;">取消所有任务</button>
            </div>
        `;
        document.body.appendChild(panel);

        // 绑定添加任务事件
        document.getElementById('addTaskBtn').addEventListener('click', () => {
            const hour = Number(document.getElementById('taskHour').value);
            const minute = Number(document.getElementById('taskMinute').value);
            const action = document.getElementById('taskAction').value;

            if (isNaN(hour) || isNaN(minute)) {
                alert('请输入有效的小时和分钟!');
                return;
            }

            addDailyTask(hour, minute, action);
            // 清空输入框
            document.getElementById('taskHour').value = '';
            document.getElementById('taskMinute').value = '';
        });

        // 绑定取消所有任务事件
        document.getElementById('cancelAllBtn').addEventListener('click', cancelAllDailyTasks);
    }

    // ========== 初始化:加载任务+创建UI ==========
    function init() {
        // 1. 创建UI面板
        createUIPanel();
        // 2. 加载本地存储的任务,重建定时器
        const tasks = loadTasks();
        tasks.forEach(task => {
            const [hour, minute] = task.time.split(':').map(Number);
            const action = task.action === '播放' ? 'play' : 'pause';
            const { firstDelay, repeatInterval } = getDelayAndInterval(hour, minute);

            // 重建首次执行+重复定时器
            const firstTimer = setTimeout(() => {
                togglePlayPause(action);
                const intervalId = setInterval(() => {
                    togglePlayPause(action);
                }, repeatInterval);
                intervalTasks[task.id] = intervalId;
            }, firstDelay);

            // 更新任务的首次定时器ID(防止页面刷新后无法取消)
            task.firstTimerId = firstTimer;
        });
        saveTasks(tasks);
        // 3. 更新任务列表UI
        updateTaskList();
    }

    // 页面加载完成后初始化
    if (document.readyState === 'complete') {
        init();
    } else {
        window.addEventListener('load', init);
    }

})();

效果图:

飞牛也可以用应用市场的浏览器,方便在外面访问,但是谷歌安装油猴插件有点麻烦


可以在电脑保存好脚本,通过 vnc 的控制栏上传文件


📌 转载信息
原作者:
shuffle
转载时间:
2025/12/25 10:39:32

https://x.com/windsurf/status/2003925433352364068

SWE-1.5 免费,SWE-1.5-Fast 0.5 积分

两个的区别就是前者慢一些,后者就是以前的 SWE-1.5,托管在 Cerebras 上,Cerabras 老朋友了,实力自不多说,主打超快推理。

SWE-1.5 是基于 GLM-4.5 RL 后训练的,优点就是快。

𝕏 x.com

石锤!Windsurf 的新模型 SWE-1.5 更像 GLM-4.5!

之前网传硅谷的公司已经在内部开始大面积用国产开放权重大模型来魔改了,传的尤其猛的是 Cursor 的 Composer-1 是用 DeepSeek 魔改 (后训练或微调) 的,而 Windsurf 的 SWE-1.5 是用 GLM-4.6 魔改的.

而上一个基本已经石锤了,这个还没有被验证,pic.x.com/qX8k37UZkH

Windsurf SWE-1.5 免费,新增并行开发 worktree 支持3
9:48 AM - 6 Nov 2025 140 🔁 17

📌 转载信息
原作者:
Flail7127
转载时间:
2025/12/25 10:39:04