From cc63f8822ce13b51a991fd397e072d85a872cfe4 Mon Sep 17 00:00:00 2001 From: ymq Date: Thu, 10 Sep 2026 18:53:49 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20README=20=E8=A1=A5=E7=AC=AC=E4=BA=8C?= =?UTF-8?q?=E6=89=B9=E8=83=BD=E5=8A=9B=E5=AF=B9=E9=BD=90(=E4=BA=94?= =?UTF-8?q?=E7=BA=A7=E5=B7=A5=E5=85=B7=E4=BD=9C=E7=94=A8=E5=9F=9F=E6=8E=A5?= =?UTF-8?q?=E7=BA=BF/patch=5Ffile/=E5=8E=9F=E7=94=9F=E8=A7=86=E8=A7=89?= =?UTF-8?q?=E5=A4=9A=E6=A8=A1=E6=80=81=E9=93=BE)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/README.md b/README.md index 1bfc2b1..bd6bd1f 100644 --- a/README.md +++ b/README.md @@ -98,3 +98,31 @@ cd pkgs/pipeline-service && pip install . - steer/stop 走文件传递,子 agent 每轮 tool-loop 边界 `subagents.heartbeat` 消费; result.txt 流式落盘,stop/崩溃即部分结果(绝不空手)。 +## 第二批 Hermes 能力对齐:五级工具作用域 + patch_file + 原生视觉(2026-09-10) + +### 五级作用域工具解析接线(`_resolve_tool_scopes`,解析逻辑在 core `tool_sources.py`) +- `_init_components` 第 8 步:调 core 五级解析(global/org/pipeline/role/project), + registry 重建为解析后工具集;capability 工具(技能 frontmatter 声明)合成 + ToolDefinition 注册,执行路由 `capability_tools.exec_capability_tool`。 +- **执行层门禁**(`_execute_tool` 第 0 步):`_allowed_tools` 非 None 时,作用域外 + 工具名(幻觉/越权)直接拒绝并回可行动提示(列出本会话可用工具)。解析失败 + 降级 `_allowed_tools=None` 不拦截(回退旧行为,不阻断会话)。 +- 隔离走查修复(capability 两层语义):global 层 all/ 概念技能的 capability 声明 + **不作为注入依据**(只当映射手册),否则 generic 会话拿到 ~70 个产线工具击穿 + 七层隔离;注入只认 org/pipeline/role/project/user 层技能的声明。 + +### patch_file 工具(`_t_patch_file`) +old_string 唯一性校验(0/多次拒绝,replace_all 放行)+ 原子写 + `_resolve_ws_path` +越界防护 + UTF-8 校验(二进制拒绝)。 + +### 原生视觉(多模态消息链) +- `run(user_input, image_parts)`:image_parts 非空时首条用户消息构造 OpenAI 多模态 + content 数组(text + image_url data URL);llm_bridge→llm_v1 端点→inference 原样透传。 +- `_call_llm` 降级兜底:含图调用失败 → `_degrade_images_if_needed` 剥离图片就地改写 + 消息(文本 + 系统说明「如实告知用户当前模型看不了图,建议切视觉模型或 invoke_model + i2t」)重试一次——绝不假装看过图。只降级一次。 +- `_estimate_tokens`/`_summarize` 兼容 list content(`_content_as_text` 归一,图片按 + 1000 token 估)。 +- `gateway.run_message(image_paths)`:build_image_parts 构造 + 超限 notes 注入 content。 +- 实测:中性文件名红蓝两图,agent 正确答「第一张红色、第二张蓝色」,degrade 0 次。 +