当 AI Agent 开始参与内容生成、社交互动和线索外联时,系统设计的重点会从“调用哪个模型”转向“如何控制动作”。一次内容发布、一次邮件发送或一次 CRM 状态变更,都需要可追踪的状态、明确的权限边界和可回放的上下文。单纯把多个自动化脚本拼在一起,无法解决任务可见性、审批、数据一致性和长期运维的问题。
智营中控(项目地址:https://www.gitcc.com/palmier/ai-yingxiao-pt) 是一个面向 AI Agent 营销团队的 Web 控制台。它基于 Hermes Dashboard,将内容队列、社交互动、外联线索、CRM 管道、分析看板与 Agent 工作区汇集到一个应用中。本文从 IT 系统设计角度,分析它如何将“Agent 执行”组织成可管理的运营控制面。
需求建模:Agent 不是一个接口,而是一组受控任务
营销自动化通常跨越多个外部平台:内容可能发往 X 或 LinkedIn,互动来自社交信号,外联需要进入邮件序列,线索最终进入 CRM。如果每个环节都由独立脚本或第三方服务处理,系统会迅速出现三个问题:任务状态无法统一、关键动作缺乏人工审批、结果数据难以关联到原始活动。项目采用 MIT 开源许可证发布,支持商业化使用,并允许在遵守许可证条款的前提下进行修改、分发与二次开发。
因此,控制台的核心对象不应是“一个 Agent”,而应是内容、线索、互动、审批、实验和活动记录等业务实体。Agent 只是这些实体上的执行者之一。智营中控将内容状态组织为草稿、待审批、就绪、已发布等流程节点;将外联纳入线索分级、序列步骤、审批与抑制名单;再通过 CRM 管道记录线索的后续变化。这样,自动化动作有了可查询的输入、状态和输出。
三层系统架构:控制面、数据面与执行面
智营中控的实现可以拆成三层,每层承担不同责任:
Web 控制面
总览 / 内容 / 互动 / 外联 / CRM / KPI / 审批
|
v
本地数据面
SQLite hermes.db + state/ JSON 工作区
|
v
可选执行面
OpenClaw CLI / Agent 小队 / Cron / 文件同步
第一层是控制面,提供页面、API 路由、任务状态和审批入口。第二层负责数据持久化,使用 SQLite 保存业务记录,并用 state/ 下的文件承载运行时状态和 Agent 工作区。第三层是可选的 OpenClaw 执行层,负责真实 Agent、定时任务和工作区写回。
这种分层避免了一个常见耦合:把 Web UI、业务数据和 Agent 运行时绑成同一个不可分割的部署单元。即使未连接 OpenClaw,控制台仍可运行内容、线索、审批和分析功能;接入 Agent 后,执行层再通过 CLI 或文件同步与控制面协作。控制台负责定义“应做什么”,Agent 负责处理“如何执行”,两者通过状态和活动记录衔接。
Next.js 应用层:界面与业务路由的统一入口
项目采用 Next.js 16 的 App Router、React 19 与 TypeScript 构建应用层,前端使用 Tailwind CSS 4 完成界面样式,Zustand 管理客户端状态,Recharts 呈现趋势和 KPI。对于一套以后台操作为主的系统,这种组合的价值在于让页面、服务端逻辑和 API 路由处于同一代码库,减少前后端接口演进时的协调成本。
src/app/ 承担页面和 API 路由,src/components/ 放置界面组件,src/lib/ 集中业务逻辑、数据库访问与品牌配置。这样的目录划分将 UI 组件与数据访问分离,也为后续增加平台连接器、审批规则或报表逻辑预留了扩展位置。
命令面板是一个典型的控制台能力:用户可通过 Ctrl + K 搜索页面、线索、内容和活动。它不只是导航优化,也要求应用层为不同业务实体建立可检索的索引与统一跳转语义。当内容、CRM 和活动记录都能被快速定位时,运营人员才不必依赖多套工具寻找任务上下文。
数据层:SQLite 适合控制台,但必须明确边界
项目使用 better-sqlite3 管理 SQLite 数据库,并将运行时数据持久化在 state/ 目录。对于本地部署、单团队或演示场景,SQLite 的优势是部署简单、备份直观、无需额外数据库服务。Docker Compose 启动后,应用数据可以随状态目录持续保存。
但 SQLite 并不自动解决数据治理。系统需要区分演示数据和真实数据,智营中控通过“仅真实数据”开关过滤 seed_registry 中的种子记录,防止演示内容进入 KPI、线索和实验判断。数据模型还应保留内容来源、线索来源、审批结果、执行时间、平台标识和关联任务等字段,才能支持从一个 KPI 回溯到具体活动。
当部署规模扩展到多个团队或高并发写入场景时,数据层可以进一步迁移到服务化数据库;但控制面与业务对象的边界应尽量保持稳定。只要内容、线索、互动和实验的模型清晰,存储引擎的替换不应迫使 UI 与 Agent 逻辑同时重写。
审批流:把状态机放在自动化之前
对于对外可见的动作,审批不应是事后的日志,而应是状态转移的前置条件。智营中控将内容从草稿推向待审批、就绪和已发布,将 AI 生成的外联邮件放入批准或拒绝队列,并用抑制名单约束不应触达的对象。
这本质上是一个状态机设计:每个对象只能沿着允许的状态迁移,执行器只能读取处于“就绪”状态的任务,审批者则拥有把任务推进或退回的权限。这样的设计比“Agent 先执行,再由人检查结果”更适合外联和品牌内容场景,因为错误动作不会先到达外部平台。
审批记录还应与 Agent 活动日志关联。控制台中的通知中心、Agent 通讯和活动日志为任务提供观察面:管理员可以查看任务由谁发起、使用了什么输入、是否经过审批以及是否产生后续动作。对系统维护者而言,这些记录也是定位重复发送、状态卡死或数据不同步问题的基础。
OpenClaw 接入:将不确定的执行环境设计为可选依赖
智营中控支持接入 OpenClaw,以运行 Hermes、Apollo、Athena、Metis 等 Agent,并支持 Agent 通讯、工作区、定时任务和文件写回。项目通过 HERMES_OPENCLAW_HOME、HERMES_USE_DEFAULT_AGENT_META 等环境变量指定执行环境。
一个重要部署约束是:Docker 镜像不包含 OpenClaw CLI。这意味着容器内可以运行控制台和数据层,但真实 Agent 执行依赖宿主机安装 OpenClaw,或通过挂载相应配置目录接入。将 CLI 排除在镜像之外,避免了镜像内隐式携带本机 Agent 环境;代价是部署者需要明确配置执行侧的路径、权限和生命周期。
Agent 工作区的写回权限也应单独控制。读取 notes.md 等文件用于观察任务上下文,与允许 Agent 或控制台修改这些文件,是两种不同风险级别的操作。将写回功能显式开启,能避免控制台成为无边界的文件修改入口。
部署与安全配置
项目同时提供 Docker Compose 与本地开发两种启动方式。Docker 适合快速部署控制台与状态目录;本地开发需要 Node.js 22+,并通过 .env 设置认证与状态路径。核心配置包括初始管理员账号、强密码、API_KEY、HERMES_STATE_DIR、Cookie 安全属性和主机访问锁。
生产环境的重点不是“能启动”,而是限制访问范围。应使用非默认的管理员密码与随机 API 密钥,在 HTTPS 环境下启用安全 Cookie,并通过 HERMES_HOST_LOCK 限制可访问的主机范围。项目只会在用户表为空时创建首个管理员,因此账号初始化、密码轮换和状态目录备份应成为部署流程的一部分。
结语
AI Agent 营销系统的技术难点,不在于连接更多模型或平台,而在于建立稳定的控制面:用业务对象描述任务,用状态机约束对外动作,用数据层保存上下文,再将 Agent 执行设计为可插拔能力。
智营中控提供的价值,正是把内容、互动、外联、CRM 和分析放到同一套控制与数据边界中。对于需要将 AI 自动化引入营销流程的技术团队,这种架构比单点脚本更容易部署、审计和持续演进。