1. 项目概述一个真正为你工作的“大脑”在AI助手泛滥的今天我们似乎已经习惯了“问答”模式你问它答。无论是ChatGPT还是Claude它们本质上都是被动的信息工具需要你主动去“拉取”信息。但有没有想过如果AI能像一个真正的员工一样主动为你工作24小时不间断地监控、分析、筛选只在真正重要的事情发生时才向你汇报这就是OpenCeph试图回答的问题。OpenCeph不是一个更好的聊天机器人它是一个主动式AI个人操作系统。它的核心哲学是“主动而非被动”。想象一下你雇佣了一个团队他们各自负责不同的领域知道自己的职责默默工作只有在需要你决策或事情有重大进展时才会向你报告。OpenCeph就是这个团队的大脑和协调中心而它的“触手”就是那些分布式的、自主工作的智能体。这个项目完全开源运行在你自己的设备上从Telegram、飞书到网页和命令行它连接到你已有的沟通渠道构建一个属于你的、私有的、持续工作的智能副脑。它不是为了替代你思考而是为了扩展你的感知边界让你从重复、耗时的信息监控中解放出来专注于真正需要创造力和判断力的决策。2. 核心架构与设计哲学2.1 三层架构从数据到决策的完整闭环OpenCeph的架构设计清晰地反映了其“主动智能体”的理念它不是一个单体应用而是一个由多个子系统协同工作的生态系统。其核心可以概括为“一个大脑多个触手统一网关”。大脑是整个系统的核心基于Pi Framework构建。它负责处理所有用户交互、工具执行和触手协调。大脑的动态系统提示词由8个可编辑的Markdown工作区文件如SOUL.md定义人格AGENTS.md定义操作流程实时组装而成。这意味着你可以通过修改这些文件深度定制AI的行为模式和价值观让它真正理解你的工作方式和优先级。大脑支持Anthropic Claude、OpenAI以及通过OpenRouter接入的2000多个模型并内置了提示词缓存、上下文压缩、循环检测和自动模型故障转移等高级特性确保服务的稳定性和智能性。触手系统是OpenCeph的“手脚”也是其“主动”能力的体现。每个触手都是一个独立的子进程通过标准输入/输出以JSON-Lines协议与大脑进行进程间通信。这种设计确保了触手的隔离性和稳定性——一个触手的崩溃不会影响整个系统。更重要的是触手采用了三层架构第一层是守护进程负责纯代码逻辑的数据抓取和基于规则的初步过滤第二层是智能体当积累的数据达到阈值时调用LLM进行深度分析和总结第三层是咨询层当智能体对某个发现信心不足时例如置信度在0.4到0.8之间会发起与大脑的多轮对话以寻求“上级”的决策指导。这种架构平衡了效率与智能让简单的规则过滤掉大量噪音再将精华交给LLM处理最后将疑难杂症交由大脑裁决。网关是系统的统一入口和消息路由层。它抽象了不同通信渠道的复杂性为Telegram、飞书、WebChat和CLI提供了适配器。无论你通过哪个渠道发送消息网关都会将其路由到大脑进行处理并将大脑的回复流式传输回对应的渠道。它还负责会话管理、私聊访问控制支持配对、白名单、开放、禁用四种策略和“正在输入”状态指示器等用户体验细节。这种设计让你可以随时随地、通过最习惯的方式与你的AI副脑交互。2.2 工作流一次完整的主动交互是如何发生的理解OpenCeph的工作流能让你更清楚地看到它的价值。我们以一个内置的“Hacker News雷达”触手为例持续监控hn-radar触手的守护进程层第一层会按照预设的间隔如每5分钟抓取Hacker News首页的新故事。规则过滤它首先应用一套你预设的硬性规则进行过滤比如只关注得分超过100点、或标题包含特定关键词如“LLM”、“RAG”的故事。这一步过滤掉了80%以上的无关内容。智能分析当过滤后的故事积累到一定数量比如5条或达到时间阈值触手进入第二层。它将这批故事的标题、链接、得分等信息打包调用LLM进行分析。LLM的任务是基于你在USER.md中定义的兴趣例如“对AI基础设施和开发者工具创业公司感兴趣”判断哪些故事真正相关并生成一份简洁的摘要和推荐理由。决策与上报LLM会为每个故事生成一个置信度分数。如果某个故事置信度很高0.8触手会直接生成一份“发现报告”提交给大脑。如果置信度中等0.4-0.8触手会进入第三层向大脑发起“咨询请求”附上原始数据和初步分析由大脑在对话中做出最终判断。推送决策大脑收到报告后并不会立即推送给你。它会将报告送入“推送决策引擎”。引擎会进行去重避免同一链接多次推送、优先级排序根据内容紧急程度标记为urgent, high, normal, low、并考虑每日推送限额。最后根据心跳配置可能在“最佳时间”比如你当地的早晨以摘要的形式批量推送给你。你的反馈你在Telegram上收到推送“发现3篇可能感兴趣的HN帖子[摘要]”。你可以回复“”或“”。系统会追踪这些反馈用于调整未来该触手的推送质量实现闭环学习。这个过程完全自动化无需你任何干预。你从“主动搜索信息”变成了“被动接收精炼后的情报”极大地提升了信息获取的效率和质量。3. 核心子系统深度解析3.1 记忆系统不只是向量数据库而是可编辑的知识库许多AI系统将记忆等同于向量数据库的嵌入和检索。OpenCeph采取了更人性化、更可控的设计。其核心是MEMORY.md文件——一个纯文本、你可随时编辑的Markdown知识库。你可以在这里记录任何你想让AI长期记住的事情项目关键决策、重要联系人信息、你的个人偏好、学到的经验教训。每天系统会自动生成一份日志文件~/.openceph/workspace/memory/YYYY-MM-DD.md记录当天的关键交互和系统事件。这形成了一个按时间线组织的记忆档案。在此之上系统利用SQLite的FTS5全文搜索功能实现语义检索。当大脑需要回忆相关信息时它会在MEMORY.md和所有历史日志中进行搜索。这种设计的好处是完全可控你可以像编辑任何笔记一样直接修改、删除或重组记忆没有黑盒。可读性强Markdown格式便于人类阅读和审查。双重检索结合了关键词匹配和一定的语义理解能力平衡了精度和召回率。实操心得定期花几分钟整理MEMORY.md非常值得。用清晰的结构如## 项目A、### 关键决策记录信息能极大提升后续检索的准确性。不要把记忆系统当成垃圾场而是把它当作你和AI共享的、不断完善的第二大脑皮层。3.2 心跳与定时任务让AI拥有“节奏感”“主动”意味着需要有节奏地行动。OpenCeph通过两个子系统来管理这种节奏心跳和Cron。心跳是系统的“脉搏”一个可配置频率默认24小时的主动推送机制。每到心跳时刻大脑会启动一个独立的“心跳会话”评估在过去一个周期内有哪些信息值得向你推送。它会综合考量记忆系统中的新内容、各触手的报告、以及HEARTBEAT.md中定义的每日任务清单。推送支持三种模式immediate立即发送。best_time智能延迟到你配置的“早晨窗口”如8:00-10:00发送避免夜间打扰。morning_digest将所有非紧急内容打包成一份每日摘要在早晨发送。Cron系统则用于管理定时任务。它支持标准的cron表达式、固定间隔和特定时间点。任务可以运行在“主会话模式”将事件加入队列或“独立会话模式”直接运行一个AI回合。系统内置了两个重要的维护任务daily-review每日回顾触发大脑对过去一天的活动进行反思和总结提炼精华到长期记忆。morning-digest-fallback确保那些被延迟的推送即使在系统短暂中断后也能在早晨送达。注意事项心跳和Cron任务的配置在openceph.json中。初期建议将心跳频率设为6或12小时以便更快地看到效果并进行调整。定时任务不宜设置得太密集尤其是那些需要调用LLM的任务需考虑API成本和系统负载。3.3 技能系统如何扩展你的AI员工团队OpenCeph最强大的特性之一是其可扩展的技能系统。你不需要修改核心代码来增加新功能只需要在~/.openceph/skills/目录下创建一个新的技能蓝图。每个技能的核心是一个SKILL.md文件它采用YAML Frontmatter定义元数据名称、描述、运行时环境等后面跟着自然语言描述的技能功能、工作流程和配置项。系统会扫描这个目录自动将这些蓝图转化为可运行的触手实例。技能支持多种运行时Python、TypeScript、Go、Shell。这意味着你可以用最熟悉的语言来编写触手的守护进程逻辑。例如一个监控加密货币价格的触手可以用Python编写数据抓取而一个代码质量检查触手可以用Go来运行静态分析工具。内置触手解析hn-radar监控Hacker News经典用例展示了三层架构的完整实现。arxiv-paper-scout根据你的研究兴趣跟踪arXiv上新论文。github-release-watcher监控指定仓库的Release及时获知版本更新。daily-digest-curator每日摘要策展将零散报告整合成一份高质量日报。skill-tentacle-creator一个帮助你创建新触手的脚手架工具它本身也是一个触手体现了系统的自举能力。开发一个自定义触手的关键步骤规划明确触手的职责、数据源、分析逻辑和报告格式。创建技能目录在skills/下新建目录编写SKILL.md。实现守护进程在src/main.py或其他语言中实现第一层的数据抓取和规则过滤。重要安全规则这里不能包含硬编码的API密钥不能直接调用外部LLM必须通过本地LLM网关不能执行任意系统命令也不能直接向用户发送消息所有通信必须通过大脑IPC。定义工具如果需要特殊的LLM功能在tools/tools.json中定义OpenAI格式的工具描述。编写系统提示在prompt/SYSTEM.md中为第二层的LLM智能体编写清晰的指令告诉它如何分析数据、生成报告。测试与部署使用openceph skill spawn skill-name命令来生成并运行你的触手实例。4. 从零开始部署与配置实战4.1 环境准备与初始化OpenCeph要求Node.js版本22或更高。建议使用nvm管理Node版本。# 1. 克隆仓库 git clone https://github.com/YuxuanSha/openceph.git cd openceph # 2. 安装依赖并构建 npm install npm run build # 3. 初始化系统首次运行 npx tsx src/cli.ts initinit命令会创建~/.openceph/目录结构并生成默认的配置文件和工作区文件。这是至关重要的一步。4.2 核心配置详解初始化后你需要编辑两个核心配置API凭证和主配置文件。1. 设置API凭证 OpenCeph支持多种凭证存储方式最方便的是使用命令行工具。# 使用OpenRouter推荐模型选择多 openceph credentials set openrouter sk-xxxxxxxxxxxx # 或使用Anthropic/OpenAI openceph credentials set anthropic sk-ant-xxxxxxxxxxxx openceph credentials set openai sk-proj-xxxxxxxxxxxx凭证会被加密存储在~/.openceph/credentials/目录下文件权限为600。你也可以通过环境变量OPENROUTER_API_KEY等方式设置。2. 配置openceph.json 这是主配置文件采用更友好的JSON5格式支持注释。最小配置如下{ brain: { model: anthropic/claude-3-5-sonnet-20241022, // 指定主用模型 }, channels: { telegram: { enabled: true, botToken: YOUR_BOT_TOKEN, // 从BotFather获取 dmPolicy: pairing, // 强烈建议初期使用配对模式 }, }, }关键配置项解析brain.model这是核心。OpenRouter的模型命名格式为provider/model-name。你可以根据成本、速度、能力进行选择。例如openai/gpt-4o-mini性价比很高。channels.telegram.dmPolicy安全关键设置。pairing模式要求陌生用户先输入配对码才能交互allowlist只允许预设用户IDopen则对所有人开放不推荐disabled关闭私聊。heartbeat.frequencyMinutes设置心跳频率单位分钟。pushEngine.dailyLimit设置每日最大推送条数避免信息过载。4.3 启动系统与日常管理启动完整系统包含网关、大脑和所有已启用的渠道openceph start系统将在后台运行。你可以通过openceph status查看运行状态通过openceph logs查看日志。CLI聊天模式仅用于测试和开发不启动网关和渠道openceph chat开发模式代码修改后自动重启npm run dev -- start停止与重启# 停止所有OpenCeph进程 pkill -9 -f cli.ts start # 重启 pkill -9 -f cli.ts start sleep 2 openceph start升级内置技能当项目更新后openceph upgrade这个命令会将仓库中最新的内置技能模板同步到你的本地skills/目录。4.4 渠道配置实战以Telegram为例Telegram是体验OpenCeph推送功能的最佳渠道之一。创建Bot在Telegram中搜索BotFather发送/newbot按提示操作最终获得一个HTTP API令牌。配置将令牌填入openceph.json的channels.telegram.botToken。启动运行openceph start。配对在Telegram中打开你的Bot发送任意消息。由于设置了dmPolicy: pairingBot会回复一个配对码如PAIR-ABCD。授权在运行OpenCeph的终端执行openceph pairing approve telegram PAIR-ABCD完成现在你可以在Telegram中和你的AI副脑对话了并接收来自触手的主动推送。注意事项确保运行OpenCeph的服务器可以访问Telegram的API。如果使用dmPolicy: allowlist你需要先通过openceph pairing list或其他方式获取你的Telegram用户ID一串数字并将其添加到配置文件的allowFrom数组中。5. 高级技巧与避坑指南5.1 优化LLM使用成本与性能OpenCeph的“主动”特性意味着LLM调用可能很频繁成本控制至关重要。模型选型策略大脑主模型选择能力强的模型如Claude 3.5 Sonnet, GPT-4因为它负责核心决策和复杂对话。触手分析模型对于hn-radar这类分析任务可以使用更小、更快的模型如Claude Haiku, GPT-4o-mini。你可以在触手的SKILL.md中通过llmModel字段覆盖默认模型。利用OpenRouterOpenRouter提供了统一的API和按Token定价的众多模型方便你根据任务切换性价比最高的模型。上下文压缩大脑内置了4层上下文压缩防御机制。当对话轮数增多时它会自动尝试a) 拒绝超出上下文窗口的请求b) 压缩过长的工具调用结果c) 修剪旧的、不相关的消息d) 进行智能摘要。这能有效降低长对话的成本。心跳与推送优化不要将所有触手的报告都设置为immediate推送。充分利用best_time和morning_digest模式将非紧急信息批量处理减少不必要的推送和潜在的LLM调用用于生成推送摘要。5.2 设计高效触手的经验法则明确职责边界一个触手只做一件事并把它做好。不要设计一个“监控一切”的触手。例如github-release-watcher只监控Release而代码提交监控应该另建一个触手。强化第一层守护进程尽可能用规则过滤掉垃圾信息。如果可以通过正则表达式、关键词、分数阈值过滤掉80%的数据就绝对不要把这80%的数据送给LLM。LLM是用来处理需要“理解”和“判断”的复杂情况。设计有信息量的报告格式触手提交给大脑的报告应该结构清晰包含来源、关键内容摘要、置信度分数、推荐理由、原始链接。这能帮助大脑快速理解并做出推送决策。利用咨询层不要追求触手100%的自信。对于边界情况大胆使用咨询层。让大脑参与决策这本身就是一种训练能让系统更了解你的偏好。咨询记录也会成为宝贵的训练数据。健康度监控OpenCeph会根据报告质量和用户反馈/自动计算触手的健康度。低健康度的触手会被降级甚至终止。在你的触手代码中可以通过日志和状态文件主动报告运行状况。5.3 常见问题排查实录问题1启动后Telegram Bot无响应。检查日志openceph logs gateway查看网关日志确认Bot是否成功登录是否有连接错误。检查配置确认botToken正确且没有多余空格。确认dmPolicy设置符合预期如果是pairing需要先完成配对。网络问题确保服务器可以访问api.telegram.org。如果使用代理可能需要全局配置或为Node.js设置代理。问题2触手启动了但从未产生报告。检查触手日志openceph logs tentacles或直接查看~/.openceph/tentacles/tentacle-id/logs/下的日志文件。检查IPC连接触手需要通过http://127.0.0.1:18792的LLM网关调用模型。确认大脑服务已启动且该端口可访问。环境变量OPENCEPH_LLM_GATEWAY_TOKEN是否设置正确通常由系统自动管理。检查技能配置确认SKILL.md中的schedule或daemon.interval配置合理不是设置了一个月运行一次。问题3LLM调用速度慢或经常超时。切换模型尝试使用响应更快的模型如openai/gpt-4o-mini。调整超时设置在openceph.json的brain部分可以调整timeout相关配置。检查OpenRouter状态访问OpenRouter状态页查看是否有服务中断。启用模型故障转移在配置中设置多个authProfiles当主模型失败时自动切换到备用模型。问题4推送太多或太少信息过载或遗漏。调整推送决策参数在openceph.json的pushEngine部分调整deduplicationWindowHours去重时间窗、dailyLimit每日限额、各优先级通道的maxPending最大待推送数。优化触手置信度阈值在触手的SYSTEM.md中调整LLM生成报告时的置信度要求。提高阈值可以减少推送量。善用反馈对不感兴趣的推送点“”系统会学习并降低类似内容的优先级。问题5MEMORY.md文件变得杂乱检索不准。定期进行“记忆蒸馏”这是心跳触发的daily-review任务的一部分。它会尝试总结和提炼记忆。你也可以手动触发大脑进行总结“请回顾我们过去一周的对话将最重要的三点学到的东西更新到MEMORY.md中。”人工整理定期打开MEMORY.md用清晰的标题和结构重新组织内容。记忆系统是半自动的人的定期干预能极大提升其质量。检查搜索查询大脑在检索记忆时会生成搜索查询词。通过查看相关日志你可以了解它是如何理解你的问题并搜索的从而优化你记忆的书写方式。