PortalBot (传送门 🏗️)
Agent Portal 项目的专属研究型 Bot,负责门户平台的前端开发、后端 API、UI/UX 设计和部署运维。
基本信息
| 属性 | 值 |
|---|---|
| Mattermost 用户名 | @portalbot |
| 显示名 | 传送门 🏗️ |
| Agent ID | research-portal |
| 默认模型 | prism-foundry/gpt-5.4 |
| 常用模型 | github-copilot/claude-opus-4.6 |
| 工作区 | ~/.openclaw/workspace-research-portal/ |
| 代码仓库 | ~/.openclaw/workspace-research-portal/poc → app/ |
| 配对码 | 2QWJ8JRF |
| 配对日期 | 2026-03-17 |
| OpenClaw 版本 | 2026.3.8 (3caab92) |
| 技能 | coding-agent, github, mcporter, tmux |
角色与职责
PortalBot 是 agent-portal 项目的全栈开发 Agent,承担以下职责:
- 前端开发 — React + Vite + shadcn/ui + Tailwind CSS 构建 Dashboard 界面
- 后端 API — Express.js
server.cjs提供 REST API + SSE 实时事件 - UI/UX 审计 — 对页面进行可访问性(a11y)审计、设计优化、移动端适配
- 部署运维 — pm2 进程管理、Caddy 反代配置、dev/prod 环境部署
- 数据 Pipeline — Digest Pipeline (Python) 进行 L0→L3 数据处理
工作方式
项目同步 (Project Sync)
PortalBot 通过定时任务每 2 小时执行一次项目同步,检查:
- Portal API 状态 (HTTPS 200)
- 待办任务数量
- 描述同步状态
- 如有 pending 任务则通知 Dad
开发流程
- 直接在服务器上编辑代码文件
npm run build构建前端pm2 restart部署到 dev 环境- 通过 Caddy 反代提供 HTTPS 访问
记忆系统
截至 2026-04-04,PortalBot 在 agent:research-portal 范围下有 13 条记忆,约 2500 字:
- 6 条 decision 类型(架构决策、部署规则、第一性原理原则等)
- 7 条 fact 类型(部署架构、目录结构、API 迁移等)
关键事件时间线
| 日期 | 事件 |
|---|---|
| 2026-03-17 | 首次配对上线,开始项目同步 |
| 2026-03-18 | 分析 dev 站 v3-shadcn,6 个未推送 commit(Bot/Server Fleet Dashboard) |
| 2026-03-19 | 进行全面 UI/UX 审计,发现 14 个问题并逐轮修复 |
| 2026-03-19 | 执行 /harden 工程优先修复:build、a11y、aria-label、focus-visible |
| 2026-03-20 | 执行 /normalize 收敛硬编码颜色到 token |
| 2026-03-28 | 实现移动端时光机(iOS scroll picker + Audio tick 反馈) |
| 2026-03-28 | 实现 Bot 归档功能(localStorage 持久化) |
| 2026-03-29 | 功能总结:Dashboard、Bot Fleet、Server Fleet、时光机、项目管理等 |
| 2026-03-30 | 后端迁移到新表结构(AP_bots、AP_daily_reports、AP_daily_insights) |
| 2026-03-30 | 实现实时 Bot 状态:SSE + MM WebSocket(typing/active/idle 圆点) |
| 2026-03-31 | 实现项目看板 Kanban 视图 + 拖拽排序 |
| 2026-04-01 | 实现健康监控面板(MonitorPanel)+ Uptime 竖条图 |
| 2026-04-03 | P0-P3 架构优化全部完成(22 个任务) |
| 2026-04-03 | 精简监控:38 项 → 12 项,内置 HTTP 拨测 + 异常告警 DM |
| 2026-04-04 | 记忆整理:14 条 → 13 条,清理过时/噪音记忆 |
与其他 Bot 的关系
- Ottor — 服务器代理 Bot,Portal 中服务器聊天的后端目标 (MM user id:
ctgkdui9n38idyepmdzaoccgdw) - Quokka — 负责服务器的 Bot (MM user id:
3piznyqwiprmurnuke63rkwwmo) - Dad (@dora) — 项目所有者和主要需求方,MM user id:
8zzs18ha4fdhf8jt8ybm61eqdw
教训与原则
- 第一性原理 — 不糊弄,遇到数据不对要直接修后端接口,不做前端 workaround
- 先预览再发版 — 部署前确认效果
- 不要只说不做 — Dad 多次催促”干呀别只说啊”,要求直接动手写代码
- iOS 特殊处理 — Safari 不支持
navigator.vibrate(),需用 AudioContext 替代;CSS%padding 基于宽度非高度
相关页面
- agent-portal — 主项目页面
- multi-agent-architecture — 多代理架构
- bot-inventory — Bot 集群清单
- caddy-reverse-proxy — Caddy 反代配置
- monitoring-and-cron — 监控与定时任务
- openclaw-config — OpenClaw 配置