3作者: nananana94 个月前
我日常使用的软件,没有一个是主要由 AI/LLM 编写的。我并没有刻意回避 AI 程序,但也没找到任何有用的。 我说“有用的软件”时,特别指的是我奶奶也能认出来的软件——操作系统、IDE、DAW、DBMS、文字处理软件、3D 建模软件、游戏引擎、视频编辑器、CAD 软件、电子表格应用程序、编译器、浏览器等等。我对那些花哨的 cat/ls 重写程序兴趣不大。 考虑到过去两年产生的代码行数可能比此前二十年还要多,肯定有比平时更多软件我没有注意到。 有没有一些有用的 AI 编写的程序可以让我看看?如果它们能做一些我用电脑做不到的新颖事情,那就更好了。
1作者: jblake4 个月前
所以…我远远落后了。这周才开始用 Claude…它已经完成了我的大部分编码和错误修复工作。太疯狂了。<p>介绍一下我的公司背景:成熟(14 年)的 Ruby on Rails 应用,Sidekiq,Redis,PG,AWS lambda/eventbridge,react/preact,swift 等。托管在 Heroku 上。数据库负载非常大。单人运营,老板兼操作员。<p>目前的堆栈:<p>Datadog 日志(尝试过 APM、指标等,但 Heroku 的构建包太臃肿了,我不得不删除它),所以现在它只是一个简单的 Heroku 日志流到 Datadog。我真的很怀念 statsd 主机和 APM 的东西…但它把我的 slug 大小从大约 250MB 增加到 350MB 以上,并使启动和部署速度变慢。我也想有一天离开 Heroku…但我甚至无法想象。<p>Bugsnag 用于错误。已经迁移到 Sentry,尝试使用 AI 功能。<p>有点受够了 Datadog,每月收到 600 美元的账单,而且还有企业承诺。最大的痛点:索引是按行定价,而不是按 GB 定价(这让我不敢进行简单的日志记录,所以我只能把事件放到一个请求/作业日志行中,然后对消息进行复杂的分块处理,以便 Heroku 日志流不会破坏 json)。<p>配置 Datadog 的复杂性是一个痛点,但 AI 基本上已经解决了这个问题。<p>我想要一个一体化工具…看起来这对 AI 来说是最好的,可以在一个地方拥有所有上下文。然而,Sentry 日志功能还很新,速度慢,而且功能不多。我试过 BetterStack,也相当基础。而且价格也和 Datadog 差不多。我每月大约有 600GB + 5000 万行数据。<p>所以我得出的结论是,Datadog 日志仍然比其他任何东西都好得多。但 Sentry 在错误处理方面要好得多(我还有其他项目:iOS 应用、react、原生 JS)。<p>有什么建议吗?我喜欢花时间在这上面,当必须修复问题并且所有东西都在那里时,我会感到非常高兴,但总有一天——就像使用 Heroku 的原因一样——我还有很多其他事情需要关注。<p>探索切换的主要原因是自动化根本原因分析、错误修复、性能改进等。我还是 Claude 的新手,目前我只是在 Claude Code vscode 聊天中把它用作结对编程,有时也用 CLI。
2作者: Shark1n4Suit4 个月前
PyTorch 和 ONNX Runtime 告诉你输出了什么。但它们无法告诉你为了得到这个结果,实际运行了什么——执行了哪些操作,以什么顺序,以及使用了哪些输入。<p>一个模型被打包进一个密封的 .cnox 容器中。在执行任何操作之前,都会验证 SHA-256。推理过程会按照一个固定的计划,在一个最小化的算子集上进行。每次运行都可以生成一个针对每个算子的审计日志:算子类型、输出张量的哈希值、输出样本——这些都与生成它的确切容器和输入进行了密码学链接。如果在生产环境中出现问题,你就能追溯原因。<p>目前的标量后端——是参考实现,也是在无法使用硬件加速时的永久备用方案。审计和验证在所有后端都是相同的。接下来是 SIMD,然后是 GPU。<p>下面的输入是合成的(全为 1)——流程与真实输入完全相同。<p>github.com/Coelanox/CLF 审计示例: ```json { "schema": 2, "run": { "run_id": "59144ede-5a27-4dff-bc25-94abade5b215", "started_at_unix_ms": 1776535116721, "container_path": "/home/shark/cnox/models/output/bert_base_uncased.cnox", "container_sha256_hex": "184c291595536e3ef69b9a6a324ad5ee4d0cefdedb7f1f82740", "backend": "scalar" }, "input": { "len": 98304, "sha256_hex": "54ac99d2a36ac55b4619119ee26c36ec2868552933d27d519e0f9fd128b7319f", "sample_head": [ 1.0, 1.0, 1.0, 1.0 ] }, "ops": [ { "op_index": 0, "op_type": "Add", "out_len": 98304, "out_sample_head": [ 0.12242669, -4.970478, 2.8673656, 5.450008 ], "out_sha256_hex": "19f8aa0a618e5513aed4603a7aae2a333c3287368050e76d4aca0f83fb220e78" }, { "op_index": 1, "op_type": "Add", "out_len": 98304, "out_sample_head": [ 0.9650015, 0.23414998, 1.539839, 0.30231553 ], "out_sha256_hex": "7ae2f025c8acf67b8232e694dd43caf3b479eb078366787e4fdc16d651450ad4" }, { "op_index": 2, "op_type": "MatMul", "out_len": 98304, "out_sample_head": [ 1.0307425, 0.19207191, 1.5278282, 0.3000223 ], "out_sha256_hex": "44c28e64441987b8f0516d77f45ad892750b3e5b3916770d3baa5f2289e41bdd" }, { "op_index": 3, "op_type": "Gelu", "out_len": 393216, "out_sample_head": [ 0.68828076, -0.0033473556, 1.591219, -0.16837223 ], "audit_elided": "hash_skipped: len 393216 > max 262144" } ] } ```