1作者: rkka3 个月前原帖
观察 大多数人工智能架构看起来是这样的: 应用程序 → 模型 → 输出 (加上日志记录、监控,可能还有保护措施) 你可以记录模型生成的内容。 你可以过滤输出。 你可以跟踪使用情况。 但通常你无法回答: 对于这个特定的人工智能决策,它是在什么版本的政策下被允许执行的? 授权往往是系统级别的(“我们批准了部署”),而不是决策级别的。 这个区别看似微不足道,直到人工智能系统开始: • 调用工具 • 触发工作流 • 访问内部API • 修改状态 此时,它们不再仅仅是生成文本。 它们正在执行动作。 实验 我构建了一个薄控制层,位于应用程序和模型之间: 应用程序 → 授权层 → 模型 每个请求在执行之前都要经过OPA(开放政策代理)。 政策引擎返回以下之一: • 重用(返回先前授权的结果) • 计算(允许模型执行) • 调整(根据政策修改响应) • 升级(需要人工审核) 只有在做出这个决定后,模型才被允许运行。 存储内容 对于每个请求,系统记录: • 政策ID和版本 • 政策包摘要(SHA-256) • 风险领域 + 分数 • 授权决策 • 不可变账本交易ID 追踪记录是可重放的。 模型本身并不知道这个层的存在。 技术栈: • FastAPI • OPA • immudb(仅追加账本) • Docker化部署 我想验证的内容 每个决策的授权是否过度设计? 在实践中,团队依赖于: • 提示约束 • 输出过滤 • 访问控制 • 人工审核工作流 也许这已经足够。 但如果人工智能系统变得更加自主,开始执行工具调用,我不确定事后日志记录是否足够。 云系统发展了身份和访问管理(IAM),因为“我们信任服务”并不足够。 人工智能是否需要类似的东西? 开放问题 • 你认为在大型语言模型(LLM)执行之前,运行时授权是否真的必要? • 基于政策的决策控制在受监管行业之外是否有用? • 不可变的可追溯性是必要的,还是仅仅日志记录就足够? • 这将如何与代理工具调用框架互动? 我真心想知道这是否解决了一个真实的问题,还是仅仅是基础设施的过度设计。 如果有用,乐意分享更多细节。
3作者: emilss3 个月前原帖
你会使用一个只需定义模式、访问策略和函数的后端吗?<p>基本上就像在EVM上创建智能合约,但它们运行在一个超大规模云平台上,并具备常规后端的基本功能。<p>这是我想的一个模拟示例:<p>模式 User { email: 字符串 @私有(所有者) name: 字符串 @公开 balance: 数字 @私有(所有者, 管理员) }<p>策略 { User.read: 所有者 或 角色("管理员") User.update.balance: 角色("管理员") }<p>函数 transfer(from: User, to: User, amount: 数字) { assert(caller == from.owner 或 caller.role == "管理员") assert(from.balance >= amount) from.balance -= amount to.balance += amount }<p>我在玩OpenFGA和AWS Lambda的东西,这让我想到这个。<p>所以你会在一个超大规模云平台上“部署”这个合约,然后让用户通过你简洁的JavaScript前端访问它,方式如下:<p>const res = await fetch("https://api.hyperscaler-example.com/c/your-contract-id/transfer", { method: "POST", headers: { "Authorization": "Bearer <user-jwt>", "Content-Type": "application/json" }, body: JSON.stringify({ from: "user_abc", to: "user_xyz", amount: 50 }) });<p>运行时从JWT中解析调用者身份,检查策略规则,运行函数,处理字段的加密/解密,因此你的前端根本不接触这些。<p>就这样,你会使用它吗?有没有什么东西已经完全实现了这个功能?我有点想要构建这个。
1作者: oferchen3 个月前原帖
多年前,我负责一个大规模的数据迁移项目:多个磁盘,每个磁盘上有超过一亿个文件,并且有一个严格的、不可谈判的24小时停机窗口。使用当时可用的标准工具是一种痛苦的经历。单线程的文件发现速度缓慢,内存使用情况则让我时刻感到焦虑。我向自己承诺,总有一天我会回过头来,构建一个能够原生处理这种规模的工具。 最初作为一个副项目开始的工作,已经演变成一个完整的系统级工程。这个项目是oc-rsync——一个完整的客户端、服务器和守护进程实现,专门针对rsync协议32,完全用纯Rust编写。 我觉得非常讽刺的是,我目前正在发布一个数据迁移工具,而我的生活却装在行李箱里,因为我自己也在迁移到另一个国家。在打包箱子的同时,我每天都在推送多次git提交。 我想在这里完全坦诚:我正在积极地进行这个项目,并且并不是所有功能都已实现。核心的增量传输、协议互操作性(协议28-32)和守护进程模式已经相当稳定,但我仍在梳理上游rsync处理的数百个晦涩的标志和边缘情况。 重建一个经过29年优化的代码库需要模块化的方法(当前工作空间分为23个crate)。一个主要的工程目标是与上游保持严格的线缆兼容性,同时现代化内部结构以实现最大吞吐量: - **管道并行性**:我使用Rayon将文件系统遍历与数据传输解耦。并行化文件列表生成和校验和计算消除了在大目录上臭名昭著的“扫描停滞”问题。 - **现代I/O与零拷贝**:该引擎实现了io_uring(Linux 5.6+),用于批量异步I/O,并具有自动回退功能,同时支持零拷贝的copy_file_range和内存映射I/O。 - **SIMD与AES-NI**:我用本地Rust实现替代了标准的C FFI调用。校验和使用运行时CPU特性检测(AVX2/NEON)来加速滚动哈希。由于标准SSH交互的速度无法跟上I/O管道,我直接将加密工作卸载到硬件加速的AES-NI上。 - **内存效率**:我摒弃了传统的排序数组,转而使用O(1)的基于哈希的逻辑进行元数据比较,并将mimalloc分配器接入,以保持内存使用情况的可预测性。 我不会在这里承诺具体的“X倍更快”的说法,因为性能高度依赖于你的硬件和文件分布。然而,在重负载的传输工作下,这种架构始终能实现比传统构建更好或相等的结果,同时显著降低CPU利用率。你无需自己设置基准测试脚本来验证这一点——我的CI管道会自动对每一个发布进行基准测试,并将结果的图片直接发布到README中。 如果你对系统编程、内核旁路I/O或Rust工作区架构感兴趣,我非常希望你能看看代码。请告诉我你对架构的看法,或者如果你发现任何明显的文件系统边缘情况,我应该添加到我的CI测试中。
1作者: trinsic23 个月前原帖
我大约在三个小时前提交了这篇文章,到目前为止我认为它还没有上线。它没有被标记,也似乎没有违反规则。有人知道为什么它还没有上线吗?<p>这是我提交列表中的第一篇文章:“Pinterest正淹没在一片人工智能垃圾和自动审核中(404media.co)”[0]<p>[0]: https://news.ycombinator.com/submitted?id=trinsic2
1作者: johannesjo3 个月前原帖
我一直遇到一个与AI编码工具相关的结构性问题。 你尝试一个代理,它进行了一些更改。然后你再尝试另一个代理。现在你需要手动比较分支并清理实验性提交。 这些工具很强大,但工作流程并不是为比较而设计的。 因此,我构建了Parallel Code。 它本地运行Claude Code、Codex和Gemini CLI(没有API封装,没有功能抽象),但将每个代理隔离在: - 自己的终端 - 自己的Git工作树 - 自己的功能分支 工作流程变成了: - 创建N个工作树 - 每个工作树分配一个AI代理 - 让它们独立实现 - 比较差异 - 合并最佳结果 这样,你就可以进行并行探索,而不是顺序的试错,同时保持安全的隔离。 为什么不直接使用tmux? 可以,但你仍然需要手动管理: - 分支创建 - 工作树清理 - 会话命名 - 上下文切换 Parallel Code自动化了Git结构,并保持会话的视觉组织。 这主要面向已经大量使用AI命令行工具的人。 我很好奇:是否还有其他人转向多代理并行工作流程,而不是单代理迭代? GitHub: [https://github.com/johannesjo/parallel-code](https://github.com/johannesjo/parallel-code)
3作者: boyter3 个月前原帖
我最初构建了 cs(codespelunker),目的是为了回答一个问题:BM25 相关性搜索能否在不构建索引的情况下工作?<p>结果证明是可以的,因此我在这个想法上进行了迭代,将其发展成一个完整的命令行工具。最近,我希望通过添加 Sourcegraph 或 Zoekt 等工具的相关性来改进它,但同样不想添加索引。<p>cs 使用 scc <a href="https:&#x2F;&#x2F;github.com&#x2F;boyter&#x2F;scc" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;boyter&#x2F;scc</a> 来动态理解文件的结构。因此,它可以将搜索过滤到代码、注释或字符串中。它还应用了加权的 BM25 算法,其中实际代码中的匹配项排名高于注释中的匹配项(默认情况下)。<p>我还使用 scc 扫描时输出的圈复杂度添加了复杂度重力权重。因此,如果你在搜索一个函数,具体实现应该比接口排名更高。<p><pre><code> cs "authenticate" --gravity=brain # 查找复杂的实现,而不是接口 cs "FIXME OR TODO OR HACK" --only-comments # 仅在注释中搜索,不在代码或字符串中 cs "error" --only-strings # 查找错误消息定义的位置 cs "handleRequest" --only-usages # 查找每个调用位置,跳过定义 </code></pre> v3.0.0 添加了一个新的排名器,以及一个交互式 TUI、HTTP 模式和 MCP 支持,以便与 LLM(Claude Code/Cursor)一起使用。<p>由于它在动态进行分析和复杂度计算,因此速度比任何 grep 都慢。然而,在 M1 Mac 上,它可以在大约 6 秒内扫描并排名整个 4000 万行以上的 Linux 内核。<p>实时演示(在其自身源代码上以 HTTP 模式运行): <a href="https:&#x2F;&#x2F;codespelunker.boyter.org&#x2F;" rel="nofollow">https:&#x2F;&#x2F;codespelunker.boyter.org&#x2F;</a> GitHub: <a href="https:&#x2F;&#x2F;github.com&#x2F;boyter&#x2F;cs" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;boyter&#x2F;cs</a>