V2EX 热门帖子
1. OpenCode + GLM-4.7 还是弟弟, Antigravity + Gemini 3 Pro 还是强不少,不写一行代码转译了一个 Gem: rb-edge-tts
原库是 Python 写的: https://github.com/rany2/edge-tts
我先用 OpenCode + GLM-4.7 转成 Ruby Gem. 提示词:
详细研读 python 代码,帮我把这个功能库转换成一个 Ruby gem, 并写出相应的 README.md, 比如 安装,调用等。
最后没成功,然后它在根目录留下几个 markdown 文件分析了一下它觉得的问题所在,然后就不管了。每次让它继续还是搞不定。没有买其它模型,说不定其它模型效果会好一点。
最后还是在 Antigravity + Gemini 3 Pro 下丝滑完工: https://github.com/ZPVIP/rb-edge-tts (欢迎试用,发 Issue ,PR)
全程我都没有写代码,这在以前根本无法想象。
作者: zpvip | 发布时间: 2026-01-10 18:40
2. Incremark Solid 版本上线: Vue/React/Svelte/Solid 四大框架,统一体验
Incremark 现已支持 Solid ,至此完成了对 Vue 、React 、Svelte 、Solid 四大主流前端框架的全面覆盖。
为什么要做框架无关
市面上大多数 Markdown 渲染库都是针对特定框架开发的。React 生态有 react-markdown ,Vue 生态有各种 v-md 组件。这带来几个问题:
- 重复造轮子 :每个框架社区都在独立实现相似的功能
- 能力不一致 :不同框架的实现质量参差不齐
- 团队切换成本 :换框架意味着重新学习新的 API
Incremark 采用不同的思路:核心逻辑与 UI 框架完全解耦 。
@incremark/core负责所有解析、转换、增量更新的工作,输出的是框架无关的数据结构。各框架包(@incremark/vue、@incremark/react、@incremark/svelte、@incremark/solid)只需要把这些数据渲染成对应框架的组件即可。这意味着:
- 核心能力一次实现,四个框架同时受益
- Bug 修复和性能优化自动同步到所有框架
- API 设计保持高度一致,切换框架几乎零学习成本
包结构
┌───────────────────────────────┐ │ @incremark/core │ │ │ │ 增量解析 · 双引擎 · 插件系统 │ └───────────────┬───────────────┘ │ ▼ ┌───────────────────────────────┐ │ @incremark/vue │ │ @incremark/react │ │ @incremark/svelte │ │ @incremark/solid ← NEW │ └───────────────┬───────────────┘ │ ▼ ┌───────────────────────────────┐ │ @incremark/theme │ │ │ │ 样式 · 主题 · 代码高亮 │ └───────────────────────────────┘增量解析
传统 Markdown 渲染器在流式场景下存在性能问题:每次新内容到达都要重新解析整个文档,复杂度是 O(n²)。
Incremark 只处理新增内容,已解析的块不再重复处理,复杂度降至 O(n)。
四个框架的用法对比
四个框架的组件 API 完全一致,只是语法风格不同:
Vue
<script setup> import { IncremarkContent } from '@incremark/vue' // ... </script> <template> <IncremarkContent :content="content" :is-finished="isFinished" /> </template>React
import { IncremarkContent } from '@incremark/react' // ... <IncremarkContent content={content} isFinished={isFinished} />Svelte
<script> import { IncremarkContent } from '@incremark/svelte' // ... </script> <IncremarkContent content={content} isFinished={isFinished} />Solid
import { IncremarkContent } from '@incremark/solid' // ... <IncremarkContent content={content()} isFinished={isFinished()} />可以看到,除了各框架本身的响应式语法差异( Vue 的
ref、React 的useState、Svelte 的$state、Solid 的createSignal),组件的使用方式完全统一。在线演示
链接
- npm: @incremark/core
- 文档: incremark.com
- GitHub: github.com/anthropics/incremark
MIT 许可证。
作者: 1244943563 | 发布时间: 2026-01-10 19:12
3. 解决了一个非常棘手的问题,内心止不住的开心。
15 年前的项目,sqlserver2008r2
php 5.6 / 7 项目
开发环境 mac 26.2 的系统。
各种编译 pdo_sqlsrv 扩展终于解决了。可以顺畅开发了
主要故障源于 arm 架构无法编译 pdo_sqlsrv 低版本的扩展。
mac 的 odbc17 只支持 tls1.2 以上。 sqlserver2008r2 不支持 tls1.2
odbc13 已经不可用。这顿捣鼓
搞了两天两夜 可算搞定了。能睡个好觉
作者: gyinbj | 发布时间: 2026-01-10 18:49
4. 系统自带的 IPSEC/IKEv2 客户端,自动重连问题
最近在写 IPSEC/IKEv2 的服务端,目前已经能使用系统(windows10/macos/ios/android)自带的 VPN 客户端连接上来了。
实际使用的时候,发现个问题,就是不管是 windows 系统还是 macos 系统,只要系统断网了(比如 wifi 断了),然后 VPN 也会自动断掉,断掉之后 VPN 不会自己重新连接,需要手动重新连接。手机端的话,感觉手动重连还行,电脑端的话,如果电脑不在旁边就就没法连上 VPN 了。
不知道大家实际使用系统自带的 VPN 客户端时,是咋解决这个问题的?
作者: raltrk | 发布时间: 2026-01-10 14:23
5. 各位大佬,店内人脸识别方案有推荐吗
记性太差,守店老会忘记再进店的老顾客;
各位大佬有推荐稳定的人脸识别的软/硬件不;
作者: tmdgri | 发布时间: 2026-01-10 12:07
6. iPad 上有类似 lanuchos 的类似免费软件吗?
这里推荐了一轮, 但不知道哪个会更好用, 更容易上手。
作者: Hermitist | 发布时间: 2026-01-10 15:30
7. 有没有按照 Fluent Design 设计的 Clash 推荐呢?
隔壁 mac 都有 clashMac 了,看着挺好看的,现在用的 clash verge 界面和 Windows 不太搭配,有点丑😇 以前找到过一个: https://github.com/Daydreamer-riri/clash-verge-rev-fluent ,但是现在太久没更新了😇
作者: JordanQD | 发布时间: 2026-01-10 09:21
8. 现在感觉产品以后交付都是按小时算时间了
AI 肯定是越来越强的
上次看文章说, claude 可以连续编程 5 个小时
那至少都是几万行代码起码
大多小产品其实可能都不到万行, 就算加上文档注释测试等, 有 1,2 万行不错了
那就是说以后产品真的按小时计算了, 甚至当天交付…
搞得和京东一样, 保证隔天收货了
作者: iorilu | 发布时间: 2026-01-10 09:47
9. vibe coding 了下我的 NAT 网络地址转换工具,新增了管理页面和端口段 Redirect 支持
NFTables NAT Rust
基于 nftables 的高性能 NAT 端口转发管理工具,使用 Rust 语言开发。
✨ 核心特性
- 🔄 动态 NAT 转发 :自动监测配置文件和目标域名 IP 变化,实时更新转发规则
- 🌐 IPv4/IPv6 双栈支持 :完整支持 IPv4 和 IPv6 NAT 转发
- 📝 灵活配置 :支持传统配置文件和 TOML 格式,满足不同使用场景
- 🎯 精准控制 :支持单端口、端口段、TCP/UDP 协议选择
- 🔌 本地重定向 :支持端口重定向到本机其他端口
- 🐋 Docker 兼容 :与 Docker 网络完美兼容
- ⚡ 高性能轻量 :基于 Rust 编写,仅依赖标准库和少量核心库
- 🚀 开机自启 :支持 systemd 服务管理,开机自动启动
- 🔍 域名解析 :支持域名和 IP 地址,自动 DNS 解析和缓存
- 🖥️ Web 管理界面 :提供可视化的 WebUI 管理配置和查看规则
![]()
🖥️ 系统要求
适用于以下 Linux 发行版:
- CentOS 8+ / RHEL 8+ / Fedora
- Debian 10+ / Ubuntu 18.04+
- 其他支持 nftables 的现代 Linux 发行版
⚙️ 系统准备
CentOS / RHEL / Fedora
# 关闭 firewalld systemctl disable --now firewalld # 关闭 SELinux setenforce 0 sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config # 安装 nftables yum install -y nftablesDebian / Ubuntu
# 安装 nftables apt update && apt install -y nftables # 禁用 iptables (可选) systemctl disable --now iptables📦 快速安装
升级也使用相同的安装命令
方法一:TOML 配置文件版本(推荐)
bash <(curl -sSLf https://us.arloor.dev/https://github.com/arloor/nftables-nat-rust/releases/download/v2.0.0/setup.sh) toml方法二:传统配置文件版本
bash <(curl -sSLf https://us.arloor.dev/https://github.com/arloor/nftables-nat-rust/releases/download/v2.0.0/setup.sh) legacy🆕 WebUI 管理界面
本项目现已支持 Web 管理界面,可以通过浏览器方便地管理 NAT 配置。
- 🔐 基于 JWT 的安全认证
- 🔒 支持 HTTPS/TLS 加密传输
- 📝 可视化编辑配置文件(支持传统格式和 TOML 格式)
- 📋 实时查看 nftables 规则
- 🎨 现代化的用户界面
安装管理界面 WebUI
bash <(curl -sSLf https://us.arloor.dev/https://github.com/arloor/nftables-nat-rust/releases/download/v2.0.0/setup-console.sh) # -p 5533 -k /root/.acme.sh/arloor.dev/arloor.dev.key -c /root/.acme.sh/arloor.dev/fullchain.cer
- 安装过程会交互式提示输入用户名和密码。密码会保存在 systemd 文件中,注意安全。
- 通过
-p参数可以指定 WebUI 监听端口,默认端口为 5533 。- 通过
-c和-k参数可以指定自定义 TLS 证书和私钥文件路径,如果未提供,将自动生成自签名证书。- 安装脚本会自动检测现有 NAT 服务的配置格式,并根据配置格式生成相应的 systemd service 文件。
安装完成后,访问
https://your-server-ip:5533即可使用管理界面。详细文档请查看 nat-console/README.md升级 WebUI
bash <(curl -sSLf https://us.arloor.dev/https://github.com/arloor/nftables-nat-rust/releases/download/v2.0.0/setup-console-assets.sh) systemctl restart nat-console📝 配置说明
TOML 配置文件(推荐)
配置文件位置:
/etc/nat.toml优势 :
✅ 支持配置验证,保证格式正确
✅ 支持注释,便于维护
✅ WebUI 可视化编辑和验证
✅ 结构化配置,可读性更好
============ 基础转发示例 ============
1. 单端口转发 - HTTPS 流量转发
[[rules]]
type = “single”
sport = 10443 # 本机监听端口
dport = 443 # 目标服务端口
domain = “example.com” # 目标域名或 IP 地址
protocol = “all” # 协议: all, tcp 或 udp
ip_version = “ipv4” # IP 版本: ipv4, ipv6 或 all
comment = “转发 HTTPS 到 example.com”2. 端口段转发 - 批量游戏端口
[[rules]]
type = “range”
port_start = 20000 # 起始端口
port_end = 20100 # 结束端口(含)
domain = “game.example.com”
protocol = “tcp” # 仅 TCP 协议
ip_version = “all” # 同时支持 IPv4 和 IPv6
comment = “游戏服务器端口段”3. UDP 专用转发 - DNS 服务
[[rules]]
type = “single”
sport = 5353 # 本机 DNS 端口
dport = 53 # 目标 DNS 端口
domain = “8.8.8.8” # 也可以直接使用 IP 地址
protocol = “udp” # 仅 UDP 协议
ip_version = “ipv4”
comment = “DNS 查询转发”============ 本地重定向示例 ============
4. 单端口重定向到本机服务
[[rules]]
type = “redirect”
sport = 8080 # 外部访问端口
dport = 3128 # 本机实际服务端口
protocol = “all”
ip_version = “ipv4”
comment = “代理服务端口重定向”5. 端口段重定向到本机
[[rules]]
type = “redirect”
sport = 30001 # 起始端口
sport_end = 30100 # 结束端口
dport = 45678 # 本机目标端口
protocol = “tcp”
ip_version = “all”
comment = “批量端口重定向到本机”============ 高级场景示例 ============
6. 强制 IPv6 转发
[[rules]]
type = “single”
sport = 9001
dport = 9090
domain = “ipv6.example.com”
protocol = “all”
ip_version = “ipv6” # 仅使用 IPv6 进行转发
comment = “IPv6 专用服务”7. 双栈支持示例 - 自动选择 IPv4/IPv6
[[rules]]
type = “single”
sport = 10080
dport = 80
domain = “dual-stack.example.com” # 域名同时有 A 和 AAAA 记录
protocol = “tcp”
ip_version = “all” # 根据客户端 IP 版本自动选择
comment = “双栈 Web 服务”传统配置文件
配置文件位置:
/etc/nat.conf基础格式 :
SINGLE,本机端口,目标端口,目标地址[,协议][,IP 版本]- 单端口转发RANGE,起始端口,结束端口,目标地址[,协议][,IP 版本]- 端口段转发REDIRECT,源端口,目标端口[,协议][,IP 版本]- 重定向到本机端口REDIRECT,起始端口-结束端口,目标端口[,协议][,IP 版本]- 端口段重定向参数说明 :
- 协议可选值:
tcp、udp、all(默认为all)- IP 版本可选值:
ipv4、ipv6、all(默认为all)- 以
#开头的行为注释配置示例 :
# ============ 基础转发 ============ # 单端口转发 - HTTPS 流量 SINGLE,10443,443,example.com # 端口段转发 - 游戏服务器端口( 20000-20100 ) RANGE,20000,20100,game.example.com # ============ 协议指定 ============ # 仅转发 TCP 流量 - Web 服务 SINGLE,10080,80,web.example.com,tcp # 仅转发 UDP 流量 - DNS 查询 SINGLE,5353,53,8.8.8.8,udp # ============ 本地重定向 ============ # 单端口重定向到本机服务 REDIRECT,8080,3128 # 端口段重定向到本机( 30001-30100 → 45678 ) REDIRECT,30001-30100,45678 # TCP 专用重定向 REDIRECT,7000-7100,8080,tcp # ============ IPv6 支持 ============ # 强制使用 IPv6 转发 SINGLE,9001,9090,ipv6.example.com,all,ipv6 # 双栈支持(根据客户端自动选择) SINGLE,10080,80,dual-stack.example.com,tcp,all # 禁用的规则(以 # 开头) # SINGLE,3000,3000,disabled.example.com🚀 使用方法
启动/停止服务
# 启动服务 systemctl start nat # 停止服务 systemctl stop nat # 重启服务 systemctl restart nat # 查看服务状态 systemctl status nat # 开机自启 systemctl enable nat # 取消开机自启 systemctl disable nat修改配置
修改配置文件后,程序会在 60 秒内自动应用新配置 ,无需手动重启服务。
# TOML 版本 vim /etc/nat.toml # 传统版本 vim /etc/nat.conf查看日志
# 实时查看日志 journalctl -fu nat # 查看详细日志 journalctl -exfu nat # 查看最近 100 行日志 journalctl -u nat -n 100查看 nftables 规则
# 查看所有规则 nft list ruleset # 仅查看 NAT 表 nft list table ip self-nat nft list table ip6 self-nat6🔧 高级配置
自定义源 IP (多网卡场景)
默认使用 masquerade 自动处理 SNAT 。如需指定源 IP:
# 设置自定义源 IP echo "nat_local_ip=10.10.10.10" > /opt/nat/env # 重启服务 systemctl restart nat🐋 Docker 兼容性
本工具已与 Docker 完全兼容。程序会自动调整 nftables 规则以适配 Docker 网络。
说明 :Docker v28 将 filter 表 forward 链默认策略改为 DROP ,本工具会自动将其重置为 ACCEPT 以确保 NAT 规则正常工作。
📌 注意事项
REDIRECT 类型限制
REDIRECT类型工作在 PREROUTING 链,仅对外部流量有效:
- ✅ 有效 :外部机器访问重定向端口 → 成功重定向
- ❌ 无效 :本机进程访问重定向端口 → 不会重定向
原因 :本机流量直接进入 OUTPUT 链,不经过 PREROUTING 链。
示例 :
# 配置:REDIRECT,8000,3128 curl http://remote-server:8000 # ✅ 成功重定向到 3128 curl http://localhost:8000 # ❌ 不会重定向,直接访问 8000TLS/Trojan 转发
转发 TLS/Trojan 等加密协议时,常见问题是证书配置错误。
解决方案 :
- 简单 :客户端禁用证书验证
- 推荐 :正确配置证书和域名,确保证书域名与中转机匹配
📄 许可证
本项目采用 MIT License 开源协议。
🔗 相关链接
- 项目地址 : https://github.com/arloor/nftables-nat-rust
- 问题反馈 : https://github.com/arloor/nftables-nat-rust/issues
- 前代项目 :arloor/iptablesUtils(不兼容)
注意 :与旧版 iptablesUtils 不兼容,切换时请先卸载旧版或重装系统。
作者: arloor | 发布时间: 2026-01-10 12:46
10. OpenCode 如何
号称开源的 Claude Code 一直滑到,有没有实际使用的分享下体验
作者: iwdmb | 发布时间: 2026-01-10 06:41
11. [想赚点铜币] 教程之如何在 wsl 等远程不方便代理的环境,不使用 Antigravity 但是使用其中模型的额度
- Step 0. 前置准备
- 账号问题
- 网络问题
- Step 1. 准备 google pro 账号
- [选择 1:学生会员(成本低)](#选择 1 学生会员成本低)
- [选择 2:拼车](#选择 2 拼车)
- 准备一些小号
- Step 2. 配置 CLIProxyAPI
- Step 3. 配置 Claude Code 或其他 API 客户端
由于部分内容和本帖相关性不那么高,我就不多赘述了,请善用搜索引擎或者直接 Ask LLMs
Step 0. 前置准备
账号问题
注意检查以下几个问题:
- 账号的地区是否在美国或其他支持国家(比如新加坡)
- 账号的 Play 付款方式是否删除了香港或者大陆
- 是否过了 google 年龄验证(不是你资料里填了生日就行)
- 是否在 google cloud console 创建了项目并开启了 Gemini 相关的 API
网络问题
- 在 github 上找 google/gemini 相关规则(比如 ACL4SSR )
- 编辑 clash 配置文件,路由这部分流量到目标区域
- 最好使用 select 类型的配置组,不要使用 load-balance 让你的节点在美国各地乱跳
- 不要使用诸如 1 元机场这种万人骑的公交车
Step 1. 准备 google pro 账号
选择 1:学生会员(成本低)
Google 为学生会员准备了一年的免费 pro 权益
- 注意你即使真是学生,也不要用自己的学校邮箱注册,因为中国学校并不在支持范围内。
- 可以使用类似 1key.me 的注册机过验证,注意 IP
- 最麻烦的一步是绑定银行卡,可能会扣 1 刀乐验证,这部分建议咸鱼解决,同样不建议绑真卡
选择 2:拼车
鼠鼠没钱,所以这部分跳过
准备一些小号
- 由于 google ai pro 允许共享给家庭组(最多 5 人)使用,且不同人的额度独立
- 所以你可以准备一些小号,然后喜获额度 * 小号数量
- 注意小号也要满足前置条件,自己接码可能会被立即风控,建议找专业号贩子
Step 2. 配置 CLIProxyAPI
在一个多月前 Antigravity 发布的时候,我在这篇帖子里提到了代理问题很麻烦,即 code server 走 server 的网络而不是本地网络,并且 Antigravity 还不能配置代理:
后来的一个月时间网上出了各种教程贴,诸如 proxifier 等,但是都没有解决需要在 WSL 等远程环境下使用代理的问题。 有方法是替换服务器上的程序文件并附加代理,这显然不够优雅,而且每次 IDE 更新都要重新操作一遍。
好在有各位大佬开发了 CLIProxyAPI 这个工具,将 Antigravity 的认证和请求功能剥离出来。 有了它,你不需要安装 Antigravity 的 GUI 客户端 ,就能在任何环境下使用 Antigravity 模型。
安装
参考 https://help.router-for.me/introduction/quick-start.html
这里以 linux 为例: 默认会安装在
~/cliproxyapi/目录下,并且会创建一个 systemd 服务在~/.config/systemd/user/cliproxyapi.service配置 config.yaml
运行前需要先编辑
~/cliproxyapi/config.yaml文件,必须的配置项如下:# 使用这里的 key 再次分发(即配置到你需要使用 API 的地方) # 不是 Antigravity/Gemini 等官方服务的 key ,你自己生成 api-keys: - "your-proxyapi-key-here" # 代理地址,可以不在本地 proxy-url: "http://127.0.0.1:7890" # WebUI 控制台的登录密码 # 第一次运行后会被删除,请妥善保管 remote-management: secret-key: "your-management-keyword-here"其余的配置项可以看文档或者直接在 WebUI 里配置。
认证
./cli-proxy-api --antigravity-login --no-browser
- 运行后会打印一个 OAuth 链接,复制到浏览器打开并登录 Google 账号授权。
- 授权成功后不要按照提示关闭浏览器窗口,复制地址栏的完整回调 URL 回到终端粘贴回车。
- 如果有多个账号,可以重复运行上面的命令添加更多账号。
运行
systemctl --user start cliproxyapi
浏览器打开
http://localhost:8317访问 WebUI 控制台
- IP 是你运行 CLIProxyAPI 机器的地址
- 端口号默认是 8317 ,可以在 config.yaml 里修改
在
认证文件管理页面可以看到已经添加的账号
- 点击
模型管理可以看到已经解锁的 Gemini 模型
- 如果没有看到模型,说明账号不符合条件,请看前置准备之账号问题
- 配置模型名称映射(可选)
- Antigravity 不同模型间的配额独立,可以根据需要给常用模型起个别名,然后均衡使用不同模型
- 以下是我自己的映射配置示例:
oauth-model-mappings:
antigravity:
- name: gemini-3-pro-preview
alias: sonnet
fork: true
- name: gemini-3-flash-preview
alias: haiku
fork: true
- name: gemini-claude-sonnet-4-5-thinking
alias: opus
fork: true
基础设置
路由策略选择round_robin自动轮询多个账号,防止单个账号额度耗尽或者爆并发- 可以启用使用统计,从而查看你消耗的 token 数量,如果日后需要购买中转服务可以有个预估
Step 3. 配置 Claude Code 或其他 API 客户端
为什么我倾向于 Claude Code? 可能是因为 CC 生态更完善一些,而且我个人用久了很多东西配好了不想换。
懒人配置
比如我,直接打开
~/.claude/settings.json"env": { "ANTHROPIC_AUTH_TOKEN": "your-proxyapi-key-here", // 注意修改这个地址,是你运行 cliproxyapi 机器的地址 "ANTHROPIC_BASE_URL": "http://127.0.0.1:8317", "ANTHROPIC_DEFAULT_HAIKU_MODEL": "haiku", "ANTHROPIC_DEFAULT_SONNET_MODEL": "sonnet", "ANTHROPIC_DEFAULT_OPUS_MODEL": "opus" }高阶配置
如果你的 provider 比较多,除了今天的 cliproxyapi 之外还有其他的 API 提供商,比如 GLM 或者其它各种中转站,可以使用下面这个项目:
https://github.com/SaladDay/cc-switch-cli/blob/main/README_ZH.md
Hello World
运行 claude ,试着打个招呼看看配置是否成功~
作者: QS0x01 | 发布时间: 2026-01-10 05:07
12. antigravity generate commit message 功能突然无法使用了(Beta)
antigravity 刚开始 generate commit message 功能,正常使用。
最近发现,在 antigravity 上点击 generate commit message 功能,会弹出错误,无法生成 commit 信息。
有人遇到类似问题吗?
PS: 其他的功能看起来都是正常的。
2026-01-09 22:34:15.736 [info] E0109 22:34:15.681222 30855 log.go:354] error converting token count to int: unleashWrapper is nil 2026-01-09 22:34:21.338 [info] E0109 22:34:21.338463 30855 log.go:362] Failed to generate commit message: error grabbing LLM response: stream error 2026-01-09 22:34:21.339 [info] E0109 22:34:21.339636 30855 interceptor.go:74] /exa.language_server_pb.LanguageServerService/GenerateCommitMessage (unknown): error grabbing LLM response: stream error环境:
MacBook Pro (Retina, 15-inch, Mid 2015) 12.7.4 (21H1123)
版本: Antigravity 提交: 1.13.3 日期: 1.104.0 Electron: 94f91bc110994badc7c086033db813077a5226af ElectronBuildId: 2025-12-19T21:03:14.401Z Chromium: 37.3.1 Node.js: 138.0.7204.235 V8: 22.18.0 OS: 13.8.258.31-electron.0
作者: sn0wdr1am | 发布时间: 2026-01-09 14:37
13. 寻找个仿 chrome/edge 的收藏栏的个人首页,自己找 Gemini 写了半天终觉差了点什么
由于个人的某种原因,经常要更换电脑工作,浏览器同步收藏同步就成了个问题,github 找了找大多都是像手机那样的一格子、一格子布局于是找 Gemini 花了半天高了个,但是总感觉差了点
大多都是 AI 写的
因为我基础只是懂点皮毛的那种
目前只能凑合着用![]()
作者: XINHL | 发布时间: 2026-01-10 03:45
14. Claude Code Skill + K8S 安全审计有没有搞头?
Claude Code Skill 话题这么火,我也来凑个热度 🚀
开发了一个 kube-audit-kit.
🛡️ 它能做什么:
- 一键扫描 K8s 集群安全隐患
- 基于 PSS/NSA/CIS 权威安全标准
- 智能分组应用,静态扫描 + AI 深度分析
- 覆盖 Pod 安全、RBAC 、网络策略、敏感数据等
🎯 解决什么痛点:
- ❌ 手动翻 YAML 检查安全配置太耗时
- ❌ 不清楚集群里有哪些违规配置
- ❌ 想审计但怕影响生产环境
- ✅ 纯只读操作,零侵入,3 分钟出报告
欢迎试用,Star 支持 ⭐️
作者: lianglin999 | 发布时间: 2026-01-10 01:36
15. 腾讯云有没办法更换商务经理?
想通过一个腾讯云的服务商优惠价购买服务器,来回折腾才知道一个腾讯云账户只能绑定一个商务,而我的账户的商务角色绑定了腾讯云自家的一个商务经理。这个商务经理平时也没啥搭理我,只是在双 11 这类人人都知道的促销活动时给我发活动通知(有一次问我促销活动来了有没有购买需求,我报了需求,结果给我发了官网首页直接可以找到的活动链接告诉我直接下单,汗…)
于是找腾讯云售后问如何更换商务经理,得到的答复是不能换。请问是真的不能换吗?有没有 v 友有成功更换商务经理的经历可以分享下方法?
我知道可以通过新开腾讯云账户来绑服务商,但我是想让计划新购的服务器与老服务器内网互通,为了这个优惠把老服务器业务搬到新账户下又觉得折腾成本太高……
作者: Chaopi | 发布时间: 2026-01-09 14:12
16. 求大佬们分享下跨境组网方案
人在大马,需要经常访问国内家里的服务器(无公网 ip )
手上还有一台香港 CN2 机器
预期是手上的各种移动设备都能无缝访问内网,所以用上了 tailscale
目前尝试的方案:
大马——tailscale p2p——内网:可以打洞成功,但晚高峰几乎不可用
大马——tailscale——香港,香港 frps——hy2——内网 frpc:小火箭直接连 hy2 节点是正常的,但加入 tailscale 后就不行了,涉及到透明代理,折腾一下午没搞定,放弃
大马——tailscale——香港自建 derp+peer relay ——内网:可用,但不稳定,经常存在过一段时间不可用的情况大马——tailscale——香港,香港 frpc——openvpn——内网 frps:这是多天尝试下来最好用的方案,但 openvpn 容易被识别,担心用两天就被封了
问 ai 也没啥好方案,求大佬们支招
作者: 0xfb709394 | 发布时间: 2026-01-08 09:25
17. AI 编程工具现在需要这样造势了么?
题目是《淘宝内核组 001 号员工,20 年经验“小菜鸟”:我用 AI 写代码,但不担心“手艺”退化》,提到 AI 使用是最后一个提问:
CSDN:您个人在日常开发中,会使用类似 Cursor 大模型编程工具吗?您如何看待它对开发者“手艺”的影响?是颠覆性的助手,还是可能导致开发者基础能力退化的“慢性毒药”?
李勇:我是会使用到 Cursor ,还有字节的 Trae ,主要是在阅读代码时帮我解释一下某些简单函数的运行逻辑。实际工作中,这大大提高了我在学习一个全新内核子系统过程中的效率,确实很有用。 但是也要警惕这些工具出现幻觉,所以还需要具备一定的逻辑判断能力,不能完全相信这些编程工具的输出内容。 我本人不在意“手艺”退化的影响,毕竟大学毕业后我就已经不具备纸上写代码的能力了。 系统软件开发者,和普通的程序语言开发程序员的差别之一,是需要对整个系统有深刻的理解,然后除了实现功能外,还要兼顾考虑到硬件体系结构和软件架构相关的很多隐含的背景知识。可靠的辅助编程工具,可以将开发者从具体代码开发的繁琐细节中解放出来,更多的精力可以集中在代码思路、效率和更好的思路上,对 Linux 内核开发应该是会有积极的促进作用。但开发者个人要对最终的代码负责,要确保代码的品质,避免对 AI 工具的滥用。
?哪里有“我用 AI 写代码”了?还是说这时候把“读代码”归到“写代码”活动中了?
作者: xuanwu | 发布时间: 2026-01-09 23:47
18. 小米 13 手贱升了 hyperos3,崩了
不是米粉也不是米黑。
一个月前小米 13 手贱升了 hyperos3,电池续航从一天降到 0.3 天,快充也没了,和家人打打视频电话( volte/nr )动不动就卡画面,只能换微信打,各种小 bug,又降不回去,也没有 root 。
失望,准备 ld 淘汰的 iphone13 当主力机了。
作者: ipfox | 发布时间: 2026-01-08 23:55
19. PHP framewok 框架推荐
分享一个 php 框架 flightphp 。
3 个字形容:快,简单。
目前在考虑基于 AI 上面的技术迭代,需要重写老系统。原来应该就不升级了,直接新框架新服务器,一个功能一个功能的转移。都转移了老库直接扔了就行。
本来是考虑 laravel 的,梦中情框啊。可是,她真的有点太魔法了,感觉现在跟 bible 一样了,看不完。出现问题也不好解决。所以就转念一想,AI Driven 开发, 越简单越好。要不彻底模块化,微服务化,尽可能的一个东西只干一件事,只做好一件事,越简单越好,这样的用 AI 最方便了。所以就发现了 flightphp 。 真太简单了,就一个路由,几乎其他都没了,完美适合 podman 。没有魔法,简单易懂,一切都是我自己完全掌控的代码,原来的很多 PHP 代码都是可以简单移植过来。
初步用 AI 搭建了一个 hello world json 页面,两个都是基于 podman+frakenphp+php8.5 。
flightphp 个把小时搭建好,laravel 用了几天。初步测试了,flightphp 基本比 laravel 快 10 倍以上,AI 总结具体如下:
ab -n 5000 -c 50 http://127.0.0.1:51011/up
-–
51011 — /up endpoint
Throughput: ~245 requests/sec
Median latency: ~196 ms
95th percentile: ~263 ms
-–
51100 — / endpoint
Throughput: ~3124 requests/sec
Median latency: ~15 ms
95th percentile: ~28 ms
So 51100 is roughly:
≈ 12.7× more throughput
≈ 13× lower median latency
≈ 9–10× lower tail latency (95th)
作者: Loser110 | 发布时间: 2026-01-10 14:22
20. google ai pro 99.99 美刀一年值得购买吗
不想折腾学生白嫖的原因:
1. 懒得搞各种学生的虚假认证,想想就头大
2. 比较爱惜自己手上的 google 账号,担心搞了学生后指不定哪天被风控了,限制一些功能。
作者: YanSeven | 发布时间: 2026-01-06 06:55
21. 有什么方法可以让 antigravity 定时自动发消息吗, 可以多用额度
都知道这个是 5 小时刷新
但并不是每五个小时自动刷新
而是从你开始用的那一刻开始
举个例子, 加入你 9 点开始用, 那到下午 2 点才会完成一轮额度, 但可能你高峰用的时候, 10 点多额度就没了
但如果你能让程序 5 点随便发一条, 那就可以有一轮 10 点结束的额度
这样你一上午就可以用两轮额度
总之你如果上班 10 小时, 到公司才开始用,那只能用两轮额度
但如果早上 5 点或 6 点自动发个发个消息, 那你上班同样时间可以用 3 轮
大家有什么好方法来说说看
作者: iorilu | 发布时间: 2026-01-09 13:02
22. 解决老账号 Google One 提示 “此账号无法订阅 Google One AI Pro” 解决方法
提示下
antigravity增加周限额了,专门为 antigravity 而半价年付需要谨慎。之前我一直在用老账号老提示“此账号无法订阅 Google One AI Pro”,变更过地址,一直不行,搁置许久。今天心血来潮又折腾了一下,终于搞定了。分享下处理步骤:
- 访问以下网址 https://policies.google.com/terms ,登录自己的账号即可查看账号当前的国家或地区,中国的话,请换区(注意,申请换区换区理由选“其他”;一年只能修改一次) —– 换成功了,没有效果
- 看下“付款资料” https://pay.google.com/gp/w/home/settings ,看下付款地区是否有中国的,有的话就删除(底部有“关闭支付资料”按钮,可以删除当前默认的)。增加一个其他支持的国家的。
- 如果还是不行,看下是否开通过 google enterprise 的试用,如果有,请关闭 (之前有一个月的免费使用活动的羊毛,gemini 告诉我需要关闭)
完事儿,可以再重新进入 https://one.google.com/about/plans 页面试试看出现没出现半价包年的优惠。
作者: tyrad | 发布时间: 2026-01-09 15:19
23. AntiGravity 拉闸了
As we balance giving the best possible quotas and maintaining fairness between users, especially under incredible demand, we will be establishing generous weekly limits for all models. This will only affect a minority of Google AI Pro users. These limits do not apply to Google AI Ultra, which continues to be the best plan for power developers! 原文如上,感觉是在每五小时限额的基础上再增加一个每周的限额。
作者: t0m1sacat | 发布时间: 2026-01-09 07:34
24. GLM 7 日免费体验卡 适合个人开发者体验
购买了 GLM-4.7 的 coding plan ,赠送 7 日体验卡: 7 天免费体验 + 注册邀请:
作者: zhy8777 | 发布时间: 2026-01-09 07:58
25. 智谱上市给 coding plan 用户发旺旺礼包了
仅限购买了 GLM coding plan 的用户,claude code 中配置 智谱的 coding plan 后 直接输入 智谱旺旺即可领取。小羊毛,不拿白不拿。 其他领取方式见 https://docs.bigmodel.cn/cn/coding-plan/benefits/wangwang
![]()
作者: codingerj | 发布时间: 2026-01-09 11:22
26. Gemini 3 PRO 现在降智太严重了,之前做前端体验非常好,现在啥啥干不好
现在写前端,给他个例子参考写的都是 bug,之前类似操作完成的很好,而且还会修复潜在的问题并且进行一些优化
作者: layxy | 发布时间: 2026-01-08 02:36
27. 给 netcat 引入了 P2P 穿透、多路复用、强加密以及内置服务模块,并且完全开源
之前在这发布过的,最近花了些时间给这个小工具写了份比较详细的文档了,请查阅
Github: https://github.com/threatexpert/gonc
自己平时使用的场景:
1 、公司的 VPN 好久不用了,家里 CGNAT 宽带和公司建立 P2P 的 HTTP+SOCKS5 代理隧道,自由访问公司网络。
2 、和分公司内网直接 P2P 快速(实时压缩)传输文件/目录。
3 、内置服务模块满足其他场景,例如 TCP/UDP 端口转发、类 frp 反向代理、甚至科学上网,一个工具都胜任了。
还真别说,通过打洞建立 P2P 的加密隧道,定期端口轮换的功能本来是针对运营商 Qos 的,在科学上网方面有独特的效果。
作者: le4tim | 发布时间: 2026-01-08 09:34
28. 想做一个「真正零侵入 + 支持 MQ」的全链路灰度发布工具,中小企业会买单吗?
大家好,最近在调研微服务灰度发布的落地情况,发现一个矛盾:
需求背景
大厂(阿里、腾讯、字节等)已有成熟方案,但往往绑定自家 PaaS/注册中心/MQ ,且不开源或收费高; 开源社区方案(如基于 Spring Cloud + Nacos 的灰度)大多只覆盖 HTTP/RPC 同步调用,一遇到 异步线程/RocketMQ/Kafka 就断链; 更头疼的是,很多方案要求改业务代码(比如加 @Gray 注解、手动透传 header ),团队一多就推不动。 于是我在想:如果做一个真正零侵入(通过 Java Agent 或 Sidecar 实现)、自动透传灰度标签到 MQ 消息体、兼容主流注册中心 & 消息队列、 支持按用户/租户/IP 等多维度灰度的轻量级产品,目标用户是中小公司( 50 ~ 200 人技术团队),会有需求吗?设想的产品特点
我们想打造一个更“轻量、易用、经济”的解决方案,初步设想: 低侵入/无侵入:尽可能通过 Agent 、Sidecar 等方式减少代码改动 完整链路支持:同步调用( HTTP/gRPC ) + 异步消息(主流 MQ ) + 数据库(影子表/库) 多云/混合云友好:不绑定特定云厂商,支持私有化部署 成本可控:预计为大厂方案的 1/3 或更低,提供透明定价想问问 V 友们:
你们公司现在怎么做灰度发布?遇到过 MQ 或异步线程 断链问题吗? 如果有这样的工具,愿意试用 or 付费吗?心理价位多少? 最不能接受的缺陷是什么?(比如性能损耗 >5%?必须用特定注册中心?) 不卖课不引流,纯粹想验证下这个方向是否值得投入。感谢任何真实反馈!🙏 如果感兴趣,也可以留下邮箱,产品原型出来后可以优先体验
作者: aom7610 | 发布时间: 2026-01-09 05:44
29. 大模型 agents 为什么不自带 skills?
为什么大模型不自带 skills ?可能所有 skills token 太多了,那可以维护一个云端技能列表,模型按需加载。
作者: ethusdt | 发布时间: 2026-01-09 14:32
30. 大模型写的代码几乎一摸一样
提了一个项目需求,让 chatgpt 分析,把分析的结果给 glm 4.7 和 claude code 4.5 ,发现两者写的代码几乎一摸一样。。。。。
作者: guotie | 发布时间: 2026-01-09 08:53
31. Google ai 订阅了,但是另外一个帐号加入不了,提示两个帐号可能不在同一个地区,然后我查看了都是帐号。
求助下
作者: Hyvi | 发布时间: 2026-01-09 07:32
32. 好奇, 很多人讨论 cursor 之类的 viber coding, 但是很少见有人说 github copilot 的, 但我体感 copilot 非常给力
个人: Copilot Pro+ subscription , 390 刀包年, 1500 premium requests/month.
可以用 GPT/Gemini/Grok/Claude Code 各种模型, 包括 Claude Code Sonnet4.5 / Opus4.5
用 Opus 4.5 应该是当下最强了, 准确率较高, vscode agent 模式也基本是自己只要出嘴(打字)即可, 完全不需要自己写任何代码, 甚至偶尔自己想修改一些简单地方效率比 AI 低得多, 只要自己描述的够清楚就好.
1500/30 = 50 premium requests/day, 如果按照 22-23 天工作日计算, 就 60 多次每天了. 对我来说也足够, 毕竟每次请求出去, agent 也要思考和处理一阵, 50 次已经足够处理大量.
相比于其他家的 token 费用报表, copilot 价格应该算是非常良心的了, 而且我基本用不完, 每月大概也就用 20-30%.
copilot 给我体感上非常满意, 现在经常提醒/告诫自己, 不要自己写代码, 全都讲给 agent 让它做, 因为自己不如它做得好, 命名不如它规范, 文档不如它漂亮, 出活速度更是远不如它, 自己亲力亲为成为绊脚石.
所以好奇, cursor 那些, 比 vscode+copilot 强在哪里?
作者: lesismal | 发布时间: 2026-01-10 07:43
33. 2025 年代码统计报告,程序员同行们,也来晒晒你们的报告吧
程序员同行们,晒晒你们的 2025 年代码统计,我使用的统计工具是 annualstats
![]()
作者: me876 | 发布时间: 2026-01-09 04:03
34. 2026 年了,有没有丝滑一些的 Linux 远程桌面解决方案
RT ,Linux 下现在有没有比较好用的远程桌面方案?
目前已知的有这几种:
- Ubuntu + GNOME + gnome-remote-desktop
- XXX + KDE + KRdp
- VNC
- RustDesk
- …
除了 krdp ,其他的之前都体验过,感觉都一般般,用起来有各种小毛病。开箱最快的应该是第一个,但似乎开机后必须用 VNC 登陆一次才能远程,锁屏远程倒是可以用一个插件解决,用起来还是不省心。krdp 看起来就非常折腾,还在观望。
主要有以下几点诉求:
- 支持 Linux 桌面环境中能够用 Remmina 或其他软件远控
- 支持 macOS 用 Windows APP 或其他软件远控
- 具备基本的安全性,能够防止暴力破解,且 Linux && macOS 客户端能支持
- 最好开箱即用,避免过高的时间成本和稳定性风险
我目前还没有找到哪个好用的,最好用的远程桌面估计就是 Windows 了吧,但是云服务器装 Windows 似乎用不了 wsl2 ,意味着很多终端工具用起来会很费劲,也非常的头大。需要一个稳定可用的远程桌面运行一些需要桌面支持的长时间任务。
基于以上诉求,现在有没有比较好的解决方案呢?
作者: songtianlun | 发布时间: 2026-01-08 02:38
35. 时间充裕,有什么软件暴力猜 xlsx 文件密码?
求推荐
作者: gtese | 发布时间: 2026-01-09 05:48
36. 股票 API 对接, 接入德国法兰克福交易所(FWB/Xetra)实现量化分析
如何实现实现量化分析,首先获取股票实时行情、股票历史数据和股票行情数据是进行量化交易和分析的关键。通过可靠的股票实时行情接口,如股票 API ,股票实时报价 API 和股票行情 api ,开发者可以轻松接入全球市场数据。本文将介绍如何使用专业的股票实时报价 API 、金融 api 和金融行情数据 API 来对接德国股票行情,特别是法兰克福交易所( FWB/Xetra ),从而实现高效的量化分析。这些工具不仅提供毫秒级延迟的实时数据,还支持历史回测,帮助投资者做出数据驱动的决策。
API 接入方案对比
法兰克福交易所( FWB/Xetra )是欧洲最大的股票交易所之一,涵盖了众多德国蓝筹股,如阿迪达斯( ADS )、德意志银行( DBK )等。它以高效的电子交易系统闻名,交易量巨大,适合量化策略的开发。通过 API 接入,我们可以获取实时报价、历史 K 线和盘口深度数据,这些数据是构建均线策略、波动率分析等量化模型的基础。
在量化交易领域,选择一个合适的股票数据 API 对策略的成败至关重要。对于德国股票市场,尤其是法兰克福交易所,开发者通常面临三个核心挑战:数据时效性、完整性和合规性要求
市场上主要有几种 API 解决方案:
iTick 作为聚焦欧洲市场的金融数据服务商,其 API 实现了法兰克福交易所全品种覆盖(含 XETRA 交易品种),支持毫秒级股票实时行情推送与 20 年历史分笔数据获取,完全适配 MiFID II 监管要求,还提供 Python SDK 与完整的量化工具集成方案,注册既可享受免费开发套餐,适合中高频策略与深度量化分析
Alpha Vantage 支持包括德国 DAX 指数成分股在内的全球 30 多个国家股票数据,免费版每日支持 500 次调用。但其主要限制在于德国股票实时 API 延迟长达 15 分钟(非付费用户),且历史数据仅提供 10 年日线级别,无 Level 2 深度行情。
IEX Cloud 提供法兰克福交易所实时股票报价 API ,延迟约为 1 秒,并整合了财务报表与 ESG 数据。但它对德国股票的覆盖仅限于 DAX30 成分股,历史数据最长只有 5 年
提示:无论选择哪种 API ,都需先完成平台注册与认证,获取专属 API 密钥( Key ),这是接口调用的身份凭证,需妥善保管避免泄露。
准备工作:获取 API Token
本文参考 iTick API ,这是一个支持全球多个市场的金融数据接口,包括德国( region=DE )。它提供 RESTful API 和 WebSocket 两种方式,数据覆盖实时报价、历史 K 线和盘口深度。注意:使用前需注册账号并获取 token ,本文代码中的”your_token”需替换为实际值。
首先,访问 iTick 官网注册账号,获取 API Token 。该 API 支持的 region 包括 DE (德国),code 为股票符号(如 ADS 为阿迪达斯)。测试时,确保你的订阅计划支持德国市场数据。
步骤 1:获取实时报价( Quote )
实时报价 API 提供最新价、开盘价、最高价、最低价等核心指标。接口路径:GET /stock/quote?region={region}&code={code}
Python 代码示例:
import requests url = "https://api.itick.org/stock/quote?region=DE&code=ADS" headers = { "accept": "application/json", "token": "your_token" } response = requests.get(url, headers=headers) data = response.json() if data["code"] == 0: quote = data["data"] print(f"股票代码: {quote['s']}") print(f"最新价: {quote['ld']}") print(f"开盘价: {quote['o']}") print(f"最高价: {quote['h']}") print(f"最低价: {quote['l']}") print(f"涨跌幅: {quote['chp']}%") else: print("请求失败:", data["msg"])这个接口返回的 JSON 数据结构清晰,便于解析。在量化分析中,你可以用最新价计算实时收益率。
步骤 2:获取历史 K 线数据( Kline )
历史 K 线是量化回测的核心,支持分钟级到月级周期。接口路径:GET /stock/kline?region={region}&code={code}&kType={kType}&limit={limit}
例如,获取阿迪达斯最近 100 根 日 K 线:
import requests import pandas as pd from datetime import datetime def fetch_historical_data(symbol, region="DE", kType=8, limit=100): """ 获取历史 K 线数据 参数: symbol: 股票代码,如"ADS" region: 市场代码,德国为"DE" kType: K 线类型,1-分钟线,2-5 分钟线,8-日线,9-周线,10-月线 limit: 获取的数据条数 """ url = f"https://api.itick.org/stock/kline?region={region}&code={symbol}&kType={kType}&limit={limit}" headers = { "accept": "application/json", "token": "your_token" # 替换为实际 Token } try: response = requests.get(url, headers=headers) response.raise_for_status() # 检查请求是否成功 data = response.json() if data.get("code") == 0 and "data" in data: # 将数据转换为 Pandas DataFrame df = pd.DataFrame(data["data"]) # 转换时间戳为可读格式 df['datetime'] = pd.to_datetime(df['t'], unit='ms') # 设置列为标准金融数据格式 df.rename(columns={ 'o': 'Open', 'h': 'High', 'l': 'Low', 'c': 'Close', 'v': 'Volume', 'tu': 'Turnover' }, inplace=True) # 选择并排序列 df = df[['datetime', 'Open', 'High', 'Low', 'Close', 'Volume', 'Turnover']] df.set_index('datetime', inplace=True) return df else: print(f"获取数据失败: {data.get('msg')}") return None except requests.exceptions.RequestException as e: print(f"请求错误: {e}") return None def analyze_german_stocks(): """分析多只德国股票的历史表现""" symbols = ["ADS", "SAP", "VOW3", "ALV", "MRK"] all_data = {} for symbol in symbols: print(f"正在获取{symbol}的历史数据...") df = fetch_historical_data(symbol, kType=8, limit=200) # 获取 200 条日线数据 if df is not None and len(df) > 0: all_data[symbol] = df # 计算基本统计指标 latest_close = df['Close'].iloc[-1] previous_close = df['Close'].iloc[-2] if len(df) > 1 else latest_close daily_change = ((latest_close - previous_close) / previous_close * 100) if len(df) > 1 else 0 # 计算 20 日移动平均 ma_20 = df['Close'].rolling(window=20).mean().iloc[-1] print(f"{symbol}:") print(f" 最新收盘价: {latest_close:.2f}欧元") print(f" 日涨跌幅: {daily_change:+.2f}%") print(f" 20 日移动平均: {ma_20:.2f}欧元") print(f" 数据时间范围: {df.index[0].date()} 至 {df.index[-1].date()}") print() return all_data if __name__ == "__main__": # 获取并分析德国股票数据 stock_data = analyze_german_stocks() # 如果获取到了数据,可以进行进一步分析 if stock_data: print("数据获取完成,可以进行量化策略回测和分析了!")这有助于识别趋势反转点。
步骤 3:获取实时盘口深度( Depth )
盘口深度提供买卖五档或十档数据,反映市场挂单情况。接口路径:GET /stock/depth?region={region}&code={code}
import requests url = "https://api.itick.org/stock/depth?region=DE&code=ADS" headers = { "accept": "application/json", "token": "your_token" } response = requests.get(url, headers=headers) data = response.json() if data["code"] == 0: depth = data["data"] print(f"股票代码: {depth['s']}") print("卖盘:") for ask in depth['a'][:5]: # 显示前 5 档卖盘 print(f"档位{ask['po']}: 价格 {ask['p']}, 挂单量 {ask['v']}, 订单数 {ask['o']}") print("买盘:") for bid in depth['b'][:5]: # 显示前 5 档买盘 print(f"档位{bid['po']}: 价格 {bid['p']}, 挂单量 {bid['v']}, 订单数 {bid['o']}") else: print("请求失败:", data["msg"])在量化中,盘口数据可用于计算买卖压力比,帮助判断市场情绪。
步骤 4:使用 WebSocket 实现实时推送
对于高频量化,RESTful API 可能有延迟,推荐 WebSocket 。连接后订阅数据,支持 tick 、quote 和 depth 类型。
Python 示例(使用 websocket 库):
import websocket import json import threading import time # WebSocket 连接地址和 Token WS_URL = "wss://api.itick.org/stock" API_TOKEN = "your_token" # 替换为实际 Token def on_message(ws, message): """处理接收到的消息""" data = json.loads(message) # 处理连接成功的消息 if data.get("code") == 1 and data.get("msg") == "Connected Successfully": print("连接成功,等待认证...") # 处理认证结果 elif data.get("resAc") == "auth": if data.get("code") == 1: print("认证成功") subscribe(ws) # 认证成功后订阅数据 else: print("认证失败") ws.close() # 处理订阅结果 elif data.get("resAc") == "subscribe": if data.get("code") == 1: print("订阅成功") else: print("订阅失败:", data.get("msg")) # 处理市场数据 elif data.get("data"): market_data = data["data"] data_type = market_data.get("type") symbol = market_data.get("s") if data_type == "tick": print(f"成交数据 {symbol}: 最新价={market_data['ld']}, 成交量={market_data['v']}, 时间={market_data['t']}") elif data_type == "quote": print(f"报价数据 {symbol}: 开={market_data['o']}, 高={market_data['h']}, 低={market_data['l']}, 收={market_data['ld']}") elif data_type == "depth": print(f"盘口数据 {symbol}: 买一价={market_data['b'][0]['p'] if market_data['b'] else 'N/A'}, " f"卖一价={market_data['a'][0]['p'] if market_data['a'] else 'N/A'}") def on_error(ws, error): """处理错误""" print("错误:", error) def on_close(ws, close_status_code, close_msg): """连接关闭回调""" print("连接关闭") def on_open(ws): """连接建立后的回调""" print("WebSocket 连接已打开") def subscribe(ws): """订阅行情数据""" subscribe_msg = { "ac": "subscribe", # 订阅德国 Adidas 、SAP 和大众汽车的实时数据 "params": "ADS$DE,SAP$DE,VOW3$DE", "types": "tick,quote,depth" # 订阅成交、报价和盘口数据 } ws.send(json.dumps(subscribe_msg)) print("订阅消息已发送") def send_ping(ws): """定期发送心跳包保持连接""" while True: time.sleep(30) # 每 30 秒发送一次心跳 ping_msg = { "ac": "ping", "params": str(int(time.time() * 1000)) } ws.send(json.dumps(ping_msg)) print("心跳包已发送") if __name__ == "__main__": # 创建 WebSocket 连接,通过 header 传递 Token ws = websocket.WebSocketApp( WS_URL, header={"token": API_TOKEN}, on_open=on_open, on_message=on_message, on_error=on_error, on_close=on_close ) # 在单独的线程中启动心跳机制 ping_thread = threading.Thread(target=send_ping, args=(ws,)) ping_thread.daemon = True ping_thread.start() # 启动 WebSocket 连接 ws.run_forever()这段代码建立了与 iTick WebSocket 服务器的连接,并订阅了德国三家知名公司( Adidas 、SAP 和大众汽车)的实时数据。连接建立后,服务器会持续推送三种类型的数据:
- 成交数据 :包含最新成交价、成交量和时间戳
- 报价数据 :包含开盘价、最高价、最低价、最新价等 OHLC 数据
- 盘口数据 :包含买卖各五档的委托量和价格
通过 WebSocket 获取实时数据的优势在于低延迟和高效的数据推送机制,特别适合需要实时监控市场并快速做出交易决策的量化策略
量化分析示例:构建简单策略
获取数据只是第一步,真正的价值在于如何利用这些数据进行量化分析。下面我们结合实时数据和历史数据,构建一个简单的量化分析示例。
import pandas as pd import numpy as np import matplotlib.pyplot as plt from datetime import datetime, timedelta class GermanStockAnalyzer: """德国股票分析器""" def __init__(self, historical_data): self.data = historical_data def calculate_technical_indicators(self): """计算常见技术指标""" df = self.data.copy() # 计算移动平均线 df['MA_5'] = df['Close'].rolling(window=5).mean() df['MA_20'] = df['Close'].rolling(window=20).mean() df['MA_60'] = df['Close'].rolling(window=60).mean() # 计算相对强弱指数(RSI) delta = df['Close'].diff() gain = (delta.where(delta > 0, 0)).rolling(window=14).mean() loss = (-delta.where(delta < 0, 0)).rolling(window=14).mean() rs = gain / loss df['RSI'] = 100 - (100 / (1 + rs)) # 计算布林带 df['BB_middle'] = df['Close'].rolling(window=20).mean() bb_std = df['Close'].rolling(window=20).std() df['BB_upper'] = df['BB_middle'] + 2 * bb_std df['BB_lower'] = df['BB_middle'] - 2 * bb_std # 计算成交量加权平均价格(VWAP) - 日内指标 df['VWAP'] = (df['Turnover'] / df['Volume']).rolling(window=20).mean() return df def generate_signals(self, df): """基于技术指标生成交易信号""" signals = pd.DataFrame(index=df.index) signals['price'] = df['Close'] signals['signal'] = 0 # 双移动平均线交叉策略 signals['ma_signal'] = 0 signals.loc[df['MA_5'] > df['MA_20'], 'ma_signal'] = 1 # 金叉 signals.loc[df['MA_5'] < df['MA_20'], 'ma_signal'] = -1 # 死叉 # RSI 超买超卖信号 signals['rsi_signal'] = 0 signals.loc[df['RSI'] < 30, 'rsi_signal'] = 1 # 超卖,买入信号 signals.loc[df['RSI'] > 70, 'rsi_signal'] = -1 # 超买,卖出信号 # 布林带突破信号 signals['bb_signal'] = 0 signals.loc[df['Close'] < df['BB_lower'], 'bb_signal'] = 1 # 突破下轨,买入信号 signals.loc[df['Close'] > df['BB_upper'], 'bb_signal'] = -1 # 突破上轨,卖出信号 # 综合信号 signals['combined_signal'] = signals[['ma_signal', 'rsi_signal', 'bb_signal']].mean(axis=1) # 生成最终交易信号 signals.loc[signals['combined_signal'] > 0.3, 'signal'] = 1 # 强烈买入 signals.loc[signals['combined_signal'] < -0.3, 'signal'] = -1 # 强烈卖出 return signals def plot_analysis(self, df, signals): """可视化分析结果""" fig, axes = plt.subplots(3, 1, figsize=(15, 12)) # 价格与移动平均线 ax1 = axes[0] ax1.plot(df.index, df['Close'], label='收盘价', linewidth=1) ax1.plot(df.index, df['MA_5'], label='5 日 MA', linewidth=1, alpha=0.7) ax1.plot(df.index, df['MA_20'], label='20 日 MA', linewidth=1, alpha=0.7) ax1.plot(df.index, df['MA_60'], label='60 日 MA', linewidth=1, alpha=0.7) # 标记交易信号 buy_signals = signals[signals['signal'] == 1] sell_signals = signals[signals['signal'] == -1] ax1.scatter(buy_signals.index, df.loc[buy_signals.index, 'Close'], color='green', marker='^', s=100, label='买入信号') ax1.scatter(sell_signals.index, df.loc[sell_signals.index, 'Close'], color='red', marker='v', s=100, label='卖出信号') ax1.set_title('德国股票价格与移动平均线') ax1.set_ylabel('价格(欧元)') ax1.legend() ax1.grid(True, alpha=0.3) # RSI 指标 ax2 = axes[1] ax2.plot(df.index, df['RSI'], label='RSI', linewidth=1, color='purple') ax2.axhline(y=70, color='red', linestyle='--', alpha=0.5, label='超买线') ax2.axhline(y=30, color='green', linestyle='--', alpha=0.5, label='超卖线') ax2.fill_between(df.index, 30, 70, alpha=0.1, color='gray') ax2.set_title('相对强弱指数(RSI)') ax2.set_ylabel('RSI 值') ax2.legend() ax2.grid(True, alpha=0.3) # 布林带 ax3 = axes[2] ax3.plot(df.index, df['Close'], label='收盘价', linewidth=1) ax3.plot(df.index, df['BB_middle'], label='中轨', linewidth=1, alpha=0.7) ax3.plot(df.index, df['BB_upper'], label='上轨', linewidth=1, alpha=0.7, linestyle='--') ax3.plot(df.index, df['BB_lower'], label='下轨', linewidth=1, alpha=0.7, linestyle='--') ax3.fill_between(df.index, df['BB_lower'], df['BB_upper'], alpha=0.1) ax3.set_title('布林带') ax3.set_ylabel('价格(欧元)') ax3.set_xlabel('日期') ax3.legend() ax3.grid(True, alpha=0.3) plt.tight_layout() plt.show() def backtest_strategy(self, signals, initial_capital=10000): """简单策略回测""" capital = initial_capital position = 0 trades = [] for i in range(1, len(signals)): current_price = signals['price'].iloc[i] signal = signals['signal'].iloc[i] if signal == 1 and position == 0: # 买入信号,且当前无持仓 position = capital / current_price capital = 0 trades.append({ 'date': signals.index[i], 'action': 'BUY', 'price': current_price, 'position': position }) elif signal == -1 and position > 0: # 卖出信号,且当前有持仓 capital = position * current_price position = 0 trades.append({ 'date': signals.index[i], 'action': 'SELL', 'price': current_price, 'capital': capital }) # 计算最终收益 if position > 0: final_capital = position * signals['price'].iloc[-1] else: final_capital = capital total_return = (final_capital - initial_capital) / initial_capital * 100 return { 'initial_capital': initial_capital, 'final_capital': final_capital, 'total_return': total_return, 'trades': trades } # 使用示例 if __name__ == "__main__": # 假设我们已经获取了历史数据 # 这里使用模拟数据演示 dates = pd.date_range(start='2024-01-01', end='2024-12-01', freq='D') np.random.seed(42) prices = 100 + np.cumsum(np.random.randn(len(dates)) * 0.5) volumes = np.random.randint(100000, 1000000, len(dates)) historical_data = pd.DataFrame({ 'Close': prices, 'Volume': volumes, 'Turnover': prices * volumes }, index=dates) # 创建分析器实例 analyzer = GermanStockAnalyzer(historical_data) # 计算技术指标 df_with_indicators = analyzer.calculate_technical_indicators() # 生成交易信号 signals = analyzer.generate_signals(df_with_indicators) # 可视化分析 analyzer.plot_analysis(df_with_indicators, signals) # 回测策略 backtest_result = analyzer.backtest_strategy(signals) print("策略回测结果:") print(f"初始资金: {backtest_result['initial_capital']:.2f}欧元") print(f"最终资金: {backtest_result['final_capital']:.2f}欧元") print(f"总收益率: {backtest_result['total_return']:.2f}%") print(f"交易次数: {len(backtest_result['trades'])}")这个量化分析示例展示了如何将从 iTick API 获取的数据应用于实际的量化策略中。通过计算技术指标、生成交易信号和进行策略回测,我们可以系统性地评估交易策略的有效性。
API 对接与量化分析注意事项
- 限频与订阅 :API 有调用限额,生产环境需监控。
- 数据准确性 :获取数据后需进行完整性与准确性校验,如检测缺失值、异常价格(如 0 或远超正常范围的价格),可通过 pandas 的 dropna()、replace()等方法处理脏数据
- 实时性优化 :高频量化策略建议选择法兰克福本地部署的 API 服务商(如 iTick ),降低网络延迟;同时合理设置数据缓存,减少重复请求
- 扩展 :iTick 支持更多市场,可扩展到多资产策略。
总结
通过 Python 对接法兰克福交易所 API 股票实时行情与历史数据,我们搭建了量化分析的核心数据管道。这不仅是技术的实现,更是以数据驱动决策的开始——稳定可靠的数据流让策略回测更精准、信号生成更及时,为在严谨的欧洲市场中探索 alpha 机会奠定了坚实基础。现在,您已拥有连接全球重要金融市场的能力,是时候将这些数据转化为您的策略优势了。
原文地址: https://itick.org/blog/stock-api/free-german-stock-api-comparison
作者: StockFx | 发布时间: 2026-01-09 01:21
37. 搞了一台日版 Docomo 合约机 sony,有办法升级 Android 吗?
搞了一台日版 Docomo 合约机 sony Xperia 1 v ,有办法升级 Android 吗?
目前在手机更新,提示最新的 Android14 ,但据说这个已经 Android15 了?
作者: kobeguang | 发布时间: 2026-01-09 04:03
38. 开源 NVR 项目 Owl, Go 开发,支持 GB28181/ONVIF/RTSP,集成 YOLO 检测
新版本发布
去年底开始做的一个视频监控平台,现在支持 yolo ai 检测,分享给大家看看。
GitHub : https://github.com/gowvp/owl
在线演示 : http://gowvp.golang.space:15123 (admin/admin)
为什么要做这个
市面上的 NVR 方案:
- 商业软件太贵
- 开源方案大多是 Java/C++,部署麻烦
- GB28181 支持普遍不好
所以自己用 Go 写了一个。
功能
- GB28181 协议( 2022/2016/2011 全版本)
- ONVIF 设备发现和控制
- RTSP/RTMP 流接入
- YOLO AI 物体检测
- Web 管理界面
技术栈
- 后端:Go ,无 CGO
- 流媒体:ZLMediaKit
- 前端:React + TypeScript
Docker 部署
services: gowvp: image: gospace/gowvp:latest restart: always ports: - 15123:15123 - 15060:15060 - 15060:15060/udp - 1935:1935 - 554:554 - 8080:80 volumes: - ./data:/opt/media/bin/configs下一步
- HomeKit 集成(目标是能在苹果 Home 里看摄像头)
- 录像和回放
欢迎反馈,Issue 和 PR 都可以。如果你在用监控摄像头,说说你最需要什么功能?
作者: breezeStrak | 发布时间: 2026-01-09 03:10
39. 请问笔记大佬 Notion 和 Obsidian 对比
RT ,首先前提不用任何国产笔记软件,我做宏观的笔记怕被删掉。
我一路从印象 有道 、typora + github 转到 notion 的。
对于 notion ,我看中就是 markdown (但他 markdown 有点不同,比如###最多支持三个)、多端同步、可以搜索、有 save to notion 。 缺点是学习成本太高,数据库我这种我到现在都没玩儿明白。之前我还有个建个人主页的需求,据说 notion 也可以 (之前我用的是 hexo + github page )
对于 Obsidian 我目前的了解是 AI 功能比较好用?相对 notion AI 只能付费,Obsidian 可以直接用 gpt gemini api 么? 另外同步方式可以放在 iCloud ?
如果有 notion 转 Obsidian 的大佬 或者两个都用过的大佬,不吝赐教。
作者: tracyliu | 发布时间: 2026-01-08 10:03
40. [开源] claude code 含 LSP 开箱即用-新增了 gemini
AI 编码助手配置中心
https://github.com/doccker/cc-use-exp
↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
本项目是 配置模板仓库,用于开发和维护 AI 编码助手的用户级配置。 按费力度从低到高排序,让你用最少的操作获得最大的帮助。
作者: sprinng | 发布时间: 2026-01-09 09:24
41. VeloxClip 一款更聪明的 macOS 剪贴板管理器
[开源发布] VeloxClip —— 一款更聪明的 macOS 剪贴板管理器
我做了一款面向开发者与效率爱好者的剪贴板工具 VeloxClip ,主打 AI 增强与专业截图编辑,帮助你把“复制过的所有东西”都管理好、搜得到、用得快。
为什么值得试试:
- 语义搜索与自动打标签:不止关键字,按“意思”找内容;自动识别 json 、表格、URL 、代码、Markdown 、长文本等类型并打标签,收藏项支持自定义彩色标签。
- AI 能力即插即用:OCR 图片文字识别、长文总结、翻译(中/英/日/韩/西/法/德)、代码解释、文本润色;默认接入 OpenRouter (含可用的免费 DeepSeek Chat )。
- 专业截图与编辑:支持区域截图(默认 F1 )与悬浮贴图( F3 ),内置标注工具(箭头/矩形/高亮/文字/马赛克/橡皮擦),编辑后可一键复制或保存。
- 面向开发者的预览:JSON 高亮与校验、表格智能分隔符识别、URL 校验与快速操作、代码多语言高亮、颜色 HEX/RGB/HSL 转换、图片元数据查看等。
- 隐私与性能:不做云同步,数据只在你的 Mac ;语义向量与搜索结果本地缓存;收藏项不受历史数量限制且永久保留。
核心体验:
- Cmd+Shift+V 快速打开历史,并一键回粘到之前的应用。
- 收藏与标签即组织,输入即检索,结果即使用。
- 让复制变成“知识库”,而不是一次性的过路信息。
技术栈与要求:
- Swift 6 + SwiftUI
- macOS 14.0+
- AI 需在偏好设置中粘贴 OpenRouter API Key (可选,启用 AI 功能)
开源仓库与下载:
欢迎关注与试用,期待你在实际工作流中的使用感受与改进建议。 如果好用请给我一个🌟
作者: ILikeBug | 发布时间: 2026-01-09 09:16
42. Vibe Coding 最好用的时候是遇到自己不会处理的 BUG 或功能时
for 任务 in 编程过程:
if 我自己.会处理(任务) == False:
assert vibe_coding.处理(任务) > chatbot.处理(任务) > 我自己.处理(任务)
elif 任务.类型 == 劳动密集型:
assert vibe_coding.处理(任务) > 我自己.处理(任务) > chatbot.处理(任务)
else:
assert 我自己.处理(任务) > vibe_coding.处理(任务) > chatbot.处理(任务)
作者: RickoNoNo3 | 发布时间: 2026-01-09 08:54
43. 求助 vscode explore 处 右键快捷键是什么,如何自定义。
最近迁移到 antigravity ,习惯 idea 的 command+n ,换出一个 menu 去选择了。
搜了一圈只有 shift+f10 ,这个还是系统级的,在 key binding 里换成 command+n ,唤起的是别的 menu 菜单。有大佬知道吗?
当然几个 ai 都不知道。结果都不正确。
作者: frank1256 | 发布时间: 2026-01-09 06:13
44. claude code vscode 插件在提示用户允许权限的时候无法触发 hooks,但是代码输出结束后可以触发 hooks
本来是想写一个提示音的 hooks ,但是一直没有成功,请问有成功的佬吗?
作者: yuan321 | 发布时间: 2026-01-09 05:47
45. 智谱 GLM Coding 套餐有点离谱了, 2 条简单 prompt 即干满 5 小时限额
上午兴冲冲买了一个季度 GLM Coding Lite 套餐,想着用 Claude Code 跟 Sonnet 4.5 ( Pro 套餐)对比一下。
万万没想到,GLM 这边才 2 条 prompt ,总耗时 80 秒,就几乎干满了 5 小时的限额( 97%),消耗 38M Tokens ,实在离谱。
而 Claude 这边,同样的两条 prompt 却只消耗 4%的 5 小时限额,具体多少 Token 就没处查了。
作者: longxk | 发布时间: 2026-01-08 06:15
46. 修复 Windows 软件开机启动有延迟
Windows 某次更新后发现很多开机自动的软件要等几分钟才会启动,电脑是高配电脑,不存在性能方面的原因。特别是设置了系统代理,结果 Clash 还没启动,无法联网很是困扰。
修复:
注册表里修改:计算机\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Serialize
新建或修改”WaitForIdleState”数值为 0 ,”StartupDelayInMSec”数值为 0
作者: htd | 发布时间: 2026-01-08 09:23
47. stackoverflow driven 的写代码方式一去不复反了
之前遇到不会的代码,从网上搜个方案,或者找个高票的复制粘贴改一下,凑活着就搞定了。
出了 bug ,开启调试,设置断点一步步跟踪,到处打印 log 日志像是为满是窟窿的代码打上补丁。
Vibe coding 时代,这种心酸的编码史一去不复反了。
作者: ethusdt | 发布时间: 2026-01-08 08:20
48. 为用 AIStudio,修改谷歌账号关联地区被拒了,还有办法吗?
为了 Google 账号能用 AIStudio ,提交 https://policies.google.com/country-association-form 申请修改账号关联地区,被谷歌驳回了。还有什么其他办法吗?
******,您好!
您近期向我们发送了一项请求,希望将您 Google 账号关联的国家/地区和州改为:美国 - 加利福尼亚州。
我们已审核您分享的信息,但由于证据不足以批准您的请求,因此未做出任何更改。
您账号关联的国家/地区:香港
若对此决定有异议,您可再提交一项请求供我们审核。请务必选择“其他原因”,并提供尽可能详细的信息。
请参阅您使用 Google 服务时须遵守的 Google 隐私权政策和服务条款。
此致 Google 支持团队
作者: jacketma | 发布时间: 2026-01-05 14:16
49. windows10 的搜索功能有这么明显的 Bug 的吗
很简单的一个 123abc.txt 文件,搜索 abc 居然会搜索不出来,这功能真是离大谱了
![]()
![]()
作者: stx0821 | 发布时间: 2026-01-08 06:33
50. 深度科技原 cto 关于西装门的每日锐评
https://imgur.com/a/t4y1wng
https://imgur.com/a/gPcetxd
https://imgur.com/a/Ly0gQPQ
作者: sshnuke | 发布时间: 2026-01-09 09:05







