@Teknium: Hermes Agent 的看板刚刚迎来了一次重大的自动化升级。将一个提示放入分类队列,编排代理就会……

X AI KOLs Following 工具

摘要

Hermes Agent 的看板功能迎来了一次重大的自动化升级:现在,将提示放入分类队列会触发编排代理将其分解为子任务并分配专门的代理配置文件,同时还增加了对配置文件描述的支持。

Hermes Agent 的看板刚刚迎来了一次重大的自动化升级。 将一个提示放入分类队列,编排代理就可以接手——将其分解为所有必要的子任务,并自动分配符合所需专业化的代理配置文件。 现在,您还可以为每个代理配置文件添加描述,以更好地帮助编排代理确定哪些任务应该分配给哪些配置文件! 文档:https://hermes-agent.nousresearch.com/docs/user-guide/features/kanban… PR:https://github.com/NousResearch/hermes-agent/pull/27572…
查看原文
查看缓存全文

缓存时间: 2026/05/18 16:34

渲染 每个键均为可选,默认值如所示。 ### 安全模型 (https://hermes-agent.nousresearch.com/docs/user-guide/features/kanban#security-model) 仪表盘的 HTTP 认证中间件会**显式跳过**`/api/plugins/`(https://hermes-agent.nousresearch.com/docs/user-guide/features/extending-the-dashboard#backend-api-routes)——插件路由默认不经过认证,因为仪表盘默认绑定到 localhost。这意味着主机上的任何进程都可以访问看板的 REST 接口。WebSocket 多了一层保护:它需要仪表盘的临时会话令牌作为 `?token=...` 查询参数(浏览器无法在升级请求中设置 `Authorization`),这与浏览器内 PTY 桥接的模式一致。如果你运行 `hermes dashboard --host 0.0.0.0`,每个插件路由(包括看板)都会变得可从网络访问。**不要在共享主机上这样做。** 看板中包含任务正文、评论和工作区路径;攻击者一旦访问这些路由,就能读取你的全部协作内容,还能创建/重新分配/归档任务。位于 `~/.hermes/kanban.db` 中的任务是有意与配置文件无关的(这是协作的基本原语)。如果你使用 `hermes -p dashboard` 打开仪表盘,看板会显示主机上任何其他配置文件创建的任务。所有配置文件同属一个用户,但如果存在多个身份共存的情况,这一点值得留意。 ### 实时更新 (https://hermes-agent.nousresearch.com/docs/user-guide/features/kanban#live-updates) `task_events` 是一个仅追加的 SQLite 表,包含单调递增的 `id`。WebSocket 端点会记录每个客户端最后看到的事件 ID,并在新行出现时推送它们。当事件爆发时,前端会重新加载(非常轻量的)看板端点——这比尝试根据每种事件类型修补本地状态更简单、更正确。WAL 模式意味着读取循环永远不会阻塞调度器的 `BEGIN IMMEDIATE` 声明事务。 ### 扩展它 (https://hermes-agent.nousresearch.com/docs/user-guide/features/kanban#extending-it) 该插件使用标准 Hermes 仪表盘插件契约——请参阅“扩展仪表盘”(https://hermes-agent.nousresearch.com/docs/user-guide/features/extending-the-dashboard)以获取完整的清单参考、shell 插槽、页面范围插槽以及插件 SDK。额外的列、自定义卡片外壳、面向租户的布局,或者完全用 `tab.override` 替换,都可以在不分支此插件的情况下实现。如需禁用而不删除,请在 `config.yaml` 中添加 `dashboard.plugins.kanban.enabled: false`(或删除 `plugins/kanban/dashboard/manifest.json`)。 ### 范围边界 (https://hermes-agent.nousresearch.com/docs/user-guide/features/kanban#scope-boundary) GUI 故意保持轻量。插件所做的一切都可以通过 CLI 完成;插件只是让人类使用起来更舒适。自动分配、预算、治理门控和组织架构视图仍属于用户空间——可以是路由器配置文件、另一个插件,或复用 `tools/approval.py`——完全符合设计规格中“超出范围”部分的说明。 ## CLI 命令参考 (https://hermes-agent.nousresearch.com/docs/user-guide/features/kanban#cli-command-reference) 这是**你**(或脚本、cron、仪表盘)用来驱动看板的接口。在调度器内运行的工作进程使用 `kanban_*` 工具表面(https://hermes-agent.nousresearch.com/docs/user-guide/features/kanban#how-workers-interact-with-the-board)执行相同操作——这里的 CLI 和那里的工具都通过 `kanban_db` 路由,因此两个表面在结构上保持一致。 hermes kanban init # 创建 kanban.db + 打印守护进程提示 hermes kanban create “” [–body …] [–assignee ] [–parent ]… [–tenant ] [–workspace scratch|worktree|dir:] [–priority N] [–triage] [–idempotency-key KEY] [–max-runtime 30m|2h|1d|] [–skill ]… [–json] hermes kanban list [–mine] [–assignee P] [–status S] [–tenant T] [–archived] [–json] hermes kanban show [–json] hermes kanban assign # 或 ‘none’ 取消分配 hermes kanban link <parent_id> <child_id> hermes kanban unlink <parent_id> <child_id> hermes kanban claim [–ttl SECONDS] hermes kanban comment ” [–author NAME] # 批量动词——接受多个 id: hermes kanban complete … [–result “…”] hermes kanban block ” [–ids …] hermes kanban unblock … hermes kanban archive … hermes kanban tail # 跟踪单个任务的事件流 hermes kanban watch [–assignee P] [–tenant T] # 将全部事件的实时流输出到终端 [–kinds completed,blocked,…] [–interval SECS] hermes kanban heartbeat [–note “…”] # 工作进程存活信号,用于长时间操作 hermes kanban runs [–json] # 尝试历史记录(每次运行一行) hermes kanban assignees [–json] # 磁盘上的配置文件 + 每个分配者的任务计数 hermes kanban dispatch [–dry-run] [–max N] # 单次遍历 [–failure-limit N] [–json] hermes kanban daemon –force # 已弃用 — 独立调度器(改用 hermes gateway start) [–failure-limit N] [–pidfile PATH] [-v] hermes kanban stats [–json] # 各状态 + 各分配者的计数 hermes kanban log [–tail BYTES] # 来自 ~/.hermes/kanban/logs/ 的工作进程日志 hermes kanban notify-subscribe # 网关桥接钩子(由网关中的 /kanban 使用) –platform –chat-id [–thread-id ] [–user-id ] hermes kanban notify-list [] [–json] hermes kanban notify-unsubscribe –platform –chat-id [–thread-id ] hermes kanban context # 工作进程看到的内容 hermes kanban specify [ | –all] [–tenant T] # 充实一个分流列的粗略想法 [–author NAME] [–json] # 变成完整的规范并提升为待办 hermes kanban gc [–event-retention-days N] # 工作区 + 旧事件 + 旧日志 [–log-retention-days N] 所有命令也可在交互式 CLI 和消息网关中作为斜杠命令使用(请参阅下面的 `/kanban` 斜杠命令(https://hermes-agent.nousresearch.com/docs/user-guide/features/kanban#kanban-slash-command))。 ## `/kanban` 斜杠命令 (https://hermes-agent.nousresearch.com/docs/user-guide/features/kanban#kanban-slash-command) 每个 `hermes kanban <action>` 动词都可以通过 `/kanban <action>` 访问——既可以在交互式 `hermes chat` 会话内,也可以从任何网关平台(Telegram、Discord、Slack、WhatsApp、Signal、Matrix、Mattermost、电子邮件、短信)中使用。两个表面都调用相同的 `hermes_cli.kanban.run_slash()` 入口点,该入口点复用了 `hermes kanban` 的 argparse 树,因此参数表面、标志和输出格式在 CLI、`/kanban` 和 `hermes kanban` 之间完全相同。你无需离开聊天就能驱动看板。 /kanban list /kanban show t_abcd /kanban create “write launch post” –assignee writer –parent t_research /kanban comment t_abcd “looks good, ship it” /kanban unblock t_abcd /kanban dispatch –max 3 /kanban specify t_abcd # 将一个分流单行变成真正的规范 /kanban specify –all –tenant engineering # 清理一个租户中的所有分流任务 用引号包裹多词参数的方式与你在 shell 中相同——`run_slash` 使用 `shlex.split` 解析行的其余部分,因此 `"..."` 和 `'...'` 都有效。 ### 运行时使用:`/kanban` 绕过运行中的代理守卫 (https://hermes-agent.nousresearch.com/docs/user-guide/features/kanban#mid-run-usage-kanban-bypasses-the-running-agent-guard) 网关通常会排队斜杠命令和用户消息,而代理仍在思考——这可以防止你在第一轮还在进行时意外开始第二轮。**`/kanban` 明确免于此守卫。**看板位于 `~/.hermes/kanban.db`,而不是正在运行的代理状态中,因此读取(`list`、`show`、`context`、`tail`、`watch`、`stats`、`runs`)和写入(`comment`、`unblock`、`block`、`assign`、`archive`、`create`、`link` 等)都会立即执行,即使是在中间轮次。这正是分离的全部意义: - 工作进程阻塞等待同伴 → 你从手机发送 `/kanban unblock t_abcd`,调度器会在下次轮询时唤醒同伴。被阻塞的工作进程不会被中断——它只是不再被阻塞。 - 你发现一个需要人工上下文的卡片 → `/kanban comment t_xyz "use the 2026 schema, not 2025"` 会落在任务线程上,并且该任务的**下一个**运行会在 `kanban_show()` 中读取它。 - 你想知道你的工作进程群在做什么而不停止编排器 → `/kanban list --mine` 或 `/kanban stats` 会检查看板而不影响你的主对话。 ### 在 `/kanban create` 时自动订阅(仅限网关) (https://hermes-agent.nousresearch.com/docs/user-guide/features/kanban#auto-subscribe-on-kanban-create-gateway-only) 当你从网关使用 `/kanban create "..."` 创建任务时,发起聊天的信息(平台 + 聊天 ID + 线程 ID)会自动订阅该任务的终端事件(`completed`、`blocked`、`gave_up`、`crashed`、`timed_out`)。每次终端事件你会收到一条消息——包括工作进程的 `completed` 结果摘要的第一行——无需轮询或记住任务 ID。 you> /kanban create “transcribe today’s podcast” –assignee transcriber bot> Created t_9fc1a3 (ready, assignee=transcriber) (subscribed — you’ll be notified when t_9fc1a3 completes or blocks) … 8 minutes later … bot> ✓ t_9fc1a3 completed by transcriber transcribed 42 minutes, saved to podcast/2026-05-04.md 一旦任务达到 `done` 或 `archived`,订阅会自动移除。如果你使用 `--json`(机器输出)脚本化创建,自动订阅会被跳过——假设脚本调用者希望使用 `/kanban notify-subscribe` 显式管理订阅。 ### 消息输出截断 (https://hermes-agent.nousresearch.com/docs/user-guide/features/kanban#output-truncation-in-messaging) 网关平台有实际的消息长度限制。如果 `/kanban list`、`/kanban show` 或 `/kanban tail` 产生超过约 3800 个字符的输出,响应会被截断,并附带 `... (truncated; use \`hermes kanban ...\` in your terminal for full output)` 页脚。CLI 表面没有此类限制。 ### 自动补全 (https://hermes-agent.nousresearch.com/docs/user-guide/features/kanban#autocomplete) 在交互式 CLI 中,输入 `/kanban` 并按 Tab 键会循环显示内置子命令列表(`list`、`ls`、`show`、`create`、`assign`、`link`、`unlink`、`claim`、`comment`、`complete`、`block`、`unblock`、`archive`、`tail`、`dispatch`、`context`、`init`、`gc`)。上面 CLI 参考中列出的其余动词(`watch`、`stats`、`runs`、`log`、`assignees`、`heartbeat`、`notify-subscribe`、`notify-list`、`notify-unsubscribe`、`daemon`)也有效——只是它们尚未出现在自动补全提示列表中。 ## 协作模式 (https://hermes-agent.nousresearch.com/docs/user-guide/features/kanban#collaboration-patterns) 看板无需任何新原语即可支持以下八种模式: 模式 形状 示例 **P1 扇出** N 个兄弟任务,相同角色 "并行研究 5 个角度" **P2 流水线** 角色链:侦察 → 编辑 → 写手 每日简报汇编 **P3 投票/法定人数** N 个兄弟任务 + 1 个聚合器 3 位研究人员 → 1 位审阅者挑选 **P4 长时间运行的日志** 相同配置文件 + 共享目录 + cron Obsidian 仓库 **P5 人机交互** 工作进程阻塞 → 用户评论 → 解除阻塞 模棱两可的决策 **P6 `@提及`** 从散文中内联路由 `@reviewer look at this` **P7 线程范围工作区** 线程中的 `/kanban here` 每个项目的网关线程 **P8 舰队农场** 一个配置文件,N 个主题 50 个社交账号 **P9 分流规范器** 粗略想法 → `triage` → `hermes kanban specify` 展开正文 → `todo` "将这个单行变成规范任务" 每个模式的实战示例,请参见 `docs/hermes-kanban-v1-spec.pdf`。 ## 多租户使用 (https://hermes-agent.nousresearch.com/docs/user-guide/features/kanban#multi-tenant-usage) 当一个专业工作进程舰队服务多个业务时,用租户标记每个任务: hermes kanban create “monthly report” \ –assignee researcher \ –tenant business-a \ –workspace dir:/tenants/business-a/data/ 工作进程接收 `$HERMES_TENANT`,并通过前缀命名空间其内存写入。看板、调度器和配置文件定义都是共享的;只有数据是有范围的。 ## 网关通知 (https://hermes-agent.nousresearch.com/docs/user-guide/features/kanban#gateway-notifications) 当你从网关(Telegram、Discord、Slack 等)运行 `/kanban create ...` 时,发起聊天的信息会自动订阅新任务。网关的后台通知器每隔几秒轮询 `task_events`,并针对每个终端事件(`completed`、`blocked`、`gave_up`、`crashed`、`timed_out`)向该聊天发送一条消息。已完成的任务还会发送工作进程的 `--result` 的第一行,这样你无需执行 `/kanban show` 就能看到结果。 你可以从 CLI 显式管理订阅——当脚本/cron 作业想要通知并非其发起的聊天时很有用: hermes kanban notify-subscribe t_abcd \ –platform telegram –chat-id 12345678 –thread-id 7 hermes kanban notify-list hermes kanban notify-unsubscribe t_abcd \ –platform telegram –chat-id 12345678 –thread-id 7 一旦任务达到 `done` 或 `archived`,订阅会自动移除;无需清理。 ## 运行——每次尝试一行 (https://hermes-agent.nousresearch.com/docs/user-guide/features/kanban#runs--one-row-per-attempt) 任务是逻辑工作单元;**运行**是执行它的一次尝试。当调度器认领一个就绪任务时,它会在 `task_runs` 中创建一行,并将 `tasks.current_run_id` 指向它。当该尝试结束时——完成、阻塞、崩溃、超时、生成失败、回收——该运行行会以 `outcome` 关闭,任务的指针会清除。一个被尝试过三次的任务会有三行 `task_runs`。 为什么要用两张表而不是直接突变任务:你需要**完整的尝试历史**用于现实世界的事后分析("第二次审阅尝试批准了,第三次合并了"),而且你需要一个干净的地方来挂载每次尝试的元数据——哪些文件更改了,哪些测试运行了,审阅者注意到了哪些发现。这些是运行事实,不是任务事实。 运行也是**结构化交接**所在。当工作进程完成任务(通过 `kanban_complete(...)`)时,它可以传递: - `summary`(工具参数)/ `--summary`(CLI)——人工交接;进入运行;下游子任务在其 `build_worker_context` 中看到它。 - `metadata`(工具参数)/ `--metadata`(CLI)——运行上的自由格式 JSON 字典;子任务会在摘要旁边序列化看到它。 - `result`(工具参数)/ `--result`(CLI)——短日志行,进入任务行(旧字段,为向后兼容保留)。 下游子任务会读取每个父任务最新完成运行的摘要 + 元数据。重试的工作进程会读取其自身任务上的先前尝试(结果、摘要、错误),以免重复已经失败的路径。 # 工作进程实际执行的操作——从代理循环内部发出的工具调用: kanban_complete( summary=“implemented token bucket, keys on user_id with IP fallback, all tests pass”, metadata={“changed_files”: [“limiter.py”, “tests/test_limiter.py”], “tests_run”: 14}, result=“rate limiter shipped”, ) 当你(人类)需要关闭工作进程无法完成的任务时——例如被放弃的任务,或者你手动从看板标记完成的任务——也可以从 CLI 实现相同的交接: hermes kanban complete t_abcd \ –result “rate limiter shipped” \ –summary “implemented token bucket, keys on user_id with IP fallback, all tests pass” \ –metadata ‘{“changed_files”: [“limiter.py”, “tests/test_limiter.py”], “tests_run”: 14}’ # 查看重试任务上的尝试历史: hermes kanban runs t_abcd # # OUTCOME PROFILE ELAPSED STARTED # 1 blocked worker 12s 2026-04-27 14:02 # → BLOCKED: need decision on rate-limit key # 2 completed worker 8m 2026

相似文章