1作者: olivato23 天前
我就是想把日志发到 Telegram、Discord 和 Slack,不想每次都花 15 分钟看文档。<p>通常情况是这样的: Discord 需要 A 格式的 webhook Telegram 需要 bot token 和 chat ID Slack 需要用 JSON 封装所有内容<p>而且这三个平台的文档看起来像是不同物种写的。<p>我研究过现有的解决方案。它们似乎都需要配置很多东西,或者只是大型告警软件的一部分。我想要一个非常简单的东西。 所以我做了 Crystal Sage。它是一个 14.8MB 的 Go 二进制文件。是的,我知道。仅仅为了发出 HTTP 请求就要 14MB。<p>你只需要配置一个 config.yaml 文件<p>然后用 curl(或者任何可以发出 HTTP 请求的工具)发送一次,它就会发送到所有地方:<p>curl -X POST localhost:8080/prod-alerts -d "content=Server is on fire "<p>就这么简单。一个 YAML 文件。所有你的消息平台。如果你愿意,每个平台可以有多个频道。<p>Docker: <a href="https://hub.docker.com/repository/docker/olivatooo/crystal-sage" rel="nofollow">https://hub.docker.com/repository/docker/olivatooo/crystal-s...</a> GitHub: <a href="https://github.com/olivatooo/crystal-sage" rel="nofollow">https://github.com/olivatooo/crystal-sage</a>
1作者: illdynamics23 天前
我一直在开发一个名为 QonQrete 的开源项目,希望从 HN 获得反馈。 **它是什么** QonQrete 是一个本地优先的、基于代理的编排系统,用于代码生成。它协调多个 LLM “代理” 来规划、编写和审查代码,同时将执行保持在您自己的基础设施上的沙盒内。可以把它想象成一个您自己运行的 AI 辅助开发建筑工地。 **我为什么构建它** 我看到的大多数多代理演示都存在两个问题: * **安全性:** 生成的代码通常在编排它的同一环境中运行。 * **可观察性/控制:** 长代理链变得不透明,并且很难干净地插入人工检查点。 我想要一个这样的设置: * 代理生成代码在隔离的容器中运行。 * 编排层从不在主机上直接执行该代码。 * 您可以在全自动循环和人工介入审批之间进行选择。 **架构** 当前流程: * **InstruQtor:** 接受一个高级任务,并将其分解为执行计划。 * **ConstruQtor:** 遵循计划并生成代码/工件。 * **InspeQtor:** 审查输出,标记问题,并可以请求另一次迭代。 在底层,每个代理只是一个具有不同角色的 LLM API 调用。执行发生在容器化的“微型沙盒”(目前是 Docker)中。主机只看到通过审查步骤的工件。 **安全模型(当前状态)** 原型: * 在具有特定卷挂载的一次性容器中运行生成的代码。 * 将编排与执行沙盒分开。 * 将所有代理生成代码视为不受信任。 它不是一个正式的沙盒或安全产品;这是一种务实的尝试,以避免“让 LLM 直接编辑您的存储库并在您的笔记本电脑上运行脚本”。我非常感兴趣从具有更强威胁模型或先前经验的人那里获得反馈。 **执行模式** 两种模式: * **自主模式:** 代理可以在没有输入的情况下运行多个循环,直到达到停止条件。 * **用户控制模式:** 系统在检查点(计划后、首次实现等)暂停,等待您批准、调整指令或停止。 **LLM 提供商** 编排层与提供商无关。您可以为每个代理配置不同的提供商(例如,用于规划的较小模型,用于实现的较强模型,用于审查的侧重推理的模型)。它目前通过 API 密钥支持 OpenAI、Gemini、Claude 和 DeepSeek。 **本地优先** QonQrete 不托管任何东西。您在自己的机器或服务器上运行它: * 没有外部服务或托管后端。 * 您的 API 密钥保留在本地。 * 工件存在于您的文件系统/Git 中。 该存储库包含一个基本的 CLI 和示例流程。 **状态** 早期阶段: * 核心的三代理流程有效。 * 微型沙盒执行功能齐全,但正在发展中。 * 一个用于检查循环的 TUI 正在进行中。 我并没有声称这是构建多代理系统的正确方法;这是一种使其更具可观察性且运行风险更低的实验。 **我希望获得的反馈** * 编排与执行分离是否有意义? * 代理角色(规划 → 构建 → 审查)的结构是否合理? * 关于沙盒方法和可能的故障模式的看法? * 与更简单的“单代理带工具”设置相比,这是否增加了足够的价值? **存储库** 代码、设置说明和示例: [https://github.com/illdynamics/qonqrete](https://github.com/illdynamics/qonqrete)