返回首页
最新
嗨,HN,我正在构建 Whisper([https://usewhisper.dev](https://usewhisper.dev)),这是一款 AI 代码审查工具,能够进行代码质量和安全分析。它追踪执行流程,捕捉 SQL 注入、身份验证绕过和竞争条件等标准 PR 审查者常常遗漏的问题。
<p>问题</p>
AI 代码审查工具能够发现样式问题,而安全扫描器仅检查依赖项。但您代码中的逻辑安全缺陷却常常被忽视。比如,用户输入在到达数据库之前经过三个函数而导致的 SQL 注入;支付处理中的竞争条件;隐藏在中间件中的身份验证绕过。
<p>我曾经发布过这些漏洞。您的 PR 审查者说“看起来不错”。您的安全扫描器显示通过(反正只检查依赖项)。两周后,渗透测试人员发现了在 PR 中一直可见的漏洞。
<p>为什么要与资金充足的初创公司竞争?</p>
这是个合理的问题。Greptile 融资数百万,Codacy、SonarQube 和 Snyk 都是行业巨头。我的观点是:他们解决的是错误的问题。
<p>大多数 AI 审查工具只是带有 GPT 的代码检查工具。它们查看差异并评论样式。安全扫描器要么只检查依赖项,要么产生 1000 多个误报。那些同时做两者的?是不同的产品,彼此之间没有沟通。
<p>我正在构建不同的东西:具有语义理解的执行流程追踪。Whisper 从用户输入追踪数据,通过您的逻辑找到它到达敏感操作的地方。
<p>大型企业无法轻易复制这一点。它们基于模式匹配构建,而追踪执行流程需要不同的架构。我有以下优势:
- 速度:我在几天内推出功能,而他们需要经过企业合规流程
- 专注:解决一个问题(PR 中的安全性)而不是面面俱到
- 定价:每位开发者 30 美元,而他们的企业模式是每个座位 100-300 美元
- 开发体验:2 分钟设置,而他们需要 45 分钟的企业入职培训
<p>他们优化企业合同,而我优化希望 PR 不再发布漏洞的开发者。
<p>工作原理</p>
示例:标准审查者说“看起来不错”
```javascript
const user = await getUser(req.headers.auth);
const data = await db.query(
`DELETE FROM users WHERE id = ${user.id}`
);
```
<p>Whisper 从 JWT 负载追踪 user.id,通过 getUser() 到 SQL 模板字面量。标记 SQL 注入,并建议使用参数化查询。
<p>竞争条件示例:
```javascript
async function processPayment(userId, amount) {
const balance = await getBalance(userId);
if (balance >= amount) {
await charge(userId, amount);
await updateBalance(userId, balance - amount);
}
}
```
<p>Whisper 发现并发请求可能导致检查和更新之间的双重收费。
<p>状态</p>
目前处于私有测试阶段,已有早期工程团队参与。分析了超过 240 万行代码,捕获了 1247 个漏洞,平均扫描时间为 47 秒。支持所有主要语言,并对 Next.js、React 和 tRPC 有深入的框架理解。
<p>我想要的</p>
希望获得来自以下工程师的反馈:
- 被扫描器的误报淹没
- 不断发布在 PR 中可见的漏洞
- 认为在这里竞争是疯狂的(告诉我为什么!)
<p>我主要是独立开发,没有风险投资。只是解决我一直遇到的问题。
<p>免费试用:[https://usewhisper.dev](https://usewhisper.dev)
嗨,HN
我创建了 DownloadStuffs,这是一个快速、现代的界面,用于探索互联网档案馆。
默认的互联网档案馆用户界面功能强大,但我常常发现它存在以下问题:
- 在移动设备上速度较慢
- 难以预览多个文件的项目(系列、播放列表)
- 下载大文件时不可靠(CORS、链接失效、不清楚“最佳文件”)
因此,我制作了一个更简洁、更具个性的替代方案。
它的功能包括:
- 快速搜索,支持真实的服务器端分页
- 按媒体类型过滤 + 按相关性、下载量、观看次数、最近更新排序
- 页面内视频/音频预览,并支持播放列表队列
- 可靠的下载代理(避免浏览器/CORS问题)
- 批量/播放列表 ZIP 下载,适用于系列和收藏
- 现场演示: [https://downloadstuffss.vercel.app/](https://downloadstuffss.vercel.app/)
技术栈:Bun + TypeScript + Vite + Vercel
仅使用公共互联网档案馆 API(与 IA 无关)。
我非常希望能收到反馈、边缘案例或改进大型公共档案用户体验的想法。
谢谢!
— Dawit
大家好!<p>自从我了解到Teenage Engineering的Pocket Operators以来,我就成为了它们的忠实粉丝。今天我甚至拥有一台EP-133 K.O. II,我非常喜欢。<p>几个月前,Reddit用户andiam03分享了一份包含一些鼓点模式的Google表格[1]。我觉得这是一个非常酷的分享和理解节拍的方式。<p>在周末,我编写了一个基本版本的应用程序,今天我想和大家分享。我在空闲时间对它进行了多次迭代,昨天我觉得有了一个相当不错的版本可以分享给大家。<p>这个应用并不是为了作为一个音序器,而是一个用来实验节拍和基本声音的工具,可以保存它们并在你的歌曲中使用。它还具有通过链接分享的功能。<p>这个应用是使用Tone.js [2]、Stimulus [3]构建的,并作为静态网站部署在Render [4]上。我使用了一种大型语言模型(LLM)来阅读Tone.js的文档并生成声音,因为我对声音制作没有知识,然后在此基础上进行了修改。<p>总之,希望你们喜欢!我在构建它的过程中非常开心。<p>[0]: <a href="https://teenage.engineering" rel="nofollow">https://teenage.engineering</a><p>[1]: <a href="https://docs.google.com/spreadsheets/d/1GMRWxEqcZGdBzJg52soeVaY7iUSj1YncfIJZIPScBhM/edit" rel="nofollow">https://docs.google.com/spreadsheets/d/1GMRWxEqcZGdBzJg52soe...</a><p>[2]: <a href="https://tonejs.github.io" rel="nofollow">https://tonejs.github.io</a><p>[3]: <a href="https://stimulus.hotwired.dev" rel="nofollow">https://stimulus.hotwired.dev</a><p>[4]: <a href="http://render.com" rel="nofollow">http://render.com</a>