zcbot/web/static/js
caoqianming 7d6109b932 feat(delegate): §8.11 最小子循环——上下文隔离的检索子助手(bump 0.58.30)
触发条件已满足(diag_tool_repeat.py 实测 document_search 122 次地毯搜 /
mp_search 562 次占主上下文大头)。形态 = 一个工具 delegate(instruction):
复用现成 AgentLoop 起空上下文子循环,只注只读/落盘检索白名单,硬轮数上限 20,
固定降 flash 档,跑完只把文字结论返主循环。主循环视角 = 一次普通 tool call
(零并行/零状态共享/深度 1 禁递归)。

对标 Claude Code / Agent SDK subagent:照抄 fresh-context / allowlist 工具 /
只返回最终消息 / maxTurns;有意砍掉并行与嵌套(§6 拒编排),采纳 per-subagent
模型 override 思路(降 flash)。

实现:
- core/delegate.py(新):DELEGATE_ALLOWED 白名单 + FilteredExecutor(包父
  executor 只暴露白名单∩已注册,backend 无关、delegate 不入表天然禁递归)+
  run_delegate(懒加载 AgentLoop 避 litellm 导入/循环 import)
- tools/delegate.py(新):DelegateTool schema 载体,execute 防御性 no-op
- core/loop.py:_run_delegate + _execute_tool_call 内建拦截(拦在 executor 前,
  要读活的 self.llm/caps/executor)+ usage_kind(记账 kind 区分)+
  delegate_model_factory(降档失败降级父模型)+ 内存态子循环禁折叠守卫
  (防 persist_fold 按主 task_id 污染主上下文状态)
- core/session.py:persist=False 内存态(复用主 task_id 计费归主 task、
  消息不入库不污染主流不撞 idx)
- core/agent_builder.py:注册工具 + _delegate_model 工厂(载 deepseek_v4.flash)

落地决策:① 白名单给"落盘检索"(document_download/mp_get_*)写口、不给
write/edit/run_python/shell;② 不引 Redis 抗重启(run 本进程绑定,值钱抓取数据
已落 FS,真要抗重启走 §8.12 bg-proc);③ 未收敛显式标注不当完成。

前端零结构改动(既有工具卡 spinner+跳秒覆盖不冻屏),只加 toolActivityLabel 的
delegate case。skills/brief 加 delegate 引导。tests/test_delegate.py +8
(FilteredExecutor 过滤/拒穿透/交集 + 白名单不变量 + Session persist);loop 全
路径要 litellm 本机跑不了靠生产手验(同 salvage)。DESIGN §8.11 标 。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-15 14:43:04 +08:00
..
admin.js feat(ops): toolfail 聚集加时间分布,活跃/已安静一眼分(bump 0.58.14) 2026-07-13 09:27:40 +08:00
api.js refactor(dev): 前端模块化 Step 1 — dev.html 拆零构建 ES module(叶子优先) 2026-06-05 16:55:20 +08:00
auth.js feat(wecom): 企业微信应用主页免登进 embed 控制台(bump 0.44.0) 2026-07-07 10:09:52 +08:00
changelog.js feat(changelog): 用户版更新日志 CHANGELOG.md + /v1/changelog + 点版本号弹层(bump 0.55.0) 2026-07-09 16:49:26 +08:00
chat.js fix(web): 对话正文文件锚点两处回归——含·的 pptx 丢 chip + 链接点击整页404(bump 0.58.29) 2026-07-15 13:40:12 +08:00
crons.js feat(web): 定时任务执行历史列表(右栏 Tab + 分页)(bump 0.29.0) 2026-06-26 12:53:56 +08:00
dom.js feat(web): 移动端显示修复 + 对外品牌名 ZCBOT_BRAND_NAME(bump 0.45.0) 2026-07-07 10:44:26 +08:00
embed.js feat(wecom): 企业微信应用主页免登进 embed 控制台(bump 0.44.0) 2026-07-07 10:09:52 +08:00
files.js feat(web): dev SPA 加 9 处克制入场微动效(纯 CSS + 一处极小 JS) 2026-06-10 16:15:21 +08:00
format.js feat(context): §8.8 Phase 2 长会话中段折叠摘要 + 头部压缩指示环(bump 0.54.1) 2026-07-09 12:39:31 +08:00
layout.js refactor(dev): 前端模块化 Step 2(起)— 抽出 layout.js 2026-06-06 21:27:51 +08:00
main.js feat(procs): 后台进程 bg proc + 对话锁/完成通知 + seedance 续查(bump 0.56.0) 2026-07-10 16:47:11 +08:00
markdown.js refactor(dev): 前端模块化 Step 1 — dev.html 拆零构建 ES module(叶子优先) 2026-06-05 16:55:20 +08:00
media.js feat(delegate): §8.11 最小子循环——上下文隔离的检索子助手(bump 0.58.30) 2026-07-15 14:43:04 +08:00
memory.js feat(memory): 双层记忆升级为 agent 自管 + 前端只读记忆面板 + bump 0.12.0 2026-06-13 12:20:08 +08:00
newtask.js fix(web): 修登录无反应(newtask.js 漏 import $)+ 补 favicon 2026-06-08 09:22:59 +08:00
preview.js fix(web): SVG 预览强制 image/svg+xml(前端 blob mime + 后端 download)(bump 0.33.1) 2026-06-30 08:28:11 +08:00
procs.js feat(procs): 后台进程 bg proc + 对话锁/完成通知 + seedance 续查(bump 0.56.0) 2026-07-10 16:47:11 +08:00
progress.js fix(web): 进度条自愈——回放层强制单调完成(d1285247 复盘,bump 0.36.2) 2026-07-03 11:16:34 +08:00
skills.js feat(web): 技能弹框平台/我的拆成独立两栏(三栏 master-detail) 2026-06-11 10:22:06 +08:00
state.js feat(web): 有 gpt_image 权限的用户生图默认 GPT 生图(bump 0.58.16) 2026-07-13 10:26:31 +08:00
wechat.js fix(web): 修复卡片⚙点击无反应(export openWechatModal)+ 卡片圆角调小 2026-06-26 12:26:44 +08:00