尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
【Hermes Agent】Allow Once / Session / Always / Deny 审批按钮:feishu.py:1906-1909 实现解析与 TaoToken 配置骨架
1. 飞书里那四个按钮到底在批什么Hermes Agent 跑在飞书群里的时候最容易被忽略、又最容易出事的一环就是审批按钮。你让 Agent 执行一条命令它不会闷头就干而是先在飞书里弹一张卡片上面四个按钮Allow Once、Session、Always、Deny。很多人第一次看到会随手点 Always觉得省事结果后面 Agent 拿着永久授权在沙箱里跑rm -rf之类的命令你连它什么时候被放行的都不知道。这篇就聚焦feishu.py:1906-1909这一段按钮回调的实现逻辑把四个按钮从「点击」到「权限决策」的链路拆开讲清楚再给一份可以直接复制的config.toml/settings.json骨架配合 TaoToken 的统一 Key 接入让你在本地把整个审批流程复现出来亲眼确认四个按钮的行为差异。适合已经在用 Hermes Agent、或者正准备把它接进飞书工作流的人读完你能自己改回调、加审计日志、把 Always 关进笼子里。核心检索词先摆出来Hermes Agent 的飞书审批按钮、feishu.py回调实现、Allow Once / Session / Always / Deny 四级权限、TaoToken 统一 Key 配置。下面按「问题场景 → 前置准备 → 可复制配置 → 验证 → 排障 → 接入」的顺序走。2. 原问题与场景四个按钮的语义差异先把四个按钮的语义对齐不然后面看代码会懵。Allow Once 是「本次批」只放行当前这一条命令执行完授权即失效下一条危险命令还会再弹卡片。Session 是「本会话内都批」从点击那一刻起当前会话里同类命令不再询问会话结束授权回收。Always 是「永远批」写进持久化配置重启 Hermes 依然生效这也是最危险的一个。Deny 是「拒绝」命令不执行回调返回拒绝态。问题就出在 Always 上。feishu.py:1906-1909这段回调里四个按钮走的是同一个分发入口靠button_id区分分支。如果这段逻辑没有对always做二次确认用户一次误点就等于给 Agent 开了永久后门。我见过最典型的报错现象是群里有人点了 Always之后 Agent 连续执行了好几条带sudo的命令卡片再也没弹过直到有人发现日志里多了一堆越权操作。根因一句话概括危险命令触发审批卡片而按钮 callback 在feishu.py:1906-1909这类平台实现里对 Always 分支缺少拦截和审计。配置层其实有两个字段能大幅减少触发概率代码层则需要在 callback 里补审计日志和二次确认。下面先把前置环境准备好。3. TaoToken 前置统一 Key 与接入准备Hermes Agent 本身要调用模型飞书侧只是审批交互层。为了让本地复现时模型调用稳定、Key 管理不散落建议用 TaoToken 做统一入口。它的作用是给你一个兼容常见协议的统一 KeyHermes 的模型配置指向它就行不用在多个平台之间来回换 Key。你需要准备的东西不多一个 TaoToken 账号、一个 API Key、本地装好的 Hermes Agent v0.16.0、以及一个能收飞书卡片的测试群。Key 的获取在控制台的 API Keys 页面模型对话入口可以用来先验证 Key 是否可用接入文档里有各协议的 base_url 和鉴权头写法。注意TaoToken 的 API 地址是https://taotoken.net/api配置里不要带多余的路径后缀鉴权用标准的 Bearer 头。官网入口在https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content需要看文档时从那里进。拿到 Key 之后先别急着配 Hermes用模型对话页面发一条最简单的消息确认 Key 有效、额度正常。这一步能帮你排除掉后面 80% 的「到底是 Key 问题还是回调问题」的扯皮。确认可用后再往下配 Hermes 的模型段。4. 可复制配置config.toml 与 settings.json 骨架Hermes 的配置分两层模型接入层和终端安全层。模型层指向 TaoToken安全层控制审批行为。下面这份骨架可以直接抄改掉 Key 和飞书凭证即可。# ~/.hermes/config.toml [model] provider openai-compatible base_url https://taotoken.net/api api_key sk-你的TaoTokenKey model claude-sonnet-4-20250514 [terminal] backend docker # 危险命令跑在沙箱里影响面小 timeout_seconds 60 [security] tirith_enabled true # 自动拦截高危命令 require_confirm_always true # Always 按钮强制二次确认 audit_log_path ~/.hermes/audit/approval.log [security.exec_allowlist] commands [git status, ls, cat, pwd, git diff] [security.exec_denylist] commands [rm -rf, curl|sh, sudo, chmod 777] [feishu] app_id cli_你的AppID app_secret 你的AppSecret verification_token 你的VerificationToken对应的settings.json用于飞书侧卡片与回调注册字段和 toml 里的安全段呼应{ feishu: { card_callback_path: /hermes/feishu/callback, approval_buttons: [allow_once, session, always, deny], always_requires_admin: true, audit: { enabled: true, log_path: ~/.hermes/audit/approval.log, fields: [user_id, button_id, command, timestamp] } }, security: { tirith_enabled: true, exec_allowlist: [git status, ls, cat, pwd, git diff], exec_denylist: [rm -rf, curl|sh, sudo, chmod 777] } }两个文件里require_confirm_always和always_requires_admin是同一件事的两处开关前者管 Hermes 内核后者管飞书卡片回调建议都开。audit_log_path指向的目录要提前建好否则回调写日志时会静默失败你排查半天以为是按钮没触发。配置改完回到feishu.py:1906-1909这段回调理解它怎么读这些字段。这段代码的核心是拿到button_id后做分支allow_once直接放行当前命令session写入会话级缓存always先检查always_requires_admin为真则要求管理员二次确认deny直接返回拒绝。审计日志应该在分支之前统一写一条保证四个按钮都有记录。5. 验证请求跑一条危险命令看四个按钮配置就绪后启动 Hermes 并触发一次审批。用uv run python hermes启动然后在飞书群里发一条会触发审批的命令比如让 Agent 执行sudo ls /root。正常情况下卡片会弹出四个按钮。# 启动 Hermes uv run python hermes # 在飞书群发送触发审批的指令 # 例如帮我执行 sudo ls /root点击 Allow Once观察命令执行一次后再发一条同类命令卡片应该再次弹出说明授权没有持久化。点击 Session再发同类命令卡片不再弹但重启 Hermes 后授权失效。点击 Always如果always_requires_admin生效应该先弹一个管理员确认卡片确认后才写入持久化配置。点击 Deny命令不执行日志里能看到拒绝记录。验证审计日志是否落盘tail -f ~/.hermes/audit/approval.log # 期望看到类似 # {user_id:ou_xxx,button_id:always,command:sudo ls /root,timestamp:2025-...}四个按钮都点一遍日志里应该有四条对应记录button_id各不相同。如果 Always 那条没有二次确认卡片直接放行说明always_requires_admin没生效回去检查settings.json的字段名是否拼错或者飞书回调是否读的是旧配置。6. 本篇常见错排查第一个坑是回调路径对不上。飞书卡片的card_callback_path必须和 Hermes 实际注册的路由一致否则你点按钮飞书那边显示成功Hermes 这边根本没收到。排查方法是看 Hermes 启动日志里注册的路由列表和settings.json里的路径逐字比对。第二个坑是审计日志目录不存在。audit_log_path指向的父目录如果没建写日志会抛异常但很多实现会吞掉这个异常表现就是「按钮点了没反应」。先mkdir -p ~/.hermes/audit再启动。第三个坑是 Always 的二次确认没生效。常见原因是require_confirm_always和always_requires_admin只开了一个或者feishu.py:1906-1909这段回调读的是硬编码默认值而不是配置。改完配置记得重启 Hermes热加载不一定覆盖安全段。第四个坑是 allowlist 和 denylist 冲突。同一条命令同时出现在两个列表里时行为取决于实现顺序通常是 denylist 优先。别把git status这种安全命令放进 denylist也别指望 allowlist 能绕过 Always 的二次确认两者管的是不同层。第五个坑是 Key 配错导致模型调用失败误以为是审批问题。如果卡片弹不出来先确认模型层能正常返回用模型对话页面单独测一次 Key排除掉接入层问题再查回调。7. 语义一致 CTA把审批链路接稳审批按钮这条链路配置层和安全层要一起改才稳。如果你还在调 Key 和接入参数先去 API Keys 页面把统一 Key 建好再对照接入文档把base_url和鉴权头配准这两步是后面所有验证的前提。Key 没通按钮点得再对也看不到模型响应。模型验证通过后建议用模型对话页面把几个常用模型各发一条消息确认 TaoToken 侧的路由和额度都正常再回到 Hermes 里跑审批复现。如果你打算把 Hermes 长期挂在飞书群里做编码或 Agent 任务Coding Plan 更适合这种持续调用的场景Key 和额度管理会比按次调用省心。最后提醒一句Always 按钮能不用就不用require_confirm_always和always_requires_admin两个开关都打开审计日志定期翻一翻。审批链路的价值不在于按钮多好看而在于每一次放行都有记录、每一个永久授权都有人确认。
RELATED

相关推荐

百度权重2的网站选哪家好

百度权重2的网站选哪家好

不懂代码?3个免费工具搞定百度权重2网站部署 自己不会代码想做网站,最怕的就是被外包公司坑几万块,结果做出来的站百度根本不收录。别慌,今天不聊虚的,直接给你一套“保姆级”方案。哪怕你是纯小白,只要会用鼠标,跟着这套流程走,用几个 免费工具…

📅 2026/9/28 4:00:51
【Agent】【tools】7.Use LlamaIndex agent tools as MCP tools

【Agent】【tools】7.Use LlamaIndex agent tools as MCP tools

案例目标本案例展示了如何将LlamaIndex中的代理工具转换为MCP(Model Context Protocol)工具,实现以下目标:演示如何将LlamaHub中的代理工具转换为MCP工具以Notion工具为例,展示完整的转换过程创建并配置FastMCP服务器注册LlamaIndex工具到MCP…

📅 2026/9/28 4:00:51
CS336 推理实战:用 TaoToken 统一 Key 打通本地推理链路

CS336 推理实战:用 TaoToken 统一 Key 打通本地推理链路

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📅 2026/9/28 3:55:51
MORE NEWS

更多资讯

📰

YOLOv5钢轨缺陷检测工程指南:从数据到部署全流程

简介:一套基于YOLOv5的钢轨缺陷检测项目资源,面向铁路工务维护人员、计算机视觉研究者及深度学习初学者,旨在解决钢轨表面裂纹、磨损、剥离等缺陷的自动识别与分类难题。资源共有2000个文件,主要由1994个txt文本文件、3个Python脚…

📰

YOLOv5训练X光肺病数据集:从Roboflow格式到工程落地全记录

简介:面向医学影像分析与深度学习检测场景,这套X光片肺病数据集包含800张原始胸片及对应标注,覆盖细菌性肺炎、新冠病毒、正常肺、结核、病毒性肺炎五类,适合用于训练YOLOv5等目标检测模型,帮助研究者快速搭建肺病辅助…

📰

从39.7%到0%:知网AIGC检测降AI率完整实操指南

前阵子有个朋友抱着笔记本电脑来找我,说学校的预审系统给他论文标了一个数字:知网AIGC检测率39.7%。学院要求降到10%以下才能送审,他连续折腾了快两周,同义词替换、调整语序、把中文翻成英文再翻回来,能用的土办法都试…

📰

Flutter纯Dart库鸿蒙适配实践:以checkdigit校验库为例

最近把一套 Flutter 项目整体迁到鸿蒙上,过程中遇到checkdigit这个库,倒是让我对“Flutter 三方库鸿蒙化适配”这件事有了不少新认识。这个东西本身很小,就是做各类识别码校验的,ISBN、IMEI、身份证号、信用卡号、Luhn 校验码一套…

📰

支付宝手机网站支付前端怎么做图解步骤全解析

支付宝手机网站支付前端怎么做图解步骤全解析 网站做好了没人访问,这大概是很多站长和开发者最头疼的事。尤其是当你花了几万块做了个商城,结果用户到了付款环节,要么页面卡死,要么支付跳转白屏,流量全漏了。很多人搜【支付宝手机网站支付前端怎么做】,…

📰

621张田间番茄图像数据集:YOLO训练实战指南

简介:本资源是面向计算机视觉初学者与YOLO系列算法实践者的番茄目标检测专用数据集,适用于YOLOv5/v7/v8/v9/v10/v11等主流版本的模型训练、验证与测试,可直接用于农业图像识别、果实成熟度分析或轻量级端侧部署实验。压缩包共1864个文件&…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬