feat: chat uploads, vision turn isolation, and MindSpace agent improvements

Add chat file/image upload UX, attachment proxying, vision thumbnails, and per-turn image scoping so agents only use the current upload. Extend MindSpace asset context, billing token state, OA/scenario verify scripts, and related runtime config.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
john
2026-07-11 00:23:01 +08:00
parent e3063ea806
commit 32fb2cdeaf
51 changed files with 4588 additions and 186 deletions
@@ -0,0 +1,110 @@
---
name: memind-page-data-survey-verify
description: >-
Verify Page Data survey update chains (e.g. john4 children-hobby q4_diet_meals)
without manual chat input. Use when the user asks to 验证问卷链路, 饮食偏好测试,
page-data-collect 回归, 儿童爱好问卷验证, or after agent-run / MCP / page-data changes.
---
# Page Data 问卷链路自动验证
用户说「**帮我验证问卷 / 饮食偏好链路**」「**不用我手动测**」时,**必须**走本 skill,不要只在浏览器里手点。
## 两条路径
| 路径 | 何时用 | 命令 | 耗时 |
|------|--------|------|------|
| **A. 产物验证(默认)** | Agent 已跑完,或只改 Page Data / HTML / 策略 | 见下方 | ~5s |
| **B. 全链路 E2E** | 要测 Agent 聊天 + 工具 + 交付 | 见下方 | ~310min |
### A. 产物验证(推荐日常)
前提:Portal 已运行(`pnpm dev`),默认 `http://127.0.0.1:8081`
```bash
npm run verify:children-hobby-diet-survey
```
等价:
```bash
node scripts/verify-children-hobby-diet-survey.mjs
```
可选:
```bash
node scripts/verify-children-hobby-diet-survey.mjs --no-insert # 不写测试提交
node scripts/verify-children-hobby-diet-survey.mjs --no-runs # 不查 orphan running
```
**自动检查项:**
1. SQLite 表 `children_hobby_survey``q4_diet_meals`
2. dataset 注册 insert 列含 `q4_diet_meals`
3. 问卷 / 后台 HTML 含饮食字段与 Page Data 客户端
4. 公开页 policy 允许 insert `q4_diet_meals`
5. MindSpace URL HTTP 200
6. 公开 insert API 实测提交(默认开启)
7. 无 orphan `running` agent run(避免前端一直 loading
### B. 全链路 E2E(测 Agent
```bash
npm run test:scenario:john4-diet
```
场景文件:[`scenarios/john4-children-hobby-diet-update.json`](../../../scenarios/john4-children-hobby-diet-update.json)
- 账户:`john4` / `888888`(可用 `JOHN4_PASSWORD` 覆盖)
- 话术:**「问卷页面再增加一个饮食偏好,比如每日几顿这种」**
- 技能:`page-data-collect`
- 超时:10 分钟
- 结束后自动跑与路径 A 相同的产物验证
## Agent 工作流
1. **确认 Portal**`curl -sf http://127.0.0.1:8081/auth/status`
2. **默认跑路径 A**;用户明确要测 Agent 再跑路径 B
3. **失败时**:读失败项 → 修代码/环境 → 重跑同一条命令
4. **汇报**:用下方模板
## 已知链路风险(非权限问题)
验证通过仍可能出现过这些**过程性**问题,写入排查结论时一并说明:
| 现象 | 根因 | 是否权限 |
|------|------|----------|
| 前端一直 loading | agent run 孤儿化(Portal 重启) | ❌ |
| 工具 `-32603: Transport closed` | sandbox-fs MCP 子进程断开 | ❌ |
| insert 403 columns_not_allowed | policy 未更新(bind 失败) | ⚠️ 策略,非用户账号 |
| Agent 用 shell 写 HTML | MCP 不稳定时的绕路 | ❌ |
## 结果模板
```markdown
## 问卷饮食偏好链路验证
- 模式:产物验证 / E2E
- Portalhttp://127.0.0.1:8081
- 用户:john4
- 结果:通过 / 失败
### 检查项
1. SQLite q4_diet_meals — 通过/失败
2. HTML 问卷+后台 — 通过/失败
3. Page Data policy — 通过/失败
4. 公开 insert API — 通过/失败
5. Agent run 无 orphan — 通过/失败
### 失败项与下一步
```
## 与其它 skill 分工
| 诉求 | 用哪个 |
|------|--------|
| 验证已有问卷增量(本案例) | **本 skill** |
| 通用聊天+做页面场景 | `memind-scenario-test` |
| 改代码后单测/守卫 | `memind-test` |
| Page Data 单元测试 | `npm run verify:page-data` |