官方活动OPC
9月2日星期三 · 20 条
我建了链接聚合平台,然后问:用户为何回来?
开发者于2026年7月11日创建了链接聚合平台Rizzzler,目前仅有11名用户。他观察到用户创建个人资料后便不再回访,意识到平台缺乏留存动力。因此,他决定将Rizzzler转型为身份提供商,构建了OAuth 2.0系统,并开发了开发者文档。该系统尚未经过第三方应用测试,他邀请开发者试用并反馈问题。
用单个Rust二进制在Apple Silicon上运行私有OpenAI兼容LLM端点
作者维护的Ferrum是一个MIT许可的Rust本地LLM推理服务器,可在M系列Mac上提供私有OpenAI兼容端点,无需Python或容器。文章以M1 Max上的Ferrum v0.8.3 Homebrew构建为例,演示了安装、诊断、运行和提供API服务的完整流程。ferrum doctor可检查本地环境,曾捕获缺失的Xcode命令行工具。首次运行需下载约2.55 GiB模型。默认启用Qwen3.5的推理模式,可用--disable-thinking关闭。通过curl请求本地8000端口的/v1/chat/completions接口验证服务。作者寻求Apple Silicon用户的失败导向反馈,并声明未做性能比较。
用无头Chrome和CSS自动生成博客封面
作者介绍了一种无需设计工具即可自动生成博客封面的方法。他使用无头Chrome命令行截图功能,通过指定窗口大小和页面尺寸,将HTML卡片渲染为1000x420的PNG图片。整个过程只需一条Chrome命令,配合CSS样式设计卡片外观,包括渐变、网格、强调色等。作者提供了一个Python脚本,用于填充模板中的占位符(如标题、强调色),生成每篇文章的定制封面。该方法避免了重复的手工设计工作,适合定期发布内容的创作者。作者强调无需Puppeteer或Playwright,仅用Chrome自带功能即可实现。
构建自动化音频QA门控:ffmpeg与numpy/scipy实战
作者分享了为长音频文件构建自动化QA门控的流程,旨在捕捉人耳难以察觉的缺陷,如削波、循环接缝不良、淡出前音量回升等。流程包括:用ffmpeg解码为float32单声道;真峰值检查(硬性门槛-1.0 dBTP);冷开场检查(前2秒需高于-35 dBFS);循环接缝检查(比较首尾振幅);尾部再膨胀检查(检测淡出前非单调振幅增加);章节边界基于RMS包络、谱通量和新颖性检测,而非整数时间点。作者强调这些技术并不复杂,但集成到上传前门控中,可在缺陷公开前捕获。文章由AI辅助起草,但设计决策和规格为作者原创。
突破浏览器滚动极限:BGrid如何从55万行到100万行
BGrid(BeautifulGrid)是一个开源的虚拟滚动网格组件。其首个公开演示支持55万行数据,但开发者团队尝试进一步扩展至60万、70万乃至100万行时,发现布局开始异常。问题并非源于React崩溃或内存不足,而是浏览器物理滚动区域的高度限制:每行约29像素,55万行对应约1595万像素的滚动高度,接近浏览器实际可支持的上限。团队意识到虚拟化行数并非瓶颈,转而探索不依赖巨大滚动容器的新方案,最终成功将数据量提升至100万行。
我意外重造了CSS progress()并发布了它
作者在查看朋友Stavros Lazaris发布的CSS框架Zeus时,受到其流体引擎启发,该引擎使用clamp()和cqi单位实现间距和字体随容器缩放。作者发现该公式在非长度属性(如transition-duration、font-weight、opacity等)上失效,因为cqi是长度单位,不能与时间等混合,导致声明被浏览器丢弃。为解决此问题,作者通过重新排序(先除后乘)修复,并意外重造了CSS的progress()函数,最终将其发布为npm包。文章还提供了实用的CSS技巧,并分享了这一过程中的尴尬经历。
Sin of Angels:浏览器端数字桌游,玩法类似《混乱之子》
CRIME Digital 推出浏览器端 outlaw 摩托车俱乐部策略桌游 Sin of Angels,面向寻找已绝版《混乱之子:混乱之人》桌游替代品的玩家。游戏包含敌对俱乐部、区域控制、军火交易、背叛与战斗等元素,支持 2-6 人,无需安装,可在桌面、平板或手机上玩。其“派对模式”将 3D 棋盘渲染到电视上,每位玩家通过手机私下操作。开发中最难的部分是状态权威:服务器作为唯一事实来源,为电视提供公共投影(棋盘拓扑、控制权、回合顺序、已解决结果),为每位玩家提供私人投影(手牌、储备、密封出价)。电视客户端没有接收私人字段的代码路径,因此渲染错误不会泄露隐私。
Send This:5英镑搞定拖延的英国信件
Send This 是一个新上线的服务,提供13种英国信件模板,涵盖停车罚单申诉、房东押金退还、退款请求、催款、议会税争议、灵活工作申请、GDPR数据访问请求、邻居噪音投诉、保险理赔争议、银行投诉、能源账单争议、辞职信和普通发票等常见拖延场景。模板按英国标准写法设计,强调事实和期限,语气坚定而平淡。用户可自行填写(5英镑)或由作者代写(15英镑),支付通过Base链上的USDC完成。作者指出,该服务旨在解决“发送问题”而非提供法律建议,填补了请律师(150英镑以上)和放弃维权之间的空白。
Weedout:隐藏YouTube AI标签视频的Safari扩展
开发者masteranza在Hacker News上发布了Weedout,这是一款适用于macOS的Safari扩展,售价1.99美元。该扩展能移除YouTube中标记为“Made with AI”的视频,覆盖订阅源、搜索结果、相关视频、播放列表和Shorts。它利用YouTube的标签而非AI检测,完全在本地运行,不会捕捉未标记的视频。开发者表示,构建此扩展是因为AI生成的阴谋论视频在其YouTube订阅源中泛滥。源代码已在GitHub上公开,供开发者分叉或构建,但不接受拉取请求。该帖子在Hacker News上获得20分。
PanoPose:将全景照片转化为天文观测工具
PanoPose 是一款免费开源的 Linux 桌面应用,旨在解决天文观测中真实地平线遮挡问题。传统天文软件给出的月出时间基于数学地平线,但实际观测常受树木、屋顶、山丘等遮挡,导致理论可见而实际不可见。该应用通过拍摄 360° 全景照片,校准真实海拔和方位角坐标,生成可用于天文规划的 Stellarium 景观。作者使用华为 CV60 相机配合单脚架,一次拍摄即可获得 5376×2688 像素的 2:1 等距柱状投影全景,覆盖完整 360×180° 球面,无需拼接。应用的核心挑战在于让全景图识别其朝向,从而将真实景观融入天文软件。
OwnTime:为日常优先级打造的棋钟应用
OwnTime是一款帮助用户平衡生活中相互竞争的优先事项的应用,灵感来自《5个选择》中的“角色”概念,以及作者在时间阻塞实施中遇到的灵活性挑战。该应用允许用户定义时间预算,本质上是多个互斥的倒计时器,操作体验类似棋钟。其核心功能是在时间到时强制切换当前角色或优先级。应用支持AlarmKit闹钟(需iOS 26.1及以上)和watchOS。当前版本专注于单日时间分配,所有计时器在午夜重置。应用不提供统计功能,但用户可导出原始SQLite数据自行分析。所有数据本地存储,无需账户或订阅,一次性收费1.99美元。
HN Match Maker:自动匹配求职与招聘帖
HN Match Maker 是一个新工具,旨在自动匹配 Hacker News 上每月发布的“Who Wants to Be Hired?”和“Who's Hiring?”两个帖子。其方法是通过 LLM 提取帖子数据,根据薪资、领域经验、远程/现场等因素进行评分匹配,并排除不兼容的帖子(如求职者要求远程但招聘方仅限现场)。该工具提供两种视图:按用户查看匹配职位和按职位查看匹配用户。用户可通过 https://hnmatchmaker.com/user/:user_name 查看自己的匹配结果。目前该工具在 Hacker News 上获得 27 分,作者希望它能为求职者提供帮助。
为什么值得看用 LLM 自动匹配 HN 招聘与求职帖,直接解决信息过载痛点。对独立开发者或小团队找远程工作尤其实用,可借鉴其数据提取与匹配逻辑。
浏览器端用pdf-lib拆分PDF页面,无需上传服务器
作者分享了一个基于pdf-lib库的浏览器端PDF拆分工具,完全在本地运行,无需上传文件到服务器,无水印、无注册、免费,且支持离线使用。文章详细介绍了实现过程:通过PDFDocument.load()读取文件,支持按页码范围(如1-5或3-)和指定页码(如1,3,5)两种方式拆分,使用copyPages()复制页面到新文档,最后通过Blob和URL.createObjectURL()生成下载链接。该工具适用于注重隐私的用户,文件大小受浏览器内存限制。
发布99KB无构建步骤的单词查找器
作者分享了一个单词查找器,以单个99KB的HTML文件形式发布,无需构建步骤。该工具包含单词列表、样式和逻辑,双击即可运行,无网络请求。作者最初尝试使用模块导入,但浏览器阻止file://协议下的模块导入,因此改为内联单词列表,以字符串形式存储14,855个单词,节省空间。过滤器逻辑简单,但存在一个常见错误:当用户将绿色字母同时列为灰色时,结果为空且无提示,导致看似正常但实际无结果。作者强调了这种静默失败的问题。
Indextkn:一个API获取900个AI模型实时价格
Indextkn是一个提供AI模型实时价格查询的API,覆盖900个模型。其创建者因在开发LLM POC时频繁遇到成本问题而开发此工具。目前,Indextkn每隔几分钟抓取一次价格,通过API、MCP或SKILL提供数据,并支持按模型和提供商设置Webhook,以便价格变动时通知用户。开发者在价格验证逻辑上投入了大量精力,并设置了不同置信度级别,对异常价格进行双重检查。当前功能尚未完善,目标是覆盖所有提供商的价格和模态,但已可测试使用。
Expo + RevenueCat 启动套件:预览模式无法收费的设计
作者分享了为 Expo 应用构建 RevenueCat 订阅启动套件的经验。核心设计是显式预览模式:在未配置公开 SDK 密钥和原生商店产品前,应用可渲染完整付费墙并导航,但购买和恢复操作不可用,预览数据与真实 RevenueCat 数据分离。配置完成后,服务层初始化 RevenueCat,处理购买、取消、恢复、权益状态等。付费墙不关心初始化细节,仅接收包和状态。作者运行了严格 TypeScript 检查、Expo Doctor 21/21 通过,并包含设置指南和真机测试清单。该套件作为付费产品发布,前 10 名买家可享 25% 折扣,持续 72 小时。
Shutbox邮件平台月度更新报告
作者在个人隐私优先邮件平台Shutbox上进行了多项更新。过去两周,重新设计了用户界面,以Skiff Mail为灵感,采用扭曲的Skiff风格,使界面更简洁现代。安全方面,实现了入站邮件的DMARC和DKIM验证,但会延迟邮件显示几秒。Passkey认证已实现,但出于OPAQUE协议设计,不能用于解密邮件,仍需密码。头像改用DiceBear的像素艺术,提供约1.13×10^16种组合。客户端搜索功能得到修复,通过加密摘要存储在浏览器IndexedDB中,邮件打开时才解密加载,并支持简单过滤器。作者询问用户对邮件功能的其他建议。
PacketForge:为AI代理提供共享记忆,解决遗忘问题
PacketForge是一个开源工具,旨在解决AI编码代理在任务图中快速执行时遗忘决策原因的问题。它为每个任务附加两类笔记:决策(为何如此构建)和债务(遗留问题),并通过Gemini的embedding-001进行嵌入,支持语义搜索。该版本新增多项目支持、看板仪表板、MCP适配器、Cursor适配器、健康检查、导出功能、时间线、审计日志和速率限制(默认20次/分钟)。项目以MIT许可证发布,提供实时演示和Docker部署。
Quine Clique:51种语言互相打印的多元quine
Quine Clique 是一个包含51种语言的多元quine项目,由Ruby程序qc.rb实现。qc.rb本身是一个quine,运行时会打印自身。通过传入参数(如py、js),它可以生成对应语言的quine程序,而这些生成的程序同样能打印自身并互相生成。例如,qc.rb可生成Python的qc.py,qc.py又能生成Ruby的qc.rb。项目支持Ruby、Python、JavaScript、Rust、C等51种语言,所有quine程序构成一个“quine团”。作者提供了9分钟的视频解释和GitHub仓库。
Whelmer:开源AI代理浏览器调试工具,全量可见
开发者开源了Whelmer,一款为AI代理提供浏览器全量可见性的工具。它通过浏览器调试端口捕获所有事件,包括DOM变化、网络请求、控制台消息、存储变更等,不进行过滤。Whelmer支持Chrome、Brave、Edge、Opera和Firefox,统一了CDP、BiDi等四种协议。它采用EventBus和10,000事件环形缓冲区,可流式输出NDJSON、按域过滤、回放历史,并支持运行时启停53个CDP域。作者构建此工具用于逆向工程Web应用内部API,以应对OpenAI、Google等更新导致的集成问题。项目已开源,并用于构建Mirage项目。
