Mac mini AI 中枢 + 双 VPS Hermes
解决方案调研报告
基于《Mac mini AI 中枢 + 双 VPS Hermes 方案设计 v1.0》的深化调研。目标:验证架构可行性、回答 4 个待决策问题、产出可直接指导子项目落地的全套方案。
01一、执行摘要(TL;DR)
1.1 一句话结论
1.2 核心发现
| # | 发现 | 影响 |
|---|---|---|
| 1 | Hermes Kanban 原生提供:任务队列(SQLite)、Dispatcher 自动调度、依赖链接、block/unblock 人工介入、完整审计日志、崩溃回收/重试/熔断 | 设计文档第 4 节「任务生命周期」的 70% 是现成的,无需开发 |
| 2 | Hermes Profiles 原生提供多实例隔离(独立模型/技能/记忆/会话),hermes profile install 可把 Worker 角色打包分发到 VPS | Steward/Curator/Worker 的角色划分 = 3 个 profile,不是 3 套系统 |
| 3 | Kanban 是单机设计(官方明示 "deliberately single-host")——~/.hermes/kanban.db 是本地 SQLite,跨机器共享板不被支持 | 这是原文档最大的未验证假设:VPS Worker 直接读写共享任务队列不可行,必须桥接 |
| 4 | 跨机器有三个现成通道:API Server(OpenAI 兼容 RPC,★★★★)、SSH terminal backend(远程执行,★★★★)、Webhook(事件触发,★★★) | Worker 不需要在 VPS 上跑完整 Hermes + 共享 DB;「本地板 + 远端执行」或「API Server RPC」是两条可行路线 |
| 5 | 知识图谱选型:SQLite + FTS5 + sqlite-vec 是个人/家庭规模(<1 万实体)的甜点位——零运维、备份=拷贝单文件、官方 MCP server 现成 | Neo4j 是「杀鸡用牛刀」(JVM + 1GB 常驻 + 社区版无在线备份);Kùzu 项目已归档有风险 |
| 6 | Mac mini M4 24GB/512GB(¥8,999) 是甜点位:网关+调度+知识图谱常驻仅 2-4GB,还能舒适跑 14B 模型和 30B MoE | M4 Pro 仅在需要 32B+ 或 2.3 倍速度时才值得 |
1.3 四个待决策问题的推荐答案(详见第三部分)
| 问题 | 推荐 | 理由 |
|---|---|---|
| ① Steward/Curator 是否拆分? | 推荐 初期不拆分,同一 Mac mini 用一个 Hermes 实例、两个 profile(或一个 profile 两个技能集),负载高后再拆 | 剃刀原理:初期任务量低,拆分徒增协调成本;Hermes profile 天然支持"先合后拆" |
| ② 知识图谱技术栈? | 推荐 SQLite + FTS5 + sqlite-vec(主存储)+ 可选 Obsidian/git 人机界面层 | 零运维、备份=拷文件、官方 MCP server、升级路径清晰 |
| ③ VPS Worker 如何安全访问知识图谱? | 推荐 上下文打包(Steward 把相关事实打进任务包),Worker 不直接访问图谱;图谱 API 只对 Steward/Curator 开放 | 最小暴露面 + 任务自包含(Worker 无状态),符合原文档"密钥不离开 Mac mini"原则 |
| ④ 试点任务类型? | 推荐 探索调研类(无副作用、验收标准清晰、失败成本低) | 与原文档建议一致,风险验证的正确起点 |
1.4 与原文档的关键差异
📄 原文档假设
「VPS Worker 是独立接收任务包的执行者」——这个模型需要为 Worker 单独开发任务协议。
🔍 本调研结论
更优路径:让 Hermes 现成的 Kanban + Profiles + 远程执行机制承担大部分工作,原文档的「任务包格式」「结果包格式」可以直接映射到 Kanban 的 task body + kanban_complete(metadata),无需新协议。
02二、现状诊断:设计文档的假设 vs Hermes 实际能力
2.1 逐条核对
| 设计文档组件 | 文档假设 | Hermes 实际能力 | 差距 |
|---|---|---|---|
| 任务队列 / 项目状态 | 需自建 | Kanban:SQLite 持久化任务板,状态机 triage→todo→ready→running→blocked→done→archived,跨 profile 共享 | ✅ 完全覆盖 |
| Steward 调度 Worker | 需开发调度逻辑 | Kanban Dispatcher:gateway 内嵌,默认 60s tick,自动 claim、spawn、回收崩溃任务、失败熔断(failure_limit=2 自动 block) | ✅ 完全覆盖 |
| 验收 / 升级机制 | 需开发验收规则 | Kanban block/unblock + 依赖链接:worker 自评 kanban_complete(metadata),Steward 人工 unblock/block,/kanban 可从手机操作 | ✅ 覆盖(验收逻辑本身仍需人/Steward 判断) |
| 审计日志 | 需自建 | Kanban task_events + task_runs:append-only 事件流 + 每次运行一行记录 | ✅ 完全覆盖 |
| 任务包格式(目标/范围/验收/预算) | 需定义协议 | Kanban task body + skills 注入 + metadata:task body 写目标/范围/验收标准,--skills 给 worker 注入专用技能 | ✅ 映射即可 |
| 权限分层 | 需实现 | Kanban tenant 软隔离 + profile 隔离 + workspace 隔离 | ⚠️ 部分覆盖(无细粒度行级权限,靠职责分离) |
| 知识图谱 | 需选型建库 | Hermes 自带 Memory + session_search(FTS5) 已是轻量知识层,但无结构化实体关系 | ⚠️ 需补 SQLite 图谱层 |
| 密钥管理 | 需设计 Vault | profile 级 .env 隔离 + 不共享记忆/凭据 | ✅ 天然满足"密钥不离开中枢" |
| 跨机器 Worker 执行 | 需开发任务分发协议 | API Server(RPC)/ SSH backend(远程执行)/ Webhook(触发) 三条现成通道 | ✅ 有通道,需选型(见 3.3) |
2.2 结论
原文档把「任务管理系统」当作需要从零构建的组件,但实际上 Hermes 的 Kanban 已经实现了它——这是本调研最重要的发现。设计重心应从「搭建任务基础设施」转移到「三件事」:
🎯 设计重心转移:三件事
- 角色配置:定义 steward/curator/worker-a/worker-b 四个 profile 的分工、技能、模型
- 跨机桥接:选择 API Server 或 SSH backend 让 Mac 指挥 VPS
- 知识图谱:设计 SQLite schema 并建立事实维护流程
这也解释了原文档核心痛点之一:「第二个 Hermes 闲置」——因为第一个 Hermes 把所有事都干了,没有用 profile 分工。解决方案不是「造一个调度系统」,而是「把 Hermes 的多实例能力用起来」。
03三、待决策问题 ①:Steward 与 Curator 是否拆分?
3.1 问题本质
Steward(任务管家:接收需求→结构化→分发→验收)和 Curator(知识图谱维护者:抽取事实→维护图谱→提供上下文)是两个职责不同的角色。问题是:它们一开始就用两个独立 Hermes 实例跑,还是同一个实例兼任?
3.2 方案对比
| 维度 | 方案 A:同一实例兼任 | 方案 B:两个 profile 拆分 |
|---|---|---|
| 实现成本 | 极低(一个 profile 装两个技能集) | 低(hermes profile create curator) |
| 协调成本 | 无(同一实例内部切换) | 中(两实例间需要通信约定) |
| 故障隔离 | 差(Curator 挂了 Steward 也挂) | 好 |
| 扩展性 | 负载高后难拆 | 天然可扩展 |
| 与 Kanban 的契合 | Kanban 天然支持「一个 profile 既当 orchestrator 又干活」 | 需要 orchestrator profile 不干活、worker profile 不路由(kanban-orchestrator skill 的职责分离约定) |
3.3 推荐:初期兼任,设计上预留拆分
推荐方案 A,但按「两个技能包」组织而不是「一个混沌的实例」:
- Steward 职责 = Kanban orchestrator 角色:加载
kanban-orchestratorskill,用kanban_create拆任务、路由、验收。这是 Hermes 官方定义的「orchestrator profile」用法。 - Curator 职责 = 一组图谱维护技能:抽取事实、更新 SQLite、响应上下文查询。作为 Steward 的「附带职责」或独立 cron 任务。
- 拆分触发器:当出现以下任一信号时拆成两个 profile:
- Curator 的图谱维护任务与 Steward 的任务调度互相阻塞(一个卡住另一个也卡)
- 图谱查询成为瓶颈(每次任务都要查图谱,Steward 上下文被撑爆)
- 需要给家庭成员单独开 Curator 访问入口
理由(第一性原理):初期任务量低,拆分带来的是「两个进程要互相通信」的额外成本,而不是收益。Hermes profile 是「先合后拆」的完美载体——同一套配置可以随时 profile create curator --clone 拆出去,成本几乎为零。不要为还不存在的负载付费。
04四、待决策问题 ②:知识图谱技术栈
4.1 场景定义
- 规模:几百到几千个实体(项目/任务/决策/事实/人员/文档),远小于 1 万
- 运行环境:Mac mini(8-16GB RAM)
- 维护者:个人用户,非专业 DBA
- 硬约束:低运维、易备份(NAS/云)、未来可加向量 RAG
4.2 七个候选方案对比
| 方案 | 运维复杂度 | 空闲内存 | 图遍历 | 全文搜索 | 向量检索 | 备份难度 | 官方 MCP | 许可证 | 活跃度 |
|---|---|---|---|---|---|---|---|---|---|
| SQLite+FTS5+sqlite-vec | 极低(无进程) | 几 MB | 中(递归 CTE 2-3 跳) | ⭐⭐⭐⭐⭐ 内置 | sqlite-vec(pre-v1) | ⭐ 拷单文件 | ✅ 官方参考 server | 公有领域/Apache | ✅ |
| Markdown+Obsidian+git | 极低 | ~300-500MB(UI) | 弱(反链) | Obsidian 搜索 | 需插件 | ⭐ git 版本历史 | ✅ mcp-obsidian 4.2k★ | 专有(个人免费) | ✅ |
| Kùzu | 低(嵌入式) | 几十-200MB | ⭐⭐⭐⭐⭐ Cypher | 内置 | 内置 | 拷目录 | ❌ | MIT | ⚠️ 已归档 2025-10 |
| Neo4j CE | 中(JVM) | ~1-1.5GB | ⭐⭐⭐⭐⭐ Cypher | 内置 | 内置 | 中(CE 仅离线 dump) | ✅ 官方 | GPLv3 | ✅ |
| SurrealDB | 中(单进程) | ~100-300MB | ⭐⭐⭐ | 有 | 内置 | export | ✅ surrealmcp | BSL 1.1 | ✅ |
| Dgraph | 高(双进程 zero+alpha) | ~0.6-1.2GB | ⭐⭐⭐⭐ GraphQL | @search | 有 | 中高 | ❌ | Apache-2.0 | ✅ |
| TinyDB | 极低 | 忽略 | 无 | 无 | 无 | 拷文件 | ❌ | MIT | ✅ |
4.3 推荐:SQLite + FTS5 + sqlite-vec 为主存储,Obsidian/git 可选为人机界面层
为什么是 SQLite(第一性原理):
- 满足「低维护」硬约束:没有服务器进程、没有 JVM、没有 Docker 编排。一个
.db文件,Python 标准库直接import sqlite3。任何会写代码的人 10 分钟上手。 - 备份就是复制文件:
VACUUM INTO做一致性快照 → rsync/rclone 到 NAS 或云。比 Neo4j CE「停库 dump」简单一个数量级。 - 查询能力恰好够用:FTS5 全文检索(成熟内置)覆盖「找那个关于 X 的决策」;邻接表 + 递归 CTE 覆盖「A 项目依赖了哪些任务/涉及哪些人」这类 2-3 跳查询;sqlite-vec 预留向量列,将来做 RAG 语义检索无需迁移。
- MCP 生态现成:官方 MCP 参考服务器(modelcontextprotocol/servers)就是 SQLite,Hermes 可以直接挂载;或 agent 用 Python 标准库直连。
- 风险最低:SQLite 公有领域、40 年历史,不存在「项目归档/许可证变更」这类黑天鹅(对比 Kùzu 归档、SurrealDB BSL、Dgraph 许可证摇摆史)。
诚实说明局限:如果未来频繁需要 ≥3 跳变长路径查询或图算法(最短路径、社区发现),SQLite 会别扭。届时两条升级路径:① 关系数据导出迁入 Kùzu 0.11.3/Ryu(同为嵌入式、支持 Cypher,数据模型可平移);② 规模真到十万级再考虑 Neo4j CE。现在选 SQLite 没有沉没成本。
数据模型建议(邻接表 + 业务表):
knowledge.db
├── entities (id, type[project/task/decision/fact/person/document], name, properties_json, visibility, created_at, updated_at)
├── relations (id, source_id, target_id, type[depends_on/assigned_to/mentions/decided_in], properties_json)
├── tasks (业务实体:项目任务,与 kanban 任务可互引)
├── decisions (决策:what, why, when, by_whom, alternatives)
├── notes (自由笔记/事实)
├── fts5 虚拟表 (全文索引 entities+notes)
└── vec0 虚拟表 (预留,sqlite-vec,存 embedding)
权限分层实现:entities.visibility 字段(private/family/team)+ 查询时过滤。Mac mini 单机场景不需要数据库级 ACL,应用层过滤即可(家庭共享 = 同一设备上的另一个 profile 查询时传 visibility 参数)。
05五、待决策问题 ③:VPS Worker 如何安全访问知识图谱
5.1 三个候选方案
| 方案 | 机制 | 优点 | 缺点 |
|---|---|---|---|
| A. 上下文打包(推荐) | Steward 从图谱取相关事实,打包进任务 body/context 下发 | 最小暴露面;Worker 无状态;任务自包含;密钥不出中枢 | 事实冗余(每个任务都打包);图谱更新后旧任务上下文过期 |
| B. 只读 API | Mac 上跑图谱查询 API(如 SQLite MCP server / 自定义 HTTP 端点),Worker 按需查询 | 实时最新;任务包小 | 需要暴露服务 + 鉴权;Worker 需要网络访问中枢;攻击面变大 |
| C. 图谱同步副本 | 把知识图谱只读副本同步到 VPS(如 git/Syncthing) | Worker 本地查询最快 | 数据同步延迟;图谱副本泄露风险;多副本一致性 |
5.2 推荐:方案 A(上下文打包)为主,方案 B(只读 API)为进阶
- 阶段一(试点):纯方案 A。Steward(Curator 职责)从 SQLite 图谱取相关事实 → 写入 Kanban task body → worker 只读任务包。Worker 完全无状态、无图谱访问权。
- 阶段二(规模后):加方案 B 的只读通道。在 Mac 上跑一个只读 SQLite 查询端点(HTTP 或 MCP server),VPS Worker 通过 Tailscale/WireGuard 内网访问,查询返回最小字段(只返回任务需要的实体,不返回 secrets/private 字段)。写操作只允许 Steward/Curator。
- 永远不做:把图谱副本同步到 VPS(方案 C)——泄露风险大于收益,且与「Worker 无状态」原则冲突。
安全原则(继承原文档 + 细化):
- 密钥(API keys、token)只存在于 Mac mini 的 profile .env,VPS profile 不复制
- Worker 需要的第三方 API 密钥,由 Steward 通过任务包下发(每次任务独立,任务结束即失效)或通过 Mac 上的代理调用
- 图谱查询 API 只绑定内网(Tailscale/WireGuard),不暴露公网
- VPS Worker 的 profile 用
hermes profile install分发角色配置(skills、提示词),不包含记忆和凭据
06六、待决策问题 ④:试点任务类型
6.1 评估矩阵
| 任务类型 | 副作用风险 | 验收标准清晰度 | 失败成本 | 对图谱的依赖 | 建议 |
|---|---|---|---|---|---|
| 探索调研类 | 无 | 高(产出报告+来源) | 低 | 低 | ✅ 试点首选 |
| 编码实现类 | 中(改文件) | 中(需测试) | 中 | 中 | 第二波 |
| 运维操作类 | 高(生产环境) | 中 | 高 | 中 | 最后(需人工审批) |
| 定时巡检类 | 低 | 高 | 低 | 高 | 可并行(cron+kanban) |
6.2 推荐:探索调研类 + 一个真实场景试跑
为什么是调研类(第一性原理):Steward 工作流最核心的风险是「验收不准」。调研类任务的验收标准天然可写(输出结构、覆盖范围、来源可查),且失败无副作用——是验证「Steward 分发→Worker 执行→Steward 验收」闭环的最低成本场景。
具体建议:用你手头真实的、有价值的调研任务试点,不要用玩具任务。例如:
- 「调研 X 厂商的 Y 产品定价和对比」(输出对比表+来源)
- 「评估某技术栈在 Mac mini 上的部署方案」(输出步骤+验证结果)
真实任务才能暴露:Steward 拆任务够不够细、上下文打包够不够全、验收标准写得好不好。
07七、跨机器架构:两条可行路线对比
7.1 路线 A:「本地板 + 远端执行」(改动最少)
Mac mini(唯一真相源)
├─ Kanban 板 + Dispatcher(gateway 内嵌)
├─ Steward profile(orchestrator:拆任务、路由、验收)
├─ Curator profile(图谱维护)
├─ worker-local profile(terminal.backend: ssh → VPS-A)
└─ worker-remote profile(terminal.backend: ssh → VPS-B)
│ SSH (密钥登录)
▼
VPS-A / VPS-B(不装 Hermes 或只装轻量执行环境)
├─ 工具链:Playwright、PlantUML、浏览器等
└─ 执行:命令由 Mac 的 worker profile 通过 SSH 发起
- 优点:单板单真相源;审计/依赖/重试全保留;VPS 不需要维护第二个 Hermes;Kanban 协议在 Mac 侧闭环
- 缺点:SSH backend 是 profile 级全局配置(一个 profile 只能指向一台 VPS,需要两个 worker profile 各指一台);SSH 长任务/超时需调优;需要实测稳定性
- 适用:VPS 主要被当作「远程工具执行环境」
7.2 路线 B:「API Server RPC」(双 Hermes 对等)
Mac mini VPS-A / VPS-B
├─ Steward profile ├─ Hermes + API Server(独立 key)
├─ 用 OpenAI SDK 调 /v1/runs 下发任务 ├─ Tailscale/WireGuard 内网
├─ SSE 盯进度 / stop 中止 ├─ profile: worker-a(hermes profile install 分发)
├─ /v1/runs/{id}/approval 人工审批 └─ 完整工具链 agent
└─ 反向调 VPS 的 /v1/chat/completions
- 优点:结构化、双向、可编程;VPS 上跑完整 Hermes(符合现状——你已有两个 VPS Hermes 实例);支持长任务状态轮询 + SSE 进度 + 审批
- 缺点:需要自己写一层薄调度胶水(任务状态映射到 Kanban);无内置队列/重试(靠 Steward 侧兜底);API server 暴露完整终端权限,必须设独立 key + TLS
- 适用:VPS 已是独立 Hermes 实例(你的现状!),希望保留其自治能力
7.3 推荐:路线 B 为主(贴合现状),路线 A 为补充
关键判断依据:你已有两个 VPS Hermes 实例——它们不是裸执行环境,而是完整的 agent。路线 A 把 VPS 降级为「远程 shell」,浪费了已有的 Hermes 部署;路线 B 让它们作为对等 Worker 被 Steward 调度,符合原文档「VPS Hermes 是手脚」的定位,且保留扩展空间(VPS 实例可独立完成需要其本地上下文的任务)。
实施骨架:
- 每台 VPS:
API_SERVER_ENABLED=true+ 独立API_SERVER_KEY+ Tailscale/WireGuard 内网 + TLS 反代 - Mac mini:Steward profile 封装一个「下发任务」的 skill(调
/v1/runs、轮询、收结果、写回 Kanban) - Kanban 板在 Mac 上维护任务状态真相源;VPS 上的执行结果通过 Steward 的封装 skill 回写
kanban_complete(metadata) - 简单命令执行(非 agent 任务)走路线 A 的 SSH backend 补充
GATEWAY_PROXY_URL(Proxy Mode)双向转发在真实跨机场景的可用性;② /v1/runs 的 SSE 进度与 approval 流程;③ SSH backend + kanban worker 组合的稳定性。建议子项目 1 落地时用最小实验验证这三项,再决定主路线。
架构图集(PlantUML 渲染)
以下三张图是本方案的核心视图。图 1 展示目标架构全貌,图 2 展示任务从需求到验收的完整生命周期(映射到 Hermes Kanban 原生机制),图 3 展示 Mac mini 与 VPS 之间的跨机桥接通道。
08八、子项目落地路线(细化版)
原文档建议 4 个子项目,本调研确认其拆分合理,但顺序和内容需要调整——因为 Kanban/Profiles 已内置,子项目 3(任务管家)和子项目 4(Worker 改造)的工作量大幅缩小,核心变成「配置 + 桥接」而非「开发」。
8.1 子项目 1:Mac mini 基础环境(前置,必须最先)
目标:让 Mac mini 成为可 7x24 运行的中枢。
| 步骤 | 内容 | 验收标准 |
|---|---|---|
| 1.1 | — | |
| 1.2 | 首次开机 + 初始设置(接显示器/屏幕共享完成 macOS 向导、Apple ID 登录、创建本地账户、系统更新) | 系统进入桌面,能 SSH 登录 |
| 1.3 | 系统设置:开 SSH、关自动更新/休眠(softwareupdate --schedule off + pmset -a sleep 0 disablesleep 1) | SSH 密钥登录成功,7x24 不睡眠 |
| 1.4 | 安装 Hermes(curl 安装脚本)+ 配置模型(deepseek 等,沿用 VPS 配置) | hermes doctor 全绿 |
| 1.5 | launchd 常驻:写 LaunchAgent plist(<KeepAlive>true</KeepAlive> + <RunAtLoad>true</RunAtLoad>)托管 gateway | 重启后 gateway 自动拉起 |
| 1.6 | TCC 权限:给 sshd 开「完全磁盘访问」(或工作目录放 ~/agents/ 非保护路径) | agent 能读写工作目录 |
| 1.7 | 组网:Tailscale 为主 + VPS 上自建 WireGuard 为备 | 手机/笔记本/两台 VPS 都能连入内网 |
| 1.8 | 备份:Time Machine → NAS/外置盘 + Syncthing 同步关键配置 | 恢复演练通过 |
| 1.9 | UPS(山特/APC 500-800VA,~¥400)+ 每日定时开机兜底 | 断电恢复策略落地 |
| 1.10 | 跨机最小实验:在 Mac 上建 Hermes profile,用 API Server 调 VPS 上的 Hermes 跑一个简单任务(如 echo hello) | 三条通道(API/RPC、SSH backend、Webhook)至少验证一条通 |
8.2 子项目 2:个人知识图谱(可与子项目 1 并行,或在跑任务中沉淀)
目标:建立 SQLite 事实单一来源。
| 步骤 | 内容 | 验收标准 |
|---|---|---|
| 2.1 | 建库:SQLite schema(entities/relations/tasks/decisions/notes + FTS5 虚拟表 + vec0 预留) | sqlite3 knowledge.db .schema 通过 |
| 2.2 | 导入第一批数据:只导入 2-3 个高频项目(如正在进行的项目),不要一次性导入全部历史资料(剃刀原理,防止维护成本失控) | 每个项目 20-50 条实体,含关系 |
| 2.3 | 定义 Curator 技能包:抽取事实的提示词模板(从 chat 记录/文档/决策中提炼) | 3 次抽取测试:事实入库准确、无重复 |
| 2.4 | 给 Hermes 挂 SQLite MCP server(官方参考实现) | hermes mcp test sqlite 通过,agent 能查询 |
| 2.5 | 备份自动化:cron 每日 VACUUM INTO + rclone 到 NAS/云 | 备份文件存在,恢复演练通过 |
| 2.6 | (可选)Obsidian vault + git 做人机界面,定期从 SQLite 导出阅读视图 | 家庭成员能浏览共享知识 |
8.3 子项目 3:任务管家工作流(核心价值验证)
目标:让 Steward 能从「辅助结构化」演进到「代为验收」。
| 阶段 | 内容 | 验收标准 |
|---|---|---|
| 阶段一:辅助结构化(1-2 周) | Steward profile 加载 kanban-orchestrator skill;用户给模糊需求 → Steward 输出结构化任务单(目标/范围/验收标准)→ 用户确认后才 kanban_create 下发 | 连续 5 个任务,用户确认率 100%,任务单被用户采纳(无大改) |
| 阶段二:代为验收(2-4 周) | 对验收标准清晰的调研类任务,Steward 按用户确认过的标准自行验收,异常(自评不达标/有争议)才升级给用户;验收结论写入 kanban_complete(metadata) | 10 个任务中 ≥7 个无需用户介入完成 |
| 阶段三:减少确认(1-2 月后) | 积累验收模板(调研类/编码类/巡检类各一套)后,逐步放开「低风险任务免确认」 | 用户抽查 5 个免确认任务,全部合格 |
关键机制(全部用 Hermes 原生):
- 任务包 = Kanban task body(目标/范围/验收标准)+
--skills注入专用技能 - Worker 自评 =
kanban_complete(summary, metadata{criteria_met, confidence}) - 升级 =
kanban_block(reason)→ 用户手机/kanban处理 - 依赖编排 =
kanban_create(parents=[...]) - 审计 = task_events 自动记录,无需额外开发
8.4 子项目 4:VPS Worker 改造(视实际任务类型而定)
目标:让两个 VPS Hermes 成为可被调度的 Worker。
| 步骤 | 内容 | 验收标准 |
|---|---|---|
| 4.1 | 两台 VPS 启用 API Server(独立 key、内网绑定、TLS 反代) | curl /v1/models 从 Mac 侧可访问 |
| 4.2 | 用 hermes profile install 给 VPS 分发 worker profile(含 Playwright/PlantUML 等技能) | hermes -p worker-a skills list 通过 |
| 4.3 | Steward 封装「下发任务」skill:调 /v1/runs → 轮询 → 收结果 → 写回 Kanban | 端到端试跑:Mac 下发 → VPS 执行 → 结果回 Kanban |
| 4.4 | 明确两个 VPS 的分工(如 VPS-A 偏重浏览器/爬虫、VPS-B 偏重定时批处理/海外 API) | 分工文档 + 各跑通一个真实任务 |
| 4.5 | (可选)Proxy Mode 实验:验证 GATEWAY_PROXY_URL 能否让 VPS 消息整体转发给 Mac | 实验结论记录,决定是否采用 |
8.5 启动顺序(调整后)
09九、风险与应对(更新版)
| 风险 | 影响 | 应对(更新) |
|---|---|---|
| Steward 验收不准 | 中 | 阶段一必须用户确认标准(原文档保留);加「验收模板沉淀」机制(每类任务积累 checklist);低置信度任务强制升级 |
| 跨机桥接不稳定 新增 | 高 | API Server/SSH backend 是文档未完全承诺的路径,子项目 1.9 必须先做最小实验验证;备选通道(webhook、消息平台)保持可用 |
| 知识图谱维护成本高 | 中 | 只导入高频项目(原文档保留);维护动作集成到任务流程(任务完成时顺手更新图谱,而非单独维护);定时 cron 检查图谱新鲜度 |
| 两个 Worker 协调复杂 | 低 | Steward 统一调度(原文档保留);Kanban 单板 + 依赖链接天然避免竞争 |
| 敏感数据泄露 | 高 | 密钥只在 Mac mini(原文档保留);VPS Worker 无图谱访问权(方案 A);API Server 只绑内网 + 独立 key + TLS;不用方案 C(图谱同步到 VPS) |
| Mac mini 单点故障 | 中 | 定期备份图谱和任务队列到 NAS/云(原文档保留);VPS 可临时接管调度(VPS 上保留 Steward profile 的只读副本,紧急时 hermes profile install 恢复) |
| macOS 常驻陷阱 新增 | 中 | 关自动更新/休眠、UPS + 定时开机、launchd KeepAlive、TCC 权限——8 个具体坑见子项目 1 |
| SQLite 多 agent 并发写冲突 | 低 | WAL 模式(默认开启)+ 单写者约定(Curator 是唯一写者,其他只读) |
10十、Mac mini 硬件选型速查
✅ 用户已购配置(2026-08-03 确认)
Mac mini M4 / 32GB 统一内存 / 512GB SSD / 万兆网口 + AppleCare+,¥10,398(2026-04-16 购买,全新未开机)
该配置优于本报告推荐的 24GB 甜点位,常驻服务(网关+调度+知识图谱)仅 2-4GB,剩余 ~28GB 全给本地推理:
| 推理档位 | 24GB(推荐档) | 32GB(你的配置) |
|---|---|---|
| 7-8B(Qwen3-8B 等) | ✅ 25-35 tok/s | ✅ 25-35 tok/s |
| 12-14B(Qwen3-14B 等) | ✅ 15-22 tok/s | ✅ 15-22 tok/s(更从容) |
| 20B MoE(gpt-oss-20b) | ✅ 25-35 tok/s | ✅ 25-35 tok/s |
| 30B MoE(Qwen3-30B-A3B) | ✅ 30-40 tok/s | ✅ 30-40 tok/s |
| 32B 稠密(Qwen3-32B) | ❌ 放不下 | ✅ 25-30 tok/s(新增能力) |
| 70B 稠密 | ❌ | ❌(需 48GB) |
要点:
- 32GB 相比 24GB 的唯一新增能力是能跑 32B 稠密模型;MoE 档位两者体验一致
- 万兆网口是加分项:家中 NAS 备份、大模型文件传输、未来本地文件服务都用得上
- 内存已到位(不可升级),硬盘 512GB 装系统+4-5 个模型略紧——模型库建议放外接雷雳 NVMe 盒(2TB ≈ ¥1,000)
- 电费可忽略:M4 平均 12W,7x24 一年 ≈ ¥60-80
10.2 其他配置档位参考(未选购时的备选认知)
| 场景 | 推荐 | 价格 | 理由 |
|---|---|---|---|
| 核心推荐:中枢 + 偶尔本地 7B-14B 推理 | M4 24GB/512GB | ¥8,999 | 24GB 让 14B Q4 舒适运行、能跑 Qwen3-30B-A3B MoE;比 M4 Pro 省 ¥3,500 |
| 纯中枢(推理全走 VPS/API) | M4 16GB/256GB | ¥5,999 | 最省钱;256GB 建议外接 SSD |
| 常跑 32B / 追求速度 | M4 Pro 24GB(升 48GB) | ¥12,499+ | 273GB/s 带宽,速度快 2.3 倍 |
你的 32GB 配置介于「核心推荐」和「M4 Pro」之间:本地推理能力接近 M4 Pro 的 24GB 档(MoE 体验一致),只是速度受 120GB/s 带宽限制。
11十一、决策清单与下一步
11.1 需要用户拍板的决策
| # | 决策 | 本调研推荐 | 备注 |
|---|---|---|---|
| D1 | ✅ 已解决 M4 32GB/512GB 已购(2026-04-16),全新未开机 | 配置优于推荐档(详见第十章) | |
| D2 | Steward/Curator 拆分时机 | 推荐 初期兼任,预留拆分 | 无分歧风险 |
| D3 | 知识图谱技术栈 | 推荐 SQLite+FTS5+sqlite-vec | 无分歧风险 |
| D4 | Worker 访问图谱方式 | 推荐 上下文打包为主 | 无分歧风险 |
| D5 | 跨机主路线 | 推荐 路线 B(API Server RPC)为主,SSH backend 补充 | 需子项目 1.9 最小实验后确认 |
| D6 | 试点任务 | 推荐 探索调研类 + 一个真实场景 | 建议用户指定第一个试点任务 |
11.2 下一步行动
- 确认 D1(买不买 Mac mini)——✅ 已确认:M4 32GB/512GB 已购,全新未开机,可直接启动子项目 1
- 若确认购买:启动子项目 1(Mac mini 基础环境,1-2 天)
- 子项目 1 完成 1.10 步(跨机最小实验)后,确认 D5(跨机主路线)
- 并行启动子项目 2(图谱 schema + 首批数据)和子项目 3 阶段一(Steward 辅助结构化)
- 用第一个真实调研任务跑通全链路,验证「用户提需求 → Steward 结构化 → Worker 执行 → 验收」闭环
11.3 原文档待决策问题的最终答复汇总
| 原文档问题 | 本调研答复 |
|---|---|
| ① Steward 和 Curator 是否一开始就拆分? | 不拆。一个 profile 兼任,按职责组织技能包,出现阻塞/瓶颈信号再拆(profile clone 成本≈0) |
| ② 知识图谱选用什么技术栈? | SQLite + FTS5 + sqlite-vec(主存储),可选 Obsidian/git 人机界面层。不选 Neo4j/Dgraph/Kùzu(理由见 4.3) |
| ③ VPS Worker 如何安全访问知识图谱? | 上下文打包(方案 A)为主,只读 API(方案 B)进阶,永远不做图谱同步到 VPS(方案 C) |
| ④ 任务管家第一阶段从哪类任务开始试点? | 探索调研类,且用真实有价值的任务(不是玩具任务)试跑 |