pi-durable-assistant
Health Gecti
- License — License: MIT
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Community trust — 23 GitHub stars
Code Basarisiz
- process.env — Environment variable access in lib/agent.mjs
- exec() — Shell command execution in lib/attachments.mjs
- process.env — Environment variable access in lib/knowledge.mjs
- process.env — Environment variable access in lib/v3.mjs
- network request — Outbound network request in lib/v3.mjs
Permissions Gecti
- Permissions — No dangerous permissions requested
Bu listing icin henuz AI raporu yok.
可自托管的持久化个人 Agent:进程重启后恢复任务,支持子 Agent、定时计划、长期记忆、网页界面与微信通道
Pi Durable Assistant
可自托管的持久化 AI Agent(Durable AI Assistant):基于 Pi Durable 构建,支持进程崩溃后恢复任务、长期后台执行、Subagents、多会话 Web UI、定时任务和可选的微信 iLink 接入。
Self-hosted AI agent with crash recovery, durable workflows, background subagents, scheduled tasks, SQLite persistence, a browser UI and an optional WeChat bridge. English README
项目状态:个人单用户项目 / 可体验的实验性实现,不是 Pi Durable 官方产品。 当前
main包含 v3 任务中心、网页附件、微信适配、需批准的跨会话记忆,以及只读笔记检索。生产环境请自行做好 HTTPS、访问控制和 SQLite 备份。

为什么做这个项目
普通聊天机器人在进程退出后往往丢失正在执行的工作。这个项目把 Pi Durable 的任务、会话和 Document 持久化机制封装为一个可以打开浏览器实际使用的个人 Agent。可在任务进行中重启进程,再查看恢复后的执行结果;同时保留 SQLite 中的会话与任务状态。
核心技术:Pi Durable 1.1.0 / Node.js 22 / SQLite / 原生 JavaScript + SSE / Docker Compose。不需要前端构建或独立数据库服务。
已实现的功能
| 功能 | 当前 main 的行为 |
|---|---|
| Durable Agent / 断点恢复 | 检查点、SQLite 持久化、进程重启后恢复可恢复的任务 |
| Web UI / 多会话 | 浏览器聊天、多会话、Fork、SSE 状态同步、Token 用量展示 |
| 前台与后台 Subagents | delegate / delegate_background,后台任务可查看、停止和恢复 |
| 计划与提醒 | 一次性或按固定分钟间隔重复的任务;可暂停/恢复/取消 |
| 持久记事本 | todo / memo,保存任务笔记 |
| 网页附件 | 图片 PNG/JPEG/WebP/GIF 和 UTF-8 文本、代码文件(有限制;见使用说明) |
| 主动通知 | 可选通用 Webhook / 飞书文本机器人;主分支目前为尽力发送 |
| 微信 iLink | 可选 wx-bot 容器,文字与语音转写文字收发;其他媒体不解析 |
| 导出 | 当前会话用户与助手的可见文字导出为 Markdown |
| 长期记忆 | 助手用 propose_memory 提交候选;任务中心批准后,之后的会话都能看到。直接写下的事实立即生效。只存在本机 SQLite |
| 技能 | 已批准技能只在提示里放名称和触发条件;助手用 read_skill 再读全文。新技能需批准 |
| 笔记检索 | 配置 OBSIDIAN_ROOT 后只读检索白名单笔记,回答带来源路径和行号。不写回 Obsidian |
| 会话列表 | 左侧可在「当前」和「归档」之间切换。归档会收起对话,并停掉未完成的提醒、计划和后台任务。删除只从菜单拿掉,本机记录还在。微信通道正在使用的会话不能归档或删除 |
3 分钟本地体验(不需要 API Key)
需要 Node.js ≥ 22.13、npm 和 Git:
git clone https://github.com/xiaomoBoy/pi-durable-assistant.git
cd pi-durable-assistant
npm ci
npm run check
LLM_API=faux npm run dev
浏览器访问 http://127.0.0.1:3000,创建会话并提交一条消息;打开右下角「任务中心」可以创建计划任务或后台子 Agent。
faux 是本地固定模拟剧本,只用于体验持久化、UI 和恢复机制;它不是通用 AI 模型,不会根据你的自然语言完成真实研究。完整上手路径见 快速开始与验收。
接入真实大模型
cp .env.example .env
# 用编辑器填写 .env 的 LLM_API、LLM_BASE_URL、LLM_API_KEY、LLM_MODEL
set -a
. ./.env
set +a
npm run dev
支持 openai-completions、openai-responses 和 anthropic-messages API 类型。兼容性取决于实际模型/服务商;模型费用由外部服务商或中转平台收取。请查看 配置说明 了解环境变量、安全提醒和零配置模式。
不要把 .env、API Key、微信会话凭据提交到仓库或截图中。 如果只是看演示,使用 LLM_API=faux,不需要填写密钥。
Docker / VPS 部署
cp .env.example .env
# 至少配置强密码 DEMO_PASSWORD 和实际模型信息
docker compose up -d --build
docker compose ps
docker compose logs --tail=100 pi-durable-assistant
默认只监听宿主机 127.0.0.1:3300,而非公网地址;生产部署应由 HTTPS 反向代理提供外部访问,并保留 HTTP Basic Auth(用户名 demo)。请在升级前备份 Docker 数据卷,不要执行 docker compose down -v。
按顺序阅读 部署与备份注意事项 和 故障排查。若需要微信扫码,参见 微信 iLink 接入,通过 --profile wechat 启动第二个容器。
不想自己准备服务器?可以试试 Cloudflare 版 Pi Durable Edge:跑在 Workers 和 Durable Objects 上,提供一键部署按钮。它是独立维护的实验版,目前只有聊天和定时提醒,功能少于本项目。
常用操作和能力边界
持久计划任务: 在任务中心填写任务内容、首次延迟分钟数和重复间隔;0 表示单次执行,1440 表示每隔 24 小时。这不是按时区/夏令时校准的每天某时 Cron。关闭浏览器不会结束后台任务,但没有配置通知渠道就不会主动发手机消息。
后台子 Agent: 在任务中心提交独立任务,回到主会话后可继续聊天,完成时自动报告结果;也可以用 delegate_background 工具。前台 delegate 则会等待子 Agent 完成。
附件: 网页单次最多 5 个;单张图片最多 5 MiB,文本文件最多 200 KiB,总量最多 10 MiB。支持网页端图片与 UTF-8 文本/代码文件;微信图片、视频和文件暂不具备真实解析能力。附件内容仍通过模型请求传输,请不要上传不希望发送给模型服务商的敏感数据。
通知: NOTIFY_MODE=errors|all|off;errors 只发明确失败的后台任务通知,all 才包含提醒和成功结果。当前主分支的通用 Webhook/飞书投递是尽力而为;网络故障可能丢消息。微信另有独立持久发送队列。详细配置见 配置说明。
文档导航
| 想做什么 | 阅读 |
|---|---|
| 直接跑起来并确认功能正常 | 快速开始与验收 |
查看所有 .env 项和模型/API 接法 |
配置说明 |
| 在 Docker / VPS 上运行及保护数据 | 部署与备份注意事项 |
| 扫码连接微信、处理 iLink 问题 | 微信接入手册 |
| 处理启动失败、权限、模型与消息问题 | 故障排查 |
| 理解 v3 Durable 任务架构与 API | v3 设计与验收记录 |
| 了解正在规划的知识库能力 | v4 功能需求 |
| 提升 GitHub 站内搜索与项目展示 | GitHub Discoverability / SEO 清单 |
| 项目架构与历史设计说明 | SPEC.md |
技术结构
server.mjs:HTTP API、鉴权、SSE、静态文件与消息处理。lib/agent.mjs:Pi Durable Harness、模型与 Agent 工具。lib/v3.mjs:周期任务、后台 Subagent、管理命令和可选通知。lib/personal.mjs:跨会话记忆、技能候选和提示注入。lib/knowledge.mjs:Obsidian 白名单只读检索。lib/attachments.mjs:网页图片/文本附件的校验与转换。lib/wechat.mjs:微信通道的会话绑定和消息持久化。public/index.html+public/app.js+public/style.css:浏览器聊天 UI。public/v3.js:任务中心抽屉,不需要前端打包工具。tests/:Node 测试、HTTP 集成、模拟断点恢复和微信通道回归。
npm ci
npm run check
npm test
CI 使用本地 faux 模型和模拟通道,不等于真实微信扫码、生产模型、真实浏览器和 VPS 的端到端验收。若要反馈问题,请附操作系统、Node/Docker 版本、复现步骤及已脱敏的错误日志。
长期记忆和技能只存在本机 SQLite,不会写回 Obsidian。从菜单删除会话只去掉列表项,本机记录还在。归档会停掉该会话未完成的提醒、计划和后台任务。知识库默认只开放三个内容目录,财务、个人档案和服务器资产不在检索范围内。
许可证
MIT。本项目并非 Pi Durable、微信或任何模型服务商的官方发行版。
Yorumlar (0)
Yorum birakmak icin giris yap.
Yorum birakSonuc bulunamadi