Commit Graph

21 Commits

Author SHA1 Message Date
Wyatt_K
04bbbf642e fix(cloud-agent): skill_search 两处实机缺陷——skillId 容错与 snippet 多字节越界
两个缺陷都是实机验证时撞出来的,不是理论风险。

1) 参数容错:Agent 首次调用时按 skill_read_file 的参数习惯顺手带上 skillId
   ({"keyword": "...", "skillId": "<已启用技能ID>"}),而参数解码走
   decodeCloudAgentJSONObject(DisallowUnknownFields),直接拒绝 → tool_failed。
   结果是工具在清单里可见、却一次都没调用成功。
   - args struct 增加 SkillID(json:"skillId,omitempty"),仅接收不生效——
     检索范围恒为本轮已启用技能;
   - 工具描述补「不要传 skillId——本工具搜索全部已启用技能」,从源头减少误传;
   - 回归测试走完整的工具分发路径(cloudAgentReadTool),真正穿透解码层,
     并断言该字段不会缩小检索范围。

2) snippet 越界 panic(更严重):cloudAgentSkillSnippet 用 strings.Index 拿
   **字节偏移**,却拿它去切 **[]rune**。中文描述里关键词越靠后、字节偏移越远
   超 rune 数,start 没有夹紧到 len(runes),触发
   panic: runtime error: slice bounds out of range [249:233],
   **整个后端进程被打挂**(实测复现两次)。
   - 改为 rune 级子串查找(cloudAgentSkillRuneIndex),不再混用字节与 rune 下标;
   - start/end 双向夹紧,并补 start>end 兜底;
   - 回归测试用 276 rune、命中词字节偏移 483 的长中文描述,
     在修复前稳定 panic([443:276]),修复后通过。

3) 工具描述补充检索引导(提示文本,非行为改动):
   - skill_search:明写「当本轮启用了多个技能、而你不确定该读哪一个时,先用本工具检索」;
   - skill_read_file:补「若本轮启用了多个技能且不确定该读哪一个,先用 skill_search 检索再读」——
     放在这里是因为模型一定会用到 read_file,提示的可达性高于只写在 search 自己的描述里。

   实测:同一 8 技能满槽任务跑 3 次(原始描述 / 只改 search 描述 / 再改 read_file 描述),
   step-5 **三次都没自发调用** skill_search,skill_read_file 次数 15 / 8 / 9(噪声内)。
   即:**仅靠工具描述不足以驱动该模型自发检索**,需要系统提示层路由或遥测来验证采纳,
   本 PR 不声称改善了采纳率。

门禁:go build ✓  go vet ✓  go test 8/8 ✓
2026-09-22 03:35:24 +08:00
Wyatt_K
18b082a2d0 feat(cloud-agent): 新增 skill_search 工具——Agent 侧技能检索
#568/#575 提交 35 个域包(760 卡)后,Agent 按总纲名录逐卡深读的模式
出现检索成本:实测单任务读卡 12-29 次,卡库继续增长后劣化可期。
skill_read_file 只接受精确路径,Agent 侧无检索能力,与用户侧商店搜索不对称。

本 PR 参照仓库内 recall_lessons 的既有检索范式(同一套分词器与三档加权:
name 命中 3 分 / description 命中 2 分),为 Agent 侧补上对称能力:

- skill_search(keyword, limit):在本轮已启用的技能中按关键词打分排序,
  返回「哪张卡值得读 + skillId + path + snippet」;不带参数时列全量索引;
- 数据源为本轮冻结的技能快照(与 #577 注入 manifest 的 description 同源),
  搜到的必然是能读的,不引入「搜到但版本已变」的一致性问题;
- 只读、零副作用;不搜索未安装技能,避免「搜到不能读」的挫败;
- 渐进披露边界不变:返回索引而非正文,正文仍走 skill_read_file
  (12000 字符/页),技能内容永不整体内联进上下文;
- 工具描述明牌「返回的是索引,不是指令」,延续不可信数据纪律。

测试(6 个新契约用例,全绿):
- 与 skill_read_file 一同注册、无技能时均不出现;
- name 命中排在 description 命中之前;snippet 不泄正文;
- 无关键词列全量索引;limit 夹紧;无命中时 guidance 指向 read_file;
- 空技能集返回 guidance;instruction 正文绝不内联(sentinel 断言)。

门禁:go build ./internal/app/ ✓  go vet ./internal/app/ ✓
      go test -run TestCloudAgentSkillSearch ✓
2026-09-21 22:23:35 +08:00
Wyatt_K
5fe27ae642 feat(cloud-agent): 技能 description 进入 Agent 系统提示 manifest
compileCloudAgentPolicies 的技能 manifest 此前只含 skillId/name/version/hash/entryPath/files,模型看不到每个已激活技能是干什么的,无法在多技能间路由、也无法向用户解释为何选它。本改动把 SkillItem.Description(技能市场公开元数据)注入 manifest,并以 500 runes 为上限截断(描述由技能作者提供,需防止异常长的描述撑爆提示词预算)。skill_read_file 渐进披露边界不变:instruction 与文件正文仍不进入系统提示。
2026-09-21 17:52:49 +08:00
ddCat
8b8ea29148 fix(runtime): 运行稳定性 - 修复技能种子、任务续租与回归检查
保留社区技能作者与时间戳修复、Agent 参数约束、资源删除 worker 生命周期、PostgreSQL/Redis 测试门禁及相关回归。

Original-Commit: 0d05ff88bbe6c875d01964041788023a662ff7e8
2026-09-21 09:48:43 +08:00
AetherNo2332
13707c06b9 perf(agent): 工具 schema 瘦身 - 去掉重复 oneOf 并压缩冗余描述 (#569)
Original-Commit: 042d06f02215c29771360e73bc17c99d132ddfda
perf(agent): 工具 schema 瘦身 - 去掉重复 oneOf 并压缩冗余描述

工具表每一步都要发、还在前缀缓存最前面,属于固定开销:

- canvas_apply_ops 的 ops.items 同时给顶层 type 枚举和一份 oneOf,同一条约束下发两遍;
  工具描述与服务端按 action 的强校验已经表达了它,删掉 oneOf。
- generate_media 的 snapshotHash / sourceNodeId / referenceNodeIds 描述压成短句。
- remember_lesson 的 steps[].tool / steps[].note 描述压成短句。

契约不变(字段、required、enum、服务端校验都未动)。实测:20 个工具的平台表
22885 → 22438 字节(−447)。新增体积守卫用例(断言无重复 oneOf + 总体积 ≤24000)。
2026-09-21 09:37:20 +08:00
ddCat
85de99071d fix(canvas): 云端 Agent - 参数错误有限重试并折叠中间失败 2026-09-21 09:30:38 +08:00
ddCat
0ea9f7d94b fix(canvas): 画布智能体 - 严格校验模型选择并修正任务与 DNS 错误诊断 2026-09-20 12:47:07 +08:00
ddCat
adf3a5be3c feat(agent): 云端 Agent - 增加上下文预算、任务事实与终态恢复保障 2026-09-19 20:43:20 +08:00
Codex
6abaa7b45a feat(image): integrate PoloX image editing workflows
Add WaveSpeed image editing and image tools plugins, canvas image editing workflows, layer selection, and Cloud Agent image tools with approval-safe transient references.
2026-09-18 20:34:28 +08:00
ddCat
9eb2fcd453 chore(release): 版本发布 - publish v1.5.1 2026-09-18 15:26:26 +08:00
ddCat
506f463d07 feat(canvas): 批量创作表 - 支持全局提示词、参考图编排与连线同步 2026-09-18 13:03:35 +08:00
ddCat
656f64a3ce fix(agent): 云端 Agent - 媒体失败可续跑并补齐快照哈希
生成任务失败不再把整轮判死,漏传画布快照由服务端补当前内容哈希,没有偏好层时不暴露空的 profile 读取。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-17 23:31:54 +08:00
ddCat
6892732b06 feat(agent): Agent 工作台 - 计划插话记忆、统一模型选择器并修复摘要与视频入库
将计划清单、运行中插话和个人记忆接入云端 Agent;全站模型选择器统一为左右二级菜单。画布摘要按预算截断不再整轮拒绝,首页视频未知宽高可入库。README 补充贡献者 morrow。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-17 20:21:25 +08:00
ddCat
fc5548836f feat(agent): Agent 生成审批 - 支持改模型参数、忽略位置漂移并取消 8 轮硬限制
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-16 22:59:38 +08:00
ddCat
9868f5e8b8 feat(agent): 批量创作表 - 注册节点能力与读写工具 2026-09-15 20:56:33 +08:00
ddCat
788a298004 feat(agent): 云端创作助手 - 增加创作锚点、媒体准入与结构化分镜能力 2026-09-15 13:37:21 +08:00
ddCat
363d8d699a fix(agent): 画布助手 - 完善不限预算与技能分页上下文卸载 2026-09-15 09:19:54 +08:00
ddCat
a840e552d5 fix(agent): 优化预算与技能按需加载 2026-09-15 07:04:08 +08:00
ddCat
201f3aac65 fix(agent): 修复流式推理与工具参数重试 2026-09-15 05:22:07 +08:00
ddCat
dca01886f9 feat(canvas): 云端 Agent - 完成策略分层、节点能力注册与可解释审批改造 2026-09-14 17:58:21 +08:00
ddCat
9727656b2b chore: commit workspace updates 2026-09-14 01:11:56 +08:00