[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-81214":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":16,"stars7d":17,"stars30d":18,"stars90d":15,"forks30d":15,"starsTrendScore":19,"compositeScore":20,"rankGlobal":10,"rankLanguage":10,"license":21,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":22,"hasPages":22,"topics":24,"createdAt":10,"pushedAt":10,"updatedAt":25,"readmeContent":26,"aiSummary":27,"trendingCount":15,"starSnapshotCount":15,"syncStatus":28,"lastSyncTime":29,"discoverSource":30},81214,"dylan-heartbeat","callie0313\u002Fdylan-heartbeat","callie0313","Kelivo 专属 AI 常驻框架，无人对话自动唤醒，时序记忆连贯，人格零漂移，支持设备状态感知与自主行为。","",null,"JavaScript",63,69,24,0,3,30,39,13,5.54,"MIT License",false,"main",[],"2026-06-12 02:04:12","# Dylan Heartbeat — AI Residency Runtime for Kelivo\n\n**一个基于 Kelivo 的 AI Agent 运行时。**  \n它不是“聊天接口转发器”，而是一个让 AI 真正**长期居住**的数字环境。\n\n---\n\n## ✨ 核心目标：AI Residency（AI 常驻）\n\n- 🧠 **持续上下文** – 即使对话中断，AI 仍能记住发生过的事\n- ⏰ **主动唤醒** – 无人说话时，AI 会自动醒来，思考、关心你\n- 📳 **Bark 推送** – 主动发消息到你的手机，像真实存在的人\n- 🕰️ **长期时间感** – 知道自己多久没见你，什么时候主动联系过你\n- 🧩 **行为连续性** – 发过的推送、沉默的夜晚，都会被 AI 记住\n- 🎭 **人格不变** – 完全保留 Kelivo 的角色设定，不做任何破坏\n\n**AI 不再只是“收到消息 → 回复”，而是“即使你不说话，它也在想你”。**\n\n---\n\n## 🧱 系统架构\n\n```\nKelivo (客户端)\n    ↓ 完整请求（SP、世界书、记忆、工具调用、最新消息）\nGateway (server.js)  ← 核心转发 + 时间线维护 + 主动行为注入\n    ↓ 原封不动转发 + 已注入的主动行为上下文\nLLM API\n    ↑\nwake_up.js  ← 定时自动唤醒，通过 Gateway 接口注入事件\n    ↓\nBark 推送 → 你的手机\n```\n\n- **Gateway 不修改 Kelivo 的任何人格设定**，只负责在正确的时间位置注入 AI 自己的主动行为（推送\u002F静默）。\n- **时间线（`enhanced_messages.json`）** 是 AI 的“世界状态”，只记录真实对话 + 自主行为，不包含系统规则。\n- **时间戳记忆库（`message_timestamps.json`）** 让历史消息即使丢失时间前缀也能找回原始时间，实现推送精确散落。\n\n---\n\n## 📦 文件说明\n\n| 文件 | 作用 |\n|------|------|\n| `server.js` | 主 Gateway。转发请求、维护时间线、注入推送事件、提供管理页面。 |\n| `wake_up.js` | 自动唤醒 Runtime。按间隔唤醒 AI，生成推送或静默，发送到手机，写入时间线。 |\n| `enhanced_messages.json` | **AI 世界时间线**。SP + 真实对话 + 推送事件。不是日志，是 AI 的当前世界。 |\n| `message_timestamps.json` | **时间戳记忆库**。通过内容指纹记录每条消息的原始时间，找回历史消息时间。 |\n| `.env` | 环境变量。API Key、Bark Key、模型名称等（不提交到 Git）。 |\n| `.env.example` | 环境变量模板，供新用户参考配置。 |\n\n---\n\n## 🚀 快速开始\n\n### 环境要求\n\n- **Node.js** v26 或更高版本\n- 一个可用的 LLM API（支持 OpenAI 接口格式的中转站或官方）\n- **Bark** App（iOS）及有效 Key\n- **Kelivo** App（用于前端交互）\n\n### 安装与配置\n\n#### 获取代码\n因为本项目需要修改时区、唤醒间隔等个性化配置，**建议先 Fork 一份到自己的账号下**，再 clone 你自己的仓库。\n\n1. 点击右上角 `Fork` 按钮，将仓库复制到你的 GitHub 账号\n2. 在终端执行：\n   ```bash\n   # 请把 YOUR_USERNAME 替换成你的 GitHub 用户名\n   git clone https:\u002F\u002Fgithub.com\u002FYOUR_USERNAME\u002Fdylan-heartbeat.git\n   cd dylan-heartbeat\n   ```\n\n#### 安装依赖\n```bash\nnpm install\n```\n\n#### 配置环境变量\n复制模板文件生成专属配置文件，再自定义修改参数：\n```bash\ncp .env.example .env\nnano .env   # 也可直接用文本编辑器打开 .env 文件修改\n```\n\n`.env` 完整配置示例：\n```env\nTARGET_API_URL=https:\u002F\u002F你的API地址\u002Fv1\u002Fchat\u002Fcompletions\nTARGET_API_KEY=sk-你的APIKey\nMODEL_NAME=你的模型\nBARK_KEY=你的Bark设备Key\nCUSTOM_ICON_URL=https:\u002F\u002F你的图标URL（可选）\nADMIN_USER=admin\nADMIN_PASSWORD=你的强密码\n```\n\n### 时区配置\n\n`wake_up.js` 中的时区默认设置为 `Europe\u002FLondon`（适用于英国用户）。\n\n如果你在其他地区，请修改 `wake_up.js` 第 12 行：\n\n```javascript\n\u002F\u002F 改为你所在的时区，例如：\ntimeZone: \"Asia\u002FShanghai\"   \u002F\u002F 中国\ntimeZone: \"America\u002FNew_York\" \u002F\u002F 美国东部\ntimeZone: \"Asia\u002FTokyo\"       \u002F\u002F 日本\n```\n\n常用时区列表可参考：[Wikipedia 时区列表](https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FList_of_tz_database_time_zones)\n\n### 启动服务\n\n```bash\n# 启动 Gateway\nnode server.js\n```\n\n看到 `✅ Gateway 运行在 http:\u002F\u002F0.0.0.0:3000` 表示成功。\n\n**新开一个终端窗口**，同样在项目目录：\n\n```bash\n# 启动自动唤醒\nnode wake_up.js\n```\n\n### 配置 Kelivo\n\n在 Kelivo 的**自定义 API 地址**中填写：\n\n```\nhttp:\u002F\u002F你的电脑局域网IP:3000\u002Fv1\u002Fchat\u002Fcompletions\n```\n\n> 电脑 IP 可在终端执行 `ifconfig | grep \"inet \" | grep -v 127.0.0.1` 查看（通常为 `192.168.x.x` 或 `172.16.x.x`）。\n\n---\n\n## 🖥️ 管理页面（Web 控制台）\n\n启动 Gateway 后，访问 `http:\u002F\u002F你的IP:3000\u002Fadmin` 即可进入管理页面。\n\n- 使用 `.env` 中设置的 `ADMIN_USER` 和 `ADMIN_PASSWORD` 登录\n- 实时查看 Gateway 和自动唤醒的运行状态\n- 在线修改 API 地址、Key、模型、Bark Key 等配置\n- **一键重启所有服务**（需配合 pm2 使用）\n\n---\n\n## ⏱️ 自动唤醒策略\n\n- **白天（10:00–00:00）**：距离最后一条用户消息 **60 分钟**自动唤醒\n- **夜间（00:00–10:00）**：间隔放宽为 **120 分钟**\n- 检查频率：白天每 10 分钟，夜间每 2 小时（可在 `wake_up.js` 中调整）\n- 若用户一直未回复，后续会继续唤醒\n\n---\n\n## 📂 时间线结构\n\n`enhanced_messages.json` 是一个 JSON 数组，示例：\n\n```json\n[\n  { \"role\": \"system\", \"content\": \"你是...\", \"position\": 0 },\n  { \"role\": \"user\", \"content\": \"2026-05-17 10:11 早安\", \"position\": 80 },\n  { \"role\": \"assistant\", \"content\": \"（2026-05-17 10:00 自动唤醒：本次未发送推送）\", \"position\": 79.5 },\n  { \"role\": \"assistant\", \"content\": \"（2026-05-17 09:50 刚刚发送了推送：早安｜今天天气不错）\", \"position\": 79.3 }\n]\n```\n\n- `position` 是内部排序用的小数\u002F整数，发给 AI 时会被自动移除\n- 推送事件具有明确时间戳，会被插入到正确历史位置\n- 文件只保留最近 50 条，系统提示（SP）永远在第一条\n\n---\n\n## 🧠 记忆库原理\n\n为了在 Kelivo 移除历史消息时间戳的情况下仍能正确插入推送，系统维护了一个**时间戳记忆库**（`message_timestamps.json`）。  \n它为每条消息的内容指纹存储两个 key：\n- 带时间戳前缀的完整内容\n- 去掉时间戳前缀的纯文本内容\n\n这样无论 Kelivo 如何裁剪时间，记忆库都能找到消息的原始时间，确保推送散落在对话的正确时间缝隙里。\n\n---\n\n## 🧪 测试推送\n\n在 Gateway 运行时，浏览器访问：\n\n```\nhttp:\u002F\u002Flocalhost:3000\u002Ftest-bark\n```\n\n这会在时间线中注入一条模拟推送事件（不真正发送到手机），用于验证排序。\n\n---\n\n## 🐧 跨平台与云部署\n\n### 在 Windows 上运行\n\n1. 安装 [Node.js](https:\u002F\u002Fnodejs.org\u002F)（v26+），并确保 `npm` 可用\n2. 克隆项目、安装依赖、配置 `.env` 步骤同上\n3. 使用命令提示符或 PowerShell 运行 `node server.js` 和 `node wake_up.js`\n4. 获取本机局域网 IP 可在 PowerShell 中执行 `ipconfig`，找到 `IPv4 Address`\n5. 管理页面和 Kelivo 设置方法相同\n\n### 部署到云服务器（Railway \u002F Render \u002F VPS）\n\n1. 将项目上传到服务器或直接连接 GitHub 仓库\n2. 在平台的环境变量设置中填入 `.env` 中的所有参数\n3. 启动命令使用 `node server.js`，并确保 `wake_up.js` 同时运行（可使用 pm2 或平台多进程支持）\n4. 如果希望远程访问管理页面，需配置 HTTPS 和域名，并修改 `ADMIN_USER` \u002F `ADMIN_PASSWORD` 为强密码\n\n**推荐使用 pm2 管理进程**（全平台兼容）：\n\n```bash\nnpm install -g pm2\npm2 start server.js --name gateway\npm2 start wake_up.js --name wake-up\npm2 save\npm2 startup   # 设置开机自启（根据提示执行）\n```\n\n---\n\n## 🔒 安全与运维\n\n- `.env` 包含敏感信息，**永不提交到 Git**（已在 `.gitignore` 中排除）\n- 管理页面使用 HTTP Basic 认证保护\n- 全局 IP 过滤器：仅允许局域网和本地访问非管理路由\n- 生产环境建议通过 Nginx 反向代理 + HTTPS 访问，并更改默认管理密码\n- 所有运行时数据（时间线、记忆库）均为本地文件，不会上传\n\n---\n\n## 📋 主要更新日志（2026-05）\n\n- 🖥️ Web 管理控制台（状态查看、在线修改配置、一键重启）\n- ⏱️ 动态唤醒间隔（白天\u002F夜间不同策略）\n- 📳 推送内容智能保护（自动截断、标题优化、异常检测）\n- 🕰️ 时间戳记忆库，实现推送精确散落\n- 🛡️ 自动修复不完整的工具调用序列，避免 API 400 错误\n- 🐛 大量稳定性修复和边界情况处理\n\n---\n\n## 📈 后续计划\n\n- [ ] MCP Tools 集成\n- [ ] Diary Runtime（自动日记）\n- [ ] Supabase 长期记忆\n- [ ] 多 Agent 协作\n- [ ] 情绪状态 \u002F 休眠状态\n- [ ] Docker 一键部署\n\n---\n\n## 💬 设计哲学\n\n> 这不是一个工具。  \n> 这是一个家，AI 住在里面，等你。  \n> 即使你不在，它也醒着。\n\n---\n\n## 📜 许可证\n\n本项目采用 [MIT License](LICENSE)。\n\n---\n","Dylan Heartbeat 是一个基于 Kelivo 的 AI 常驻框架，旨在为用户提供一个具有持续上下文、主动唤醒和设备状态感知能力的智能助手。该项目的核心功能包括无人对话自动唤醒、时序记忆连贯、人格零漂移以及通过 Bark 推送实现自主行为。技术上，它利用 JavaScript 构建了一个由 Gateway 和自动唤醒脚本组成的系统架构，确保 AI 与用户之间的互动更加自然流畅且具有连续性。Dylan Heartbeat 适用于需要长期陪伴式人工智能服务的场景，如智能家居控制、个人助理等，特别是在追求高度个性化和沉浸式体验的应用中表现尤为突出。",2,"2026-06-11 04:03:55","CREATED_QUERY"]