基于 Nous Research Hermes Agent 源码的深度架构文档。 所有页面均经过逐行源码验证,确保准确性与时效性。
- agent-loop-and-prompt-assembly: Agent 循环、系统提示构建、平台提示、执行指导
- tool-registry-architecture: 中央工具注册系统,声明式注册+集中调度
- model-tools-dispatch: 工具编排与调度,异步桥接+动态 schema 调整+参数类型强制
- toolsets-system: 工具分组系统、递归解析、20+ 平台工具集
- prompt-builder-architecture: 系统提示模块化组装,注入防护+技能缓存+模型特定指导
- auxiliary-client-architecture: 辅助 LLM 客户端路由器,多 provider 解析链+自动降级
- provider-transport-architecture: Provider Transport ABC,统一抽象 Anthropic/Chat Completions/Responses API/Bedrock 的数据路径
- provider-plugin-system: NEW v0.13.0 ProviderProfile ABC + 30 个插件化 provider
- memory-system-architecture: 三层架构(MemoryStore/MemoryManager/MemoryProvider),冻结快照模式
- session-search-and-sessiondb: FTS5 搜索 + LLM 摘要的跨会话回忆,orphan 删除策略
- context-compressor-architecture: 自动上下文压缩 v3
- skills-and-memory-interaction: Skills 与 Memory 的互补关系和决策树
- skills-system-architecture: 渐进式披露架构 + Curator 后台维护(v0.13 新增 archive/prune/list-archived)
- browser-tool-architecture: 多后端浏览器自动化,accessibility tree+三层安全防护
- web-tools-architecture: 八大后端插件化搜索/提取(WebSearchProvider ABC + 注册表),LLM 智能内容压缩(web_crawl 工具于 2026-05-29 移除 #33824)
- code-execution-sandbox: execute_code 沙箱,7 工具限制+UDS/File RPC 两种通信模式
- voice-mode-architecture: Push-to-talk 语音交互,STT(5 Provider)+ TTS(10 内置 Provider,含 Piper 本地神经 TTS)
- context-references: @file/@folder/@diff/@url/@git 引用系统,安全沙箱+注入量限制
- fuzzy-matching-engine: 8 策略链模糊匹配,从精确到相似度匹配
- large-tool-result-handling: 三层溢出防护(工具内截断/单结果持久化/轮次聚合预算)
- lsp-integration: NEW v0.14 LSP 语义诊断集成,agent/lsp/ 11 modules + file-mutation footer 三层后写校验
- i18n-and-locales: NEW v0.13 i18n 薄切片本地化(仅 hermes 自身静态消息,不动 agent 输出)
- parallel-tool-execution: 智能并发安全检测
- prompt-caching-optimization: 冻结快照保护 prefix cache,75% 成本节省
- smart-model-routing: 智能模型路由
- security-defense-system: 多层防御 + Redaction 默认 ON + Discord guild-scoped + post-write delta lint(v0.13.0 安全 wave)+ Wave 4 Dashboard OAuth + security-guidance 插件(2026-05-27)
- dashboard-auth-oauth-gate: NEW 2026-05-27 Dashboard OAuth 鉴权闸门(可插拔 ABC + Nous Portal Provider + WS 单次性 ticket + Phase 0-7)
- interrupt-and-fault-tolerance: 中断传播、Fallback 模型链
- credential-pool-and-isolation: 多密钥自动轮换、Profile 隔离
- checkpoints-architecture: NEW v0.13.0 Checkpoint v2 共享 shadow git store
- tool-loop-guardrails: NEW v0.12.0 工具调用循环护栏,exact failure / same-tool failure / idempotent no-progress 三维检测
- multi-agent-architecture: 5 种运行时机制(delegate_task/MoA/Background Review/send_message/Kanban)
- kanban-multi-agent-board: 可持久化多 Agent 协作板(SQLite + WAL,心跳/熔断/幻觉拦截,跨 session/profile)
- goal-and-ralph-loop:
/goal+/subgoal持续推进系统(fail-open judge,回合预算,保 prompt cache) - configuration-and-profiles: 多 Profile 架构,完全隔离的 agent 实例(第二种多 Agent 方案)
- cli-architecture: CLI 架构、斜杠命令、hermes dump/proxy/kanban/curator/migrate
- terminal-backends: 7 种终端后端(含 Vercel Sandbox)、统一 spawn-per-call 执行模型
- messaging-gateway-architecture: 22 平台统一网关(含 Teams/LINE/SimpleX Chat/Google Chat 等插件平台),PlatformRegistry、Session auto-resume、统一 allowlist
- hermes-proxy: OAuth → OpenAI-compatible 本地代理,让 Aider/Cline/Codex 复用 Nous/SuperGrok 订阅
- gateway-session-management: 网关会话管理,多平台会话隔离+PII 脱敏+重置策略
- hook-system-architecture: 双 Hook 系统(Gateway Hooks + Plugin System),register_command/dispatch_tool,Dashboard 插件
- mcp-and-plugins: MCP 集成、插件钩子系统、OAuth 支持
- skin-engine: YAML 驱动的皮肤/主题系统
- worktree-isolation: Git Worktree 并行隔离模式
- cron-scheduling: 内置调度器、自然语言调度、多平台投递、
no_agentwatchdog 模式 - trajectory-and-data-generation: 轨迹保存、批量运行器、RL 训练环境
更新日志(42 个,最新优先 — 完整列表见 index.md)
-
2026-06-11-update: 212 commits 跨日同步(hermes-agent
a5d05cf30 → 6c752ca3a,仍 v0.16.0 未发新版;约 131 fix / 25 feat / 9 chore / 6 test / 6 refactor / 3 style / 3 docs / 3 change / 1 revert / 1 perf / 15 merge / 5 misc;~48h 双日窗口)— Cron Recipes → Automation Blueprints 改名 + 14 蓝图 catalog(1593ca540上线 →e8b757845/e976faac7硬化 →cb29e8a82rebrand:cron/recipe_catalog.py → cron/blueprint_catalog.py 713 行,tools/recipes → tools/blueprints,/cron-recipe → /blueprint(alias/bp),hermes://cron-recipe/ → hermes://blueprint/,dashboard/api/cron/recipes → /api/cron/blueprints;BlueprintSlot/AutomationBlueprint/fill_blueprint/blueprint_form_schema/blueprint_slash_command/blueprint_deeplink/blueprint_catalog_entry;slot 4 typetime/enum/text/weekdays+WEEKDAY_PRESETS;14 个 blueprint;终结于同一cron.jobs.create_job,无第二套 job 引擎;Electronhermes://URL scheme + single-instance lock)+ Suggested Cron Jobs9a09ea69f(cron/suggestions.py 257 行+cron/suggestion_catalog.py 154 行4 个 catalog entry;4 来源catalog/recipe/usage/integration;dedup+latch 按 key、pending cap、accept 走同一create_job;tools/blueprints.py:217 register_blueprint_suggestion)+ memory/skillswrite_approval布尔门(96af61b6e (#38199)上线三态on|off|approve→095f526b1 (#43354)重构为 booleanwrite_approval默 false +_config_version 28→29migration →70d5d7e39 (#43452)修 inline prompt callback + gateway staging +/skillsgateway review;tools/write_approval.py 493 行write_approval_enabled/evaluate_gate;gateway/memory pending|approve|reject|mode+/skills pending|approve|reject|diff|mode;acd7932c0文档 cross-link)+ Dashboard 统一多 profile 管理875aa8f16 (#44007)1419+/310− 跨 21 文件(web_server.py +566 行profile参数 query/body 加到/api/config|env|mcp/servers|mcp/catalog|model/info|model/set全走_profile_scope();chat PTY?profile=让 childHERMES_HOME指向 profile dir;CLI<profile> dashboard走机器 dashboard--isolated保旧;前端ProfileProvider/ProfileSwitcher全局 selector URL-persisted;body.profile>?profile=;amberProfileScopeBanner)+73dd58499 (#44220)MCP loop HERMES_HOME 上下文 propagate(OAuth token-store 跨 profile 修) +d986bb0c6 (#39084)Profile Builder +a09343cc9 (#44231)SKILL.md editor + cron modal attach-skill +fa7f24e89Webhook enable from dashboard +9c051f57c (#44286)Anthropic API Key 检 +9c16ca879 (#44237)model 标准化 + backup confirm +c7bfc938d (#44374)Config 页 profile 路径 +63a421d4c (#42578)_require_token全部走 OAuth gate +7df3aa34b (#43214)public_url 静默拒绝 warn — Coding-Context Posture3e74f75e4 (#43316)(agent/coding_context.py 731 行ContextProfile/RuntimeMode;4 域:System prompt operating brief + per-model edit-format tuning + skill index demote + Toolset collapse;activationagent.coding_context: auto|focus|on|off;subagent 自动继承;不 memoize)+ Skill index demote 而非 hide(ee1a744ac (#44342)API 改名compact_skill_categories,每 skill 名字仍在 prompt 一行 names-only;4d6a133a9 (#44387)一天后反转:demotion 只在 focus 模式下) +a4f179c50 (#44411)GPT/Codex steer V4A 单文件编辑(OpenAI codex-rsapply_patch唯一 file editor) — Parallel Web Search & Extracte0e2571711206+/98− 跨 15 文件(keyless 免费 Search MCPsearch.parallel.ai/mcpStreamable-HTTP JSON-RPC;keyed v1 RESTclient.search/extract;parallel-web 0.4.2→0.6.0)+0a5762c78mcp-web-client中性 identity +93764b930/32a73010bkeyless web default 永远兜底 — Bedrocke24c935cf (#44293)IAM 拒绝InvokeModelWithResponseStream时自动 fallbackconverse()(agent/bedrock_adapter.py:211 is_streaming_access_denied_error) — Anthropic 交错 thinking 5 连:aaccaada2顺序保真anthropic_content_blocks端到端 verbatim +529bb1c3dstrip output-only SDK 字段 +7a1eed826redact replayed tool input + 加宽 400 classifier +86e10dd87thinking-modified 400 路由 recovery +9f95f72b9strip api_messages +efcbbde48in-memory only — SUMMARY_PREFIX 4 连:8f8cad7ec (#41607)抗陈旧任务 +d5e2fbf24historical context framing +acb2954d8历史 prefix 冻 +6c752ca3aHEAD 收紧 wording(topic-overlap 三句塌缩成 WINS+discard 两句) — OpenRouter183d86b3e (#43436)reasoning_effort 改 verbosity for adaptive Anthropic — Streaming615ad9792 (#43570)socket read timeout floor 到 stale-stream 180/240/300s — Params19c07c403newer OpenAI 系列max_completion_tokens名匹配 +2ce3ae3d1错分类不误判 unsupported-param — Model 选择:af978ecb1/243cada15昂贵模型确认 +57c671499 (#43103)Anthropic aliases 保留 +5a4297a11MiniMax M3 hardcode 1M — Desktop registry-driven slash + /resume/handoff3ffbdfbcc (#42351)1914+/478− 跨 31 文件 — Desktop composer 解耦 + 草稿 localStorage 6 连(c710868fb/292192f7d/d7d281fa3/18d61bd06/3d14f01fd/fdc0d1956/65ddc7c4aper-session 附件) — Desktop VS Code Marketplace 主题 + 可调终端 pane + Floating HUD(27a321157.vsixzlib 手写 zip reader + WCAG AA +8f73d0d94 (#42521)resizable terminal pane +Ctrl+\`` toggle +833410e02ANSI palette + Cmd-K HUD +ab5f1a1f1 (#43111)Mac 风^Tab/^⇧Tab/^1-9switcher +b96bd4808 (#43219)per-window chat +d33965396 (#43188)TUI titlebar session name) — **Desktop 远端 FS/api/fs/*5 连**(51f47f9a9 web_server.py:1439-1514+db79e9013facade +8878484f8remote-picker.tsx 177 行 +56a0f48ba/9121834b3tighten/scope) + **Desktop 远端 attach 5 连**(4906dcfc2stage OS dropsfile.attach/image.attach_bytes覆盖每 drop surface + 缩略图/spinner/race/16MB toast 4 连) — **Desktop misc 18 修**(1770263cc (#43234)default project dir +0d3e2cc53 (#43487)lineage dedup + 9 个 #4xxxx 修 + Nous overlay HUD/filled icons) — **Sessions 3 连**:e96ca1a0dempty 退出/轮转清理(hermes_state.py:3697 delete_session_if_empty+cli.py:5863 _discard_session_if_empty)+04b3f1953归档压缩 lineage +218452b05 (#43149)sqlite_master自愈(PRAGMA writable_schema=ONsurgery) — **Agent binary @file 引用 actionable**7ffc216bc+ **PDF/DOCX/音频附件 note 改写**(e7ae145acPDF/DOCX +13650ab7f音频 +4e9be3ee3test) — **Telegram 5 连**(3b4c715e1stripped-text fallback + tail-only delete guard + re-finalize skip +590b3c0d7partial overflow recover +da818510estream consumer cancelled finalize +d0e017bac (#44245)voice/audio >20MB pre-download gate +9ca969734 (#42090)transcribe tuple) — **Gateway 9 连**(13f1efdd1 (#43968)终端 header 折叠 +a8f404b29 (#40831)launchd domain probe +fa32af886/984e69ff6restart 去重 + post-Telegram QR auto-restart +5cf6e28a2 (#42675/#43236)容器重启 auto-start +f456f302d (#44267)临时 HERMES_HOME 拒写 service definition +264ac72b6/cb2c13055restart watcher env scrub +6a30cfca8 (#37556)post-delivery 前停 typing) — **Matrix4717989c1 (#18505)** room context 隔离 + handle_sync + allowed_users authz + i18n key + slash_commands mixin port — **Discord 7 连**:c3464ecf4 (#44383)runtime gateway task exit 恢复 +020ef76cf/08b1c44a5connect timeout cancel +311900842/aea0b7397voice-off 不断开 +e5580f43c/4eadef18aDISCORD_ALLOWED_ROLES端到端 — **Skills hub 7 连**:298bb93d3 (#43398)live per-source 进度 +105625d65overall_timeout 真 honor + ClawHubCATALOG_WALK_BUDGET_SECONDS+eee1da45f (#43395)cold start bound +9caa12f4efrontmatter name 解析 +0a593f132/d1383a6b1.envHERMES_HOME-aware +fdc90346e (#43221)red-team skills 移 optional(95%→25% block rate) — **Plugins/Web 3 连**:114e26573失败 sweep 不缓存 +93764b930/32a73010bkeyless 兜底 — **Cron 5 连**:7d8d000b1 (#43956)per-job profile revert +acd4f34e6/f7a6d6a6aprovider "custom" resolve +702f4df19 (#41976)容器重启 ownership +b4170f3ac (#43223)no-skills 不严检 — **CLI/TUI**:8972a151a (#44265)状态栏 idle clock +2f1951234 (#43439)全平台 UTF-8 stdout/stderrTextIOWrapper.reconfigure()+b2043cf15/5508f4bc5TUI/whatsapp-bridge UTF-8 +f8fd30942 (#43320)/d03cdd63e (#43036)one-shot cleanup +0b5b7ddfd/help quick commands +3c489fda8Slack 50-cap aliases — **Install/Update/Backup 7 连**:899acfe42winget 0x8A15002B 陈旧注册修 +9662b76d5PATH merge +a5c32cdf3 (#42172)中断 venv 自愈 +cedd9b6d4SSH 跳 passive +dd40600e0/ed2b9e43cbackup SQLite 同位 + 嵌套 skill 纳入 — **Tooling 20 连**:a72bb0375 (#38749)Docker 缩减 +5d8c44a39 (#30399)matrix 预装 +464276228Langfuse data URI redact +47e77ae16Curator atomic +dca11b665/e71d74682MCP stdio +3edd09a46 (#44205)WhatsApp stale bridge restart +4cecb1a13/90f4b3040/3bfbb3f2anpm audit / TS 6 / CI typecheck +72154ad87CI uv cache +f082b4ec5/07ac18590exit-4 runner +af3c8b80bpid-file race +6110aed9b (#43669)free model 抑 +15813336c/e4a1b35a3.env mode +1c055a4c5Grok Build code +6b330522e (#42641)AGENTS.md 设计哲学 — **TTS Gemini**:5718811depersona +2c1920822audio tag rewrite(tools/tts_tool.py +143 行`) -
2026-06-09-update: 105 commits 跨日同步(hermes-agent
754154a9c → a5d05cf30,仍 v0.16.0 未发新版;约 56 fix / 17 feat / 11 test / 5 chore / 3 refactor / 2 docs / 1 ci / 1 style / 8 merge)— Photon iMessage4e4d27875 feat: gRPC-native iMessage channel (no webhook)主轴收官(删 aiohttp webhook receiver + HMAC-SHA256 验签 +PHOTON_WEBHOOK_*5 个 env + CLIwebhook register/list/delete3 子命令;改GET /inboundNDJSON 长连接 + 25s heartbeat + consumer-state-machine;adapter docstring 重写 "Bidirectional bridge via spectrum-ts SDK gRPC stream";plugin.yaml:4 0.1.0 → 0.2.0;project_id 语义改写为 spectrumProjectId)+ 20 commit 跟进硬化(92dfd70d6 (#42732)生产硬化六件套:5 条 npmoverrides钉补丁版钳 protobufjs GHSA-66ff-xgx4-vchm + 4 个 @opentelemetry OTLP exporter CVE /crypto.timingSafeEqual替!==token compare / 2 MiB body size cap / re-subscribe capped exponential backoff + jitter /unhandledRejection处理 / dedup 按 insertion order 严格淘汰 4000 entries;b3aef57f2TYPE_CHECKING包 httpx 修类型 + connect 局部 client ref 防 race;9fb83eaa2spectrum-ts^1.18.0+npm install spectrum-ts@latest;314af28e8 + dbf2470d4入站附件/语音 base64 inline cap 20MiB → cache image/audio/document + voice MessageType + force_audio kwarg;4615e08d3 (#42397)出站 6 方法 override (send_image/_file/_voice/_video/_document/_animation) 经 spectrum-tsattachment()/voice()builder +/send-attachment端点 + cron multimedia +validate_media_delivery_path二次校验;fdf48c63c/e79e44af7/0d25cae04API 收敛走spectrumText/spectrumReply/spectrumTyping后又删 replyTo(实测 iMessage 不可靠)+ typing 统一space.send(spectrumTyping(state));2130ef68bflattenGroups: true;064665688/92179352f/3b983e779Home channel 支持裸 E.164 + DM GUID +_PHONE_PLATFORMS加 photon + setup 自动 allowlist +_env_enablementhome_channel seed;e9b26c7c8/84e4b4b9a/b58ff9345彩色 banner +assignedPhoneNumber取号 + auth.json 持久化 phone numbers;033765890user API 全迁 Spectrum backend Basic auth +DEFAULT_SPECTRUM_HOST="https://spectrum.photon.codes";37561c214device client_idhermes-agent → photon-cli修 400 invalid_client + token 双重 validate(PhotonDashboardAuthError+validate_photon_token先/api/auth/get-session再/api/projects/);637cf94bestrip_markdown+_send_with_retry(max_retries=2, base_delay=2.0)指数退避)— SimpleX 1.1.0 大演进0c2e81df0(PR #27978 salvage:群组SIMPLEX_GROUP_ALLOWED逗号分隔或*默认 disabled +chat_id=group:<id>;入站文件 rcvFileDescrReady→rcvFileComplete 延迟流程 +_pending_file_transfers;原生出站媒体send_image/video/document/voice全按 numeric ID/_send … json [...];MEDIA:<path>tag 自 reply 抽取按扩展名分发;HERMES_SIMPLEX_TEXT_BATCH_DELAY默 0.8s burst 批处理;SIMPLEX_AUTO_ACCEPT默 true contact request;MAX_MESSAGE_LENGTH 16000→8000+HEALTH_CHECK_STALE_THRESHOLD 120→300;_pending_responses + _corr_counter关联 ID 追踪;不动 core)— Plugins Hub TUI overlay52f7e24a7(新 gateway RPCplugins.manageattui_gateway/server.py:9252-9328加入_LONG_HANDLERS,action list/toggle,错误码 4017/4019/5026;新建ui-tui/src/components/pluginsHub.tsx 238 行+ 配套 overlayStore/useInputHandlers/appOverlays 通路 +/pluginsslash 无 arg 直开 overlay;键位 ↑↓/Enter/Space/Tab/1-9,0/Esc)+/pluginsslash 改写b8eede7bd(cli.py:7303-7366从PluginManager.list_plugins()改用_discover_all_plugins让 freshly-installed-but-not-enabled 也可见)+ plugin install subdir 支持f6f573eba (#42963)(owner/repo/path/to/pluginshorthand +<url>.git/path/to/plugin自然边界 +<url>#path/to/plugin显式 fragment;新_resolve_subdir_within防..traversal/绝对路径/symlink-out)+optional-mcps入 wheel+sdist39b76d901 (#39859)(MANIFEST.in:3 graft optional-mcps+pyproject.toml:300-301per-entry data-files 防 glob flatten 冲突)— Anthropic 默认现代 thinking 契约1febb0824 (#42991)(反转脆弱 version-substring allowlist 为 default-to-modern;_LEGACY_MANUAL_THINKING_CLAUDE_SUBSTRINGS列 3.x/4.0/4.1/4.5/4-2025 + Haiku 4.5;_NO_XHIGH_CLAUDE_SUBSTRINGS仅 4.6 family;_supports_adaptive_thinking/_supports_xhigh_effort/_forbids_sampling_params三 predicate 重写;unknown Claude 默 adaptive+xhigh+无 sampling params;_ANTHROPIC_OUTPUT_LIMITS["claude-fable"]=128_000;OpenRouter 同步_ANTHROPIC_REASONING_OPTIONAL_SUBSTRINGS+_anthropic_reasoning_is_mandatory())+ OpenRouter Anthropic reasoning-mandatory 适用所有路径46fedef07 (#43012)(不只 disabling 时省略 reasoning — 即使 enabled 也省,因 chat_completions 不回放 signed thinking blocks 让 OpenRouter 在 tool-replay turn 发thinking: {type: "disabled"}被 4.6+ 模型 400 拒)— Fable 5 全链路加入(d7886da08Anthropic 直连列表hermes_cli/models.py:329+ff9c110d5 (#42979)OPENROUTER_MODELS:36+_PROVIDER_MODELS["nous"]:158+agent/model_metadata.py:144 claude-fable-5: 1000000+agent/anthropic_adapter.py:127 claude-fable output_limit 128_000+website/static/api/model-catalog.json:16,152 updated_at 2026-06-09T17:20:16Z)+ OpenRouter livecontext_lengthstep-5f branch967c325da (#42986)(agent/model_metadata.py:1815-1835if effective_provider == "openrouter":fetchentry.get("context_length")— 修 fable-5 等新 slug models.dev 缺时落到 200K 默认;保留 Kimi-family 32k underreport guard)— Curated modelsc4066091c (#42629)加poolside/laguna-m.1:free+nvidia/nemotron-3-ultra-550b-a55b:freeto OpenRouter free 块;e687292eb (#42628)Nous recommended-models 持久化$HERMES_HOME/cache/nous_recommended_cache.jsonper-base map atomic write + Portal 失败 fallback;54318c65b (#42614)seed_cache_from_checkout(project_root)在hermes update时从 checkoutwebsite/static/api/model-catalog.json自动 seed disk cache(covers Docker/no-git zip update 路径main.py:5836-5838与 git pull:8402-8416)— Observability9f1c16a7f fix(langfuse):849翻 gate 让 sanitized response (post_api_request 路径) 的 usage dict fallback 真正运行(之前getattr(response, "usage", None)总 None 致每 turn token/cost 静默 0);9d61076f8 + ecd4679d8 + 728612c29 fix(observability/nemo-relay)plugins.toml lifecycle 三连:lazy reinit + direct fallback 保持 until init 成功 + try/finally 让 clear 失败也 re-arm;021d1034dadaptive config 对齐[components.config.tool_parallelism] mode="observe_only"(之前[components.config] mode="route");85852b71d (#42691)preserve downstream errors via_run_managed_with_downstream_preservation+ 按_DownstreamExecutionErrorclass-name +.original属性 shape 探(不 import 私类)+ tolerantstr.startswithmatch 让 Relay 未来加 traceback 后缀也不丢 unwrap;execute_llm + execute_tool 共享 scaffolding 去重 ~20 行 — Desktop reconnect/sleep/wake 恢复 cluster8d71c3891 (#43004)useRouteResume三 ref +seenGatewayStateRef让 mount 不被误当 reconnect;72f522d46 + be2f739e9sleep/wake 后第一prompt.submit返 "session not found" 时自动session.resume+ 重发;ba44de06d (#42998)Electron download 自愈三步 escalation(GitHub → 清 corrupt 重试 →ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/fallback;user-pinned 永远尊重);c4811c382 (#42946)icon 按 Apple grid pad;c6dc2fcd2 (#42613)profile delete 前先停后端防 Windows file lock,新prepareProfileDeleteRequest / teardownPoolBackendAndWait / profileNameFromDeleteRequest,Pythondelete_profile现 captureremove_error再 re-raiseRuntimeError;d04616964 (#42537)per-platform messaging sidebar sections + local-only recents +orderByIds前缀新 session + 同步 flush 终端态 +freshDraftReady区分新 chat vs stranded routed session + Ctrl+N 清 quick-create profile + 移除SmoothStreamingText包装让 markdown stream 独立 — Desktop file.attach RPCdbbd1d4d0(remote gateway 非 image 附件上传:@file:ref 在 remote 模式时读 dataUrl 发file.attach,gateway stage 到<workspace>/.hermes/desktop-attachments/返 workspace-relative ref;DESKTOP_BACKEND_CONTRACT 1→2;新_format_ref_value/_attachment_ref_path/_desktop_attachment_dir/_sanitize_attachment_name/_unique_attachment_path/_resolve_gateway_attachment_path/_decode_attachment_data_url/_stage_session_file_attachment8 个 helper)+ Desktop 后台流式09a6a2ddd (#42399)(三个 Chromium switchdisable-renderer-backgrounding / disable-backgrounding-occluded-windows / disable-background-timer-throttling+backgroundThrottling: false修后台窗口 stuck on Thinking)+ Desktop ES2023c1927d234+ debug report explicit URL onlye0f6a35ac (#42515)(EXPLICIT_URL_RE+LinkifiedText explicitOnly让agent.log不被误识为域名)— TUI / CLIf8adefdeb fix(tui)新TERMINAL_CONFIG_ENV_MAPathermes_cli/config.py:5156把terminal.*config 翻成 env var twin +apply_terminal_config_to_env()让 TUI/dashboard 子进程也走 classic CLI 的同套 bridge;520b59db1 + 4b073d090 fix(tui)_load_fallback_model()改 delegate tohermes_cli.fallback_config.get_fallback_chain与HermesCLI.__init__/gateway.run对齐;ab98818e5 + d66bac5a1 + 714183530 + b5f8996cc修 native Windows confirm modal #33961(之前从 daemon threadinput()与 prompt_toolkit 主线程 stdin 锁死,/reset卡 + Ctrl-C 吞)现走同 modalcall_soon_threadsafe路径;d1f23bb2d跨 28 文件 85 个 call site 加stdin=subprocess.DEVNULL修 TUI 模式下 subprocess.run/Popen 继承 stdin 致 race-read EOF 让 gateway 干净 exit on mid-tool-execution;bddab61bc + 8bb60ff03新scripts/check_subprocess_stdin.pyregex scanner + 包成 pytest 让 CI 第一时间挂掉新漏;2c1aaa9cb + dba6380ca加noqa: subprocess-stdinmarker 让claude setup-token交互登录保留 inherited stdin;a46462ec6 (#42435)hermes dashboard register显式--portal-url持久写.env即使非 default + 从--redirect-uri派生HERMES_DASHBOARD_PUBLIC_URL(仅 ORIGIN 不含 callback path) — hermes-ink1e5ff4a57 (#42527)终端 raw-mode 退出时关 DEC mouse tracking (1000/1002/1003/1006) 防 SGR35;col;row Mflood over prompt;re-entry 经setImmediate让 reassertTerminalModes 落在 alt-screen enable 之后 — Gateway-UI9351cbafa (#42616)image_generate 输出 auto-deliver as native media(producer allowlist +_JSON_MEDIA_TOOL_PATH_FIELDS = ("host_image", "image", "agent_visible_image")优先级序);3705625b7 (#42576) + 8d99b5bc4 (#42729)terminal command 渲为 bare fenced code block(无 language tag 因 Slack mrkdwn 把 "bash" 渲为字面 first line),verbose mode full + non-verbose all/new mode 单行 capped;gate on adaptersupports_code_blocks: bool;7 个 adapter (telegram/slack/whatsapp/matrix/weixin/feishu/discord) 设 True;6d2732e78MarkdownV2 edit finalize(adapterREQUIRES_EDIT_FINALIZE: bool)+f4531feee_strip_mdv2顺序修先剥标准**bold**再 MarkdownV2*bold*防**半剥成*— Sessions/Dashboard639c1e363 feat(sessions)加可选max_concurrent_sessionscap(顶层 config 优先 overgateway.*)跨 CLI/TUI/dashboard/gateway;新建hermes_cli/active_sessions.py 321 行lease registry 在$HERMES_HOME/runtime/active_sessions.json+.lockPOSIXfcntl.flock/Windowsmsvcrt.locking+psutil.Process.create_time()抗 pid recycling;fail-open 设计;4 处 claim site(gateway inbound/cli.run/cli single-query/tui session.start+.resume+.branch)+ JSON-RPC 4090 拒绝码;52ae9d9f0 (#42455)hermes dashboard register凭HERMES_DASHBOARD_OAUTH_CLIENT_IDstable key 幂等(重跑更新而非新建副本)— Agent/Codex/API3a74b7521 + 57775e9e1 (#42741)识别 LM Studio/llama.cpp 把 ctx 报 token 但 prompt 报字符的措辞"... 65536 tokens. ... your prompt contains 77409 characters"走 output-cap 路径降max_tokens而非误路由到 compression;cb4cc08b0Codex app-serverthread/tokenUsage/updated通知现也接入 session accounting(之前在turn/completed之外发因此被丢,导致session_*不长、context compressor 不动);新建agent/codex_runtime.py:_record_codex_app_server_usage(agent, turn)翻译 Codex bucket 名为 CanonicalUsage;b23184cadapi-server_run_agentexecutor 现set_session_vars(session_id=...)让 tools 看到正确HERMES_SESSION_ID(之前看 OS env stale)— Terminala38cc69bc (#42653)POSIX_SANE_PATH8 entry 缺啥补啥而非用/usr/bin哨兵跳过(修 macOS launchd 已含/usr/bin缺/opt/homebrew/{bin,sbin}让gh/brew不可见);新_path_env_key处 Windows case-variantPATH/Path;76f89d66d (#42695)test 锚定迁到TERMINAL_CONFIG_ENV_MAP替 AST-scan 已消失_config_to_env_sync字面量 — Yuanbaoffcd9d7ac媒体解析三阶段 middleware 拆分(QuoteContextMiddleware → MediaResolveMiddleware → PatchAnchorsMiddleware)+ 私聊 fallback 从_msg_content_cache恢复 local 路径不 re-download + 三源 (own/quote/group-observed) first-occurrence dedup;24a934295测试加 missingpatchimport 修 25 call siteNameError— Skills-hub5e9d7a766 (#42347)修两 bug 让 GitHub rate-limit-zeroed catalog 不再上线:(1)scripts/build_skills_index.pywrite-before-check → 失败时 exit 2 不写 +deploy-site.yml移除|| echo non-fatal让 step 严格致命;(2)GitHubSource._list_skills_in_repo403 silent return → 经新共享_github_get重试 + 把 429 视作 rate-limit 信号;ClaudeMarketplaceSource持持久GitHubSource让 rate-limit state 跨 marketplace-index fetch + per-skill inspect call 保留 — Doctor732ababa1 + aa424e51a允许model.provider: custom:<name>的 vendor slug +is_aggregator识别custom:<name>作 OpenAI-compat aggregator(命名 custom provider)— Deps/Packaging/Nixf6416f50f (#40179)PyJWT[crypto] 2.12.1→2.13.0(PYSEC-2026-175/177/178/179)+ 加urllib3>=2.7.0,<3(GHSA-mf9v-mfxr-j63j 解压炸弹 + GHSA-qccp-gfcp-xxvc 敏感 header proxy redirect);b5421f4ba (#40522)packaging==26.0入核心依赖(之前仅 transitively 到达,slim Docker 缺它致 hindsight_meets_minimum_version返 False 让 append mode 关 #40503、lazy_deps fallback "installed counts as satisfied" 破版本约束);5750d058f (#39881)pytest-timeoutmethodsignal→thread跨 Windows;a5d05cf30(HEAD)nix/lib.nix:152-160npm-lockfile-changed branch 不再跑.#fix-lockfiles("its so slow");02f878ec5 (#42856)Windows native 数据目录文档纠正到%LOCALAPPDATA%\hermes(scripts/install.ps1设的真实路径,原文档错称%USERPROFILE%\.hermes);68a997fedREADME 加 SEO 锚链 — 杂修+测试50ad191a8 (#42626)autouse fixturemonkeypatch.setattr加raising=False防 xdist 分进程 import race;d6c11a457 (#42356)test_concurrent_handles_tool_error改按args.get("q")决定 raise 而非共享计数防 race;4 条 AUTHOR_MAP(underthestars-zhy/m4dni5/ruangraung/mnajafian-nv/jooray) -
2026-06-08-update: 178 commits 跨日同步(hermes-agent
c9863772 → 754154a9c,仍 v0.16.0 未发新版;约 120 fix / 19 feat / 15 refactor / 12 test / 8 chore / 3 docs / 1 hardening)— Photon Spectrum iMessage 新平台插件(12 commit:新建plugins/platforms/photon/ 1981 行含adapter.py:200 class PhotonAdapter + :795 register()注册setup_fn=_cli.gateway_setup / pii_safe=True / allow_update_command=True / emoji="📱";inbound aiohttp 8788 端口/photon/webhook验X-Spectrum-SignatureHMAC-SHA256 + ±5 分钟时钟漂移拒绝 +message.id去重;outbound 因 Photon 暂未公开 HTTP send 端点改 spawn Node sidecar loopback 8789 跑spectrum-tsSDK,shared bearer token;auth.py 581 行RFC 8628 device-code 流 + token 持久化~/.hermes/auth.json:credential_pool.photon;cli.py 340 行hermes photon setup/status+ group-chat mention 门禁PHOTON_REQUIRE_MENTION+PHOTON_MENTION_PATTERNS与 BlueBubbles 对齐;d7f42e368全 channel parity(gateway setup 集成 + PII 安全 + allow_update_command);186651857group-chat mention 门禁;630318e95refactor 把login子命令折入setup;多个 CodeQL clear-text-{logging,storage} 修补全清零)— God-file 解耦运动 Phase 1-4(15+ refactor commit 析出 ~12k LOC):agent 内54870847c新建agent/turn_context.py 388 行 :39 @dataclass class TurnContext + build_turn_context()析出 run_conversation 前 ~470 行 prologue +524453dab新建agent/turn_retry_state.py 68 行 @dataclass TurnRetryState集中 15 个零散 per-attempt one-shot guard +55b83c3d9新建agent/turn_finalizer.py 428 行 def finalize_turn()析出 post-loop tail(run_conversation 4204→3846 LOC、conversation_loop.py 4578→4220);gateway/run.py 三 mixin(HEAD:1163-1165,1866 class GatewayRunner(GatewayAuthorizationMixin, GatewayKanbanWatchersMixin, GatewaySlashCommandsMixin)):a706a349b析gateway/authz_mixin.py 426 行4 鉴权方法 +1c68f6f81析gateway/kanban_watchers.py 1064 行6 kanban 方法(1035 LOC)+619bd7827析gateway/slash_commands.py 3393 行42 个_handle_*_command处理器(3200 LOC)合计 4883 LOC 自 run.py 移出;CLI 双轨:b2e605324+4da45e872+568e12761+1a626470c建hermes_cli/subcommands/ 39 子文件 2857 LOC把 main() 内 3297 行 argparse 树拆出(cron/profile/gateway/proxy/model/setup/postinstall/whatsapp/slack/login/logout/auth/status/webhook/hooks/doctor/security/dump/debug/backup/import/config/version/update/uninstall/dashboard/gui/logs/memory/acp/tools/insights/skills/pairing/plugins/mcp/claw 等 35 子命令)+a77efada5新建hermes_cli/model_setup_flows.py 2648 行析 18_model_flow_*provider-setup 向导(main.py 14050→11479)+0904bc7ea新建hermes_cli/cli_commands_mixin.py 2175 行析 32 slash-command handler(2077 LOC)+094aa85c3新建hermes_cli/cli_agent_setup_mixin.py 681 行析 agent-construction 5 方法(cli.py 14139→13492);全部 refactor 自陈 byte-identical/MRO-resolved 行为不变)— Desktop 客户端/后端版本与更新按钮分离(9 commit:9e360681fweb_server.py +53/api/hermes/update/check加 best-effortcommitslist;ed1e2533b新建apps/desktop/src/lib/version-bar.ts + .test.ts在 status-bar 同显client vX · backend vY+ drift flag;64da518dbcheckUpdates/applyUpdates 经connection.mode === 'remote'改驱动后端/api/hermes/update命令中心路径;9c264555b新建apps/desktop/src/lib/update-copy.ts + .test.tsresolveUpdateCopy({target, shownItems, copy})显 "Backend update available" + 无 changelog 时 honest copy;87ac7cac1_recent_upstream_commits从HEAD..@{upstream}改HEAD..origin/main修 feature branch 上 commits 空的 bug;56be1a63a把 status-bar 合并 pill 拆 client vX(always)+ backend vY (+N)(remote-only)两 button + 各自 overlay target + 删version-bar.tsmerge helper + store 两套独立 atom;81647458cremote restart 后 poll backend 直答清 overlay;cd030f5f4+b000e05b1+74239b494overlay 成功/无返回的诚实判定 + i18n)— Desktop 主题 per-profile(9b1e0d6f7 feat(desktop): assignable themes per profile (#42286):apps/desktop/src/themes/context.tsx:25-60加PROFILE_SKINS_KEY/PROFILE_MODES_KEY/LAST_PROFILE_KEYper-profile 持久化 +profilePref<T>()factory 让 default profile 直走 legacy global slot 保 single-profile 安装零变化,命名 profile 自身记录、未赋值时 fallback global)— Desktop hover-reveal 折叠 sidebar(d65b513f2 (#41670)PaneShell hoverRevealprop:collapsed 时 hover 左边界 float 回为 fixed overlay 覆盖 main content + edge hot-zone + 持久 resize 宽度 + pointer-leave 退回;session sidebar opt-in) — Shift+click 状态栏 zap 切全局 YOLO(fa42ac094 (#41666)之前只切 per-session bypass 同 TUI Shift+Tab;Shift+点 zap 翻approvals.modeconfig"off"/"manual"全局影响 CLI/TUI/cron 且 survive 重启;statusbar-controls经新StatusbarSelectModifiers透传 shiftKey;yolo-session.ts setGlobalYolo()config.set scope="global")— Desktop viewport 不再追流式输出(e029b7597 (#41414):删 streamingResizeObserverre-pin loop + post-run bottom lock 1.2s;保留 user submit/new turn/session change 一次性 jump-to-bottom)— Desktop just-finished session 切走不消失(395ed9189 (#42285):新 session 首回合持久化稍晚一拍,新增sessionsToKeep()跟踪 settled (working→idle) 让它撑过 refresh window 不被mergeSessionPage驱逐)— Desktop scoped session 事件 guard 收紧 + 反弹(de80d28f3 (#42178)把message/reasoning/tool/subagent必须带 session_id 修,但吞了 focused turn 自家 unscoped live answer →6e7033bb4 (#42359)把 guard 收窄到subagent.*唯一真背景家族)— Desktop zoom 持久化 #41747 / messaging source folders 6 commit / 新 model provider 在 Settings 出现 #41545 / sleep/wake 后 stale backend revalidate / renderer bundle 缺失硬失败 #41729 / dist 解开 ASAR 让 dashboard 静态可服 / Windows pack 时 Hermes.exe 锁 #42100 — 新 simplify-code skill(ace4b722d feat(skills): add simplify-code skill — parallel 3-agent code review and cleanup (#41691):新建skills/software-development/simplify-code/SKILL.md 175 行灵感来自 Claude Code/simplify,3 narrow reviewer(reuse/quality/efficiency)经delegate_taskbatch mode 并发,整 diff 不裂片,每 reviewer 拿terminal/file/searchtoolset + repo path;支持 focus/dry-run/scoped modifier;零核心修改全靠 orchestration)— Windows ConPTY 接通 dashboard/chattab(abcf996b1 feat(windows): enable dashboard /chat tab via ConPTY (win_pty_bridge) + tests (#42251):新建hermes_cli/win_pty_bridge.py 179 行POSIXPtyBridgedrop-in 替代用pywinpty.PtyProcess(已是 win32 declared 依赖)替 ptyprocess/fcntl/termios;spawn/read/write/resize/close/is_available + PtyUnavailableError公开 surface byte-identical;clamp ceiling 与 POSIX 对齐;hermes_cli/web_server.py:8285-8316平台分支让/api/ptyWebSocket handler 完全 platform-agnostic)— Codex OAuth 帐户独立 pool entry + OpenRouter pool 自动侦测(c78b3e1d3hermes auth add openai-codex改创独立manual:device_codepool entry 不再经 singleton_save_codex_tokens覆盖前一个;9c9d9113a (#42263)hermes_cli/auth.py:1589-1605resolve_provider()在 env 后 fallbackload_pool("openrouter").has_credentials()修hermes auth add openrouter后 manual entry 隐形 401 #42130)+ Approval 路径解析时机修(89d380261+b0efe1d64把 HERMES_HOME 解析从 import time 移到_normalize_command_for_detection()让 deferred-profile-resolution 也工作)— Vision providers 拒收 list-type tool content 主动降级(9513793ad (#41072)ProviderProfile加supports_vision_tool_messages: bool = True,Xiaomi MiMo 设 False,_tool_result_content_for_active_model现 proactively 查此字段,False 时返 text summary 免 400 "text is not set" round-trip)+ honor custom_providers per-modelsupports_vision(41f071428 (#41036)_supports_vision_override()扩 legacy list-stylecustom_providers路径)— Compression 防泄漏四连:8513a6aec+cca3b77a4cross-session stale_previous_summary守(cron/background session 压缩后未走/new//reset,stale summary 留实例污染下一 live session)+a77bc2c08 (#41708)background-review fork 共享 parent session_id,赢压缩竞争时新 child 永不被 gateway adopt 让下回合从 stale parent 再压一次造成同 parent 两 sibling children;改review_agent.compression_enabled = False+2a10da3a1topic+split 后/model+/reasoningoverride 保(之前 handler 从 rawevent.source推 override key 跳过 thread_id recovery,写在一种 key 下一回合读另一种 key #30479)+b18490b89transcript 全装 tail budget 时无限 loop(summary_target_ratio=0.45 + context_length=96000让 soft_ceiling 超 transcript 总大小,_find_tail_cut_by_tokens不 break early、no-op compression 不增_ineffective_compression_count,should_compress 每回合 True)— Memory 集群:86c537d20 (#41755)overflow 错语指令 in-turn 整合+retry(replace-overflow 现也 echocurrent_entries + usage)+aa6f2775f (#41945)end-of-turn sync 离 turn thread(broken Hindsight daemon 阻塞 298s 让 run_conversation 不返、agent 卡 running、跟进消息触发 aggressive interrupt 丢失新消息)+5e06c9ffe (#42123)AIAgent.close()清_session_messages(hard close 镜像 soft-eviction)+e9c1e757f (#41974)gateway_evict_cached_agent释放 httpx client(之前 17 call site 只 pop 不 release,AIAgent ref cycle 让 client pool 不立即 free、RSS 单调增 #29298)+3d029a53e余下泄漏点 4 个 site(~18MB/hr 增)— Gateway 集群:8e4c447e5duplicate user message in state.db(agent_failed_early+not-new-messages 两 fallback 路径 missingskip_db=True重复持久化)+dd0d1222acascading interrupt hang(interrupt close worker httpx 触 RemoteProtocolError 被误为 transient connection error 重试,每次 retry 停 stream-stale timeout 300s)+d55304c39voice 在 agent 跑时也转录(之前 STT 在 running-agent guard 后跑,voice effectively 丢) +4d0f2bd24+fec5ca71dbusy_input FIFO(#28503) +2e6286278 (#41716)Telegram polling-conflict reschedule 用get_running_loop替get_event_loop修 Python 3.11+ PTB dispatch error callback 时 RuntimeError +540801336 (#41764)DM session 凭 user_id 隔离(之前build_session_key把所有无 chat_id DM collapse 到agent:main:<platform>:dm共享 key → 单 AIAgent 服多用户 history 渗血)+e02f4c03c--replace老 PID 抗 SIGKILL 时中止(之前无条件清 PID file 启新 → 两 gateway 争 bot token #19471)+4d18717b6 (#41892)systemd--replace去除(在 Restart=always 下每次重启 self-kill loop)— Auxiliary:2789bf4e2 (#5709)Codex Responses 共用转换器(之前 auxiliary Codex adapter 自维护转换 loop,让 replay 含role=tool的消息泄入 Responses 入 input[] 抛 HTTP 400 "Invalid value: 'tool'")+02a4d6695 (#16587)单次 same-target retry 在 fallback 前(_is_transient_transport_error()闸) +399b8ee5f (#42155)Anthropic kwargs sanitize(Responses-onlyinstructions/input/store/parallel_tool_calls在 api_mode-flip 罕见 race 抵达 native Anthropic SDK 抛 non-retryable TypeError 杀整 turn;双 dispatch site 加sanitize_anthropic_kwargs()drop in place + WARN log #31673 breadcrumb)— Plugins 集群:ccacfdbd6 (#41066)_discover_all_plugins()recurse 2 level 发现web/* / image_gen/* / browser/* / video_gen/*之前 flat iterdir 漏;_plugin_status()双查 manifest name AND path-derived key +2b89afec7补 enable/disable mutation path(之前cmd_enable/cmd_disable经_plugin_exists()只查 top-level)+47d5177a7 (#42150)lazy-singleton 线程安全 helpers(get_honcho_client()与 fal_load_fal_client()用 unlocked check-then-init 让 racing thread 都跑昂贵 build、loser client open connection 泄;新建plugins/plugin_utils.py两 thread-safe lazy-singleton helper 闭 honcho TOCTOU #24759)— Install/Update 集群:e88116256git fetchscope 到目标 branch(baregit fetch origin拉数千 auto-generated branch 让 installer 与hermes update停几分钟)+fc0900d12+5d7abf911+a5c12f5f5 (#40998)commit-less checkout 重 clone 不删(rename 到<dir>.broken-<ts>backup 永不 destructiverm -rf) +4219a91df (#41940)nixaddToSystemPackages时 config.yaml 改 0660 group-writable +d02a59b67 (#41867)+7230fcb7f revert (#42151)nix cold npm 构建 +15c99b437 (#40690)NixOS node-gyp PYTHON env — Hindsight/ACP/Curator:09d66037f (#40605)Hindsight 仅新回合 delta 上送 +777dc9da6 (#41724)ACP session provenance 元数据_meta.hermes.sessionProvenancederive fromparent_session_id/end_reason不持久化 - 让 client 不再需要解析 status text、猜 token drop、读 state.db 新建acp_adapter/provenance.py+9b631e4ae+f5bd09af4ACP interrupt sentinel 简化(共用INTERRUPT_WAITING_FOR_MODEL_PREFIX唯一来源 of truth in conversation_loop.py,server.py 净 -17 LOC) +8e223b36e (#41817)Curator 加PROTECTED_BUILTIN_SKILLS ({plan})守 master gateis_curation_eligible()+ 候选枚举防 LLM consolidation pass 看到(之前 curator idle-archival 路径可 archive bundledplanskill 让/plan沉默返 Unknown command)— Terminal/file-tools:6459b3d99CWD-only override collapse 到 'default' 容器(让 TUI/gateway/dashboard 共一 long-lived container 让一次认证外部服务后跨 session 复用)+329c33dac补:collapse 后三 call site 仍 route lookup 经 collapsed id,写在 raw task_id 下读在 collapsed id 下 CWD-only override 的 cwd 被静默丢,env 在错根启动 exit 126 +e45b74583 (#41861)file-tools 拒收 sentinelTERMINAL_CWD,worktree edits anchor 在 live cwd 存在前(之前 fresh worktree session registry 空 staleTERMINAL_CWD='.'既无 worktree anchor 也无 warning,相对 write_file/patch 静默落主 checkout)— Slack channel-only scope #15421 + Volcengine 工具名 XML 片段剥 #33007 + WeChat 输入指示器 ticket 600s 过期刷新 #38085 + ollama default_max_tokens 65536 修截断到 128 token + custom endpoint 256K fallback 前查 DEFAULT_CONTEXT_LENGTHS + Profiles 跳 default 防重复扫 — 其余:terminal tool 在 markdown 平台渲 ```bash 围栏块替 noisyterminal: "cmd…"行 gated on `BasePlatformAdapter.supports_code_blocks` capability #41215 / TUI `process.on('exit')` terminal-mode backstop #42165(之前 die() 关 mouse tracking 不 reset) / Windows PTY stdin str 替 bytes #41953 / api_server `/health` 报 hermes version #40620 / `hermes_time.reset_cache()` 实现(docstring 提及但函数从未定义 hit AttributeError #41728) / `agent:start/end` hook context 加 `thread_id + chat_type` #41672 / TodoStore 内容长度+计数上限(compression 后重注入防 oversize) / OSC 8 hyperlink 剥(prompt_toolkit 不处 OSC,让 Rich `[link=...]` raw payload 泄入 banner title) / approval/clarify/sudo/secret modal 直绘不走 throttle #41098(之前 60s 超时静默 deny 让 `approvals.mode: manual` 不可用) / stream dropped mid-tool-call 不报 output truncation #42314(之前 finish_reason='length' route 到 output-cap 触 3 次无用 max_tokens-boosted retry + misleading "Response truncated" 错) / TUI 自动 heap dump 防 disk fill(HERMES_AUTO_HEAPDUMP=1 闸 + JSON sidecar + HERMES_HEAPDUMP_MAX_BYTES cap) / aiohttp/anthropic 额外 pin 与 lazy pin 对齐 + generalized regression guard #42335 / 多个 AUTHOR_MAP entry + docs 修补 / `498ae8029a (#41730)` delegate custom-endpoint 凭 endpoint identity 解(之前 parent+child 都 collapse 到 provider="custom" `_resolve_child_credential_pool()` 视作可互换、`_swap_credential()` 覆 child delegated base_url 为 parent endpoint → child 把 delegated model 名发到错 endpoint) / zombie subprocess reap(proc.poll 后调 wait) / dist USER_OWNED_EXCLUDE 嵌套目录不再 drop / image_gen artifact path backend-visible expose -
2026-06-07-update: ~100 commits 单日爆发(hermes-agent
c79e3fd0b → c9863772,仍 v0.16.0,未发新版;GitHubcompare报 108 commits / 290 文件 / 41 contributors,本日 main 线性枚举得 97 独立 SHA;约 62 fix / 12 feat / 8 chore / 6 test / 6 docs / 1 refactor / 1 hardening)— Compression 时间锚定(d87f2939agent/context_compressor.py +32/-1_generate_summary两条 prompt 路径都注_temporal_anchoring_rule把"打算 X"重写为"已于 YYYY-MM-DD X 完成",日期经hermes_time.now()取,时钟失败 fail-open 省略而非阻塞;+114 测试)— Codex gpt-5.5 路由 85% 压缩阈值(0524c9bd5 文件 +218 route-level override 仅 Codex OAuth 路由的 gpt-5.5 因硬钳 272K 窗口提至 85%,其他路由不动;compression.codex_gpt55_autoraise默 true 可关)— Trajectory 配对保护(f10a3309trajectory_compressor.py +81/-10新_is_boundary_clean/_snap_boundary让压缩边界绝不切开 gpt+tool 块,对 RL 训练数据生成尤要紧;+121 测试)— Onboarding 结构化 profile-build(cb3e41e25 文件 +174:新建agent/onboarding.py +60profile_build_directive()强制 agent 必先征同意 / 严禁沉默读已连接账户 / 经 memorytarget="user"持久化;gateway/run.py +31/-1首条消息 swap intro;hermes_cli/config.py +6新onboarding.profile_build默"ask";+73 测试)— Desktop 统一 overlay 设计系统(f033b7d833 文件:所有 overlay raw<button>统一到共享Button+ 共用shadow-nous+--stroke-nous发丝边线 + 1px inset outline +BrandMark替 sparkle +LogView/ErrorState/SearchField/OverlaySplitLayout跨 feature 复用;随附d165933 DESIGN.md成文规范)— Desktop 工具后端完整 GUI 配置(20fd0bdesettings/constants.ts +103/-2ENUM_OPTIONS含 10 TTS provider / 6 STT / 6 Terminal 全下拉 + 每后端字段 voice_id/language/model/device;i18n ja/zh-hant/zh +41 各;配9752434 feat(desktop): run tool backend post-setup installs from GUI)— Desktop+Gateway 远程媒体中转(16786f3b11 文件:新端点image.attach_bytes25MB cap +pdf.attach经pdftoppm150 DPI 渲染 PNG 50MB/25 页 cap +GET /api/mediabase64 data URL 限白名单扩展名 + media root;Desktopuse-prompt-actions.ts +47/-4remote 模式自动切上传字节;media.ts +22isRemoteGateway/gatewayMediaDataUrl)— Desktop per-session 回合计时器(9d7268075 文件 +142/-8:把$turnStartedAt从全局搬到ClientSessionState,修后台仍跑回合切换显示从零的假象)— Dashboard 字体独立选择器(9e63109811 文件:新建web/src/themes/fonts.ts含 Inter/IBM Plex/Atkinson Hyperlegible/Fraunces/JetBrains Mono 等 11+;ThemeSwitcher.tsx +119/-4 FontSection与主题正交 survives theme switches;后端web_server.py +46)— 三平台 fail-closed 安全波(f6f3636 Discord+410cb743 Slack+3fa15b33 Feishu:组件按钮 / 卡片 actions / 审批+slash-confirm 默认拒绝必须显式命中 user/role 白名单或*_ALLOW_ALL_USERSopt-in;Discord_component_check_auth +19/-18+ 93 测试,与 Telegram/Matrix 契约对齐)— approval denylist shell-escape 剥除(621bf3a2 文件 +11/-2 关 #36846/#36847:tools/approval.py:_normalize_command_for_detection +4剥\\([^\n])反斜杠 +''|""空字面量;tui_gateway/server.py +7/-2之前except ImportError: pass改 fail-closed 返 error 5001)— skill_view 路径穿越拦截(56f833e2 文件 +95/-1 关 #40566:tools/skills_tool.py:_skill_lookup_path_error +57/-1三检 POSIX/Windows 绝对路径 +..traversal + Windows 盘符)— memory tool shadow 拒绝(fe8920d2 文件 +73/-1 关 #40902:MemoryManager.add_provider与_HERMES_CORE_TOOLS比对命中即拒入路由表防clarify/delegate_taskdispatch 劫持;built-ins always win)— Bitwarden zip-slip 防御(8f7567c)+ api-server REST cron prompt 扫(0c48b712 文件 +113:POST/PATCH /api/jobs/*调_scan_cron_prompt()与 agent tool 共用扫描器,defense-in-depth)— SEARXNG_URL config-aware 自动侦测(7df81d05HEAD merge #41482:新_env_value()先查get_env_value()后回落os.getenv();让 config-only 设的 URL 也进 auto-detect cascade)— URL 非 ASCII percent-encode(333f01bPR #41430)— Skillsbrowse全目录(1892e22关 #41413:_PER_SOURCE_LIMIT["hermes-index"]5 000 → 1 000 000 让 ~90k catalog 全可见)— Kanban scratch 父清扫补漏(9405cd0主 +76f0178补 2 文件 +89:非 scratch 子完成时早 return 前先跑 parent sweep,修永久 scratch 工作区泄漏)— TUI SSH cwd 保留(0e0d7042 文件 +91/-11:新_terminal_task_cwd()non-local backend 保留远端路径不被本地化清空;+f9ea492测试)— Pillow 提核心依赖(b13ab0bpyproject.toml +14/-8:oversized image 缩放在 vision-embed 关键 + 修 lazy-install 在 prompt_toolkit 持终端时锁死 #40490;[vision]extra 收为空 back-compat alias;+5b55f4fuv.lock 同步 +c3d750c+d47f919教训外推所有 lazy-install 在 prompt_toolkit 持终端时强制prompt=False)— 自定义 provider v11→v12 迁移保留 models 映射(887295b3 文件 +134/-17:新_custom_provider_entry_to_provider_config保models/context_length/rate_limit_delay/discover_models/extra_body/api_mode→transport/model→default_model不丢 per-model context_length 元数据)—model.default_headers三处一致生效(a216ff8agent 主 +ffe6652aux #40033 +591e6fbcomputer_use)— Kimi 严格 thinking ⊕ reasoning_effort(ce4e74b+03392b6opencode-go 同契约)— Windows 强化(210f4e7+8720023+5dee40fpowershell.exe 绝对路径 /b08662bstderr Unicode handler /fc086daJOB breakaway /fe0b3f2watcher Popen 重试 /f3af489install.sh root-owned npm cache 提示 #39688 /bec0796+fe2942acolor-emoji fallback #40364)— MCP 已 ready 跳过 preflight(af08c43关 #40604)+ cua-driver MCP stdio 重连(365437e)— 杂修:qqbot WebSocket 100% CPU spin(3eeca46)/ ffmpeg TimeoutExpired(3289d4a)+ subprocess 超时守护(7223f22)/int(os.getenv())守护(2912d94关 #40598)/ Simplex display name(490c486)/ Honcho env fallback(e2cc24e)/ image-gen Codex 改 gpt-5.5(bb53edc)/ OpenRouter 输出 cap 解析(1fb99b1)/ Inventory force_fresh_nous_tier 仅 keyword(44c0c2d+eb70ab8)/ Desktop bootstrap install.sh 404 fallback(02aad08)/ 裸 URL autolinker 末尾 emphasis(349a3f6关 #41093)/ 同 provider 换 model 保 base_url(0507e46关 #41121)/ destructive-slash 取消返 bool(136dae7关 #40583)//modelper-session 不泄进程 env(5a3092b关 #41120)/ Desktop session 列表按 profile 过滤(b55ac45)+ Gateway startup 加固(330ca45)/ TUIliveSessionCount只变值时 patch(8992955)/ uninstall Chat GUI 不动 agent(5b43bf72)/ Home Assistant 从/updateallowlist 退出(f4a73ab)/ install/TUI/workspace 安装作用域 6 连(4bf5202+0416f85+675fb10+1c0437d+7db7a94+f2e8234)/ Bitwarden 无 TTY 早报错(89040e0)/ OSVnpx --packagehonor(c0424b0)/ 6 docs 修补 / 5 chore(release) AUTHOR_MAP -
2026-06-06-update: 75 commits 跨日同步(hermes-agent
66a6b9c930 → c79e3fd0b,v0.15.1 → v0.16.0 "The Surface Release",874 commits · 542 PRs · 170 contributors · 399 issues closed 自 v0.15.0;约 47 fix / 15 feat / 6 refactor / 5 test / 1 chore / 1 docs,约 24 小时窗口)— v0.16.0 发布(3c231eb39:pyproject.toml:10+hermes_cli/__init__.py:17 __version__ = "0.16.0"+__release_date__ = "2026.6.5")—/version全栈贯通(9c1bb8d2c+30340eae2+78122c52c:hermes_cli/commands.py:219 CommandDef("version", aliases=("v",))+ CLIcli.py:9076-9079+ Gatewaygateway/run.py:10942-10946 _handle_version_commandreuseformat_banner_version_label()含 git SHA + Desktop slash-command + Slack/q因 50 槽硬上限被新/version顶出去仍可/hermes q触达)—/usage用量感知 Credits 系统(fcb1944b433 文件 +4535/-26:新建agent/credits_tracker.py 723 行CreditsState dataclass :93含subscription_microsSIGNED 唯一允许负值 +paid_access锚 depletion(永不remaining==0)+parse_credits_headers() :319+CREDITS_USAGE_BANDS 50/75/90升级 status-bar 单 key +evaluate_credits_notices() :200纯函数 reconcile;run_agent.py:2721 _capture_credits()fail-open +:2802 _emit_credits_notices()共享 warm/cold-start seed;cli.py:10595 _show_usageagent-independent(TUI slash-worker 无 agent 也能 print credits block);TUIappChrome.tsx +90cents delta + escalating usage band 段 +(dev credits)banner 经HERMES_DEV_CREDITS;tests/agent/test_credits_tracker.py 909 行92 测试 9-state 矩阵;c79b6f23egrant-spent 一次性闪现不再 sticky)—/steer桌面化 + 中转可信标记(6 commit:composer/controls.tsx:75-89 <SteeringWheel size={16}>busy + trimmed-draft 时显示 +composer/index.tsx:176 canSteer;efa53fb3bCmd/Ctrl+Enter 严格保留 steer 永不 fall-through 到 send;agent/prompt_builder.py:443-472 STEER_MARKER_OPEN/CLOSE边界标记 +STEER_CHANNEL_NOTE进 system prompt 教模型"只信此 marker 内文本,lookalike in tool output/web/files 仍 untrusted"防 prompt injection 误判;tui_gateway/server.py:4234 @method("session.steer");7cceead27system note 渲染为 codicon (compass) 替 ⏩ emoji;0f45509damid-turn steer trusted 不读为 injection)— Desktop 可重绑键盘快捷键面板(7 commit + Merge:新建apps/desktop/src/lib/keybinds/actions.ts 125 行单一 keybind registry(KEYBIND_CATEGORIEScomposer/profiles/session/navigation/view+PROFILE_SLOT_COUNT=18⌘1..9/⌘⌥1..9 +KEYBIND_READONLYcomposer.send/.steer/.history 等不变 row)+ 新建combo.ts 169 行event.code-based 规范化让 Shift 不变 base key(shift+/不变shift+?) + 新建store/keybinds.ts 139 行nanostore$bindings仅持久化与 default 不同的项 +$comboIndexreverse 查 +$capturearmed 等下次 keypress + 面板 store;新建apps/desktop/src/app/shell/keybind-panel.tsx 226 行+apps/desktop/src/app/hooks/use-keybinds.ts 186 行;hotkey 抉择:profile.default 从⌥⌘0→⌘D(D for Default),flipPanes default⌘\(镜像翻 layout),keybind 面板自身⌘/)— Desktop i18n 日本語 ja + 繁體中文 zh-hant + 可搜索语言切换器(7 commit Jim Liu 宝玉:新建apps/desktop/src/i18n/ja.ts 1854 行+zh-hant.ts 1813 行+ 扩types.ts 1416 行嵌套结构 +languages.ts 86 行endonym日本語/繁體中文;b1b89f843 72 文件 +4397/-1428把扁平 i18n field 重构嵌套;812dc6957新language-switcher.tsx可搜索;112a0732c +3051单 commit 大补译 ja/zh-hant;1c2189839settings i18n keys 转 camelCase;fbd423b94localize desktop chrome)— Home Assistant adapter 迁入 bundled plugin(c37c6eaf2+ef7e5168b:新建plugins/platforms/homeassistant/adapter.py 128 行+plugin.yaml 22 行,删gateway/run.py -7inline 路径,与 Mattermost/Discord 迁移对齐;/updateallowlist 收紧让 plugin-migrated 走 registry fallback + 121 测试覆盖)— Adaptive execution intercepts middleware + NeMo-Relay 增强(3 commit Bryan Bednarski NVIDIA:hermes_cli/middleware.py 314 行4 类(tool_request/tool_execution/llm_request/llm_execution)+next_call单次性 +_safe_copydeepcopy 兜底 + translated downstream 失败 propagate;HEAD 8 处 Hermes call site(agent/conversation_loop.py:1243,1375+agent_runtime_helpers.py:1637,1806+tool_executor.py:184,227+model_tools.py:987,1114);plugins/observability/nemo_relay/__init__.py 836 行加adaptive_enabled/adaptive_mode字段 +ctx.register_middleware("llm_execution"/"tool_execution", ...);新建docs/middleware/README.md 260 行;总 +2168 行 +614 行测试)— Dashboard Skills hub 浏览器重做(56236b16e4 文件 +1281/-72 +e6de6dd55详情对话框间距):新端点GET /api/skills/hub/sources :6790列 hub + trust tier + GitHub rate-limit + featured + installed map /:6894 preview读 SKILL.md 文本+文件清单不安装 /:6955 scan跑 quarantine + scan_skill + should_allow_install 安全 verdict /:6849 search加 per-source counts + timeouts;前端web/src/pages/SkillsPage.tsx 1442 行HubBrowser landing connected-hubs strip + featured grid + trust-color cards + Detail dialog 读真 SKILL.md + 视觉安全扫描 + GitHub repo link;4 新端点 test class)— Dashboard 工具后端完整 GUI 配置(2bf0a6e767 文件 +866):CLI 新子命令hermes tools post-setup <KEY>非交互 +valid_post_setup_keys()校验防注入;3 新端点PUT /api/tools/toolsets/{name}/env :7706写~/.hermes/.env+POST /api/tools/toolsets/{name}/post-setup :7764spawn-action 跑 install hook + tail log;新建web/src/components/ToolsetConfigDrawer.tsx 448 行全生命周期 enable/disable/pick provider/save key/run install hook+log tail)— Desktop 暴露hermes model全 37 provider + stale-aux pin 警告(e8c837c92+b91aade178 文件 +411 + 7 文件 +217:/api/model/options加include_unconfigured + picker_hints + canonical_order让 GUI 看到全宇宙;apps/desktop/src/app/settings/model-settings.tsx +174inline "paste key → Activate" 流;switch main 时/api/model/set scope:'main'返stale_aux让 Desktop 显 banner + "Reset all to main" 提示,永不自动清 pin —— 专门便宜 aux 是合法配置 surface-and-offer 而非 nuke)— Gateway/Desktop macOS 26 launchd 降级(59c273ba3 +279/-33+360630733 +104/-37:hermes_cli/gateway.py:3002 _launchd_domain() user/<uid>替gui/<uid>(macOS 26 后者返 error 125)+:3015 _LAUNCHCTL_DOMAIN_UNSUPPORTED_CODES = frozenset({5, 125})持续不支持时:3051 _spawn_detached_gateway()真 detach 用nohup hermes gateway run --replaceworkaround,logs→gateway.log,PID 经 gateway.pid 跟踪让 stop/status/restart 继续工作;184 测试)— Composer Arrow 历史 + 队列融合 + drop-shadow 删除 + IME compositionend flush(8 commit:新建composer-input-history.ts 158 行+ 147 测试 ArrowUp/Down 翻已发送+queued 史 + queue 非空时 ArrowUp 编辑 queue 末项;0cbcc7593queue 可靠性 14 文件 +656/-122;e375c33f7 +71/-25TUImessage.complete边界 force-send 一次中断路径 queue+interrupt 替 optimistic send;40386f33e删shadow-composer平衡 Apple HIG;8e629b9f3 +25/-11onCompositionEndflush 修 IME #39614 + 三测 中/日/韩)— Desktop About panel 显活版本 + macOS updater repair + OAuth path 修(3 commit:16beab421 +19seedapplicationVersion: resolveHermesVersion()经hermes_cli/__init__.py读 + click handlershowAboutPanelFresh每次开重解,in-place update 无需重启 reflect;0c0a70774updater helper paths.rs 路径解析;b8234e759+be2c64be0抽oauth-net-request.cjs 20 行helper + 34 测试避受限originheader + serializeJsonBody wire 进生产路径)— FTS5 ":" 脱毒 + delegate content-block(d1771114e+f83918c31+f8a241e10:hermes_state.py:2708-2739 _sanitize_fts5_queryStep 2 在 strip 字符集[+{}():\"^]加:(col:term operator 在单 content 列上TODO: fix抛 no such column 被吞为零结果)+ 25 测试;tools/delegate_tool.py +33_stringify_tool_content拍平 content-block 数组([{"type": "text", ...}]blob)+ error block 识别;_extract_output_tail同走 helper)— CLI 更新时隔离 hermes.exe(ebed881d4:抽_run_quarantined_installhelper 让 dep-verification repair 同走 rename-out-of-the-way/restore-on-failure;hermes_cli/main.py:8776 _hermes_exe_shims+:8791 _detect_concurrent_hermes_instances用proc.parents()整祖先列扫 + 只排 shim 父进程;:8934 _quarantine_running_hermes_exe;:12836扫 stalehermes.exe.old.*清理;regression test fail on old / pass on new)— Desktop log 大小封顶 + 级联轮转(abbf05024+146e77684apps/desktop/electron/main.cjs:265-268 DESKTOP_LOG_MAX_BYTES=10MB / BACKUP_COUNT=3 / DISCARD_BYTES=40MB:mirror PythonRotatingFileHandlercascade live→.1→.2→.3 drop 最旧;steady-state ~40MB;DISCARD_BYTES 上 ceiling 直接删 multi-GB boot-loop 巨档自愈用户磁盘;同步/异步两路径都 try/catch 保 startup/shutdown 不被 logging 错阻;伴2820d87eatolerate staledashboard --tuifrom 旧 desktop shell back-compat guard 防 crash loop)— Middleware next_call 单次性 + deepcopy 兜底 + translated 错误保留(c4c5548eb+5abe45674:hermes_cli/middleware.py:258-302next_call单次性守护抛 RuntimeError 防 silently re-run downstream;:58-74 _safe_copy()deepcopy 失败回退 shallow dict copy 防threading.Lock/callbacks/file handles 在 payload 时整 middleware pass 被 abort;translated downstream 失败 propagate 不再返 None;BaseException 不 wrap)— Install Windows npm TLS 证书侦测(fd234bad6scripts/install.ps1 +40新Show-NpmCertHint检unable to get local issuer certificate给 actionableNODE_EXTRA_CA_CERTS/strict-sslremediation 修企业 MITM proxy / 缺 root CA 误读为权限问题 #38016)— Gateway plain text while busy 默认 interrupt(54e7b74f74 文件 +52/-18 关 #38390/#31588:busy_input_mode重夺单源真理,busy_text_mode沦为遗留显式 override;所有默认 fallbackqueue → interrupt;gateway/run.py:3223-3245 _load_busy_input_mode/_load_busy_text_modeHEAD 实证;伴 portscompression.enabled=false时 long-context 429/413/context-overflow 不再静默_compress_context()而是终结错compaction_disabled: True)— 杂项:50f9ad70fDashboard cron 派单下拉读已配置 platforms /338c07433send-message ntfy topic 当显式 /ea266f43erg/grep search error guard 接 partial matches 保留 +266 /7c4aa3e4d+c79e3fd0bimage-gen artifact 路径暴露 backend-visible + 抽map_cache_path_to_container共享 helper /5af899c7cprofile alias 显示反向查 wrapper dir /e6de6dd55skill 详情对话框间距 /78122c52c/qtest 因/version占槽更新 -
2026-06-05-update: 289 commits 跨日同步(hermes-agent
6fff744158 → 66a6b9c930,仍 v0.15.1;163 fix / 45 feat / 21 style / 16 chore / 10 docs / 7 test / 7 refactor / 2 perf / 1 revert / 1 polish;日产能 06-03:57 / 06-04:176 / 06-05:53 / 06-06:3)— Desktop 多 Profile 革命:Arc 风格 Profile Rail + 跨 Profile 会话聚合(b94b3622b52 文件 +2517 / -796:新建apps/desktop/src/lib/profile-color.ts 71 行确定性 hash hue + 12 swatches +apps/desktop/src/store/profile.ts 299 行5 nanostore atom + localStorage 持久化 +apps/desktop/src/app/chat/sidebar/profile-switcher.tsx 491 行dnd-kit 横向 reorder + 右键/长按 ContextMenu +hermes_state.py:3189 session_count(exclude_children)+hermes_cli/web_server.py:1637 get_profiles_sessions)+ 并发多 Profile Gateway Sockets(4891f9ae712 文件 +585 / -173:新建apps/desktop/src/store/gateway.ts 290 行含primaryGateway+secondariesmap + 1s/2s/4s..15s 退避 +activeGateway()路由 +ensureGatewayForProfile()单 profile fast-path,approval/sudo/secret prompts 改 per-session keyed-by-sessionId 暂存通过 needs-input 徽章呈现不再 hijack foreground)+ 每 Profile 独立远端 Gateway 主机(#39778,7 文件 +379 / -104:新建apps/desktop/electron/connection-config.cjs 254 行含profileRemoteOverride纯函数 + 6 单元测试 +resolveRemoteBackend(profile)4 级 precedence override→env→global→local,告别 "Profiles unavailable when connected to remote" 硬抛)+ Profile rail 14 条 follow-up(rename/delete 右键、drag-sort、长按选色、fluid haptic reordering、单 profile "+" 入口、"+" all-profiles 视图按 profile 起 session、cell-by-cell 步进、x 轴锁、session-id 搜索 SQL-bounded、session.titleRPC 让/titlework、aux model 搜索移除)— Desktop 全局 Cmd+K 调色板 + UI 一致性大扫除(ac9de2e80+ 15 style/feat commit:新建apps/desktop/src/app/command-palette/index.tsxcmdk +store/command-palette.tsopen/close/toggle + Cmd+P 别名cfbc47d89+ 共享 SearchField/ErrorState/Badge primitive + controlVariants 统 Input/Textarea/SelectTrigger +8c0f15478减按钮缩放 + flatten appearance settings + kill focus rings 全局 + boxless text 按钮变体)— Desktop i18n 简体中文 zh-Hans + 配置持久化(4a1907bd136 文件 +4226 / -1378 +1d9c3ebae21 文件 +830 / -135:新建apps/desktop/src/i18n/模块 2431 行含types.ts 610 行 Translations interface+en.ts 744 行+zh.ts 873 行+languages.ts 56 行endonym简体中文+runtime.ts/context.tsx/catalog.ts+ 24 屏改 hard-coded → t 对象 + Appearance 设置加 Language 下拉 + 改读 Hermes config 让 Desktop ↔ Dashboard ↔ CLI 共享语言)— Dashboard Auth 三新 provider:BasicAuthProvider 用户名/密码(acb0e2bac新建plugins/dashboard_auth/basic/__init__.py 491 行无外部 IdP 无 DB + scrypt password_hash + stateless HMAC token + env 赢 config.yaml 与 Nous 一致)+ SelfHostedOIDCProvider 通用 OIDC(f57ce341d新建plugins/dashboard_auth/self_hosted/__init__.py 736 行Authentik/Keycloak/Zitadel/Authelia/Auth0/Okta/Google 全兼容 — discovery + PKCE S256 + ID token RS256/ES256 验证 vs JWKS uri / iss / aud;public PKCE clients only# TODO(confidential-client))+hermes dashboard register(bb291b6bbhermes_cli/main.py:12403 cmd_dashboard_register+:15712-15754subparser 含--issuer/--client-id/--portal-url)+ Desktop username/password 远端 gateway 登录(bd12b3c23+9d07927a2OAuth-aware + scheme probebf590c81d+ dead WS ticket 回避385a508e4+ 重新 mint OAuth WS ticket on reconnect928f1ac0e)+ed63170epluggable non-redirect password 登录+ Verify chain 一 provider 错不短路(616c0a36b)— Discord 语音频道软件混音器(8a9ded5b26 文件 +952 / -1:新建plugins/platforms/discord/voice_mixer.py 378 行 :148 class VoiceMixer(discord.AudioSource)自己即 AudioSource,每 20ms 调read()把 child sources 加和 clamp int16,48kHz/2ch/int16 LE/20ms 3840 字节 ==discord.opus.Encoder.FRAME_SIZE;ambient idle bed 始终低音量底色 + verbal acks/TTS 在 speech 通道覆盖并 duck ambient gain;安装一次vc.play(mixer),children 增删,永不 stop 无is_playing()race;threading.Lock 守跨线程 state;test_discord_voice_mixer.py 264 行测试)— Telegram QR 入门 CLI + Dashboard 双面(6bf55a4734 文件 +833:新建hermes_cli/telegram_managed_bot.py 358 行扫码 → 自动消息 → 用户 id 写 allowlist + bot token 写 config,告别 BotFather 人工 token 复制;tests/hermes_cli/test_telegram_managed_bot.py 323 行+hermes_cli/setup.py +117 / gateway.py +51接入;Dashboard 同样 QR 入口2f0c8e90e)— Feishu 视频会议邀请事件(f3bbfda6dgateway/platforms/feishu.py:1635-1636,2481,3372订阅vc.bot.meeting_invited_v1+ 新建gateway/platforms/feishu_meeting_invite.py 212 行 handle_meeting_invited_event投递结构化通知给 agent;731475787 refactorslim parser)— Gatewaymax_tokens全链路传播修复(#20741,4 commit:cf786593cgateway/run.py:1205-1232 max_tokens chain优先级HERMES_MAX_TOKENS > model.max_tokens > custom_providers max_output_tokens > None+:2621,2719session override/runtime_kwargs;1c909e75eCLIcli.py +14路径补HERMES_MAX_TOKENSenv override;14275d7bahermes_cli/runtime_provider.py:477 _lift_max_output_tokensacceptsmax_output_tokens或max_tokenssibling 字段 +:559,581,631,720,7595 处 call site;2dda393f9 tests/gateway/test_max_tokens_propagation.py +178回归保护)—discover_models在 named-custom 流接上(2 commit7ae8aac3b+4b2d00f84共 +294 行,custom_providers section 4 与hermes model named-custom不再静默忽略discover_models: true)— Update 非交互默认 stash/restore(72eb42d9e8 文件 +335 / -255 revert #38542/#39568:hermes_cli/config.py:2287-2293 non_interactive_local_changes新 key 默认stash+_config_version 26→27;hermes_cli/main.py:8378-8423 _discard_stashed_changes()永不reset --hard/clean -fd用 stash + drop 保 ignored 路径生存;scripts/install.ps1 +76Windows 同步 stash 替git reset --hard HEAD+ 只在真控制台 prompt restore + stash 保留含恢复指令;205 测试 4 case 覆盖 discard/stash/interactive/missing-section)— Update Windows 卫生 4 连:db204ae20 ensure_uv()穿越更新边界(首次安装后 hermes update 不崩)+d880b5be0Windows 不返_UvResultnamedtuple(subprocess argv 崩)+98528c78c 178 行desktop 不与自身后端 race(先 graceful 拉自身再 spawn 升级器)+14fee4f11 +33retry handoff 一次 +1f347ee54venv "move aside" 而非 gut(Windows 锁 .pyd) +c136eb4derebuild 后验 core deps — hermes-ink SGR 鼠标分片根因修复(f35432354supersedes #29337/#17701/#18113/#26781/#28463/#35512:ui-tui/packages/hermes-ink/src/ink/termio/tokenize.ts +40flush state-aware xterm.js 纪律 — bare ESC 仍 flush,但 multi-byte control sequence (csi/osc/dcs/apc/ss3) 中不emit,one-tick truncation valve 第二次无进展 drop;6efc7eda5 -205 行删 SGR_MOUSE_FRAGMENT_RE/MOUSE_BURST_NOISE_RE/parseTextWithSgrMouseFragments 整套死代码;725290db6fuzz 测试加固)— TUI cgroup-aware V8 heap cap(2f523a469ui-tui/src/lib/memoryMonitor.ts:20-50 resolveThresholds()阈值从getHeapStatistics().heap_size_limit派生 critical ~88% / high ~70% 真 ceiling 替硬编码 2.5GB,受 cgroup 限制的小容器不再静默 OOM kill)— StatePRAGMA wal_checkpoint(TRUNCATE)防 WAL 无限增长(46b2afc56hermes_state.py:597,617-651,4107每 50 次写 off-hot-path + exit/dispose 时 TRUNCATE;19db9cd07ACP 改走公开update_session_meta()不绕封装)— Gemini 原生maxOutputTokens+ 去 OpenAI extra_body 污染(ec46f59127 文件 +277,agent/auxiliary_client.py:662-668translate extra_body.reasoning → Gemini native;e8c3ac2f5Fireworks/Mistral strict APIs 同向 stripextra_content)—perl/ruby -i在 Hermes config/env 路径上落闸(a6a4e6f9d+b04c6e95ftools/approval.py:446-454捕perl -pi -e/perl -p -i/perl -i.bak三形式,与sed -i闸对齐堵 2026-06-01 双闸门遗漏的 perl/ruby 入口)— react-router-dom 7.17.0 GHSA-8x6r-g9mw-2r78(46c16b928+6b77fd2a0Nix npmDepsHash +736dc0fd8切 fetchNpmDeps)— Web SSRF 检查移出 event loop(c60952ba9+93b5df318tools/url_safety.py:355 async_is_safe_urlDNS 不再阻塞 async web_search/fetch;mock 同步更新)— VisionProviderProfileflag 取代 models.dev 目录(d33d23c85+f736d2be8agent/auxiliary_client.py:3958 _main_model_supports_vision走 profile flag)+ 像素维度上限(dd4ba4c2c+6bdbe3076高分辨率小字节也 cap 防 API 拒 + 声明 Pillow)— MiniMax 视频type=videoblock + M3 默认 aux 模型对齐前沿(153fe2847+0b46c4163outbound translate 把 Anthropicinput_video→ MiniMaxvideo;3d1d0a49f+b531b5d12+fa8e2f935minimax+minimax-cndefault_aux_model钉 M3 frontier;9756dff5fGrok-4.3 陈旧 256k cache 失效)— Cron 顺序任务非阻塞 + 解耦完成(9fbfeb31b+eb9cde734cron/scheduler.py:161-195持久 single-thread_sequential_pool保 tick 间顺序但 dispatch 不阻塞;MCP 任务后清扫;30412a977陈旧 cron-output 删前复验 #37721;b0d234f06cron list容忍 nullrepeat)— Docker wave(hindsight-client 烤进镜像96f0ddc6a#38128 / libolm-dev for python-olm2e628ae97#33685 / chown gateway tree03ba06ebf#37928 / chown build trees5446153c9#35027 regression /--user <uid>拒绝 + guidance343c54e35#38579 / Unraid uid 例外7402706c5#38098 / config migrations on boot04d620d91#35508 / persistent 模式恢复 out-of-band 删8a888441d#36631 / 孤儿容器清82c157b26#7440 / Docker 内 update-check 不报 phantom commits behindb1e399de9#39559 / LF entrypoints6ad015255#12181 / .dockerignore Python 模式eb43a5b5d#6092)— Skills 内置集瘦身 +environments:relevance gate(38d3c49aa#39028:内置 skill 删过气 + 新 frontmatter 字段 cli/tui/desktop/gateway/* 决定何时实际激活进 prompt而非仅 UI 展示)— Authset active_provider三入口修(5f62ba8e4xai +cd68b8f0eqwen-oauth +34a290352google-gemini-cli 加auth add后不再 "auth 加完没生效")— MCP${ENV}在 discovery probe 解析 + shutdown 守护扩展(b0a52d74a#38571 header auth env 展开;751b91446probe iteration 失败也 shutdown;e9529578d+1bcfe9c58异常守护从 Exception 扩到 BaseException 不让 SystemExit/KeyboardInterrupt short-circuit shutdown 卡死 child)— Installrequires-python<3.14+ UV_PYTHON 钉 venv + PEP 639 SPDX license + FHS symlink(475ecea3d#38535 +e223503b0#38353 +aeec88c77+36f1cd7deshallow clone +ee7948ea6排除 dev tooling from all extra +b459bac02.bootstrap-marker入 gitignore 让 update 不自动 stash 它)— Gateway 杂项硬化(07f538267dm_policy: pairing不视为 open access 防 mention-gating 误判 /b7169f9bb/update完成通知保留至目标 platform reconnect /2982122beroot-run gateway 投递$HOMEdeliverables /693f4c7e9session_reset race 清 zombie agent slot /454d6cbe5Telegram sealed overflow chunk 显式 finalize 修末块格式 /4ae3c988bshared-key loop 桥接到嵌套 platform 配置 /899ee8c23非 UTF-8 status/pid 文件容忍 /71a9f44e8平台 reconnect 时重试 startup auto-resume /28ca4460akanban dispatcher 守 malformed config + 空 summary /74e845c00Slacksend_message工具补thread_ts/7309f3befLine inbound MessageType 映射 /fff056144Google Chat OAuth client secret 锚 default Hermes root /f7dabd301api-server json.loads 守 SQLite corrupt cache /947e21b3dlog silent file-delivery drops /e7a7872a8tui_gateway dedup re-queued 进程通知 flood TUI /86c64cfb5Discord interactive views 超时视觉过期 /3278b423dstrip session token from subprocess env /2059707fc+40fbb0f3cWindows native default Hermes home + 锚 detached/startup cwd 至 HERMES_HOME /3858cf430named profile 让 global-root active_provider fallback)— Desktop 后续修(f583c6ebd+338f0b223+fef04a197Electron cache 损坏 / Windows bootstrap 修复 /f66a929a6render approval/sudo/secret prompts 不再静默超时 #38578 /58eb473babackground-session clarify prompts 上浮 /b1b0f4b66折叠组工具命令批准仍可见 #38829 /825629424持久 timed-out clarify 到 transcript /5bcb63e40TUI _sessions thread-safety lock /8077e7d2fresume lock narrow /bd6d09876keep resumed live history current /98903d031reuse live session on resume /25742372eexecute_code is_approved guard #39275)— Delegationmax_spawn_depth取消上限(d414275047 文件 +30/-30hermes_cli/config.py:1679-1682 max_spawn_depth: 1floor 1 无 ceiling,拥抱 orchestrator-of-orchestrators-of-orchestrators 自由编排)— Models catalog(fd87c6107qwen/qwen3.7-plus入 Nous + ORhermes_cli/models.py:55,173#39409 /3da44dbda+2a82519b0+ef5e48f3f:1170 nous: deepseek/deepseek-v4-flash作 silent default 替 flagship + guard test 钉死不准未来 PR 又点回 flagship /7f016f5f3Desktop 每 provider 50 model 默认)— 杂项:OpenViking memory URI/agent/{agent}/段修c14c37d46#36969 /de60bf40cmemory 用户安装 provider 父包注册 /30c7b787dmemory pip fallback /46abf0401+dfe6fbb0bSSH WinError 1314 symlink copy2 fallback / Prompt 自知识扩 docs+skillf99665f99#38538 / CLI resume relaunch 在 session 起始 cwde7bc6189c#38562 +391b59475rich [dim] 替 ANSI /ad69d3edc删 CWD 守 /96cd37e21dashboard orphaned embedded-chat session 回收 /9ca11b35d/model picker provider-models prewarm 后台 /af8b917datermux frontend npm scope / 25+ AUTHOR_MAP + 10+ docs 同步
+- 2026-06-03-update: 131 commits 跨日同步(hermes-agent c47b9d126 → 6fff744158,仍 v0.15.1;69 fix / 12 feat / 8 test / 6 chore / 5 docs / 1 refactor / 1 polish / 1 perf / 1 ci)— Observability observer-grade telemetry hooks + NeMo-Relay 插件(#29722 salvage,26 文件 +3187:新 hook api_request_error/subagent_start 入 hermes_cli/plugins.py:128 VALID_HOOKS 共 21 个 + has_hook() 闸 hot path 零开销 + plugins/observability/nemo_relay/ 三文件 568/368/20 行 + docs/observability/README.md 316 行,与既有 plugins/observability/langfuse 并列;827f25142 perf 进一步把 per-tool emit 也闸住,懒派生 status/error 字段)— hermes portal 三 commit 一站化(da4f407e5 成为人类可读 onboarding 别名 11 文件 +200 + cd188b814 真正走 _model_flow_nous 27-model curated picker hermes_cli/setup.py:2723-2790 _run_portal_one_shot + 26a57467a SystemExit 防御 + 9ba7e5b1b retry hints 对齐)— Desktop xAI Grok 升级一等 OAuth provider(dd5e97bd7,5 文件 +434:loopback PKCE 流 hermes_cli/web_server.py:3160-3163 catalog flow=loopback + :3750 _start_xai_loopback_flow +222 行 + 6 后续修复包括 cancel 信号 worker、Copilot review、source_label 修正、OAuth 目录顺序)— Desktop 状态栏 inline model picker(ea4fe1563,11 文件 +788:Cursor 风格下拉替 modal,apps/desktop/src/app/shell/model-menu-panel.tsx 289 行 + model-edit-submenu.tsx 248 行 reasoning+fast hover-Edit + model-visibility-dialog.tsx 148 行 localStorage edit-models + 共享 dropdown primitives DropdownMenuSearch + nanostores 读 session state 防 menu rebuild)— Desktop session/scroll/sticky/clamp wave(~12 commits:in-flight new chats 不消失/不匿名 #37908 + scroll anchor 三连 e67ab2e04/3aa24e261/c930a49ce thread-virtualizer 与 native scroll anchoring 双修冲突 + 0caa23788 IME composing Enter 不再 split + viewport resize 不再误 disarm sticky-bottom + sticky human bubble 4 commit clamp ~2 行带 hover lift 含 --sticky-human-top 0.75rem token + 自定义 zoom 0.1 step 替 0.2 + clipboard image dedupe items/files 双重附加)— Desktop slash/@ 菜单 + Stop 按钮 + 后台 bleed(188e52db9/49f1b9e4b triggerKeyConsumedRef 替 timing-fragile trigger !== null guard 修 Esc 重开 + Arrow 不能 cycle 过头几个 + a23728dfc Stop 按钮真 interrupt 不再 interruptAndSendNextQueued() 抽 shouldAutoDrainOnSettle() + 28f1590b7 后台 session messages 不再 bleed 进激活 transcript 改 keyed-by-sessionId map staging)— Desktop macOS 自更新 clean rebuild(a1cda2410:update.rs rebuild PATH 头插 $HERMES_HOME/node/bin + venv bin + --target-app 参数 + ditto install stage + AtomicBool start_update guard;bootstrap.rs open <App>.app 替 exec 路径;failure.tsx "Update didn't finish";d3b1e4300 提 swap_in_new_bundle() 严格不变式永不留断臂 target;810e5864d LogStream 结构化 metadata 替 stderr: literal 前缀 + 1971b1052 4 处 emit_log 接 LogStream 修编译;746618217 已存在 macOS 安装收编 apps/desktop/electron/main.cjs +145 + 自动重定位到 /Applications + Dock 钉一次;1daecfa4b Dock 图钉用 pathToFileURL + type 15;21e172b94 麦克风 entitlement entitlements.mac.inherit.plist;46e513ef5 Linux chrome-sandbox helper 4755)— Desktop 远端显示禁 GPU(6a2909fe5 SSH X11/VNC/RDP 软件渲染防闪烁 apps/desktop/electron/bootstrap-platform.cjs +51 detectRemoteDisplay + HERMES_DESKTOP_DISABLE_GPU override + d0ea4caf7 WSLg vGPU 本地渲染例外)— Dashboard System 检查后再更新(c5d199ead:GET /api/hermes/update/check :1168 cache 6h ?force=1 失效 + POST /api/hermes/update :1140 + System 页 Check for updates 按钮 + Update now ConfirmDialog 展示 commit 数 + 5 端点测试 git/up-to-date/docker/soft-failure/auth-gate)— Dashboard Profiles 富化 + Channels env 去重(7fb8a6b5c:active-profile 切换 / 角色描述 auxiliary LLM 自动生成 / per-profile 模型 / gateway-running + distribution badges / 新建 clone-all;messaging 凭据 channel_managed 从 Keys/Env 页隐藏改 Channels 唯一;"messaging" → "Gateway" i18n)— Dashboard auth WS origin + PTY internal credential(dd28f2ac9 OAuth-gated 后非 Web origin 信任广义化让 packaged Hermes Desktop file:// 不被 403 + fd1ec8033 _build_gateway_ws_url() 加 gated 分支 PTY child 用进程内 mint-once credential 修嵌入 chat 在每个 gated 部署都不能用 + e114b31ed 直接单测覆盖 7 分支)— Dashboard PTY 维度 WSL2 钳制(966630563:WSL2 cols=131072 rows=1 struct.pack 抛 struct.error 之前只 catch OSError,钳到 [1,2000]×[1,1000])— Gateway ResponseStore + 未挂 adapter 泄 fd 修(4b06c98fe:reconnect 3 失败路径都 drop 新建 adapter 不挂 self.adapters 每次漏 2 fd(db + WAL)~12h 撑爆 2560 fd ulimit #37011 + 01eaba706 Copilot review 接)— Gateway /background 媒体按类型路由(082025abc:TTS→voice / video→send_video / image→send_image_file 替统一 send_document 复用 should_send_media_as_audio 处 Telegram OGG)— Gateway schtasks locale 安全解码(973decc05 Windows 中文 console 不再 UnicodeDecodeError)— Web-server event channel state 从模块全局搬 app.state(cbc82511e:_lifespan() async context manager 在 FastAPI 启动时正确 loop 创建 dict+lock,跨 TestClient/uvicorn reload "attached to a different loop" 修)— Doctor HERMES_MAX_ITERATIONS env 影子 / config drift 检测 + --fix(6ee046a72 hermes_cli/doctor.py:894-922 cfg_max_turns ... env_ghost 关 #17534 - bridge 在更早 config-parse 错时 bail 就让 ghost 默默胜出 → config 显示 400 而 gateway 读 N/90)— Kanban 速率限制非永久阻塞(4c544b633:EX_TEMPFAIL=75 哨兵 hermes_cli/kanban_db.py:158-161 + 冷却 :189-196 HERMES_KANBAN_RATE_LIMIT_COOLDOWN_SECONDS 默认 5min + :4821 rate_limited field + :4873-4884 reap + :5429 worker drain;真 crash 仍 trip 断路器)— Matrix ! bang 命令别名 + 死代码修(0022e94d7/a1264e996 underscore→hyphen 容忍 emit 可解析 token + skill command branch slash-prefixed 比较 + reply-fallback 后再规范化 + 162 测试)— MCP banner disabled 不再 failed(1d90b2398 enabled:false 改 dim 不再红 — failed)— TUI 持久化 trail OOM 修(e76d8bf5a:ui-tui/src/lib/text.ts:2-5 LIVE_RENDER/VERBOSE_TRAIL_MAX_CHARS=800 12 行 preview 替 16KB live-render budget 持久化 trail 掉 17×(12.2MB→0.7MB @800 msgs)+ memoryMonitor.ts 阈值从真实 V8 heap ceiling 派生 ~88%/70% 不再硬编码 2.5GB;e02a6038a TUI /save 写 get_hermes_home()/sessions/saved/ 含 system prompt;dfba3f3e5 右键复制清选区 + 群 transcript blocks)— Aux Nous-routed self-heal(ab2472e69 agent/auxiliary_client.py:2495 _is_model_not_found_error + :1624 _refresh_nous_recommended_model + :5121/:5583 两 call site,长寿命进程缓存 Portal 推荐 model 被 catalog 掉时不再 404 至重启)— CLI display.interface 可配置默认界面 cli/tui(d6b0c23f8 + --cli 显式覆盖 + 两 resolver _resolve_use_tui :1823 和 _wants_tui_early :145 无依赖早期)— Debug 含 desktop.log(1b302a047:hermes_cli/logs.py +2 注册 + debug.py +32 summary report + share 上传 + gateway /debug collect_debug_report() 继承)— Packaging locales/ 进 wheel/sdist/Nix(c349eca82 关 #23943/#27632/#35374:[tool.setuptools.data-files] locales = ["locales/*.yaml"] + MANIFEST.in graft locales + agent/i18n.py:88 _locales_dir HERMES_BUNDLED_LOCALES override → source → sysconfig data scheme + Nix wrapper 双保险,封闭安装下不再渲染原始 i18n key gateway.reset.header_default)— Refactor 单一 managed-uv 路径(4df280d51:新建 hermes_cli/managed_uv.py 228 行 5 函数 managed_uv_path :35/resolve_uv :48/ensure_uv :59/rebuild_venv :101/update_managed_uv :135;替换 PATH probe + conda guards + 5 位置 trust ordering + temp-dir fallback;删 install.sh 61 行 ensure_fts5/_python_has_fts5/_reinstall_python_with_fts5/_warn_no_fts5——managed uv 总装带 FTS5 当前 Python)— Workspace lockfile 整合 + Node ≥20.19/22.12(a51a7b9b9 per-package package-lock.json → root 单一 + Nix lib.nix 共享 + Python _workspace_root() helper + Desktop 内容 hash build stamp 替 --force-build/mtime + Dockerfile 单一 npm install;1dca7c620 Node 版本预检 + 214b7e070 install.ps1 处理 Windows core.autocrlf=true 引起的脏 worktree + 205ed71ba npm audit 6 修 tmp 0.2.5→0.2.7 等 + ba57ebec3 npmDepsHash refresh)— Docker TUI launcher 用 prebuilt bundle(9272e4019 HERMES_TUI_DIR env 修嵌入 dashboard Chat tab 在托管镜像 502 - PTY child 跑运行时 npm install 失败因 root lockfile 含 apps/* workspace 但镜像只装 root/web/ui-tui;d9f7e7ac8 首次启动 seed gateway_state.json from HERMES_GATEWAY_BOOTSTRAP_STATE=running 在 docker/stage2-hook.sh:307)— Cron skill bundles 展开(ae5b2de2f cron/scheduler.py +26 from agent.skill_bundles import build_bundle_invocation_message, resolve_bundle_command_key)— Setup browser/TTS picker 默认指向免费本地后端(b28dd3417 不再 Enter 即走 inline Nous Portal device-code 付费)— Submodule + RELEASE 清理(43fd63b4b 7 文件 -35 + 047e7cf36 残留 CONTRIBUTING.md / 64202200a 15 个 RELEASE_v*.md .gitignore 防)— 杂修(192020992 + 5fca754ee HERMES_DESKTOP_CHILD_PID 排除 desktop-managed backend 在 stale-dashboard kill 端到端关 #37532 + 6ed9a2de8 dashboard 远端 bind 允许 desktop WS origin + a429a2a0b CI nix flake check 折叠 package+devShell + bb1c8b6f1 honcho prewarm 去 flake + AUTHOR_MAP 4 entry + 5 docs 远端 backend 自含 + --tui flag + session token 钉法)
-
2026-06-02-update: 104 commits 跨日同步(hermes-agent
b9646276f → c47b9d126,仍 v0.15.1;43 fix / 23 feat / 7 test / 6 refactor / 5 docs / 5 chore / 1 ci)— Dashboard 第二轮全面强化:Channels 页面(#37211,web/src/pages/ChannelsPage.tsx +429一站式启停/测试 20+ messaging 平台 +web/src/lib/api.ts:476-490三 client 方法 +STATE_BADGE :34-49状态徽章)、完整管理面板 v2(#36736,hermes_cli/web_server.py +665新增 6 类后端端点:GET /api/mcp/catalog :4602、PUT /api/mcp/servers/{name}/enabled :4583、GET /api/system/stats :757、PUT /api/webhooks/{name}/enabled :4903、GET /api/ops/hooks :5242、GET /api/skills/hub/search :5496+ 6 个前端页面扩展)、nous-blue主题 + bulk sessions + schedule picker(#37383,41 文件 +3299 / -213:LENS_5I overlay 移植 + foreground z-index:200 修视觉伪影 + 14 种 i18n 同步 +web/src/lib/schedule.ts +382新建 +SessionsPage.tsx +407)、Dashboard auth refresh-token cookie 轮转(#37247:plugins/dashboard_auth/nous/__init__.py:244-302 refresh_session()+middleware.py:236,255,302AT 缺席 + RT 存在不再硬 401,3 回归 case)— Gateway 结构化 stream-event 协议(#37250,8 文件 +740:新建gateway/stream_events.py 171 行7 frozen dataclass(MessageChunk/MessageStop/Commentary/ToolCallChunk/ToolCallFinished/LongToolHint/GatewayNotice)+ 新建gateway/stream_dispatch.py 132 行 GatewayEventDispatcher+platforms/base.py:1873,1934,1955三 hook(supports_draft_streaming/render_message_event/format_tool_event)+ Telegram draft MarkdownV2 对齐告别 raw→formatted 跳变:2498,2535-2542)— Per-platform streaming 默认值(#37303,config.py:1365-1368 platforms.telegram.streaming=True/discord.streaming=False,deep-merge 不动用户值,不 bump_config_version,dashboard 自动暴露 toggle)— TUI 单一/model+ 统一 Sessions 浮层(#37112,17 文件 +480/-347:/provider别名收归 +activeSessionSwitcher.tsx :48-394合并/resume//sessions//session//switch入一浮层 + armed-delete 按 session id 而非 row index 防 1.5s 轮询重排错杀)— Agentruntime_cwd单一真源(8 commit:新建agent/runtime_cwd.py 62 行5 函数_SESSION_CWD ContextVar+resolve_agent_cwd()主用带 isdir guard +resolve_context_cwd()不 guard 给本地 CLI 留 fallback;接system_prompt.py:43+prompt_builder.py:17,806;修 #24882/#24969/#27383/#29265 多年悬而未决的 cwd 不进 system prompt;40 测试 +desktop:31c40c72project folder session 稳定化基于此)— Model picker 模糊搜索(3 commit:新建web/src/lib/fuzzy.ts 192 行+ 镜像ui-tui/src/lib/fuzzy.ts 177 行+ 109 测试,subsequence 评分 exact +20 / prefix +8 / boundary +3 / contig +5 / first +5 / gap penalty -3,fuzzyRank<T>()泛型 ranker 返 matched positions 给<mark>高亮;查询g4o匹gpt-4o、clad snnt匹claude-sonnet)— Desktop session 卫生/archive/media streaming(#37099,26 文件 +1000:tui_gateway/server.py:2771-2824lazy DB row 不再泄 "Untitled" +hermes_state.py:267 archived INTEGER NOT NULL DEFAULT 0+:1434-1448 set_session_archived()+:3270-3309empty 计数/删只看非 archived + Electronhermes-media://协议main.cjs:375-427Range 支持 + STREAMABLE_MEDIA_EXTS 白名单去 16MB cap)+ 9 后续修复(cancellable install / sidebar 搜索 / workspace 排序 / pinned 跨折叠保留 / model 与 skills+tools UI 合并 / content-hash build stamp--build-only/--force-build/ GUI triage 38 文件 +1638 / project folder session 稳定 / toolset provider 显示)— Skills hub browse cap 修复(#37143:hermes_cli/skills_hub.py:343 _PER_SOURCE_LIMIT补"hermes-index": 5000修 silent 50-item cap + Identifier 列复制 + source links + 网页门户 13 测试 + 类别 430→173 整理)— Cron skill 不可见 unicode 改净化非硬阻(#37245:tools/cronjob_tools.py:184-210 _strip_invisible_unicode返(cleaned, removed)保留 emoji ZWJ;净化后再扫让真注入仍能匹)— MCP HTTP fast-fail(2 commit:tools/mcp_tool.py:1480-1553 _preflight_content_type()HEAD→GET 回落,≤5s 检 HTML 抛NonMcpEndpointError不 retry,告别 hang 满connect_timeout)— Kanban 子任务/kanban_create继承根 workspace(#37172/#37182:kanban_db.py:4355-4408decompose 取根workspace_kind+workspace_path,子继承不强制 scratch;HERMES_KANBAN_TASKenv 让 worker 看清自己上下文)— File-safety sandbox-mirror 双层 soft guard(#32213/#32407:agent/file_safety.py:498-640新classify_sandbox_mirror_target+classify_container_mirror_target,path-shape 检测…/sandboxes/<backend>/<task>/home/.hermes/…防 docker 后端写 SOUL.md 两份分歧副本)— Telegram 观测群媒体缓存 → 平台无关原语(2 commit:gateway/platforms/base.py:1313-1366 cache_media_bytes(data, filename, mime_type, default_kind)任何 adapter 复用)— Gateway extract-stripped 工具响应恢复(#29346 2 commit:base.py:4082-4126pre-extract 快照 + 文本被剥空时从 post-extract_mediabody 恢复 +:4333response_delivery_droppedERROR 守不变式)— Weixinasyncio.wait_for替 aiohttp ClientTimeout(2 commit:gateway/platforms/weixin.py:370-414 _api_post/_api_get,修 cronrun_coroutine_threadsafe()场景下 "context manager should be used inside a task")— MiniMax-M3 ≤204,800 stale cache 主动失效(#36726:agent/model_metadata.py:1130 _model_name_suggests_minimax_m3()+:1554-1567cache step 1 命中后 invalidation 让 1M 默认生效)— Bluebubbles 群消息 mention gating(97 行新代码 + 132 测试)— xAI 视频模型按 modality 路由(#37046 边 commit:8 文件 +167,video/video-with-image 分流)— Gateway 杂项(WeCom env-only allowlistf7a3509b+ WhatsApp dm_policy 开放0cd5867b+ s6 心跳缺 sleep 回落eee32cdd+ 重启通知清理b14e15c489 文件 +378)— Docker/CI 维护(python3-venv / docker -w workdir / arm64 registry cache / dashboard docker update guidance)— Installer(macOS 重命名 "Hermes" launcher #37516 + commit pinning 改 opt-in1d9aacbd)— TUI status bar 10 连(窄屏 status/model 优先 / busy reservation indicator-style 感知 / FaceTicker 一致 / cwd cap 调用点 / 终端模式 leak 修)— Model picker 多修(OpenAI curated 不再被 OpenRouter 幻影 #37404/#37175 + gemini-3.5-flash 进 OAuth+API-key picker #37046 + gemini-3-flash-preview 恢复 #37606 + Codex OAuth 路径 #37517)— CLI/Memory/Simplex 小修(queued notes 安全前置 multimodal + Honcho fail open + Simplex idle ws 不误重连 + 25 用户故事 + Quickstart Skills 扩写) -
2026-06-01-update: 58 commits 跨日同步(hermes-agent
eb3cf9750 → b9646276f,仍 v0.15.1 维护窗口)— 三大特性集中合入:Hermes Desktop App(#20059,442 文件 +114,155,Electron+React+Vite,apps/desktop/+apps/bootstrap-installer/Tauri Windows 安装器 +hermes_cli/main.py:14716 desktop子命令 +HERMES_DESKTOP_REMOTE_URL/_TOKEN远程后端 WSL2 跨界)、Dashboard 全管理面板(#36704,9 文件 +3,189,McpPage/PairingPage/WebhooksPage/SystemPage+web_server.py6300→7079 行 +786,新增 17 个/api/{mcp,pairing,webhooks,gateway,credentials,memory,ops}端点)、/undo [N]三层落地(#21910 + #36699,state primitiveshermes_state.py:288 messages.active+:2426 rewind_to_message+:2513 restore_rewound+:2537 list_recent_user_messages软删,CLIcli.py:7106 undo_last(n, prefill),TUI command.dispatch prefill,Gatewaygateway/run.py:8022 /undo [N]+SessionStore.rewind_session+ 16 locale 同步)— 加 Curator inactivity 修剪 + 全 skill 用量遥测(agent/curator.py:53+tools/skill_usage.py:326新usage_report()/provenance(),hub 安装永不修剪,#36701)、Blank-slate skills(install --no-skills+hermes skills opt-out/opt-in+.no-bundled-skillsmarker,tools/skills_sync.py:43,753,#36228)、Setup 行内解释(Quick Setup "free OAuth, no API keys" vs Full setup "BYO keys",#36227)、Free tool pool entitlement 解耦(nous_account.py:64,111,152与付费 Nous 三档分离 + per-tool checklist setup,#36153)、MiniMax-M3 1M context(agent/model_metadata.py DEFAULT_CONTEXT_LENGTHS['minimax-m3']=1_000_000,#36214)、Model picker group-layer description(47d2d0589/84d82453a/c9a28dfb0)、安全:Agent 写~/.hermes/config.yaml双闸门(工具层tools/file_tools.py:256+ 终端层tools/approval.py:139-170,413tee|>|>>|cp|mv|sed -i全闸)、Skills guard 良性内容 +.skillignore/.clawhubignore蜜罐(SKILL.md不可忽略,tools/skills_guard.py +137)、Gateway MEDIA 标签 4 连(JSON/code-block/blockquote/inline-code 排除 + mask-as-locator 模式6c73e8ffa)+ 服务重启通知清理(b14e15c48)、Streaming broken-stream 不再误报输出截断(agent/conversation_loop.py +64,#36705)、Memoryon_session_switch(rewound=True)(agent/memory_provider.py:175)、Desktop/Dashboard 后续 9 修复(self-update tracks main / macOS desktop build stage / lazy session.create desktop_contract / PATCH /api/sessions/{id} rename / code comment 颜色 / 本地构 macOS 可重启 / drop files anywhere / docker/update守护 / OAuth/api/*not next=)、Docker s6 启动权限 10 连(HERMES_UID/GID 校验防提权 + s6 /init image 支持 + tini compat shim + Playwright headless_shell 发现 + non-root 不 drop privs)、Windows GA 去 early-beta 文案(#36093)、WSL 终端钳制 revert(误伤合法宽屏,#36096)、fchmodWindows 防护(HEADb9646276f,atomic_json_write) -
2026-05-31-update: 141 commits 跨日同步(hermes-agent
689ef5e2 → eb3cf9750,v0.15.1 维护窗口,无新发布)— Setup 重构(Quick Setup 直通 Nous Portalhermes_cli/setup.py:3010,3064+ Full Setup happy-defaults + 四个 setup picker 迁 curses,#35723/#35776)、/compress here [N]用户选择压缩边界(新模块hermes_cli/partial_compress.py235 行 + seam-alternation guard,#35048,灵感来自 Claude Code Rewind)、hermes prompt-size诊断命令(hermes_cli/prompt_size.py:141 cmd_prompt_size,#35276 关闭 #34667)、Kanban 双特性(task 文件附件task_attachments表 + 25 MB dashboard 上传 + traversal-safe + 13 测试kanban_db.py:1044/plugin_api.py:638-727,#35395;goal_mode卡片包 worker 进 /goal 循环kanban_db.py:737,974,1616+ judge 不达就续,#35710)、read_file 紧凑 gutter(<n>|content~14% token 节省 + 删HERMES_READ_GUTTER逃生口tools/file_operations.py:707-713,#35368/#35532)、write_file/patch 原子化(temp-file + rename,_atomic_writeline 772,#35252)+ UTF-8 BOM 处理(_UTF8_BOM/_strip_leading_bomline 127-143,#35278)、SQLite FTS5 优雅降级(hermes_state.py:452 _sqlite_supports_fts5+ trigram CJK 表同闸 + uv-managed Python 确保 FTS5,5ad2b4c6d/4fa20f9a8/ec67def5b)、CVE-2026-48710 Starlette BadHost pin>=1.0.1(pyproject.toml:86,118,125,178,#35118)、进程标题设为 'hermes'(hermes_cli/main.py:68 _set_process_titlesetproctitle + prctl/pthread_setname_np fallback)、Model picker 多 endpoint 合并 + catalog TTL 24h→1h + deepseek-v4-flash 进精选(#35227/#35756/#35659)、Streaming cumulative-resend 修复 → 6 小时后 revert(DeepSeek/Qianfan 累积 args 在共享流引误判,#35718 → #35860)、Anthropic thinking-signature 在 orphan-strip 后降级(Opus 4.8 extended-thinking + tool_use 签名失效)、Telegram DM topic 路由(合成通知保留元数据gateway/run.py +109+_get_dm_topic_info改在类上解析防 MagicMock 误判,4259bab7d+ HEADeb3cf9750)、WhatsApp/WeChat 文本去抖批处理(多条转发合并为单 turn)、Compressor 四连(stale handoff prefix 剥离 + 未答问题算 Active Task + 删冲突 resume 指令 + preflight rough estimate 钳制,#35344)、MCP 三连(stdio 子孙经os.killpg(pgid)回收tools/mcp_tool.py:2270-2281,3699+ 非阻塞启动hermes_cli/mcp_startup.py+ auth 重连改await asyncio.sleep)、Browser CDP DOM-node 序列化崩溃自动降级returnByValue=false(#35385)、Vision 4 MB embed cap 提前 + /voice 经 SSH 探测 PulseAudio/PipeWire socket、Nous Tool Gateway 始终展示 + 选中即 OAuth(#35792)、TUI/agentsdelegation 提示 + WSL131072x1终端维度钳制、Turn-Completion Explainer(abnormal turn 不再返空白,agent/conversation_loop.py:4493-4540,display.turn_completion_explainer默认 True)、安全 wave(mutation-verifier footer 路径中和防 config.yaml 自动上传 #35584 + media-delivery denylist 多层 + secret scrubber 不再脱敏 Discord mention +_HERMES_GATEWAYenv 防自指令循环 #30719 + dashboard chat WS 在--insecure非环回放行)、File-tools 相对路径锚定到绝对 base + 终端 cwd 持久化(_resolve_command_cwdline 1738 ACP→env.cwd→init 优先级)+ spawn_via_env 防双 compound-rewrite 包裹、LSP Windows .cmd shim 支持、State 中模型切换持久化到 DB(SessionDB.update_session_model)、uv tool upgrade/ pipx / Windows launcher-shim 等 8 条 update 簇、/stop同 thread 跨参与者 + pending_watchers 分批 100 + LRU cache 加封顶 + httpx pool timeout 重试 #35664 + 嵌套gateway.platforms块合并 + send_message 识 email target +/statustoken 标签精化 -
2026-05-29-update: 275 commits 跨日同步(hermes-agent
963d22c → 689ef5e2)— v0.15.0 + v0.15.1 双版本发布、claude-opus-4-8 + opus-4-8-fast 模型(#34003)、工具渐进式披露扩展到 MCP/插件工具(agent/tool_search.py,369075dc9)、MCP mTLS 客户端证书(tools/mcp_tool.py:573-625 _resolve_client_cert,#33721)、web_crawl 工具与 provider crawl 管线全面移除(23 文件,#33824)、hermes sessions optimize+ FTS5 段合并(hermes_state.py:3267 optimize_fts/:3306 vacuum)、KanbanPOST /runs/{run_id}/terminate(plugins/kanban/dashboard/plugin_api.py:1317)+ 一系列可靠性硬化(per-profile 并发上限、SQLite 抗撕裂写、worker SIGTERM、close-FD-after-connect、corrupt-DB 内容寻址备份名)、sync_turn新增messages上下文参数(agent/memory_provider.py:115-133,5a95fb2e1)、pluggable Context Engine ABC(agent/context_engine.py:32 class ContextEngine(ABC),9b5dae17a)、Skills 目录大扩张(skills.sh 858→19,932 经 sitemap、ClawHub 200→20k+、NVIDIA tap),新增可选 skillantigravity-cli/grok、Krea 2 进入 FAL 目录(与既有plugins/image_gen/krea直连后端并存,#33506)、FAL 视频经 Nous 网关、Docker s6 wave(persist-across-processes #20561 + 孤儿回收 +PUID/PGIDalias)、安全 wave(Nous 仅 JWT、子进程 AWS 凭据剥离、code-exec 审批旁路回归簇、API_SERVER_KEY必填、Docker stop/kill 进 dangerous patterns)、MEDIA 提取扩展名统一(#34517) -
2026-05-27-update: 645 commits 跨日同步(hermes-agent
556bf7c → 963d22c,默认远端分支master → main)— Dashboard OAuth 鉴权闸门 Phase 0-7 整体落地(hermes_cli/dashboard_auth/10 文件 1868 行 +DashboardAuthProviderABC + Nous Portal Provider 582 行 + WS 单次性 30s ticket +register_dashboard_auth_provider第 8 个 PluginContext hook)、Honcho AI-native 跨会话用户建模 MemoryProvider(plugins/memory/honcho/5 文件 5158 行 + dialectic Q&A + peer cards + identity-mappingsingle/multi/hybridwizard +pinUserPeer ↔ pinPeerName别名链 + 15 个 honcho 子修复)、Krea 图像生成 Provider 插件(Krea 2 Medium/Large,548 行)、security-guidance 插件 25 条 dangerous-pattern 警告(Apache-2.0 Anthropic fork,#33131)、TUI Session Orchestrator(in-TUI 多 session 同屏 635 行 +tui_gateway/server.py+221)、API Server 三连(Session CRUD +GET /v1/skills+GET /v1/toolsets,#33016)、Windows 原生支持收官(UTF-8 stdio shim / psutil PID / Scheduled Task / install.ps1 加固 / 79+63 skill platforms frontmatter / Playwright autoinstall /_pid_existshelper)、Docker wave(Node 22 LTS multi-stage + chown 链 + s6 env 转译 +agent-browserboot discover)、Codex Responses-API 14 修复(dropresponses.stream()helper + null/large/encrypted_content recovery + 凭据池 fallback isolation)、xAI 模型退役迁移工具链(hermes migrate xai [--apply]+ ruamel round-trip + doctor 提示 + chat 启动 warn)、xAI Web Search provider 插件(第 8 个 web provider)、Telegram 19 修复(in-place status edit + DM topic thread 修复 + heartbeat 原地编辑 + 静默 chatter + 2GB skip-STT 音频 + ignore_root_dm + pin user message)、性能 wave(agent-loop -47% viaload_config_readonly+ terminal poll -195ms + cold start -19s + termux fast-path)、Bitwarden EU + 自托管 server URL(#31378)、BrowseShSource 第 8 个 skill catalog(Browserbase 200+ 站点专用浏览器自动化)、hermes update --branch+ post-pull syntax-validate auto-rollback(#28669/#26172)、Nix #messaging / #full 包变体(#33108)、Honcho identity-mapping 三 shape wizard + gateway/run.py 暴露 honcho 配置到 doctor 视图 -
2026-05-26-update: 37 commits 跨日同步(hermes-agent
b62af47 → 556bf7c)— Promptware 防御(共享威胁模式库 252 行 + Memory load-time scan +<untrusted_tool_result>工具结果分隔符,#32269)、Nous-approved MCP 目录 + 交互式选择器(hermes mcp catalog/install/picker,optional-mcps/{n8n,linear},#30870)、Skills Hub 健康检查(EXPECTED_FLOORS+MIN_TOTAL=1500+ 新鲜度徽章 + 每 4h watchdog cron,#32345)、3 个新可选 skill(web-pentest/openhands/code-wiki)、Patch 工具三连(缩进保留 / CRLF 保留 / per-file 失败升级,#507/#32273)、Cron 扫描器二级分裂(strict vs loose,#32339)、Skill install 拒绝符号链接、Dashboard 插件资源 suffix-allowlist + 子进程影响型 env denylist(#32277)、Markdown 链接 scheme 收紧 + WeCom callback defusedxml(harden)、AGENTS.md 限定工作目录内载入、Telegram DM topic 投递 6 连、Anthropic API-key 路径跳过 OAuth autodiscovery、外部 secrets 每进程仅应用一次(#32271)、Gateway/model --globalscalar→dict coerce(#32272)、Agent outer-loop ERROR + traceback(#32264)、qwen3.6-plus → qwen3.7-max / 移除 grok-4-1-fast、TTS 双[pause]修复(#29417)、CLI fallback paste collapse(#32447)、Cron schedule 在 create 模式必填(#32427) -
2026-05-25-update: 175 commits 跨日同步(hermes-agent
186bf25 → b62af47)— Dockers6-overlay取代tini作 PID 1(BREAKING)+ 容器化运行时监管子系统(~20 commits:ServiceManagerProtocol +S6ServiceManager+container_boot.py+ per-profile gateway 监管 + 多架构 SHA256 校验)、安全 wave 3(~25 commits:6 处 symlink 拒绝矩阵 +/proc/*/environ|cmdline|mapsdeny + 项目本地.env读 deny +.env全 0o600 +_YOLO_MODE_FROZEN模块级冻结 + GHSA-rhgp-j443-p4rf config.yaml 路径合规 + Skills Guard multi-word Unicode-spoofing + 7 处凭据持久化 TOCTOU/path 加固)、hermes security audit(OSV.devquerybatch,覆盖 venv/plugin/MCP 三面)、CLI 冷启动 -63%(Bitwarden disk L2 cache, 666ms→295ms)、Plugin hook:register_tts_provider()+register_transcription_provider()+stt.providers.<name>command 注册表、openai-api新 Provider(直连api.openai.com,/v1/models直拉,gpt-5.5-pro)、CredentialPool 周配额轮换正确性(peek pool +explicit_api_key)、Gateway 在飞子 Agent 抗 busy-mode 中断(_agent_has_active_subagents降级 queue 语义)、Mattermost 迁移为 bundled plugin(plugin 化第二个 built-in 平台)、MCP OAuth 无头 paste-back 三连、Codex Responses-API TTFB watchdog + 上下文 token 估算修复、mid-tool-call partial-stream-stub 走finish_reason=length续传、Auxiliary 统一 main-model fallback(PR #31845)、Nous OAuth 401 可执行指导、/resume编号选择 + recap 调优键、/q改属/queue等 -
2026-05-24-update: 84 commits daily delta — 安全 wave 2(17 commits:Webhook fail-closed + Svix 签名 + Dashboard WebSocket loopback + Feishu/QQBot/Discord/DingTalk/MSGraph 审批授权 +
response_store.db0o600)、ntfy 第 23 平台(plugin 化)、Pluginregister_auxiliary_task()新 hook API、跨 Profile 文件写入软护栏(classify_cross_profile_target)、Streaming 完成可见性三连(guardrail halt 推到 stream /response_transformed编辑 in-place / partial-streamfinish_reason=length)、Kanbanpromote子命令(--ids批量)、Skills AST 深度诊断(audit --deep)、Bitwarden EU + 自托管、config.yaml model.provider单一 source of truth -
2026-05-23-update: 49 commits daily delta —
hermes setup --portal+hermes portal {status,open,tools}一键起步、Kanban DB 抗污染(KanbanDbCorruptError+ CodeQL 硬化 + scratch tip)、Memory.md/USER.md 外部漂移防护、审批"沉默 ≠ 同意"契约(#24912)、TLS FD 回收三层防御(#29507)、Plugin RCE 第二段(GHSA-5qr3-c538-wm9j)、Webhook INSECURE_NO_AUTH 动态路由保护、Telegram 状态消息 in-place edit、WhatsApp JID/LID alias、QQBot intent/op7-9/SILK 修复簇、OpenCode Go reasoning controls -
2026-05-22-update: v0.14.0 集大成 — Kanban、
/goal+/subgoal、Hermes Proxy、PyPI + Windows、Provider/Browser/Web/Video/Image/TTS 全面插件化、Curator 1781 行、LSP semantic diagnostics、Codex app-server、跨 session 1h Claude cache、Cold-start -19s、Teams/LINE/SimpleX/Google Chat、12 P0 + 50 P1 关闭 -
2026-05-20-update: v0.14.0(~2,480 commits across v0.12.0/v0.13.0/v0.14.0)
-
2026-05-16-update: v2026.5.16(2,890 commits since v2026.4.23)
-
2026-05-07-v0.13.0: v0.13.0 release — Provider plugin 化、Checkpoint v2、i18n、Curator 自治
-
2026-04-30-v0.12.0: v0.12.0 release (The Curator Release) — Persistent Goals、Tool-call Loop Guardrails、Kanban、Teams、4 新 Provider
-
2026-04-29-update: 182 commits (v2026.4.23),平台适配器插件化(PlatformRegistry + IRC)、Curator 后台技能维护、MiniMax OAuth、Vercel Sandbox、腾讯元宝
-
2026-04-18-update: 410 commits post-v0.10.0,Transport ABC 重构、Shell Hooks、Delegate Orchestrator、Step Plan/AI Gateway/xAI STT/KittenTTS、WeCom QR
-
2026-04-17-update: 641 commits (v0.10.0),压缩 v3、Bedrock/Gemini/Ollama Provider、Tool Gateway、插件命名空间技能、钉钉 QR 认证、Dashboard 插件
-
2026-04-10-update: 293 commits,Context Engine 插件化、watch_patterns、WeChat、xAI、Discord/Slack 增强
-
2026-04-09-update: 59 commits,结构化错误分类、统一执行层、三层溢出防护、BlueBubbles 等
- 概念页面: 46 个
- 实体页面: 2 个
- 更新日志: 42 个
- 源码覆盖: 关键模块逐行验证
- 跟踪版本: v0.16.0(hermes-agent/main HEAD
6c752ca3a,2026-06-11 13:44 -0700,"refactor(agent): tighten SUMMARY_PREFIX wording and fix stale doc references";本期 212 commit 跨 a5d05cf30..6c752ca3a ~48h 窗口;未发新版) - 最后更新: 2026-06-11
- GitHub 在线浏览: 直接点击上方目录链接
- Obsidian 本地知识库:
git clone https://github.com/cclank/Hermes-Wiki.git ~/Hermes-Wiki - 配合 Hermes Agent: 在 config.yaml 中设置
skills.config.wiki.path: ~/Hermes-Wiki
本文档基于 Hermes Agent 源码分析生成。