先说说几个核心判断:要让Hermes Agent在无人值守状态下,自动完成从“分析GitHub Trending项目并生成技术简报”这类复杂指令的拆解、分派到触发执行,必须依赖v0.12.0+版本中重构的Kanban多智能体调度内核。这不再是手动轮询或静态配置能应付的活儿了——各子任务需要按角色匹配、状态流转、甚至崩溃续跑,一切都得靠这个内核支撑。

启用Kanban看板与Dispatcher自动轮询
具体怎么操作?第一步是初始化看板数据库。执行hermes kanban init后,系统会在~/.hermes/kanban.db路径下创建一个SQLite数据库,并自动写入默认的调度策略配置。
Dispatcher后台进程是否在运行?可以运行hermes daemon status | grep dispatcher来确认,如果输出中包含active (running)字样,就说明一切正常。如果没启动,记得执行hermes daemon start --service dispatcher。
这里有个细节需要特别注意:Dispatcher默认每60秒扫描一次数据库,这个扫描间隔无法通过CLI临时修改,只能编辑config.yaml中的kanban.poll_interval字段,然后重启daemon才能生效。
定义角色绑定规则与能力标签
接下来是角色与技能标签的绑定。你需要在~/.hermes/config/roles.yaml文件中声明角色过滤逻辑,就像这样:
researcher: {task_filter: "search|analyze|pdf", max_concurrent: 3}
automation-engineer: {task_filter: "script|test|playwright", max_concurrent: 2}
report-writer: {task_filter: "summarize|markdown|ppt", max_concurrent: 1}
task_filter是正则表达式,用来匹配子任务的描述字段。如果描述不匹配,Dispatcher会跳过该任务,不会报错也不会降级处理——这一点在设计时需要留意。
同时,确保对应的Profile已经注册了相关的技能标签。例如,运行hermes -p researcher skills install web-search summarize pdf-parser,注册的标签名必须与task_filter中间出现的关键词完全一致,注意大小写敏感。
提交父任务并触发自动拆解
准备工作完成后,就可以提交父任务了。第一步,运行hermes kanban create "Q3前端框架选型分析" --description "对比React、Vue、Svelte生态成熟度,输出兼容性矩阵与迁移成本评估",系统会返回一个任务ID,比如kanban-7f3a9c。
第二步,调用Orchestrator进行语义拆解:hermes -p orchestrator run --task-id kanban-7f3a9c。这个命令会解析描述中的动词和名词,自动生成三条子任务并写入数据库,同时填充target_role字段。
第三步,等待Dispatcher下一轮扫描,最长60秒,状态从todo变为ready后,对应的Worker进程就会被拉起来,日志中会显示类似[dispatcher] → launched researcher for subtask-221b的信息。
监控执行状态与人工介入点
执行过程中,可以通过两种方式监控状态。方法一,实时查看所有卡片状态:运行hermes kanban list --status todo,ready,in_progress,blocked,其中blocked状态表示任务因前置依赖未完成或人工标记而暂停。
方法二,快速定位阻塞根因:运行hermes kanban show --id subtask-221b,输出中depends_on字段会列出上游任务ID,handoff_context字段会显示上一环节交付的文件路径,比如/tmp/kanban/workspace/kanban-7f3a9c/researcher_output.json。
如果需要进行人工介入,可以直接修改数据库中该子任务的status为in_progress,并更新assigned_to字段为指定用户名。Dispatcher检测到变更后,会自动跳过分配逻辑,交由人工Worker接管。
