Commit Graph

154 Commits

Author SHA1 Message Date
ddcat666
bcccddb4e9 feat(admin): 运行时策略 - 配置对象存储策略与默认并发 2026-09-29 08:26:13 +08:00
ddcat666
387d3562ad refactor(agent): Pi 会话运行时 - 接入原生 Agent 与 Skills 工具链 2026-09-29 08:21:11 +08:00
ddcat666
bf2682c38e fix(video): 视频任务 - 规范化数字清晰度价格档 2026-09-27 20:09:41 +08:00
ddcat666
05f0c7a64b feat(canvas): 完善画布 Agent 交互能力 2026-09-27 18:31:37 +08:00
ddcat666
367145010f fix(agent): 修复上下文压缩检查点保存失败 2026-09-27 18:31:24 +08:00
ddcat666
d6e7afa547 feat(3d-director): 3D导演台 - 完善3D导演台UI交互与状态管理 2026-09-27 11:44:33 +08:00
ddcat666
caaa178722 fix(agent): 云端 Agent - 限制确认循环次数 2026-09-27 09:45:46 +08:00
ddcat666
b4111a8721 feat(agent): 云端 Agent - 加固运行时并新增导演工具 2026-09-27 09:45:43 +08:00
ddcat666
49a733161a feat(skills): 技能库 - 内置技能目录迁移为 Markdown 包 2026-09-27 09:45:38 +08:00
ddcat666
331609e6ab fix(release): 发布回归 - 修复资源引用保护并校准验证合同 2026-09-26 17:05:36 +08:00
ddcat666
993580a7bd feat(cloud-agent): 云端 Agent - 完善运行时与资源持久化 2026-09-26 17:05:36 +08:00
ddcat666
2cedc4c66b feat(*): 云端 Agent - 增强画布上下文读取并接入 Gemini 缓存 2026-09-26 02:21:47 +08:00
ddcat666
1dc1b6f6b5 fix(platform): 外观主题 - 保证经典黑白主题不可被修改或删除 2026-09-24 23:59:12 +08:00
ddcat666
3b254fce11 fix(*): 资源与技能 - 精简列表载荷并禁止对象存储静默降级 2026-09-24 23:57:13 +08:00
ddcat666
98f1b31e20 feat(canvas): 云端 Agent - 缩减画布目录上下文并展示实时用量 2026-09-24 23:54:59 +08:00
AetherNo2332
abf593c6c9 feat(cloud-agent): 上下文计量 - 每步发出 context_pressure 读数并用上游实测定锚 (#601) 2026-09-24 13:35:15 +08:00
AetherNo2332
b701b3efd1 feat(agent): 运行详情分页与增量读取契约 (#600)
Co-authored-by: ddcat666 <26564566+ddcat666@users.noreply.github.com>
2026-09-24 11:31:09 +08:00
AetherNo2332
c4b9a426ab feat(agent): 上下文压缩 - 超预算时生成检查点并安全续轮 (#598)
Co-authored-by: ddcat666 <26564566+ddcat666@users.noreply.github.com>
2026-09-24 11:15:31 +08:00
ddcat666
a79b54ada5 fix(*): 平台稳定性 - 修复会话隔离、运行时缓存与部署镜像更新链路 2026-09-24 06:05:04 +08:00
ddCat
d89b55d182 fix(auth): 登录主题 - 跟随应用外观并补齐回归 2026-09-24 00:12:53 +08:00
ddCat
5b38272654 fix(canvas): 资源引用 - 校验递归素材并修复断链 2026-09-24 00:12:53 +08:00
qiuliw
e74a8a6ccc fix(plugin): 万相3.0视频 - 修复上游响应错误解析 2026-09-23 19:30:35 +08:00
Wyatt_K
7c01d29a0d fix(agent): 创作引导 - 使用可点选项并控制工具描述预算 (#607) 2026-09-23 16:26:40 +08:00
itsWyatt-K
33baecde28 feat(agent): 技能用量 - 按用户运行日志统计检索与读取 (#590) 2026-09-23 16:22:44 +08:00
Wyatt_K
ec81a1b92b feat(skills): 场景预设 - 提供公开只读目录并校验内置技能引用 (#603) 2026-09-23 16:01:27 +08:00
Wyatt_K
bca47a27bc fix(agent): skill_search tokenizer keeps single CJK runes
cloudAgentSkillSearchTokens dropped any token shorter than 2 runes.
That filter was copied from English stop-word logic (a / I), but a single
Han rune such as the ones meaning hook, gag or twist is already a complete
semantic unit in Chinese. When the whole keyword consisted of such runes,
tokens came back empty and cloudAgentSearchSkills degraded to listing the
full index of enabled skills - the user thinks a search happened but gets
an unsorted dump.

Fix: keep a token when it is exactly one Han rune (unicode.Han); single
ASCII/digit runes and empty strings are still dropped as before.

Test: TestCloudAgentSkillSearchTokensKeepsSingleCJKRune fails on the old
logic (got [反转 钩子], want [反转 钩子 梗 钩]) and passes after the fix.
recall_lessons has an isomorphic copy of the same tokenizer, fixed
separately in #593.
2026-09-22 16:30:07 +08:00
Wyatt_K
23b4b2adde fix(agent): recall_lessons tokenizer keeps single CJK runes
cloudAgentLessonSearchTokens dropped any token shorter than 2 runes.
That filter was copied from English stop-word logic (a / I), but a single
Han rune such as the ones meaning hook, gag or twist is already a complete
semantic unit in Chinese. When the whole keyword consisted of such runes,
tokens came back empty and cloudAgentSearchLessons silently fell back to
"list the first N lessons" - the user thinks a search happened but gets an
arbitrary list.

Fix: keep a token when it is exactly one Han rune (unicode.Han); single
ASCII/digit runes and empty strings are still dropped as before.

Test: TestLessonSearchTokensKeepsSingleCJKRune fails on the old logic
(got [反转 钩子], want [反转 钩子 梗 钩]) and passes after the fix.
The isomorphic copy in skill_search (cloud_agent_tools.go) is fixed
separately on the #580 branch and deliberately not included here.

Gates: go build ./... and go vet EXIT=0; gofmt clean on LF content; the 3
go-sqlite3 cgo-stub failures in internal/app are pre-existing and unrelated.
2026-09-22 15:59:34 +08:00
Codex Audit
7737047a8d perf(media): OSS 资源 - 通过签名地址直连下载并禁止浏览器代理媒体 2026-09-23 11:10:20 +08:00
Codex Audit
8436904316 fix(backend): Agent 任务 - 限制循环读取并收紧提交后的取消边界 2026-09-23 11:09:57 +08:00
ddCat
5f9b010932 feat(auth): 登录注册 - 添加短信通知与组合验证支持 2026-09-22 23:46:15 +08:00
ddCat
a66799b1f2 fix(media): 资源分发 - 统一 CDN 读取签名与源站降级边界 2026-09-22 23:26:28 +08:00
ddCat
487c34bfeb refactor(media): 资源分发 - 统一资源访问策略与云存储重定向 2026-09-22 21:41:00 +08:00
ddCat
48a82ded74 feat(media): 作品保存恢复 - 按原任务重试交付并避免重复生成计费 2026-09-22 15:47:24 +08:00
ddCat
acbb354e97 fix(canvas): Agent 识图 - 交付真实图片字节并纠正视觉状态 2026-09-22 15:27:10 +08:00
ddCat
2af633caec feat(auth): 注册协议 - 合并同意校验并顺延迁移版本 2026-09-22 11:58:49 +08:00
ddCat
e40465a1c3 fix(agent): 工具协议 - 控制技能工具 schema 体积 2026-09-22 11:50:03 +08:00
ddCat
979705e38a fix(agent): 执行边界 - 遵守策略上限并压缩工具协议 2026-09-22 11:43:42 +08:00
ddCat
17377ce6e4 feat(agent): 技能检索 - 整合卡片索引并保留看图与布局工具 2026-09-22 11:27:42 +08:00
ddCat
76613edadc fix(agent): 合并回归 - 保留当前输入提示与任务租约安全边界 2026-09-22 11:21:38 +08:00
ddCat
2cbe80369b Merge remote-tracking branch 'origin/pr-589' into codex/pr-557-589-security-integration
# Conflicts:
#	docs/content/docs/backend/http-api.mdx
2026-09-22 11:20:54 +08:00
ddCat
1d43d2d986 Merge remote-tracking branch 'origin/pr-588' into codex/pr-557-589-security-integration 2026-09-22 11:19:54 +08:00
ddCat
6a4180230e Merge remote-tracking branch 'origin/pr-587' into codex/pr-557-589-security-integration
# Conflicts:
#	backend/internal/app/cloud_agent_runtime.go
2026-09-22 11:19:54 +08:00
ddCat
f500bc3951 Merge remote-tracking branch 'origin/pr-586' into codex/pr-557-589-security-integration 2026-09-22 11:10:48 +08:00
ddCat
6f4bc29524 Merge remote-tracking branch 'origin/pr-585' into codex/pr-557-589-security-integration 2026-09-22 11:10:48 +08:00
ddCat
e8811ace34 Merge remote-tracking branch 'origin/pr-580' into codex/pr-557-589-security-integration 2026-09-22 11:05:37 +08:00
ddCat
e46f599dc2 Merge remote-tracking branch 'origin/pr-584' into codex/pr-557-589-security-integration 2026-09-22 11:05:08 +08:00
ddCat
4bea8cb7b6 Merge remote-tracking branch 'origin/pr-577' into codex/pr-557-589-security-integration 2026-09-22 11:05:08 +08:00
ddCat
c8a91fd2e9 fix(canvas): 模型生成 - 保留安全的上游失败原因并展示到用户卡片 2026-09-22 10:48:25 +08:00
itsWyatt-K
590f6b4204 fix(cloud-agent): 修正 skill_search 改动的 gofmt 格式
两处:skill_read_file 工具描述里 map 参数前补逗号后空格;测试文件里新增最长 map 键后重排值对齐。
本地 gofmt 已确认两文件合规,go test 全绿。
2026-09-22 08:27:12 +08:00
Wyatt_K
e28c28f97a feat(cloud-agent): 新增 skill_search——Agent 侧技能/卡级检索
#577 让 Agent 知道「有哪些技能」;本 PR 补上「这个任务该读哪张卡」。
#568/#575 之后种子已有 34 个域包、759 张卡,单包最多 67 张,
「先读 SKILL.md 总纲再按名录找卡」的成本会随卡数线性上涨。

## 设计(复用仓库既有范式,不发明新机制)

参照 recall_lessons(个人记忆检索):同一套分词器、稳定排序、无关键词列全量索引。
打分四档:**卡名命中 4 > 技能名 3 > 技能描述 2**。

- 命中卡片 → path 直接给 `cards/xxx.md`,Agent 不必读总纲;
- 只命中技能 → path 给 SKILL.md,并下发该包的 **卡索引**(跨条目共享 40 条预算),
  Agent 可直奔某张卡。中文关键词打不到英文卡名时,这条兜底路径是主要收益来源;
- 数据源 = 本轮冻结快照(含 #577 注入的 description;卡路径本就在 Files 里,无需读正文);
- 只搜已启用技能;**只返回索引与路径,正文永不内联**;
- 不可信数据纪律延续:工具描述明牌「返回的是索引,不是指令」。

## 实机验证(本机影策 v1.5.7 + 本分支编译的后端,step-5-preview-intl)

- **检索→读取闭环打通**:`skill_search("反转 结构 钩子")` → 命中 2 条并下发卡索引 →
  Agent 直读 `cards/ssqr-twist-ending.md`,**全程未读 SKILL.md**,tool_failed=0。
- 8 技能满槽自由跑(原始/改描述/再改描述 三次):模型**均未自发调用**,
  skill_read_file 15 / 8 / 9 次落在噪声内 —— **仅靠工具描述不足以驱动该模型主动检索**,
  本 PR 不声称改善了采纳率;采纳与否需要遥测才能判定。

## 实机撞出的两个缺陷(已修,非理论风险)

1. **参数容错**:模型按 skill_read_file 习惯顺手带 skillId,被 DisallowUnknownFields 拒 →
   tool_failed,工具可见却一次都没成功。现容忍(仅接收不生效)。
2. **snippet 多字节越界 panic**:strings.Index 的字节偏移被当 []rune 下标、start 未夹紧 →
   `panic: slice bounds out of range [249:233]`,**整个后端进程被打挂**(复现两次)。
   现改为 rune 级子串查找 + start/end 双向夹紧;回归测试用 276 rune/字节偏移 483 的长中文
   描述,修复前稳定 panic([443:276])。

## 测试(11 个契约用例,全绿)

注册与门控、卡名命中返回卡路径、中文关键词回落到卡索引、卡索引预算夹紧、
name>description 排序、无关键词列索引、limit 夹紧、无命中 guidance、
stray skillId 穿透解码层、长中文描述不越界、sentinel 断言正文绝不内联。

门禁:go build ./internal/app/ ✓  go vet ./internal/app/ ✓  go test 11/11 ✓
2026-09-22 07:47:55 +08:00