docs: README 补 Hermes 能力对齐四项(memory/manage_skill/后台进程/并行委派)实现说明

This commit is contained in:
ymq 2026-09-10 17:43:34 +08:00
parent d8bc29de29
commit 057fbfc05c

View File

@ -44,6 +44,9 @@ cd pkgs/pipeline-service && pip install .
| `agent_loop_v2.py` | Agent Executor v2会话 agent 执行引擎) |
| `workspace.py` | 项目/通用会话工作空间目录管理 |
| `sdlc_ability.py` | SDLC 产线能力包(工具定义 + handler |
| `skill_live.py` | 技能实时发布/管理publish_skill_live + manage_skill_live 多租户隔离) |
| `bg_jobs.py` | run_command 后台任务(状态文件化 .bg/,跨 worker 可见) |
| `subagents.py` | 后台并行子 agent 委派(.sub/spawn/steer/stop/result |
## 通用会话产线隔离2026-09-057 层纵深防御)
@ -63,3 +66,35 @@ cd pkgs/pipeline-service && pip install .
7. **历史回放**_load_history / _t_session_search 对 generic 只读写
`pipeline_id='' OR IS NULL` 的自身历史(与存库端 store_pl='' 对称),
禁止按 created_by 全量回放(会带出用户各产线对话中的项目信息)
## Hermes 能力对齐:写入侧 + 运行时侧2026-09-10
四个 handler 在 `agent_loop_v2.py`,工具定义在 pipeline-core `agent_config.py`
GENERAL_TOOLS。全部经测试机服务端直调 31/31 + HTTP 端到端 5/5 实测通过。
### 1. memory 工具(持久记忆写入,`_t_memory`
- 写入门禁代码强制多机构多用户scope 白名单 user/project/pipeline
global/org 种子域禁写org_id/user_id 强制注入会话真实身份(忽略 LLM 传值);
无 user_id无人值守拒写remove 只能删本人条目org+user 双过滤)。
- 记忆注入改可见性版(`_build_system_prompt` 传 org_id/user_id → store.visible_to
过滤),修了旧「按域叠加」会带出他机构归属记忆的隐患。
### 2. manage_skill 工具(技能增改删,`skill_live.manage_skill_live`
- 五动作 create/patch/write_file/remove_file/delete隔离全在 skill_live
只落本租户 orgs/{org}org≠0或 users/{uid}org 0 降级/个人);
- **fork-on-write**:改 global 原版先整目录继承拷贝到本租户再改(同名覆盖仅本租户
生效);**校验通过才 fork**(旧「先 fork 后校验」失败会留副本遮蔽原版,已修);
- org+user 双副本同步改user 遮蔽 org防改了被遮蔽那份产线/角色/项目层拒改;
delete 只删本租户副本global 删不到,删后重新可见);子文件限四目录 + realpath 双检。
### 3. run_command background + process 工具(`bg_jobs.py``_t_run_command`/`_t_process`
- 状态文件化 workspace/.bg/{job_id}/meta.json+output.log跨 worker/进程可见;
- 沙箱档位与前台一致generic 强制 strict bwrap无 bwrap 拒绝,绝不降级裸 shell
- start_new_session 独立进程组 + 超时 SIGTERM 整组(不留孤儿);心跳 stale 判活。
### 4. delegate_subtask background + subagent 工具(`subagents.py``_t_delegate_subtask`/`_t_subagent`
- 后台并行(同 workspace 上限 3状态文件化 .sub/{sid}/;深度限制 1子禁再委派
- 子会话 session_isolation='none':不读父历史、不写 pipeline_conversations防污染回放
- steer/stop 走文件传递,子 agent 每轮 tool-loop 边界 `subagents.heartbeat` 消费;
result.txt 流式落盘stop/崩溃即部分结果(绝不空手)。