返回首页
一周热榜
我是一名软件工程师,无论我多么努力想要逃避,还是不断被拉入DevOps的领域。最近我转到了一个首席DevOps工程师的角色,负责编写工具以自动化许多繁琐的工作。在工作之余,我开发了Artifact Keeper——一个自托管的工件注册中心,支持超过45种包格式。安全扫描、单点登录、复制、WASM插件——这些功能都包含在MIT许可的版本中。没有企业级套餐,没有功能限制,也没有意外账单。
你的包管理工具——pip、npm、docker、cargo、helm、go,所有这些——都可以直接使用它们的原生协议与之对接。内置了使用Trivy、Grype和OpenSCAP的安全扫描功能,还有一个策略引擎,可以在不良工件进入你的构建之前将其隔离。如果你需要的格式尚不支持,还有一个WASM插件系统,允许你在不修改后端的情况下添加自己的格式。
我为什么要开发它:
吸引我进入计算机领域的一部分原因是开源。我在新奥尔良长大,家境贫困,早在2000年代初,我唯一能接触到的硬件是一些我父亲从工作中带回来的Compaq Pentium II,这些电脑是他工作单位准备丢弃的。我在这些电脑上安装了Linux,它在那种低端硬件上运行得比Windows 2000和Millennium快得多。那次经历让我明白,最好的软件是开放给所有人查看和使用的,并且能够在你所拥有的设备上良好运行。
快进到今天,我发现这个模式无处不在:GitLab、JFrog、Harbor等公司发布有限的“社区”版本,然后将团队实际需要的功能隐藏在某些付费墙后面。我理解——薪水总得从某个地方来。但我想证明一个功能齐全的工件注册中心可以作为真正的开源软件存在。每个功能,毫无例外。
具体功能源于真实的痛点。Artifactory的搜索速度非常慢——这就是我集成Meilisearch的原因。另一个重要的功能是安全扫描不需要单独的企业许可证。我还希望复制功能不需要中央协调器——因此我构建了一个对等网络,任何节点都可以复制到任何其他节点。我还没有在工作中部署这个系统——目前我在家里为我的个人项目运行它——但我希望看到它在大规模下的测试,这也是我在这里分享它的重要原因。
关于AI的故事(我会诚实地说):
我大约用三周时间使用Claude Code构建了这个项目。我知道很多人会说这可能是“氛围编码”的垃圾——但如果真是这样,那也是一堆令人印象深刻的“氛围编码”垃圾。去看看代码库。后端大约80%是Rust,包含429个单元测试,33个PostgreSQL迁移,分层架构,以及一个完整的CI/CD管道,配有端到端测试、压力测试和故障注入。
AI并没有为我做设计决策。我仍然需要设计WASM插件系统,弄清楚扫描引擎如何相互补充,并架构对等复制。多年的领域知识驱动了设计——AI只是让我构建得更快。我对这些工具为像我这样的爱好者和安全极客所带来的可能性感到震惊。
技术栈:基于Axum的Rust,PostgreSQL 16,Meilisearch,Trivy + Grype + OpenSCAP,支持热重载的Wasmtime WASM插件,带有分块传输的对等复制。前端使用Next.js 15,以及原生的Swift(iOS/macOS)和Kotlin(Android)应用。OpenAPI 3.1规范,自动生成TypeScript和Rust SDK。
试试它:
```
git clone https://github.com/artifact-keeper/artifact-keeper.git
cd artifact-keeper
docker compose up -d
```
然后访问 http://localhost:30080
实时演示: [https://demo.artifactkeeper.com](https://demo.artifactkeeper.com)
文档: [https://artifactkeeper.com/docs/](https://artifactkeeper.com/docs/)
我非常欢迎任何反馈——你对这个方法的看法,你希望看到的功能,或者你对Artifactory或Nexus的不满,希望有人能解决的问题。反馈不一定要是PR。可以打开一个问题,开始讨论,或者在这里告诉我。
[https://github.com/artifact-keeper](https://github.com/artifact-keeper)
嗨,HN,
在Imbue,我们一直在关注代理领域的快速发展,并注意到代理与第三方服务在用户授权下的互动方式常常不尽如人意。现有的集成方式往往是临时的、复杂的、依赖上下文的,并且要么对非技术用户不友好,要么与某种锁定机制绑定。
我们正在尝试一种命令行工具——Latchkey,旨在为非技术用户提供本地代理服务,同时避免远程中介。根据我们所知,这是在这两个目标交汇处唯一现有的方法。
核心理念:代理通过在普通的 `curl` 调用前添加 `latchkey` 命令来访问第三方服务的API,示例如下:
```
latchkey curl -X POST 'https://slack.com/api/conversations.create' \
-H 'Content-Type: application/json' \
-d '{"name":"something-urgent"}'
```
Latchkey会透明地将凭据注入这些调用中,并在需要时提示用户通过浏览器弹窗登录。一旦登录成功,浏览器自动化将用于从浏览器会话中提取API令牌。
好处:
* 只需掌握一项技能即可与所有服务集成。
* 代理与第三方服务之间的直接通信(无需OAuth中介应用)。
* 非技术用户也能使用代理。
* 秘密信息不会泄露到日志或聊天记录中。
我们相信这与一个去中心化的未来愿景相符,在这个未来中,人们无需向企业请求使用自己数据的权限。我们想象一个充满活力的本地代理生态系统,人们可以自由使用,同时社区互相帮助,使这些工具保持实用和功能性。
我们也意识到这种方法存在一些缺点,期待您的反馈。
附言:这里还有一个链接,展示了使用Latchkey构建的玩具演示AI助手应用Passepartout: [https://github.com/imbue-ai/passepartout](https://github.com/imbue-ai/passepartout)
大家好,我们是Aram和Eduard,Modelence的联合创始人(<a href="https://modelence.com">https://modelence.com</a>)。在花费多年时间扩展我们之前创业公司的平台后,我们构建了一个开源的全栈TypeScript + MongoDB框架,以避免每次创建应用时都要解决相同的身份验证、数据库、API和定时任务的实现问题,同时我们也不喜欢为每个应用使用多个托管平台的想法。
(这里是我们之前的Show HN帖子供参考:<a href="https://news.ycombinator.com/item?id=44902227">https://news.ycombinator.com/item?id=44902227</a>)
与此同时,我们对整个AI应用构建者的热潮感到兴奋,并意识到真正的挑战在于平台本身,而不是工具。现在,我们正在将Modelence打造成第一个为编码代理和人类共同打造的全栈框架:
- TypeScript非常适合AI编码,因为它提供了保护机制,并在构建时捕捉许多错误,从而使代理能够自动纠正。
- MongoDB消除了代理的模式管理问题,这是它们最常失败的地方(并且与TS/Node.js配合良好)。
- 内置的身份验证、数据库、定时任务等功能开箱即用,意味着代理只需专注于您的产品逻辑,而不必在设置这些功能时失败(并且减少了在样板代码上花费的令牌)。
您现在可以通过在我们的登录页面(<a href="https://modelence.com">https://modelence.com</a>)上输入提示来尝试Modelence应用构建器(基于Claude Agent SDK)——在这里观看演示视频:<a href="https://youtu.be/BPsYvj_nGuE" rel="nofollow">https://youtu.be/BPsYvj_nGuE</a>。
然后,您可以在本地查看并继续在自己的IDE中工作,同时仍然使用Modelence Cloud作为后端,享受开发云环境,随后在Modelence Cloud上部署和运行,所有操作都具备内置的可观察性。
我们还将添加一个内置的DevOps代理,它将驻留在同一云中,了解框架的端到端,并利用所有这些可观察性数据来处理错误、警报和事件——闭环,因为在生产环境中运行比仅仅构建要困难得多。
我们推出应用构建器作为开发者的快速入门,旨在展示框架和Modelence Cloud,而不必手动阅读文档并按照步骤设置新应用。我们的主要关注点仍然是平台本身,因为我们相信AI编码的真正挑战在于框架和平台,而不是构建工具本身。
我们的团队常常使用Slack,但我们无法访问Slack MCP,也找不到适合我们的解决方案,因此我们自己编写了一个agent-slack CLI工具。
- 可以粘贴Slack URL
- 令牌高效
- 零配置(如果使用Slack桌面版会自动认证)
该工具会自动下载文件/代码片段。
同时也可以将Slack画布读取为Markdown格式!
MIT许可证