comisai/comis

GitHub: comisai/comis

自托管的开源 AI Agent 团队平台,部署在消息应用中,具备多层安全防护、DAG 工作流编排和深度成本优化。

Stars: 0 | Forks: 0

comis - Friendly by nature. Powerful by design.

您的专属 AI 团队,时刻伴您左右。

CI npm License Discord

文档 · 对比 · Discord · Twitter · 快速开始

Comis 是一个自托管的开源 AI 助手平台,它运行在您的消息应用中——而不是浏览器标签页中。跨 9 个平台部署具有持久记忆、50 多种工具以及基于 DAG 工作流的专属 Agent 团队。由 22 层防御机制提供安全保障,并经过优化可将 LLM 成本降低 80% 以上。 ## 为什么选择 Comis ### 安全性:LLM 即攻击面 AI Agent 可以访问您的消息应用、文件、Shell 和 API 密钥。一次简单的提示注入就可能使 LLM 泄露机密、执行破坏性命令或窃取隐私数据。大多数平台对此没有任何防御措施。 Comis 假定 LLM 会受到攻击。22 个独立的防御层会在每个阶段拦截威胁:用于注入模式的输入扫描、用于机密泄露的输出扫描、内核强制执行的 exec 沙箱、带有审批门的逐 Agent 工具限制、信任分区的内存,以及用于提示提取检测的 canary token。没有任何单一层需要做到完美,因为只有当攻击绕过所有层时才算成功。 ### 成本:提示缓存节省 81% [Anthropic 不再允许订阅涵盖第三方工具使用费用](https://www.theregister.com/2026/04/06/anthropic_closes_door_on_subscription/)。您现在需要通过 API 密钥或额外的使用量套餐按 token 付费。在 [Opus 4.6 输入价格为 $5/MTok](https://platform.claude.com/docs/en/about-claude/pricing) 的情况下,如果不进行优化,成本会迅速飙升。 Comis 拥有适用于 Anthropic 的最先进的提示缓存管理,包含 20 项专项优化,包括自适应 TTL 升级、防止上下文引擎破坏缓存前缀的缓存围栏保护、用于流水线成本共享的子 Agent 生成交错,以及将每次失效归因于其根本原因的两阶段缓存中断检测。Gemini 获得了原生的 CachedContent API 集成,带有 SHA-256 内容哈希和自动生命周期管理。支持 OpenAI,通过完成存储来降低成本。 | 指标 | 数值 | |---|---| | 76 次 Opus 4.6 调用会话 | **$5.02** vs 未缓存时 $26.42 | | 缓存命中率 | 占输入 token 的 94% | | 8-Agent 交易流水线 | 788K tokens 仅需 **$2.11** | ### 上下文:无性能退化的扩展 大多数助手在上下文填满时会静默丢弃旧消息。Comis 永远不会删除任何消息。整个对话历史存储在由 DAG 支持的数据库中,并带有层次化摘要。当上下文窗口填满时,较旧的消息会在增加深度的同时被压缩为结构化摘要,而原始内容仍可根据需要检索。8 层上下文引擎负责处理其余工作:剔除陈旧内容,通过 LLM 压缩和重注入保留关键上下文,以及渐进式工具披露,在不消耗上下文的情况下保持 50 多种工具可用。 在会话之间,后台学习任务会回顾过去的对话以提取用户偏好和事实,将它们与现有知识进行去重,并将其存储为持久记忆。Agent 会随着时间的推移不断变好,而无需被告知要记住什么。 ### 编排:通过自然语言创建团队 Agent 只需一句话即可创建一个 7 节点的 DAG 流水线,支持并行扇出、多轮辩论和综合。无需 YAML,无需脚本。7 种节点类型,3 级并发控制和屏障同步。每个 Agent 都拥有独立的内存、预算和工具策略。 ## 快速开始 **一行命令** - 安装 Node.js 及所有其他依赖: ``` curl -fsSL https://comis.ai/install.sh | bash ``` 适用于 macOS 和 Linux。 **或者使用 npm**(需要 Node.js 22+): ``` npm install -g comisai comis init comis configure # interactive setup wizard comis daemon start ``` 向您的 Agent 发送消息。就这么简单。 ## 功能特性 | | 功能 | 描述 | |---|---|---| | 💬 | **9 个消息渠道** | Telegram, Discord, Slack, WhatsApp, Signal, iMessage, IRC, LINE, Email - 支持文本、语音、图像、文件、表情回应、线程 | | 🤖 | **多 Agent 集群** | 具有独立内存、预算和工具策略的专属 Agent。支持逐 Agent 模型选择。通过子 Agent 生成(同步或即发即弃)委派工作。 | | 🧠 | **持久记忆** | SQLite + FTS5 + 向量搜索,带有信任分区存储(系统/学习/外部)。RAG 检索可在数周后保持上下文相关性。 | | 🔀 | **DAG 流水线** | 7 种节点类型(agent, debate, vote, refine, collaborate, map-reduce, approval gate)。由自然语言构建。可视化画布编辑器。 | | 🔌 | **MCP 生态系统** | 50 多个工具服务器 - GitHub, Gmail, Notion, 数据库,浏览器自动化,Shell。只需一行配置即可添加任何 MCP 服务器。 | | 🧩 | **技能系统** | 用于领域专业知识、工作流和角色特征的模块化提示包。运行时资格过滤、动态注入、用于热重载的文件监视。 | | 🧊 | **8 层上下文引擎** | 推理剥离、死内容剔除、三层观察屏蔽、LLM 压缩、重注入、渐进式工具披露 - 降低 80% 以上的成本。 | | 🛡️ | **22 个安全层** | OS 级 exec 沙箱,注入检测(40 多种模式),AES-256 加密机密,SSRF 防护,canary token,审批门,预算守卫。 | | 🌐 | **任意模型,任意提供商** | Claude, GPT, Gemini, Groq, Ollama, OpenRouter。工具呈现可适应每个模型的上下文窗口 - 小型模型获得精简的 schema 和集中的工具集。 | | 🖼️ | **媒体处理** | 视觉分析,STT (Whisper/Groq/Deepgram),TTS (OpenAI/ElevenLabs/Edge),图像生成 (FAL/OpenAI),PDF 提取 - 在所有渠道上原生支持。 | | 🌍 | **无头浏览器** | Web 自动化,屏幕截图,表单填充,JavaScript 执行。 | | ⏰ | **调度与 cron** | 循环任务,心跳健康检查,用于流水线自动化的 cron 触发器。 | | ⚙️ | **网关与 API** | 兼容 OpenAI 的 API,JSON-RPC, WebSocket, mTLS, bearer 认证。 | | 📊 | **可观测性** | 结构化日志,熔断器,逐 Agent 成本跟踪,上下文引擎指标,Trace ID。 | ## 支持的渠道

                          

Telegram · Discord · Slack · WhatsApp · Signal · iMessage · LINE · IRC · Email

文本、语音、图像、文件、表情回应、线程 - 在每个平台上都能获得完整体验。

## 架构

Comis hexagonal architecture

Comis 采用**六边形架构**(端口和适配器)。核心层定义端口接口——适配器实现它们。无需触及核心逻辑,即可将 Discord 换成 Matrix,将 SQLite 换成 Postgres,或将 OpenAI 换成 Ollama。添加渠道、工具或提供商只需编写适配器,而无需修改核心。 **19 个端口,30 多个适配器,13 个包。** 主动适配器(渠道、CLI、API)调用核心层。被动适配器(内存、LLM 提供商、媒体处理器)由核心层通过端口调用。每个函数都返回 `Result`——零抛出异常。完全支持隔离测试。 [深入了解:架构 →](https://comis.ai/architecture) ## 安全性 跨 9 个类别的 22 个独立防御层——从第一次提交开始就作为设计约束构建,而不是事后补丁。 ### OS 级 Exec 沙箱 每个 Shell 命令都在**内核强制的文件系统隔离**中运行。Agent 只能看到其工作区。别无其他。 - **Linux:** [Bubblewrap](https://github.com/containers/bubblewrap) 具有完整的命名空间取消共享(挂载、PID、用户、cgroup、IPC)。私有 `/tmp` 和 `/dev`。`--die-with-parent` 级联终止。 - **macOS:** `sandbox-exec`,带有每次调用生成的默认拒绝 SBPL 配置文件。支持符号链接的路径解析。 沙箱是 exec 周围六层防御之一——工具策略可以完全移除 exec,命令黑名单阻止破坏性命令,环境变量黑名单剥离 `LD_PRELOAD`/`DYLD_*`,CWD 验证防止路径遍历,子进程环境过滤从子进程中剥离 API 密钥。 ### 纵深防御 | 类别 | 防御层 | |---|---| | **边界** | 输入防护(13 个加权模式类别,typoglycemia 检测),输出防护(15 种机密模式,canary 泄露检测),外部内容包装(随机分隔符),零宽字符剥离,注入速率限制器 | | **机密** | 静态 AES-256-GCM 加密,按 Agent 范围的访问(glob 模式),3 层日志清理器(Pino fast-redact + 正则表达式 + ReDoS 缓解) | | **网络** | DNS 固定的 SSRF 防护 - 阻止 RFC 1918、环回、链路本地、云元数据 IP(AWS/GCP/Azure/Alibaba) | | **进程隔离** | 内核强制的 exec 沙箱(bubblewrap / sandbox-exec) | | **访问控制** | 工具策略引擎(5 个命名配置文件,按 Agent 允许/拒绝),带有双缓存和相互失效的审批门 | | **内存** | 信任分区存储(系统/学习/外部),写入前安全扫描,RAG 默认排除外部来源 | | **检测** | 每会话 canary token(HMAC-SHA256)检测系统提示提取 | | **传输** | 时序安全的 bearer token,带有 CN 提取的 mTLS,带有重放保护的 HMAC webhook 验证 | | **运行时** | 3 级预算守卫(每次执行/每小时/每天,调用前检查),熔断器,工具输出清理器(NFKC 规范化,不可见字符剥离) | [深入了解:安全 →](https://comis.ai/security) ## 上下文引擎与成本优化 大多数 Agent 会随着对话的增长而退化——上下文填满,旧消息被静默丢弃,Agent 忘记了重要内容。Comis 通过 **8 层上下文引擎**、**渐进式工具披露**以及 **20 项提示缓存优化** 解决了这一问题,在保持完全连贯性的同时,将 LLM 成本降低了 80% 以上。 ### 上下文处理层 | 层级 | 作用 | 时机 | |---|---|---| | Thinking Cleaner | 剥离旧的推理痕迹 | 每次调用 | | Reasoning Tag Stripper | 剥离来自非 Anthropic 提供商的内联推理标签 | 每次调用 | | History Window | 限制为每个渠道最近 N 轮 | 每次调用 | | Dead Content Evictor | 用 50 字节的占位符替换被取代的文件读取/exec 结果 | 每次调用 | | Observation Masker | 具有滞后性的三层屏蔽(受保护/标准/临时),持久化到磁盘 | 上下文超过 120K 字符 | | LLM Compaction | 将 50 多条消息总结为 9 个结构化部分(3 级回退) | 上下文达到窗口的 85% 以上 | | Rehydration | 在压缩后重新注入工作区指令 + 最近访问的文件 | 压缩之后 | | Objective Reinforcement | 通过压缩保留子 Agent 任务目标 | 压缩之后 | **渐进式工具披露** 管理着 50 多种工具而不会导致上下文膨胀。精益定义(每个约 20 个 token)始终用于工具选择。详细的使用指南在首次使用时注入。与当前上下文无关的工具会推迟到语义发现工具背后。小型模型获得精简的 schema 和核心工具集。 微压缩会在写入时将过大的工具结果卸载到磁盘。每次调用前都会检查 3 预算守卫(每次执行/每小时/每天)。每一层都有自己的熔断器。 ### 提示缓存架构 LLM 提供商对缓存提示读取的收费比缓存写入低 10-20 倍。缓存只有在提示前缀在轮次之间保持不变时才起作用。大多数 Agent 通过在系统提示中注入时间戳、RAG 结果或 hook 输出来打破这一点——每一次变化都会强制进行完整的缓存重建。 Comis 采用**双提示架构**,将静态内容与每轮内容分离: | 内容 | 位置 | 原因 | |---|---|---| | 身份、工具、安全规则 | **系统提示**(静态,缓存) | 每轮字节相同 - 缓存前缀保持不变 | | 时间戳、RAG 结果、渠道上下文、hook 输出、技能清单、canary token | **动态前言**(第一条用户消息) | 每轮更改而不破坏缓存 | 大多数 Agent 平台将缓存视为提供商功能——在系统提示上使用单个 `cache_control` 标签。Comis 将其视为**目标架构**。上下文引擎具有缓存意识:它知道缓存边界在哪里,并主动防止在缓存区域内进行修改。Anthropic 获得了带有 TTL 单调性强制执行和生成交错的主动缓存围栏。Gemini 获得了带有 SHA-256 内容哈希的显式 CachedContent API 集成。缓存中断检测将每次失效归因于其根本原因。 ### 生产结果 **使用 Claude Opus 4.6 的 76 次调用会话(由于技能热加载导致 2 次缓存中断):** | | Token | 成本 | |---|---|---| | 缓存读取 | 4,892,893 | $2.45 | | 缓存写入 | 289,900 | $2.06 | | 输出 | 20,662 | $0.52 | | **总计** | **5,213,517** | **$5.02** | | 无缓存 | - | ~~$26.42~~ | **16.9 倍** 缓存读/写比率。**节省 81%。** 94% 的输入 token 以 $0.50/MTok 的价格从缓存中提供。 | 指标 | 数值 | |---|---| | 缓存命中率 | 占所有提供服务的输入 token 的 **94%** | | 每条消息成本(缓存) | **$0.04-0.09** vs 冷启动 $0.25 | | 缓存写入成本 | 约占 token 的 6%(不可避免的新内容) | | 未缓存 token | <0.01%(实际上为零) | 一个 8-Agent NVDA 交易流水线(Sonnet 4.5 子 Agent,788K token):总计 **$2.11**,图表缓存有效性达 70%。
详细的缓存优化机制
``` breakpoint callback -> fence index -> layer guards -> trim offset translation ^ | +--------------- persisted across execute() calls ---+ ``` - **缓存围栏索引** - 跟踪每次 LLM 调用的最高缓存断点位置。修改内容的层在下一轮跳过位于或低于围栏的消息。 - **修剪偏移转换** - 历史记录窗口从前端修剪 100 多条消息。围栏索引存储在修剪前的空间中,并在修剪后正确调整,以便保护能跨轮次存活。 - **子 Agent 生成交错** - 流水线波次中的并发子 Agent 交错 4 秒。第一个 Agent 写入共享缓存前缀;同级 Agent 以低 10 倍的成本读取它。 - **自适应冷启动保留** - 父 Agent 从第一次调用起以 1 小时 TTL 写入,以便系统提示能在流水线间隔(>5 分钟)中存活。子 Agent 继承混合的 5 分钟/1 小时 TTL - 共享前缀块使用第一个写入者的 TTL,特定于对话的内容使用 5 分钟。 - **TTL 单调性强制执行** - Anthropic 的 API 要求缓存断点 TTL 非递增。SDK 将系统块设置为 5 分钟,但工具断点升级到 1 小时。Comis 在 `onPayload` hook 中升级系统块 TTL 以满足约束。 - **会话范围的预热状态** - 自适应保留升级在 `execute()` 调用之间持久化。返回的执行立即从配置的保留开始。 - **3 区域缓存断点** - 最多 3 个战略性 `cache_control` 标记(半稳定区、中点、最近区)。子 Agent 使用 512 token 阈值,父 Agent 使用 1024。 - **观察屏蔽器滞后** - 120K 激活 / 80K 停用频段可防止缓存颠簸振荡。三级分类(受保护/标准/临时)带有每级保留窗口。单调屏蔽:一旦屏蔽,始终重新屏蔽。 - **工具 schema 快照** - 每个会话冻结工具数组,以便 MCP 工具连接/断开不会使缓存失效。 - **缓存中断检测与归因** - 两阶段系统记录调用前的 SHA-256 哈希和调用后的 token 分析。双阈值(>5% 相对 AND >2K 绝对)跨优先级链触发归因:模型 > 系统 > 工具 > 保留 > 元数据 > TTL > 服务器驱逐。惰性内容差异将热路径开销保持在接近零。 - **Gemini 显式缓存** - 带有 SHA-256 内容哈希的 CachedContent API,每个模型的最小可缓存 token(Flash 1,024 / Pro 4,096),并发请求去重,会话范围的生命周期,以及孤立缓存清理。在运行时通过提供商保护与 Anthropic 缓存互斥。 - **前缀不稳定性检测** - 如果缓存读取在连续 5 轮中保持基线水平,则强制执行短 TTL,防止在不稳定前缀上累积写入成本。
[深入了解:上下文管理 →](https://comis.ai/context-management) ## 图流水线 用简明的语言描述您想要什么——LLM 会选择节点类型并构建 DAG。无需 YAML,无需脚本。可视化画布编辑器允许您检查和修改图形。 ### 节点类型 | 类型 | 作用 | |---|---| | **Agent** | 单个子 Agent 执行 - 构建基石 | | **Debate** | 多轮对抗 - 2 个或更多 Agent 辩论,可选综合器给出最终裁决 | | **Vote** | 并行独立投票 - 所有投票者同时生成,汇总结果 | | **Refine** | 顺序优化链 - 每个 Agent 改进前一个输出 | | **Collaborate** | 顺序多视角 - Agent 按顺序做出贡献,建立在共享历史之上 | | **Map-Reduce** | 并行分解 + 聚合 - 映射器扇出,归约器查看所有结果 | | **Approval Gate** | 人工检查点 - 暂停流水线,向您的聊天发送提示,等待是/否 | ### 执行引擎 - **3 级并发控制:** 每节点、每图和全局上限可防止资源耗尽 - **屏障模式:** 全部(默认),多数(>50%),尽力而为(至少 1 个) - **失败策略:** 快速失败(级联跳过)或继续(如果满足屏障则继续) - **模板插值:** 下游节点通过 `{{nodeId.result}}` 引用上游输出 - **限制:** 每图 20 个节点,每节点超时,0-3 次重试并采用指数退避 ## 技能 模块化提示包,赋予 Agent 专业知识、领域技能、工作流和角色特征。将技能定义为 Markdown 文件,在 YAML 中配置它们,Comis 会在启动时加载它们。 运行时资格过滤确保只有相关的技能被注入到上下文中。技能支持动态上下文注入、用于热重载的文件监视以及用于安全的内容扫描。 ## 开发者设置 需要 **Node.js >= 22** 和 **pnpm**。 ``` git clone https://github.com/comisai/comis.git cd comis pnpm install pnpm build ``` ### 使用 pm2 运行 ``` npm install -g pm2 node packages/cli/dist/cli.js pm2 setup # one-time setup pm2 flush comis && node packages/cli/dist/cli.js pm2 start ``` 验证:`pm2 logs comis --lines 10 --nostream` - 查找 `"Comis daemon started"`。 代码更改后:`pnpm build && pm2 flush comis && pm2 restart comis`。 ### 运行测试 ``` pnpm test # unit tests pnpm lint:security # security lint pnpm test:integration # integration tests (requires build) ``` ## 贡献 我们欢迎各种贡献——错误报告、技能、集成、文档和代码。 [Issues](https://github.com/comisai/comis/issues) · [Pull Requests](https://github.com/comisai/comis/pulls) · [Discussions](https://github.com/comisai/comis/discussions) ## 社区

Discord Twitter Docs

## 致谢 Comis 的灵感来源于 [OpenClaw](https://github.com/openclaw/openclaw) 及其周围围绕自托管 AI 助手的社区。我们看到了大家的热情,以及对安全性、LLM 成本和生产就绪性的持续关注,因此我们从零开始构建了 Comis 以解决这些差距。企业级的基础设施,完全开源,基于 Apache-2.0 许可。 特别感谢 [Mario Zechner](https://mariozechner.at/) 的支持,以及 Comis 所依赖的开源项目 [pi-mono](https://github.com/badlogic/pi-mono)。 ## 许可证 [Apache-2.0](LICENSE)

Comis

Friendly by nature. Powerful by design.

标签:AI代理, AI安全, API安全, Chat Copilot, CISA项目, DAG工作流, DLL 劫持, GNU通用公共许可证, JSON输出, LLM, MITM代理, Node.js, NPM包, OSV-Scalibr, Petitpotam, PyRIT, Unmanaged PE, 人工智能, 企业级AI, 即时通讯, 团队协作, 多智能体系统, 大语言模型, 开源, 成本优化, 持久化记忆, 提示注入防御, 数据泄露防护, 消息应用集成, 源代码安全, 用户模式Hook绕过, 网络安全, 网络安全, 网络探测, 自动化攻击, 自托管, 隐私保护, 隐私保护