Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
00f8b9774b | ||
|
|
3ab581634a | ||
|
|
3a986726d8 | ||
|
|
81d7cb523d | ||
|
|
c6dd174253 | ||
|
|
94ba2b654e | ||
|
|
4242f8377e | ||
|
|
97aaefe5fa | ||
|
|
159253a12f |
@@ -1,8 +1,11 @@
|
||||
# R1 uses the approved no-key gateway from config/models.yaml.
|
||||
# These variables are read from the process environment; this file is not auto-loaded.
|
||||
# Keep data outside release directories. Use an independent directory for local testing.
|
||||
CYBERGRIL_DB=/opt/cybergril-data/cybergril.db
|
||||
CYBERGRIL_MODELS=config/models.yaml
|
||||
CYBERGRIL_WEB=web/dist
|
||||
CYBERGRIL_HOST=127.0.0.1
|
||||
CYBERGRIL_PORT=8310
|
||||
# 复制成 .env 后填写。不填也能跑(会回退到离线 provider)。
|
||||
|
||||
# ---- LLM ----
|
||||
DEEPSEEK_API_KEY=
|
||||
|
||||
# ---- Embedding(可选,留空则用本地或跳过向量检索)----
|
||||
EMBEDDING_API_KEY=
|
||||
|
||||
# ---- 运行时 ----
|
||||
CYBERGRIL_DB=companion.db
|
||||
CYBERGRIL_LOG_LEVEL=INFO
|
||||
|
||||
@@ -11,6 +11,8 @@
|
||||
# 二进制
|
||||
*.wav binary
|
||||
*.mp3 binary
|
||||
*.mp4 binary
|
||||
*.webp binary
|
||||
*.png binary
|
||||
*.jpg binary
|
||||
*.onnx binary
|
||||
|
||||
@@ -48,5 +48,3 @@ models/
|
||||
*.swp
|
||||
.DS_Store
|
||||
Thumbs.db
|
||||
|
||||
.venv311/
|
||||
|
||||
@@ -4,35 +4,13 @@
|
||||
|
||||
不是聊天机器人。区别在于:**它在你不说话的时候也在运行**。
|
||||
|
||||
设计、施工与审核先读 [完整需求入口](docs/requirements/README.md) 和 [项目必读规则](AGENTS.md)。后续逐项确认的需求优先于本仓库早期构想;演示通过不代表整个项目完成。
|
||||
|
||||
---
|
||||
|
||||
## 先看一眼
|
||||
|
||||

|
||||
|
||||
[**▶ 打开完整动画**](docs/intro.html) — 22 秒,纯代码生成,无任何外部资源
|
||||
|
||||
```
|
||||
docs/intro.html 单文件动画,双击即播
|
||||
docs/preview.webp 渲染好的预览(800×450 / 10fps / 22s / 0.5MB)
|
||||
tools/render_preview.py 重新渲染、换分辨率、导出静帧
|
||||
```
|
||||
|
||||
动画里有一条贯穿的主线:**强调色 = 当前效价 `v`**。
|
||||
情绪低落时画面整体转冷,而不是靠字幕告诉你"她现在很难过"。
|
||||
|
||||
| 幕 | 时间 | 讲什么 |
|
||||
|---|---|---|
|
||||
| 膜 | 0–6s | 物质撞在膜上弹回,信息穿过去 |
|
||||
| 心跳 | 6–12s | 没有输入时它也在跳;难过恢复得慢 |
|
||||
| 记忆 | 12–17s | 记得的会沉下去,但沉不到底 |
|
||||
| 名字 | 17–22s | — |
|
||||
|
||||
四张静帧:`docs/01-membrane.png` `02-heartbeat.png` `03-memory.png` `04-title.png`
|
||||
|
||||
动画本身的技术取舍:时间轴是纯函数 `render(t)`,不做 RAF 累加。
|
||||
所以任意一帧都能独立渲染——这也是 `render_preview.py` 能逐帧截图、
|
||||
而不需要真实录屏的原因。
|
||||
<video src="docs/promo.mp4" controls width="100%"></video>
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -1,9 +0,0 @@
|
||||
{
|
||||
"kind": "mechanical source bundle, not a Git merge or release",
|
||||
"product_base": "db571ba204c8372989f96e1ed9b5cd00d3a306c7",
|
||||
"requirements_and_hel799_source": "63799f02474ed94fd793de9e2360d185c878165d",
|
||||
"approval_comment": "01a169a8-5884-7c26-a00f-c23a5f5399a9",
|
||||
"scope": "A1/A2 frontend continuation; do not replace 8300/8310 or production data",
|
||||
"hel815_source_attachment": "01a16845-b50a-7335-a87e-61bf11c44703",
|
||||
"unmodified_product_sources": true
|
||||
}
|
||||
@@ -18,9 +18,9 @@ tiers:
|
||||
# ---- 旗舰:人设浓度最高的时刻 ----
|
||||
high:
|
||||
provider: openai_compat
|
||||
model: halogen-qwen3.8-flash-next
|
||||
base_url: http://192.168.200.11:8731/v1
|
||||
api_key_env: null
|
||||
model: deepseek-v4.1-flash
|
||||
base_url: https://api.deepseek.com/v1
|
||||
api_key_env: DEEPSEEK_API_KEY
|
||||
timeout: 60.0
|
||||
temperature: 0.85
|
||||
|
||||
@@ -28,9 +28,9 @@ tiers:
|
||||
# 省钱的杠杆通常不是换更小的模型,而是少喂上下文。
|
||||
standard:
|
||||
provider: openai_compat
|
||||
model: halogen-qwen3.8-flash-next
|
||||
base_url: http://192.168.200.11:8731/v1
|
||||
api_key_env: null
|
||||
model: deepseek-v4.1-flash
|
||||
base_url: https://api.deepseek.com/v1
|
||||
api_key_env: DEEPSEEK_API_KEY
|
||||
timeout: 40.0
|
||||
temperature: 0.7
|
||||
|
||||
@@ -38,8 +38,8 @@ tiers:
|
||||
# 没有本地服务时,把它指向 openai_compat 的远端小模型即可。
|
||||
low:
|
||||
provider: openai_compat
|
||||
model: halogen-qwen3.8-flash-next
|
||||
base_url: http://192.168.200.11:8731/v1
|
||||
model: qwen3.5-4b-instruct
|
||||
base_url: http://127.0.0.1:8000/v1
|
||||
api_key_env: null
|
||||
timeout: 20.0
|
||||
temperature: 0.4
|
||||
|
||||
@@ -1,28 +0,0 @@
|
||||
# Review/install by 总工 only. Single worker; never share DB with demo or tests.
|
||||
[Unit]
|
||||
Description=CyberGril R1 persistent text API
|
||||
After=network-online.target
|
||||
Wants=network-online.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User=cybergril
|
||||
WorkingDirectory=/opt/cybergril-api/current
|
||||
Environment=CYBERGRIL_DB=/opt/cybergril-data/cybergril.db
|
||||
Environment=CYBERGRIL_MODELS=/opt/cybergril-api/current/config/models.yaml
|
||||
Environment=CYBERGRIL_WEB=/opt/cybergril-api/current/web/dist
|
||||
Environment=CYBERGRIL_HOST=0.0.0.0
|
||||
Environment=CYBERGRIL_PORT=8310
|
||||
ExecStart=/opt/cybergril-api/current/.venv/bin/python -m cybergril.api
|
||||
Restart=on-failure
|
||||
RestartSec=3
|
||||
TimeoutStopSec=15
|
||||
UMask=0077
|
||||
NoNewPrivileges=true
|
||||
PrivateTmp=true
|
||||
ProtectSystem=strict
|
||||
ProtectHome=true
|
||||
ReadWritePaths=/opt/cybergril-data
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
@@ -1,12 +0,0 @@
|
||||
{
|
||||
"checks": [
|
||||
"1440: ordinary entry, creation validation/failure/retry and reopen",
|
||||
"1440: both themes, home/talk/days/memory return, relation confirm/cancel/save",
|
||||
"1440: private deep-link guard, cancel/exit isolation, IME/Shift+Enter and XSS text",
|
||||
"1440: failed send/retry, voice end reachable, no-camera simulation, reconnect failure/retry, save failure/retry",
|
||||
"1440: privacy-filtered away summary and proactive message",
|
||||
"No uncaught browser errors, API/external requests, microphone or camera requests"
|
||||
],
|
||||
"errors": [],
|
||||
"requests": 31
|
||||
}
|
||||
@@ -5,8 +5,8 @@
|
||||
"390: private deep-link guard, cancel/exit isolation, IME/Shift+Enter and XSS text",
|
||||
"390: failed send/retry, voice end reachable, no-camera simulation, reconnect failure/retry, save failure/retry",
|
||||
"390: privacy-filtered away summary and proactive message",
|
||||
"No uncaught browser errors, API/external requests, microphone or camera requests"
|
||||
"No uncaught browser errors, external requests, microphone or camera requests"
|
||||
],
|
||||
"errors": [],
|
||||
"requests": 23
|
||||
"requests": 36
|
||||
}
|
||||
@@ -15,8 +15,8 @@
|
||||
"390: private deep-link guard, cancel/exit isolation, IME/Shift+Enter and XSS text",
|
||||
"390: failed send/retry, voice end reachable, no-camera simulation, reconnect failure/retry, save failure/retry",
|
||||
"390: privacy-filtered away summary and proactive message",
|
||||
"No uncaught browser errors, API/external requests, microphone or camera requests"
|
||||
"No uncaught browser errors, external requests, microphone or camera requests"
|
||||
],
|
||||
"errors": [],
|
||||
"requests": 56
|
||||
"requests": 88
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
HEL-780 · 8310独立部署/回滚材料(总工执行,尚未部署)
|
||||
|
||||
1. 审核确切任务分支和提交,复核8310空闲;保持8300和其他既有服务不动。建立 `/opt/cybergril-api/releases/<release>/`,构建生产前端和独立Python≥3.11虚拟环境,按 IMPLEMENTATION 安装。服务账号示例为 cybergril,由总工按主机现有规范准备,不默认root。
|
||||
2. 准备代码目录外的 `/opt/cybergril-data/`,仅服务账号可写。首次上线保持数据库没有真实档案,不运行创建POST、不替用户创建。已有数据升级前,停止该API,用 SQLite backup API 做一致快照至独立回滚目录;禁止只复制正在写入中的主DB文件而漏WAL。
|
||||
3. 将 `current` 指向已审核release,审查 `deploy/cybergril-api.service.example` 后再安装服务。模板限制单进程,端口8310,持久数据目录独立;模板不改防火墙、证书或反向代理。按现场systemd版本核对保护项和目录权限。uvicorn直连SSE无代理缓冲;若后续接代理,需另行配置关闭SSE缓冲。
|
||||
4. 启动前确认 `web/dist/index.html`、models配置、虚拟环境可读和数据目录可写。启动时自动执行幂等增量建表、epoch加一和pending取消。使用 `GET /api/health`、`GET /api/companion`(首装预期404)与普通页面做无副作用检查;模型健康异常先记录,不改共享网关、不循环调参。不要以调用preview之外的写接口作为上线健康检查。
|
||||
5. 审核通过后由总工记录服务URL、release、SHA、`journalctl -u cybergril-api` 日志位置,再交用户创建。普通入口 `/`,演示 `/?demo=1`。本轮不切换8300入口,不合并、不部署。
|
||||
|
||||
回滚:
|
||||
|
||||
- 停止 `cybergril-api`,记录当时release与数据快照;把 current 切回上一已审核release,重新启动。数据目录保持原样,不随release回退或删除。R1迁移仅增表,保留旧表;每次重新启动epoch递增。回滚到纯前端版本时真实API将不可用,应明确告知,服务器数据仍保留。
|
||||
- 数据恢复与代码回滚分别处理。需恢复快照时先再次备份当前数据,由总管确认可接受的数据时间点,再由总工停服恢复;禁止把本地测试库覆盖用户库。
|
||||
- 取消部署的清理只针对新建8310服务及明确release;不删除 `/opt/cybergril-data/`,不停止8300或其他项目服务。
|
||||
|
||||
限制:单用户内网、无新增鉴权体系;应沿既有内网访问边界使用。尚无产品级备份功能,本文的升级快照属于部署运维操作;真实页面不会声称已自动备份。SQLite单worker是当前约束,后续扩展需独立设计。
|
||||
@@ -1,64 +0,0 @@
|
||||
HEL-780 · R1 实现与安装运行说明
|
||||
|
||||
基准为 main `498429399812a0776dadd4b56662d31b455a9ea5`,保留原前端两主题与统一样式,未增加 CSS 或运行中的服务。代码审核后由总工决定部署;施工阶段未登录部署服务器、未占用8310,也未修改8300、模型服务或用户档案。
|
||||
|
||||
- `src/cybergril/api/app.py`:单进程 FastAPI 工厂;字段中文复验、无副作用真实排盘预览、唯一档案、只允许关系/称呼/边界修改、历史游标分页和 SSE。复用 `Store`、八字编译器、`ModelRouter` 与 `OpenAICompatLLM`。
|
||||
- `memory/schema.sql`:只增 `companion`、`api_meta`、`chat_message` 及索引;既有八字/生活/记忆/关系表保留。WAL;启动自动加 epoch,并把上次意外退出遗留的 pending 标记 cancelled。
|
||||
- `web/src/adapters/real.ts`、`app/RealApp.tsx`:普通入口只读服务器数据,404首建;复用创建、聊天、管理和人物静帧组件。真实入口不读/写 `cybergril.demo.v1`,草稿使用独立 `cg.real.draft`。`?demo=1` 仍由原 App 与 DemoAdapter 处理,零 API 请求。
|
||||
- 创建第二步通过 `POST /api/companion/preview` 排盘,不写档案;仅最终确认 POST 才在一个事务内写唯一档案和八字。SQLite 单行主键与事务保证并发只成功一次。生辰按 Asia/Shanghai、公历、1900年起、满18岁复验;时辰映射为对应双小时内偶数点,不引入出生地点/真太阳时规则。
|
||||
- SSE 使用同一 `turn_id` 和持久 `epoch`。前端每次发送先同步 epoch,并可处理发送前恰逢重启的409。轮次门槛继续拒绝旧事件;取消/退出直接 abort;服务端取消并等待上游结束后才开始新轮。响应缺少完成标志、空回答、异常或60秒超时均作为失败。部分回答丢弃,用户消息标 failed/cancelled,失败与取消的轮次不进下一轮上下文。成功回答可按同一 turn_id 回放,重试不会重复用户记录或重新生成已完成回答;并发相同轮次也只生成一次。
|
||||
- 模型三档均使用批准网关与模型,保留原 temperature、provider timeout 与预算。dialogue_main 路由限制最近20轮,再按档位上下文预算保留完整近轮;不截断当前用户消息。每轮最多默认1024输出 token,usage 缺失时按字符数保守估算计账,沿用原预算降档策略。原 BudgetGuard 的预算是进程内运维量,重启重置;不是持久化费用账本。
|
||||
|
||||
API 契约:
|
||||
|
||||
| API | 成功/错误 |
|
||||
|---|---|
|
||||
| GET `/api/health` | 200;epoch、是否已创建、模型探测与能力声明。模型 `/models` 2xx且包含配置模型才为真;5秒上限、30秒缓存、并发探测合并;不返回地址或凭据 |
|
||||
| GET `/api/companion` | 200档案(含只读四柱/白话),404未创建 |
|
||||
| POST `/api/companion/preview` | `{name,birth,hour}`→只读底色,422中文字段错误 |
|
||||
| POST `/api/companion` | `{name,birth,hour,relation,nickname?}`→201,409已有档案,422字段错误;拒绝额外字段 |
|
||||
| PATCH `/api/relation` | `{relation,nickname?,boundary?}`→更新后档案;404/422;无任何生辰/底色修改入口 |
|
||||
| GET `/api/messages?limit=200&before=<id>` | 升序 messages、next_before、epoch;每页1–200条;按id稳定排序;前端逐页恢复 |
|
||||
| POST `/api/chat` | `{text,turn_id,epoch}`;UUID turn_id;1–4000字;SSE chat.delta/final/error;404/409/422。chat.error带中文phi和retryable |
|
||||
|
||||
已接通:真实唯一档案、排盘、文字流式对话、服务器聊天历史、关系修改。尚未接通:生活循环、长期记忆检索/整合、主动消息、语音、视觉、天气、素材包与服务器备份。真实页面明确不可用,不填示例经历或伪造执行结果。当前只有近轮对话上下文,不把它说成长期记忆。
|
||||
|
||||
安装(Python ≥3.11;隔离环境,Node/npm用于构建):
|
||||
|
||||
```bash
|
||||
python3.11 -m venv .venv
|
||||
.venv/bin/pip install -r requirements.lock
|
||||
.venv/bin/pip install --no-deps .
|
||||
npm ci --prefix web
|
||||
npm run build --prefix web
|
||||
```
|
||||
|
||||
`requirements.lock` 固定本轮已解析的运行时依赖;开发检查另装 `pip install -e '.[dev]'`。默认 Python 3.10 不满足项目要求。服务不自动读取 `.env`,变量需由启动环境或 systemd 提供:
|
||||
|
||||
```bash
|
||||
export CYBERGRIL_DB=/absolute/separate/test-data/companion.db
|
||||
export CYBERGRIL_HOST=127.0.0.1
|
||||
export CYBERGRIL_PORT=18310
|
||||
.venv/bin/python -m cybergril.api
|
||||
```
|
||||
|
||||
从仓库根目录启动;默认模型配置 `config/models.yaml`、静态产物 `web/dist`,可分别通过 `CYBERGRIL_MODELS` / `CYBERGRIL_WEB` 指定绝对路径。本地默认数据库在用户 `.local/share/cybergril/`,生产必须显式指定独立数据目录。**单进程单worker,不启用reload或多worker。** 8310由总工部署时使用,本地测试脚本使用随机loopback端口、临时数据库并在结束时关闭服务。
|
||||
|
||||
自测:
|
||||
|
||||
```bash
|
||||
.venv/bin/pytest -q
|
||||
.venv/bin/ruff check src/cybergril/api src/cybergril/providers/llm/openai_compat.py tests/test_api.py
|
||||
npm run typecheck --prefix web
|
||||
npm run lint --prefix web
|
||||
npm test --prefix web
|
||||
npm run build --prefix web
|
||||
# 下列为可选浏览器工具,只装在测试虚拟环境:
|
||||
.venv/bin/pip install playwright
|
||||
.venv/bin/python -m playwright install chromium
|
||||
.venv/bin/python web/tests/real_browser_check.py
|
||||
.venv/bin/python web/tests/browser_check.py 1440
|
||||
.venv/bin/python web/tests/browser_check.py 390
|
||||
```
|
||||
|
||||
浏览器脚本启动/关闭自己的HTTP服务。真实脚本只向批准网关发两轮完整对话和一轮中途取消;随后切同源隔离桩验证失败、重启和立即新轮,结果区分真实模型与桩。环境若需额外浏览器运行库,应使用现有用户级库,不改系统/GPU环境。本轮复用 `/home/xiaomo/pwlibs/root/usr/lib/x86_64-linux-gnu` 设置 LD_LIBRARY_PATH;它不是部署依赖。
|
||||
@@ -1,7 +0,0 @@
|
||||
普通入口此前只有未接服务说明,无法创建真实档案或与模型聊天。本次接通唯一服务器档案、无副作用排盘预览、真实SSE文字对话、历史恢复与关系修改;演示入口继续独立使用本机资料,零API请求,保持原两主题和统一组件。
|
||||
|
||||
服务端复用Store/八字编译/模型路由与OpenAI兼容provider,增量建表,持久epoch随启动递增。取消会关闭上游且不把残句存成完整回答;失败、取消轮不进入后续上下文;同轮重试/并发回放去重。未接生活、长期记忆、语音、视觉、天气、素材和备份均明确不可用。
|
||||
|
||||
验证:Python92项通过(原78+新增14),前端14项通过;typecheck/lint/build及新增Pythonruff通过。真实网关两轮上下文与一次中途取消有浏览器证据;电脑与390×844独立上下文、重启epoch、隔离错误/超时/断流、演示双主题零API请求通过。手机为浏览器模拟,无真机。验证细节及版本边界见docs/r1/TEST-RECORD.md。
|
||||
|
||||
运行安装/数据语义见docs/r1/IMPLEMENTATION.md;8310部署回滚材料及单进程systemd示例已备。数据必须独立于代码release,回滚不删;首次上线留待用户自行创建。本次未部署、未合并、未触碰8300和共享模型服务,交总工独立审核。
|
||||
@@ -1,20 +0,0 @@
|
||||
HEL-780 · R1 自测记录 · 2026-10-22(北京时间)
|
||||
|
||||
环境:Python3.11.16独立虚拟环境、Node24/npm11、Playwright1.64无头Chromium;生产前端构建;服务均为本机随机loopback端口、临时SQLite。未部署8310、未连接部署服务器、未访问4080或改动8300。真实模型仅连接批准的 .11:8731/v1,不安装或修改模型。
|
||||
|
||||
| 批准方案2.3 / 本卡补充验收 | 实测 |
|
||||
|---|---|
|
||||
| 1. 全新首建、真实排盘、必选关系 | 电脑四步浏览器通过;第二步四柱为庚辰/丙戌/己酉/乙亥;preview后companion与bazi_core均零记录;最终确认才写。API绕过校验:非法名/日期/未成年/早于1900/时辰/关系/未知字段均422中文错误;5个并发创建仅1个201,其余409;底色字段不可PATCH |
|
||||
| 2. 真实流式、取消和新轮隔离 | 网关两轮完成:设置“蓝色风铃”暗号,次轮直接答“蓝色风铃”。第三轮长故事在首个delta后取消;用户记录cancelled、无完整回答入库、上游请求已结束。隔离慢provider紧接新轮通过;另以真实OpenAICompatLLM连接隔离HTTP网关,验证浏览器侧断流后上游HTTP响应在1秒内关闭 |
|
||||
| 3. 重开/另一设备恢复 | 实际reload及另一独立Chromium上下文(390×844)恢复同一“星河”和两轮历史。**没有物理手机或另一台物理设备,独立上下文与手机视口模拟不称真机** |
|
||||
| 4. 重启epoch | 同origin停/启本地API,复用同一临时DB;epoch1→2,原页面直接续发通过。API测试同时验证档案/关系/历史保留,旧epoch409携当前epoch;前端单测覆盖过期epoch、其他turn拒绝 |
|
||||
| 5. 模型异常、失败草稿与去重 | 隔离错误provider抛异常→中文chat.error,隐藏内部详情、草稿恢复;同轮重试只增加1条回答,无重复用户记录。后端覆盖超时和上游提前结束;SSE单测覆盖UTF-8逐字节/CRLF/多帧/坏JSON/无final;并发相同turn只调用模型一次。另验证较早失败轮在较新轮完成后重试,上下文仍按完成轮次正确成对 |
|
||||
| 6. 演示隔离 | 演示电脑1440与手机390双主题全流程通过;每尺寸23个本机静态请求,**零API/外部请求**;无麦克风/摄像头申请。真实入口用存储读取陷阱断言cybergril.demo.v1零读取。正常页面无演示控制台;日子/长期记忆/语音/视觉/天气/素材/备份明确未接通 |
|
||||
| 7. health与history | health模型要求/models成功且含配置模型;401/404/503及其他模型均false。5秒超时、30秒缓存测试通过;不含地址/敏感配置。历史limit1–200、确定id顺序与before分页;非法页大小422 |
|
||||
| 8. 构建与测试 | Python **92 passed**(原78+新增14个参数化实例);前端 **14 passed**(原11+SSE3);typecheck/lint/build通过;新增Python与provider的ruff通过。CSS仍为原61.20KB,JS约207.70KB/gzip67.45KB;未加覆盖样式 |
|
||||
|
||||
浏览器截图在本目录:desktop-preview-moon、desktop-real-chat-moon、desktop-history-moon、desktop-model-error(该张为隔离故障)、mobile-history-moon、mobile-chat-fog、mobile-relation-fog。原始真实网关对话及逐项记录见 `browser-results.json`;末版隔离复测见 `controlled/browser-results.json`,来源明确区分,未拿桩回复冒充真实模型。
|
||||
|
||||
最终运行时锁定为requirements.lock(FastAPI0.159.1、Starlette1.7.0、uvicorn0.54.0、lunar-python1.4.8等)。初次真实网关浏览器证据采集时Starlette为1.9.0;锁定后在1.7.0完整重跑92项Python(含真实OpenAI兼容HTTP断流)、前端检查与相同浏览器关键路径隔离复测,均通过,避免为凑线重复调用共享模型。pytest有1条上游TestClient/httpx弃用提示,不影响结果,未另装不需要的httpx2。
|
||||
|
||||
没有覆盖:真机浏览器、正式8310/系统服务重启、生产数据迁移/权限与真实部署回滚、长期并发/长时间运行。上述部署验证由总工在审核后执行;模板与数据保留步骤见DEPLOY-ROLLBACK。当前单用户内网、单进程;近轮上下文与进程内预算不是长期记忆或持久费用账本。
|
||||
@@ -1,35 +0,0 @@
|
||||
{
|
||||
"checks": [
|
||||
"desktop: four-step real creation, side-effect-free lunar preview, mandatory relationship",
|
||||
"real gateway: complete streamed reply and second turn recalls 蓝色风铃 from server context",
|
||||
"real gateway: cancel after first delta, upstream request closed, no complete assistant row",
|
||||
"independent Chromium context 390×844: same companion/history; both themes; IME and Shift+Enter",
|
||||
"server restart on same origin: epoch 1→2, existing page sends automatically, data retained",
|
||||
"controlled SSE model error: Chinese notice, draft retained, same-turn retry without duplicate user row",
|
||||
"controlled blocked upstream: immediate cancellation/new question isolation",
|
||||
"mobile: relation cancel/confirm/save restores from server; unfinished life has no demo records/console"
|
||||
],
|
||||
"real_dialogue": [
|
||||
{
|
||||
"input": "请记住我们这次聊天的暗号是蓝色风铃。简短回应一句就好。",
|
||||
"reply": "星河暗号记住了,蓝色风铃。",
|
||||
"source": "real gateway"
|
||||
},
|
||||
{
|
||||
"input": "刚才我们的暗号是什么?请直接回答。",
|
||||
"reply": "星河蓝色风铃。",
|
||||
"source": "real gateway"
|
||||
},
|
||||
{
|
||||
"input": "重启后继续",
|
||||
"reply": "星河答复",
|
||||
"source": "controlled provider"
|
||||
},
|
||||
{
|
||||
"input": "新轮不会串台",
|
||||
"reply": "星河答复",
|
||||
"source": "controlled provider"
|
||||
}
|
||||
],
|
||||
"console_errors": []
|
||||
}
|
||||
@@ -1,35 +0,0 @@
|
||||
{
|
||||
"checks": [
|
||||
"desktop: four-step real creation, side-effect-free lunar preview, mandatory relationship",
|
||||
"controlled provider: two complete streamed turns",
|
||||
"controlled provider: cancel after first delta, upstream request closed, no complete assistant row",
|
||||
"independent Chromium context 390×844: same companion/history; both themes; IME and Shift+Enter",
|
||||
"server restart on same origin: epoch 1→2, existing page sends automatically, data retained",
|
||||
"controlled SSE model error: Chinese notice, draft retained, same-turn retry without duplicate user row",
|
||||
"controlled blocked upstream: immediate cancellation/new question isolation",
|
||||
"mobile: relation cancel/confirm/save restores from server; unfinished life has no demo records/console"
|
||||
],
|
||||
"real_dialogue": [
|
||||
{
|
||||
"input": "请记住我们这次聊天的暗号是蓝色风铃。简短回应一句就好。",
|
||||
"reply": "星河答复",
|
||||
"source": "controlled provider"
|
||||
},
|
||||
{
|
||||
"input": "刚才我们的暗号是什么?请直接回答。",
|
||||
"reply": "星河答复",
|
||||
"source": "controlled provider"
|
||||
},
|
||||
{
|
||||
"input": "重启后继续",
|
||||
"reply": "星河答复",
|
||||
"source": "controlled provider"
|
||||
},
|
||||
{
|
||||
"input": "新轮不会串台",
|
||||
"reply": "星河答复",
|
||||
"source": "controlled provider"
|
||||
}
|
||||
],
|
||||
"console_errors": []
|
||||
}
|
||||
|
Before Width: | Height: | Size: 713 KiB |
|
Before Width: | Height: | Size: 1.1 MiB |
|
Before Width: | Height: | Size: 535 KiB |
|
Before Width: | Height: | Size: 1.1 MiB |
|
Before Width: | Height: | Size: 346 KiB |
|
Before Width: | Height: | Size: 213 KiB |
|
Before Width: | Height: | Size: 90 KiB |
@@ -1,6 +1,6 @@
|
||||
# CyberGril 需求入口
|
||||
|
||||
当前完整基准:**v1.10**。批准需求继承办法的主卡评论:`01a1635b-b47c-79ed-ac66-9408c7905af9`。
|
||||
当前完整基准:**v1.8**。批准需求继承办法的主卡评论:`01a1635b-b47c-79ed-ac66-9408c7905af9`。
|
||||
|
||||
所有新任务、续办、设计、施工、审核先读完整当前需求,再读本次相关来源。只有白栖知明确修改的要求才可变更,阶段范围不能覆盖产品要求。
|
||||
|
||||
@@ -33,10 +33,4 @@
|
||||
|
||||
v1.8新增来源见 `sources/comment-evidence-visual-role-20261022.json`,最新分工见GOV-005。
|
||||
|
||||
v1.9新增来源见 `sources/comment-evidence-shared-space-20261023.json` 与 `sources/shared-space-static-acceptance-20261023.md`;仅更新VIS-011交流静图认可边界,相处、过渡、雾光、手机与真实人物动态仍待验收。
|
||||
|
||||
v1.10新增来源见 `sources/comment-evidence-dynamic-sample-20261023.json` 与 `sources/dynamic-sample-effect-acceptance-20261023.md`;对坐动态小样 v2 整体效果(演示层面)记入 VIS-011 与 CG-004 边界,手机真机、候选容器启用、真实人物动态与完整功能仍待验收。
|
||||
|
||||
main 当前仍为 v1.8(提交 `3a986726d8593e0ed2274f79db6cc5d807d2ebf0`);v1.9 与 v1.10 在待合并分支线(`agent/agent/54df81e610fd` → `agent/hel-811-handoff-f59f74dc4256` → 后续分支)上递进,合并入 main 由总管与白栖知决定。
|
||||
|
||||
后续以该入口所记录的最新版本为准,不把v1.7永久钉死为永不可新增的文档。每次新版本必须记录用户明确裁定,保留旧版来源与覆盖关系。
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"schema_version": 1,
|
||||
"version": "1.10",
|
||||
"approval_comment_id": "01a16810-3b46-7345-8966-dd87b76efe07",
|
||||
"version": "1.8",
|
||||
"approval_comment_id": "01a163a5-e2a7-7ac8-afdb-991868e721bc",
|
||||
"owner_id": "e5c6c938-db48-4ff9-954f-4fb8b063a132",
|
||||
"scope": "完整要求;v1.8按用户明确指令新增视觉总监接手及必要代码职责,原58项和已批准边界继续有效,不证明功能已实现或已验收。",
|
||||
"requirements": [
|
||||
@@ -48,7 +48,7 @@
|
||||
"category": "产品",
|
||||
"topic": "交流镜头",
|
||||
"conclusion": "日常可看她在环境中生活;交谈时允许自然切近到同一人物、同一房间、同一套衣服的半身或脸部。",
|
||||
"boundary": "具体切镜方式和衔接效果仍要通过小样确认,不能据此认定用户接受突兀跳切。对坐动态小样 v2 的推近/退回过渡已按评论 01a16810-3b46-7345-8966-dd87b76efe07 获认可(演示层面,人物为参考静帧);真实视频的切近衔接仍待验收。",
|
||||
"boundary": "具体切镜方式和衔接效果仍要通过小样确认,不能据此认定用户接受突兀跳切。",
|
||||
"source_comment_ids": [
|
||||
"01a15724-dcaa-7d2b-ae23-430f24ca36b9",
|
||||
"01a15726-e178-72b0-9a3c-8b2041538730"
|
||||
@@ -501,7 +501,7 @@
|
||||
"category": "视觉",
|
||||
"topic": "人物独立视窗",
|
||||
"conclusion": "人物平时作为空间中独立视窗;交流时自然放大。已认可的人物位置、分量与首页文字分量沿用。",
|
||||
"boundary": "具体实现不得改变已确认体验;现有界面不等于用户最终满意。交流状态静图已按评论 01a1668f-5810-7524-b72f-33574a32c7d6 认可为 HEL-798 共同空间构图;对坐动态小样 v2 的整体效果已按评论 01a16810-3b46-7345-8966-dd87b76efe07 认可(同室相处、推近/退回过渡、交流呈现与两主题,演示层面);手机候选容器默认关闭未获批启用,真实人物动态、语音口型、真实生活与完整功能仍待验收。",
|
||||
"boundary": "具体实现不得改变已确认体验;现有界面不等于用户最终满意。",
|
||||
"source_comment_ids": [
|
||||
"01a15f09-db1e-705c-8baf-cde63c7651fb",
|
||||
"01a15f1f-5a71-783c-a458-b326a0073d69"
|
||||
|
||||
@@ -77,27 +77,6 @@
|
||||
"GOV-005"
|
||||
],
|
||||
"impact": "本项目本轮视觉设计、动效与相应代码责任转给视觉总监;不改现网、数据、全局模型或认证。"
|
||||
},
|
||||
{
|
||||
"version": "1.9",
|
||||
"approval_comment_id": "01a1668f-5810-7524-b72f-33574a32c7d6",
|
||||
"approved_by": "e5c6c938-db48-4ff9-954f-4fb8b063a132",
|
||||
"summary": "交流状态静态视觉基准更新:白栖知认可 HEL-798 共同空间交流静图(1600×1000,SHA256 a8619a1ff459ec1d28ec192104c851f6dee079c7b6056c1a927842591861a56a),在 VIS-011 边界注明。",
|
||||
"affected_ids": [
|
||||
"VIS-011"
|
||||
],
|
||||
"impact": "仅交流状态静图获认可:不用独立人物框,环境铺满四边,前景为用户一侧桌沿/茶杯/烛灯,对话在视线下方。相处状态、过渡与动态、雾光、手机、真实人物动态与完整功能仍待验收;不永久取消 VIS-011 在其他状态的原规则,不把完整前端锁定为全屏照片或视频(CG-031 继续有效)。来源:sources/comment-evidence-shared-space-20261023.json 与 sources/shared-space-static-acceptance-20261023.md(原话经总工 HEL-811 对照平台逐条核验)。"
|
||||
},
|
||||
{
|
||||
"version": "1.10",
|
||||
"approval_comment_id": "01a16810-3b46-7345-8966-dd87b76efe07",
|
||||
"approved_by": "e5c6c938-db48-4ff9-954f-4fb8b063a132",
|
||||
"summary": "对坐动态小样 v2 整体效果获认可:白栖知体验离线 HTML(SHA256 826bfc045d941c2114b16a198626ca952ff3d95dff02cfc6e32ee09858bcf80e)后回复“这个效果可以”;在 VIS-011 与 CG-004 边界注明演示层面的相处、推近/退回过渡、交流呈现与两主题认可。",
|
||||
"affected_ids": [
|
||||
"VIS-011",
|
||||
"CG-004"
|
||||
],
|
||||
"impact": "仅已交对坐动态小样的效果(电脑端、演示数据)。不视为完整产品、其余页面或真实功能验收;手机候选默认关闭未获批启用;相处静帧中的书本不恢复已否定的默认阅读(01a166aa);真实人物动态、语音口型、真实生活与完整功能仍待验收;不授权替换正式界面或合并 PR。来源:sources/comment-evidence-dynamic-sample-20261023.json 与 sources/dynamic-sample-effect-acceptance-20261023.md。"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -11,23 +11,3 @@ v1.7:把原始31项、已确认视觉和后续用户裁定整理到同一入
|
||||
白栖知明确裁定:整体视觉交给视觉总监接手,而不是把关,甚至若施工员无法写出相应代码,直接让视觉总监写代码
|
||||
|
||||
来源评论:`01a163a5-e2a7-7ac8-afdb-991868e721bc`。旧分工为总管因环境失败接手制作、后续视觉总监只把关;现按GOV-005交视觉总监亲自设计与落地,必要时直接写代码。本次不改变产品功能与原验收边界。
|
||||
|
||||
## v1.9:交流状态静态视觉基准更新
|
||||
|
||||
白栖知看过 HEL-798 共同空间样图后明确认可:**“静态效果我认可”**
|
||||
|
||||
来源评论:`01a1668f-5810-7524-b72f-33574a32c7d6`(获认可图 `hel-798-face-to-face-moon.png`,1600×1000,SHA256 `a8619a1ff459ec1d28ec192104c851f6dee079c7b6056c1a927842591861a56a`)。
|
||||
|
||||
旧要求(VIS-011):人物平时作为空间中独立视窗;交流时自然放大。新认可:交流状态(靛蓝月光、电脑 1600×1000)的静态画面不再用独立人物框,环境铺满四边,前景为用户一侧桌沿/茶杯/烛灯,对话在近处视线下方;VIS-011 条文保留,边界注明该更新。
|
||||
|
||||
影响范围:仅交流状态静图。相处状态、过渡与动态、雾光、手机、真实人物动态与完整功能仍待验收;不永久取消 VIS-011 其他状态原规则,不把完整前端锁定为全屏照片或视频(CG-031 继续有效)。原话与适用范围见 `sources/comment-evidence-shared-space-20261023.json`、`sources/shared-space-static-acceptance-20261023.md`(原话经总工 HEL-811 对照平台逐条核验)。
|
||||
|
||||
## v1.10:对坐动态小样整体效果认可
|
||||
|
||||
白栖知体验《对坐动态小样 v2》(HEL-799,附件 `01a167c1-455b-751a-ac37-9fa984a1ed10`,SHA256 `826bfc045d941c2114b16a198626ca952ff3d95dff02cfc6e32ee09858bcf80e`)后明确认可:**“这个效果可以”**
|
||||
|
||||
来源评论:`01a16810-3b46-7345-8966-dd87b76efe07`(2026-10-23 09:20:56 UTC,回应总管交付评论 `01a167c1-458d-795b-81e1-584089bf3667`)。
|
||||
|
||||
旧边界(v1.9):仅交流静图获认可,相处、过渡、雾光、手机与整体动态仍待验收。新认可:该小样的整体效果(同室相处、推近/退回过渡、交流呈现与阅读方式、月光/雾光两主题,电脑端演示数据)在演示层面获认可;VIS-011 与 CG-004 条文保留,边界注明。
|
||||
|
||||
影响范围:不视为完整产品、其余页面或真实功能验收;手机候选容器默认关闭未获批启用,真机未验证;相处静帧中的书本不恢复已否定的默认阅读(`01a166aa-5f37-77b2-a2bd-ceb62f665813`);真实人物动态、语音口型、真实生活与完整功能仍待验收;不授权替换正式界面或合并 PR。原话与适用范围见 `sources/comment-evidence-dynamic-sample-20261023.json`、`sources/dynamic-sample-effect-acceptance-20261023.md`(原话经总工 HEL-816 对照平台核验)。
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"baseline_version": "1.10",
|
||||
"baseline_version": "1.8",
|
||||
"items": [
|
||||
{
|
||||
"requirement_id": "CG-001",
|
||||
@@ -21,11 +21,9 @@
|
||||
},
|
||||
{
|
||||
"requirement_id": "CG-004",
|
||||
"status": "小样演示层面的推近/退回切镜已获用户认可(01a16810);真实视频切近衔接仍待验收",
|
||||
"evidence": [
|
||||
"docs/requirements/changes.json v1.10(01a16810)"
|
||||
],
|
||||
"next_step": "真实视频入场/退出/往返衔接按 CG-030 首批小队与 HEL-803 条件承接,验证后另行验收"
|
||||
"status": "未完成或未整体验收;不得据旧样机或测试数字声称已满足",
|
||||
"evidence": [],
|
||||
"next_step": "按完整需求与接入批次落实,交付时补真实证据"
|
||||
},
|
||||
{
|
||||
"requirement_id": "CG-005",
|
||||
@@ -251,13 +249,9 @@
|
||||
},
|
||||
{
|
||||
"requirement_id": "VIS-011",
|
||||
"status": "交流静图(HEL-798月光构图)与对坐动态小样 v2 整体效果(演示层面)已获用户认可;手机真机、候选容器启用、真实人物动态与完整功能仍待验收",
|
||||
"evidence": [
|
||||
"docs/requirements/changes.json v1.9(01a1668f)",
|
||||
"docs/requirements/changes.json v1.10(01a16810)",
|
||||
"prototypes/hel-799/(HEL-811 独立复核通过;v2 效果经白栖知体验认可)"
|
||||
],
|
||||
"next_step": "新素材(多时段天气穿搭、无书近景)按 HEL-802/803 承接;接入正式前端按 HEL-816 方案另行验收"
|
||||
"status": "用户不满意当前对话与整体沉浸体验,独立小样待制作及验收",
|
||||
"evidence": [],
|
||||
"next_step": "本轮批准的界面动态小样"
|
||||
},
|
||||
{
|
||||
"requirement_id": "VIS-012",
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
| CG-001 | 未完成或未整体验收;不得据旧样机或测试数字声称已满足 | 按完整需求与接入批次落实,交付时补真实证据 |
|
||||
| CG-002 | 未完成或未整体验收;不得据旧样机或测试数字声称已满足 | 按完整需求与接入批次落实,交付时补真实证据 |
|
||||
| CG-003 | 未完成或未整体验收;不得据旧样机或测试数字声称已满足 | 按完整需求与接入批次落实,交付时补真实证据 |
|
||||
| CG-004 | 小样演示层面的推近/退回切镜已获用户认可(01a16810);真实视频切近衔接仍待验收 | 真实视频入场/退出/往返衔接按 CG-030 首批小队与 HEL-803 条件承接,验证后另行验收 |
|
||||
| CG-004 | 未完成或未整体验收;不得据旧样机或测试数字声称已满足 | 按完整需求与接入批次落实,交付时补真实证据 |
|
||||
| CG-005 | 未完成或未整体验收;不得据旧样机或测试数字声称已满足 | 按完整需求与接入批次落实,交付时补真实证据 |
|
||||
| CG-006 | 未完成或未整体验收;不得据旧样机或测试数字声称已满足 | 按完整需求与接入批次落实,交付时补真实证据 |
|
||||
| CG-007 | R1 已有相关实现与测试交付,尚不能认定整项已由用户验收 | 按完整需求与接入批次落实,交付时补真实证据 |
|
||||
@@ -45,7 +45,7 @@
|
||||
| VIS-008 | 用户不满意当前对话与整体沉浸体验,独立小样待制作及验收 | 本轮批准的界面动态小样 |
|
||||
| VIS-009 | 用户不满意当前对话与整体沉浸体验,独立小样待制作及验收 | 本轮批准的界面动态小样 |
|
||||
| VIS-010 | 用户不满意当前对话与整体沉浸体验,独立小样待制作及验收 | 本轮批准的界面动态小样 |
|
||||
| VIS-011 | 交流静图(HEL-798月光构图)与对坐动态小样 v2 整体效果(演示层面)已获用户认可;手机真机、候选容器启用、真实人物动态与完整功能仍待验收 | 新素材(多时段天气穿搭、无书近景)按 HEL-802/803 承接;接入正式前端按 HEL-816 方案另行验收 |
|
||||
| VIS-011 | 用户不满意当前对话与整体沉浸体验,独立小样待制作及验收 | 本轮批准的界面动态小样 |
|
||||
| VIS-012 | 用户不满意当前对话与整体沉浸体验,独立小样待制作及验收 | 本轮批准的界面动态小样 |
|
||||
| VIS-013 | 用户不满意当前对话与整体沉浸体验,独立小样待制作及验收 | 本轮批准的界面动态小样 |
|
||||
| AM-001 | 未完成或未整体验收;不得据旧样机或测试数字声称已满足 | 按完整需求与接入批次落实,交付时补真实证据 |
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# CyberGril 完整当前需求 · v1.10
|
||||
# CyberGril 完整当前需求 · v1.8
|
||||
|
||||
完整要求;版本1.10在v1.9(交流静图认可)之上,把白栖知已体验的对坐动态小样 v2 整体效果(演示层面)记入 VIS-011 与 CG-004 边界;不证明其余页面、真实功能或完整产品已验收。
|
||||
完整要求;版本1.8保留原完整要求并新增用户明确的视觉总监接手分工,不证明已实现或已验收。
|
||||
|
||||
## 阅读与效力
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
|
||||
日常可看她在环境中生活;交谈时允许自然切近到同一人物、同一房间、同一套衣服的半身或脸部。
|
||||
|
||||
边界:具体切镜方式和衔接效果仍要通过小样确认,不能据此认定用户接受突兀跳切。对坐动态小样 v2 的推近/退回过渡已按评论 01a16810-3b46-7345-8966-dd87b76efe07 获认可(演示层面,人物为参考静帧);真实视频的切近衔接仍待验收。
|
||||
边界:具体切镜方式和衔接效果仍要通过小样确认,不能据此认定用户接受突兀跳切。
|
||||
|
||||
来源评论:`01a15724-dcaa-7d2b-ae23-430f24ca36b9`、`01a15726-e178-72b0-9a3c-8b2041538730`。
|
||||
|
||||
@@ -354,7 +354,7 @@
|
||||
|
||||
人物平时作为空间中独立视窗;交流时自然放大。已认可的人物位置、分量与首页文字分量沿用。
|
||||
|
||||
边界:具体实现不得改变已确认体验;现有界面不等于用户最终满意。交流状态静图已按评论 01a1668f-5810-7524-b72f-33574a32c7d6 认可为 HEL-798 共同空间构图;对坐动态小样 v2 的整体效果已按评论 01a16810-3b46-7345-8966-dd87b76efe07 认可(同室相处、推近/退回过渡、交流呈现与两主题,演示层面);手机候选容器默认关闭未获批启用,真实人物动态、语音口型、真实生活与完整功能仍待验收。
|
||||
边界:具体实现不得改变已确认体验;现有界面不等于用户最终满意。
|
||||
|
||||
来源评论:`01a15f09-db1e-705c-8baf-cde63c7651fb`、`01a15f1f-5a71-783c-a458-b326a0073d69`。
|
||||
|
||||
|
||||
@@ -1,44 +0,0 @@
|
||||
{
|
||||
"task": "HEL-811 总工独立复核 HEL-799 共同空间动态小样 v2,并机械保全原稿入库;本文件为总工交接(原作者 handoff 原样保全于 prototypes/hel-799/handoff-hel-799.json)",
|
||||
"baseline_version": "1.9",
|
||||
"read_commit": "3a986726d8593e0ed2274f79db6cc5d807d2ebf0",
|
||||
"read_notes": [
|
||||
"v1.8(59项)全文与 sources/ 于提交 3a986726 完整读取;总工本轮以平台原话核验静态认可来源后,按治理规则升版 v1.9(仅 VIS-011 边界注明交流静图认可),来源原话进 sources/ 并写入 source-manifest。",
|
||||
"与原作者 handoff 的差异仅在 baseline_version(原作者交付时为 1.8,当时静态认可评论尚未进入正式 sources,handoff 机械检查因此失败);内容性字段未改动原作者判断,验收结论以本文件与 HEL-811 审核记录为准。"
|
||||
],
|
||||
"requirement_ids": ["CG-002", "CG-003", "CG-004", "CG-008", "CG-017", "CG-018", "CG-023", "CG-024", "CG-025", "CG-026", "CG-028", "CG-029", "CG-030", "CG-031", "VIS-001", "VIS-002", "VIS-003", "VIS-004", "VIS-005", "VIS-006", "VIS-007", "VIS-008", "VIS-009", "VIS-010", "VIS-011", "VIS-012", "VIS-013", "UX-001", "UX-002", "UX-003", "UX-005", "UX-006", "AM-001", "AM-002", "AM-003", "GOV-001", "GOV-002", "GOV-003", "GOV-004", "GOV-005", "DEL-001"],
|
||||
"deliverable": "(1)HEL-811 审核记录(附件):41 项独立复测、逐字节重建核验、像素级对照、素材与母版核验、用户原话平台核验;(2)分支 agent/agent/54df81e610fd:prototypes/hel-799/ 23 个交付文件逐字节保全+PROVENANCE.md(来源附件、zip 与逐文件 SHA256、独立重建结果);docs/requirements 升版 v1.9(sources 两件新增、source-manifest、baseline/current/changes/coverage 同步);未动 web/public/assets(哈希与仓库一致)、未动 PR#4/#6/#8、未合并、未部署。",
|
||||
"acceptance": [
|
||||
"独立构建:以仓库资产用独立实现的构建脚本重建 index.html,662,233 字节,SHA256 826bfc045d941c2114b16a198626ca952ff3d95dff02cfc6e32ee09858bcf80e,与交付 HTML 逐字节一致;zip 内 HTML/上传附件/重建结果三者相同。",
|
||||
"UI 为真实元素:2 张获批静帧图层层叠 4 坌 canvas 与 24 个按钮、表单、浮层,非整图贴底。",
|
||||
"行为独立复测 40/41 通过(无头 Chromium 151,Playwright,真实键鼠事件):镜头渐进、无黑帧、照片仅等比缩放平移、中途反向不跳回、Esc/←/→ 14–36ms(<80ms)且有限动画为 0、自动续读到末句、全文与原文一致、暂停/回看/回到进度、发送恢复自动、身份标记、停止保留并标未完成、记录打开她留在桌对面且关闭回原句、入口均打开带演示/尚未接入标记、语音演示不申请麦克风、两主题结构一致、七种视口长回复无遮挡、长名字以省略号收纳、减少动效原位交叉淡化且雨停一帧、档 2 无逐帧遮罩、页面隐藏暂停(body.suspended、CSS 动画 paused、阅读计时冻结并于恢复后续走;合成 visibilitychange 事件,非 OS 级后台节流)。",
|
||||
"像素级对照:我的运行 vs 作者证据(同状态均值差 9.5,差异集中于雨/热气动画区);我的交流态 vs 获认可静图(均值差 9.9,差异集中于文案与阅读控制区,场景区一致);母版几何核验(16:9 候选底板=16:10 底板等比高度铺满右移 112px,与声明的 ~113px 一致;含前景母版 vs 获认可静图均值差 5.0;无前景底板差异集中在底部前景区)。",
|
||||
"手机 4:5 候选容器:390×844=390×487.5、320×568=320×328、390×430=390×374 与 HEL-802 v2 容器公式一致;脸中心实测 (170,157)/(143,105)/(176,120) 复现作者数字,与 16:9 公式差 7–11px(源为 16:10 获认可构图,可见宽 50% vs 45%,非等价,待新 CT 素材后重算);键盘态最近回复覆盖容器底部 80–128px(内容长度相关),脸与下巴不被遮;默认关闭、桌面不受影响、界面未把候选升格为用户选择。",
|
||||
"用户原话核验:records 五条与 01a166aa/01a16699/01a1669d/01a166ad 均经 CLI 对照平台逐条一致(作者、时间、原话、父评论)。"
|
||||
],
|
||||
"deferred": [
|
||||
"Firefox 未测:本运行时无法启动(缺 GTK3 链库且系统 NSS 最高 3.98 < 所需 3.101,无 root 无法补装);Safari/WebKit 无浏览器。真机软键盘、真实 GPU 帧率、低端手机未测;帧率参考值来自无头软件光栅,不代表真机。",
|
||||
"候选容器底部露出旧书与居家裤(获认可构图 y≥0.80 原被页面桌沿遮挡)与推近途中远景静帧的书/腿:属明确素材依赖(按 HEL-802 v2 生成新 CT),非界面遮盖问题;320 偏挤为已预判的已知密度;真实软键盘未知。",
|
||||
"相处、过渡、雾光、手机与整体动态均未经白栖知验收;真实视频入场/退出、循环三圈、同脸同衣同光、LIVE 接管与端到端延迟未验证(CG-030 首批小队承接)。本审核通过不等于用户验收或项目完成。",
|
||||
"总工无法人眼审图(运行时模型不支持图片输入):视觉判断基于像素统计、几何复算与代码核对,截图证据供总管与用户人眼复核。"
|
||||
],
|
||||
"requirement_changes": [
|
||||
{
|
||||
"approval_comment_id": "01a1668f-5810-7524-b72f-33574a32c7d6",
|
||||
"approved_by": "e5c6c938-db48-4ff9-954f-4fb8b063a132",
|
||||
"quote": "静态效果我认可",
|
||||
"kind": "交流静态视觉基准的更新",
|
||||
"affected_ids": ["VIS-011"],
|
||||
"old": "VIS-011:人物平时作为空间中独立视窗;交流时自然放大。",
|
||||
"new": "交流状态(靛蓝月光、电脑 1600×1000)的获认可静态画面为 HEL-798 共同空间构图:无独立人物框,环境连续到四边,前景桌沿/茶杯/烛灯,中间是她,远处雨夜窗景,对话在近处视线下方。",
|
||||
"scope": "仅交流状态静图。相处状态、过渡与动态、雾光、手机、真实人物动态和完整功能仍待验收;不永久取消 VIS-011 在其他状态中的原规则(CG-031 继续有效)。",
|
||||
"evidence_file": "docs/requirements/sources/comment-evidence-shared-space-20261023.json",
|
||||
"image_sha256": "a8619a1ff459ec1d28ec192104c851f6dee079c7b6056c1a927842591861a56a"
|
||||
}
|
||||
],
|
||||
"verification": [
|
||||
"python3 scripts/check_requirements.py --base-ref origin/main:通过(v1.9 升版、来源追加、历史保留)。",
|
||||
"python3 scripts/check_requirements.py --base-ref origin/main --handoff docs/requirements/handoff-HEL-811.json:通过。原作者 handoff(baseline 1.8)按预期报『交接使用过期基准』,原件未改动,差异见 read_notes。",
|
||||
"git diff --check:通过。逐字节重建与哈希清单见 prototypes/hel-799/PROVENANCE.md;行为复测明细见 HEL-811 审核记录附件。"
|
||||
]
|
||||
}
|
||||
@@ -1,42 +0,0 @@
|
||||
{
|
||||
"task": "HEL-816 总工:记录对坐动态小样 v2 效果认可(升版 v1.10),核对现有真实功能与 PR 状态,交完整界面与真实功能接续方案;本文件为总工交接",
|
||||
"baseline_version": "1.10",
|
||||
"read_commit": "e04e258cc0c6ae097f57a4bd2c41a95a1bc6baa8",
|
||||
"read_notes": [
|
||||
"完整需求 v1.9(59项)与 sources/ 于待合分支线提交 e04e258(agent/hel-811-handoff-f59f74dc4256,含总工 HEL-811 保全 ad6a3b1 与总管版本说明修正)完整读取;origin/main 仍为 3a986726(v1.8),两者关系已在 README.md 说明。",
|
||||
"总工本轮以 CLI 对照平台核验新认可原话(01a16810,作者、时间、原话逐字一致)后,按治理规则升版 v1.10(仅 VIS-011 与 CG-004 边界注明小样演示层面认可),来源原话进 sources/ 并写入 source-manifest;未改任何条文结论、历史来源与产品代码。"
|
||||
],
|
||||
"requirement_ids": ["CG-001", "CG-002", "CG-003", "CG-004", "CG-005", "CG-006", "CG-007", "CG-008", "CG-009", "CG-010", "CG-011", "CG-012", "CG-013", "CG-014", "CG-015", "CG-016", "CG-017", "CG-018", "CG-019", "CG-020", "CG-021", "CG-022", "CG-023", "CG-024", "CG-025", "CG-026", "CG-027", "CG-028", "CG-029", "CG-030", "CG-031", "VIS-001", "VIS-002", "VIS-003", "VIS-004", "VIS-005", "VIS-006", "VIS-007", "VIS-008", "VIS-009", "VIS-010", "VIS-011", "VIS-012", "VIS-013", "AM-001", "AM-002", "AM-003", "UX-001", "UX-002", "UX-003", "UX-004", "UX-005", "UX-006", "GOV-001", "GOV-002", "GOV-003", "GOV-004", "GOV-005", "DEL-001"],
|
||||
"deliverable": "(1)需求治理:sources/ 新增 comment-evidence-dynamic-sample-20261023.json 与 dynamic-sample-effect-acceptance-20261023.md(原话、附件 ID、SHA256、旧/新范围、待实证项),升版 v1.10(VIS-011、CG-004 边界,changes/coverage/README 同步),main 与待合分支关系写入 README;(2)核对:main=3a98672(v1.8,无 R1 代码);PR#4=db571ba(HEL-780 真实档案+流式文字、HEL-783 修复,基点 4984293,未合);PR#6=ca5ddd6(HEL-790 旧小样,基点 4242f83,未合);PR#8=21170f9(HEL-793/795 沉浸对话原型,基点 81d7cb5,未合);8310 实际运行 release r2-20261022-1808-db571ba(=PR#4 head),/api/health 正常、仅 text 能力为真、companion 已创建(未读取档案内容);(3)接续方案《HEL-816 接续方案》(本卡附件):接缝清单、可机械复用/须视觉总监亲自的划分、下一批有限施工提案与验收样例、备份回退、须白栖知拍板项。未写产品代码、未部署、未合并 PR、未动 8300/8310 与用户数据。",
|
||||
"acceptance": [
|
||||
"原话核验:01a16810-3b46-7345-8966-dd87b76efe07(member e5c6c938,2026-10-23T09:20:56Z,根评论,内容『这个效果可以』)与交付评论 01a167c1-458d(2026-10-23T07:54:41Z,附件 01a167c1-455b)经 multica CLI 对照平台一致;HTML 附件下载后 SHA256=826bfc045d941c2114b16a198626ca952ff3d95dff02cfc6e32ee09858bcf80e,与仓库 prototypes/hel-799/index.html 及 HEL-811 重建记录逐字节一致。",
|
||||
"PR 状态核验:以 git 提交图核实 pr4=db571ba(2 提交,merge-base 4984293)、pr6=ca5ddd6(merge-base 4242f83)、pr8=21170f9(2 提交,merge-base 81d7cb5)均不在 main 历史内(merge-base --is-ancestor 复核);Multica 主卡/旧主卡链接表无关联 PR;本环境无 Gitea 令牌,PR 开合状态以平台页面为准,未擅合。",
|
||||
"服务只读核查(2026-10-23T09:33:44–55Z UTC,经既有授权 SSH 最小读取):.12 端口 8300/8310/8090/8010 均 LISTEN;/opt/cybergril-api/current→releases/r2-20261022-1808-db571ba;systemd active;GET /api/health 返回 ok、version R1、epoch 3、companion_created true、llm ok(halogen-qwen3.8-flash-next)、capabilities 仅 text=true。未读聊天正文与档案内容,未输出凭据。",
|
||||
"方案边界:提案不把外观换版与新增后端绑成巨型施工;不以口型未成阻塞完整前端;R1→R2/R3→R4、R5/R6 依赖 R1、R7 需授权的顺序保持;AM-001/002/003 与出生底色/记忆/关系守卫、演示与真实数据隔离逐条列入各批验收。"
|
||||
],
|
||||
"deferred": [
|
||||
"真实生活循环、记忆、主动联系、语音(R5 复用 /opt/voice-agent 底座需实测)、天气素材(R6)、全量备份、授权视觉观察(R7):均未实现未验证,按批次承接;R1 人格当前仅浅模板(系统提示组装),CG-014/015 的诠释自由与成长分层不足,保留为后续批次要求。",
|
||||
"视频日常→回应→交谈→退出→日常的同人同衣同光首尾对齐:无任何真实验证;缺生成工具与首尾可控能力,最低输入清单已在方案中列出(按 HEL-802 v2 母版/提示词、HEL-803 衔接条件),首批责任在小队(CG-030)不转给用户;未安装/付费/换模型。",
|
||||
"手机候选 4:5 容器与手机真机体验:默认关闭未获批启用,真机键盘/流畅度未测;Firefox/Safari 未测(HEL-811 已记录精确原因)。",
|
||||
"v1.9+v1.10 均在待合分支线(ad6a3b1→e04e258→本分支),main 仍 v1.8;本环境无 Gitea 令牌无法开 PR,合并与否由总管与白栖知决定。"
|
||||
],
|
||||
"requirement_changes": [
|
||||
{
|
||||
"approval_comment_id": "01a16810-3b46-7345-8966-dd87b76efe07",
|
||||
"approved_by": "e5c6c938-db48-4ff9-954f-4fb8b063a132",
|
||||
"quote": "这个效果可以",
|
||||
"kind": "对坐动态小样整体效果认可",
|
||||
"affected_ids": ["VIS-011", "CG-004"],
|
||||
"old": "v1.9:仅交流静图获认可;相处状态、过渡、雾光、手机与真实人物动态仍待验收。",
|
||||
"new": "对坐动态小样 v2 整体效果(同室相处、推近/退回过渡、交流呈现与阅读方式、月光/雾光两主题;电脑端、演示数据)在演示层面获认可。",
|
||||
"scope": "不视为完整产品、其余页面或真实功能验收;手机候选默认关闭未获批启用;相处静帧中的书本不恢复已否定的默认阅读(01a166aa);真实人物动态、语音口型、真实生活与完整功能仍待验收;不授权替换正式界面或合并 PR。",
|
||||
"evidence_file": "docs/requirements/sources/comment-evidence-dynamic-sample-20261023.json",
|
||||
"artifact_sha256": "826bfc045d941c2114b16a198626ca952ff3d95dff02cfc6e32ee09858bcf80e"
|
||||
}
|
||||
],
|
||||
"verification": [
|
||||
"python3 scripts/check_requirements.py --base-ref origin/main:通过(59项;v1.10 升版、来源追加、历史保留、新批准评论未复用)。",
|
||||
"python3 scripts/check_requirements.py --base-ref origin/main --handoff docs/requirements/handoff-HEL-816.json:通过。",
|
||||
"git diff --check:通过。产品代码零改动(diff 仅 docs/requirements 与本文件)。"
|
||||
]
|
||||
}
|
||||
@@ -1,34 +0,0 @@
|
||||
{
|
||||
"task": "HEL-821 视觉总监:A1+A2 把对坐场景(hel-799 scene/ambient/room)和完整对话呈现接入正式 React 前端;本文件为视觉总监交接(额度中断后恢复续交)",
|
||||
"baseline_version": "1.10",
|
||||
"read_commit": "63799f02474ed94fd793de9e2360d185c878165d",
|
||||
"read_notes": [
|
||||
"无 git 环境:需求与 prototypes/hel-799 读自总管机械包《CyberGril-A批施工基底-PR4与需求v1.10.zip》(SHA256 0c5b1665048960b3102216a834e26791dee2f665b467d49e62bfb50319f3c138),其 SOURCE-BUNDLE-PROVENANCE.json 记 requirements_and_hel799_source=63799f0、product_base=db571ba(PR#4 head)。非独立 checkout;origin/main 仍 3a986726(v1.8)。",
|
||||
"需求文件随包置于 docs/requirements(v1.10,59项)。原运行开工阅读范围以其执行记录为准;本次恢复复读 README.md、task-handoff-template.md、handoff-HEL-816.json、sources/shared-space-static-acceptance-20261023.md,并对照 issue 原文逐条核对本卡七项施工要求。current/coverage/changes 全文须审核时对照原话复核;附件 emil 动效参考(animate/MAIN、RECIPES、review-animations/MAIN、STANDARDS)仅作参考,未安装或改动运行时技能。包内无仓库根 AGENTS.md 与 scripts/,未能读取/运行,交总工在仓库内补。",
|
||||
"施工授权:主卡 HEL-797 白栖知评论 01a169a8-5884-7c26-a00f-c23a5f5399a9『继续吧,现在没什么主要的内容需要我确认的』,回应总管提案 01a16851-302d-75ef-9e8f-cf1719998076。这是本轮前端施工授权,不是真实能力验收或旧产品规则修改。"
|
||||
],
|
||||
"requirement_ids": ["CG-002", "CG-004", "CG-006", "CG-007", "CG-010", "CG-012", "CG-013", "CG-014", "CG-015", "CG-018", "CG-024", "CG-029", "CG-030", "CG-031", "VIS-001", "VIS-002", "VIS-003", "VIS-004", "VIS-005", "VIS-006", "VIS-007", "VIS-008", "VIS-009", "VIS-010", "VIS-011", "VIS-012", "VIS-013", "UX-001", "UX-002", "UX-003", "UX-005", "UX-006", "AM-001", "AM-002", "AM-003", "GOV-001", "GOV-002", "GOV-003", "GOV-004", "GOV-005", "DEL-001"],
|
||||
"deliverable": "正式 React 源码(基于 PR#4 db571ba,未合并、未改 main):A1 新增 web/src/stage/camera.ts(同脸对齐的单相机、对数缩放、可打断临界阻尼弹簧)、roomScene.ts(逐帧只写 transform/opacity,推近/退回、反向保留速度、减少动效改为静置交叉淡入、自动降级档、页面隐藏暂停)、ambient.ts(窗内雨、城市灯、近景桌面,两主题材质光线不同),Presenter.tsx 改为共享空间三层;shared/space.ts 把此刻/交谈/记录/面板映射到空间并管理焦点;shared/motion.ts 键盘快照(即时落位);tokens.css/components.css 落 hel-799 room/talk/nav/pane 样式。A2 新增 web/src/chat/reading.ts(按轮分组、一两句分页、字素安全、无标点长句也断、流式最新一句先压住、阅读位置用文本锚点)、lineStage.ts(已显示的句子不重渲染不重播,墨入每句只播一次);ChatPanel.tsx 在原 RealChatAdapter/TurnGate/epoch/AbortController 数据流上接自动续读、暂停/上一句/下一句/回到读到的地方、全文、完整记录、身份标签、取消保留未完片段并标『未完成 · 已取消』。App.tsx/RealApp.tsx 接空间、Esc 逐层、导航直接切换;删除不再使用的 shared/SoftText.tsx;浏览器检查脚本迁到新选择器。",
|
||||
"acceptance": [
|
||||
"相处↔交流同一空间:点她或『和她说话』推近,『结束交谈』/Esc 退回;Esc 即时落位,鼠标/点击走约0.85s弹簧,中途反向不跳(camera-in-reverse-esc-1600-moon.webm)。",
|
||||
"两主题同结构:月光/雾光切换只换材质、光线、雨色与玻璃,不改布局(desk-1600-moon/fog-*)。",
|
||||
"交流:一次一两句,长回复自动完整续读;暂停后 ←/→/按钮即时回看无动画,『回到读到的地方』回到进度;全文与完整记录可读全部内容;『你』与实际名字区分;停止回复保留已生成部分并标未完成,未存入记录。",
|
||||
"流式增长不重置阅读位置、不改已显示句子(reading.test.ts 流式只追加用例);历史恢复按 sessionStorage 轮次锚点;快速取消后新轮与旧轮迟到事件由 TurnGate/epoch 过滤。",
|
||||
"演示 ?demo=1 独立 localStorage、零网络;真实模式不读演示数据(rework_browser_check.py 断言);未改 API 协议、SQLite、后端。",
|
||||
"浮层打开时导航可见可直接切换(.nav z25 高于 .record z20/21);Esc 顺序:模态→全文→记录→退回空间;全文关闭焦点回『全文』,记录关闭焦点回记录按钮;普通面板 240ms 进入,不沿用空间长转场。",
|
||||
"布局:1600×1000、1024、390×844、320×568、390×430 键盘等效下长中文与无标点长句不溢出,舞台/阅读条/输入/导航不重叠(check/shots/*.json 几何报告)。"
|
||||
],
|
||||
"deferred": [
|
||||
"构建与测试未运行:本机无 Node/npm/git/Python。须总工在既有 Linux 环境执行 npm ci、npm run typecheck、npm run build、npm run lint、npm test(含新 reading.test.ts)、Playwright 三份浏览器检查、python3 scripts/check_requirements.py --base-ref origin/main 及 --handoff、git diff --check。",
|
||||
"check/ 证据为静态 harness:产品 CSS + 剥类型后的控制器 + 静态 DOM,用 Edge CDP 截图/录屏;不是正式 React 运行,也未跑真实 SSE;录屏帧率不代表产品 GPU 性能。",
|
||||
"rework_browser_check.py 本次恢复后才迁移(原运行未迁),未执行;lineStage 墨入每句只播一次为本次恢复时新增修正,未进 harness 录屏。",
|
||||
"A3 其余页面(日子/回忆/创建/设置按 HEL-815 稿)未改,保持原功能与入口。",
|
||||
"人物仍为旧参考静帧,推近是镜头不是人物动作;新日常视频、首尾衔接、真实口型、语音、天气、生活、记忆、备份、视觉观察均未接入(R1 人格深度、R2–R7 继续承接);手机 4:5 候选默认关闭;真机/Safari/Firefox/读屏未测。"
|
||||
],
|
||||
"requirement_changes": [],
|
||||
"verification": [
|
||||
"未执行:tsc/vite build/vitest/eslint/Playwright/check_requirements/git diff --check(缺工具,如实交总工)。",
|
||||
"人工静态复核(本次恢复):base 对 orig 逐文件 SHA256 比对得 13 改、8 增(另加本交接 JSON)、1 删,逐文件哈希见包内 CHANGES.json;全部相对 import 可解析,无残留 SoftText 引用;tsconfig ES2022 覆盖 Array.at 与 Intl.Segmenter。",
|
||||
"原运行 harness 证据:check/shots 桌面两主题与 390/320/390×430 截图及几何 JSON;check/rec 三段 webm(进出、快速反向+Esc、手机进出)。"
|
||||
]
|
||||
}
|
||||
@@ -1,28 +0,0 @@
|
||||
{
|
||||
"task": "HEL-822 总工:HEL-821 A1+A2 源码机械落库、Linux 构建、四份浏览器检查、真实SSE独立审核;因发现必须修复项未部署",
|
||||
"baseline_version": "1.10",
|
||||
"read_commit": "63799f02474ed94fd793de9e2360d185c878165d",
|
||||
"read_notes": "需求/治理文件与 63799f0 字节核对一致;产品基底 db571ba(PR#4 head,refs/pull/4/head 复核仍指向 db571ba);origin/main 3a986726(v1.8)。",
|
||||
"requirement_ids": ["CG-002", "CG-004", "CG-018", "CG-024", "CG-031", "VIS-003", "VIS-004", "VIS-007", "VIS-011", "VIS-013", "UX-001", "UX-002", "UX-005", "UX-006", "AM-001", "AM-002", "AM-003", "GOV-001", "GOV-002", "GOV-003", "GOV-004", "GOV-005", "DEL-001"],
|
||||
"deliverable": "候选分支 hel-822-candidate(自 db571ba):核验作者包 SHA256 后按 CHANGES.json 落库 13改/8增(另交接JSON)/1删,全部哈希一致;docs/requirements v1.10 与 prototypes/hel-799 字节等于治理提交 63799f0;补齐根 AGENTS.md 与 scripts/check_requirements.py。审核侧最小机械检查修正 3 处(browser_check 视觉观察(模拟)选择器、import_check 脏表单离开确认处理、rework_browser_check 长用户句预算60s/条件续读/紧凑打字沉降600ms)并附本机全部运行证据。",
|
||||
"acceptance": [
|
||||
"机械落库核验:ZIP 250条反斜杠路径规范化解包零越界;CHANGES 23条前后哈希全部复算一致;git status 恰为23条变更+治理增补。",
|
||||
"构建:npm ci/typecheck/lint/test/build 全过(lint 1条既有模式警告);vitest 22/22 含新 reading.test.ts 8条。",
|
||||
"后端:Python 3.12 下 142/142 通过;本机默认 3.10 缺 asyncio.timeout(pyproject 要求≥3.11)致 8 条流式相关测试失败,基底 db571ba 同样失败,属环境非回归。",
|
||||
"浏览器检查:browser_check 16/16、import_check 7/7、real_browser_check 全过(真实网关3轮真实SSE、取消、重启epoch 1→2、移动端、受控错误重试,隔离临时库);rework_browser_check 前3节过后被下方问题1阻塞(本地绕过后12视口节通过)。",
|
||||
"check_requirements 对 origin/main 与实际候选目标 origin/agent/agent/de8874a3803b 均通过(59项);git diff --check 干净。",
|
||||
"代码卫生:无硬编码密钥/console残留/debugger;reduced-motion 全局处理;hover 动效均以 (hover:hover) and (pointer:fine) 门控。"
|
||||
],
|
||||
"deferred": [
|
||||
"未部署:审核发现2项必须修复问题(见评论),按卡交总管退回原作者返工后复审一次。",
|
||||
"候选 PR 未开:Gitea ssh 远端无 CLI/API 凭据,分支 hel-822-candidate 已推送,开 PR 需总管经 Web/API 以 base=agent/agent/de8874a3803b 操作。",
|
||||
"真机/Safari/Firefox/读屏未测;录屏fps不代表GPU流畅度;人物仍为参考静帧;R1人格深度与R2–R7、A3页面(HEL-815稿)继续承接。"
|
||||
],
|
||||
"requirement_changes": [],
|
||||
"verification": [
|
||||
"真实SSE证据:real_browser_check 全部PASS输出(含 REAL_REPLY 蓝色风铃 两轮上下文召回、取消后无完整assistant行、epoch重启、390×844移动端)。",
|
||||
"问题1证据:390×420 紧凑高度下聚焦输入后点击发送,click 事件落点 SECTION.conversation(trusted click 捕获),草稿未发出;先blur再点击则命中。发送失败连锁导致 rework 检查 390×420 节全文本按钮永不出现。",
|
||||
"问题2证据:受控慢流取消→立即新轮后,阅读停在用户句约10–15秒(dwell 多次被重置,进度条读数 0.06→0.93 证据),随后自行恢复推进到『答复』。",
|
||||
"本审核机环境:uv 安装 Python 3.12.14 于 .venv312(项目依赖+playwright);系统 Chromium 经 LD_LIBRARY_PATH=~/pwlibs 与 FONTCONFIG_FILE 启动。"
|
||||
]
|
||||
}
|
||||
@@ -1,32 +0,0 @@
|
||||
{
|
||||
"task": "HEL-824 视觉总监:HEL-822 审核两项必须修复缺陷返工(紧凑高度聚焦后首击失灵;停止回复后立即新轮续读迟滞),并修正 rework 检查错误断言、核对 Viewport 无效逻辑",
|
||||
"baseline_version": "1.10",
|
||||
"read_commit": "4321aebfdc491993e0648f68a0375047c3eb6359",
|
||||
"read_notes": "唯一返工基底为远端 hel-822-candidate 提交 4321aeb(总管 git archive 附件 HEL-822-candidate-4321aeb.zip,SHA256 d18d54891f365f4b7999b4defb8cc4f92dace3e296b96707c617ac08f3b3e870,本机复算一致)。已读根 AGENTS.md、docs/requirements/README.md、current.md(59项)、coverage.md、changes.md、task-handoff-template.md、sources/dynamic-sample-effect-acceptance-20261023.md,并按编号核对 CG-018、VIS-003/004/007/011/013、UX-001/002/005、GOV-001–005、DEL-001 原文与边界;模板中的旧1.7字样不覆盖当前入口 v1.10。审核原文:HEL-822 评论 01a16afe-0cb1-7146-b561-c348c9fc8ed8。",
|
||||
"requirement_ids": ["CG-018", "VIS-003", "VIS-004", "VIS-007", "VIS-011", "VIS-013", "UX-001", "UX-002", "UX-005", "GOV-001", "GOV-002", "GOV-003", "GOV-004", "GOV-005", "DEL-001"],
|
||||
"deliverable": "在 4321aeb 上修改 6 个文件、新增本交接:(1) web/src/styles/components.css 删除 html.compact.typing{--nav-space:6px}:聚焦输入只让导航淡出让位,对话区几何不随焦点变化,按下与松开落在同一按钮;交流视觉、两主题与导航淡出保留。(2) web/src/chat/reading.ts 新增 ReadingClock,阅读停留按真实时间计(每帧最多计 STALL=1000ms,页面隐藏后的间隔不计),同一句 key 不变即不重置;web/src/chat/ChatPanel.tsx 改用它(goTo→forget、setFlow→restart、visibilitychange→pause),自动续读、暂停、回看、回到进度、墨入只播一次的逻辑不变。(3) web/src/shared/Viewport.tsx 删除没有任何 CSS 对应的 viewport-resizing 类及其定时器,注释改为实际行为。(4) web/tests/reading.test.ts 新增 3 项时钟回归;web/tests/rework_browser_check.py 三处整行 to_have_text('答复') 改为只对正文 <p> 精确断言,新增 390×420/390×430 双主题聚焦后首击回归与 700ms 慢帧下停止→立即新轮回归。总工在 browser_check / import_check 的机械修正未触碰。",
|
||||
"root_causes": [
|
||||
"缺陷1:compact 下输入聚焦时 --nav-space 由 54px 变 6px;按下按钮使输入失焦,对话区在按下与松开之间下移 48px,click 落到两者共同祖先 SECTION.conversation。修法:对话区几何不随焦点改变(只保留导航淡出),未用先 blur、强制点击、脚本调 handler 或 pointerdown 绕过。",
|
||||
"缺陷2:阅读时钟每帧把 dt 截到 100ms(ChatPanel.tsx 原 113 行 Math.min(100, now - last)),停留时长随帧率缩放。停止→立即新轮时交叉淡化、模糊、墨入与房间画面同时进行,审核环境帧间隔约 1 秒,『新轮』1400ms 的停留被拉长为 14 帧≈14 秒;审核读到的 0.06…0.93 正是 1/14…13/14 的逐帧步进,满格后进入下一句再次从 0 起,看起来像反复重置。逐行核对:同一轮内 key 只由轮次与位置决定,流式增长、落库替换、旧轮迟到事件(TurnGate 拒收)都不会改变当前句 key,也没有其他自动调用 forget/restart 的路径。修法:按真实时间计时,不缩短任何设计停留、不取消自动阅读、不放宽测试等待(8s 超时保持)。"
|
||||
],
|
||||
"acceptance": [
|
||||
"正式 React 月光/雾光,390×420 与 390×430:输入框聚焦后直接点发送、上一句、暂停/继续、全文,均首击生效;草稿真正发出并落库(用户+她各1条)、全文浮层真正打开;按下与松开时对话区 top 相同、click 送达该按钮(rework_browser_check 新节,真实指针点击,脚本不 blur 不派发)。",
|
||||
"停止回复→立即新轮:取消即时、旧轮迟到不串入(当前句状态为空),新轮先显示你的一句(设计停留1.4s)后她的回复上台;在 rAF 每 700ms 一帧的慢帧下同样在原 8s 断言内完成(旧实现需约 9.8s 必然失败)。",
|
||||
"正常 60fps 下各句停留与修改前一致(每帧 dt≈16ms 远小于原 100ms 上限,行为不变);暂停/恢复、前后回看、回到读到的地方、全文、完整记录、同句墨入只播一次、历史恢复锚点逻辑未改动。",
|
||||
"reading.test.ts:任意帧间隔(16/100/250/700/1000ms)下你的一句在 1400ms 至 1400ms+一帧之间到期;流式增长与落库不回退进度;新句、回看、恢复从零开始,暂停/悬停与隐藏期间不计,单帧停顿最多计 1 秒。",
|
||||
"320×568、390×844、1024、1600×1000 布局:本次只删除 compact+typing 时的位移规则,非 compact 尺寸 CSS 无变化;仍需总工以 browser_check / rework 12 组视口复核。"
|
||||
],
|
||||
"deferred": [
|
||||
"本机(Windows 运行时)没有 node/npm、python、git,未能执行 typecheck/lint/test/build、四份浏览器检查、check_requirements.py 与 git diff --check;全部交总工机械执行,未运行即未通过,不以静态阅读代替。",
|
||||
"修前修后实测计时未在本机取得:修前数据沿用总工 HEL-822 观测(约10–15秒、0.06→0.93),修后应由总工以 rework 慢帧节的 slow_frames_new_turn_to_reply_s 及受控慢流原复现记录。",
|
||||
"未开 PR、未提交:本机无 git;按 changes 清单落到 hel-822-candidate 之上,PR 目标仍为 PR#4 产品线 agent/agent/de8874a3803b(原产品基底 db571ba),不指 main;远端引用名称须由总工用 git 实查。",
|
||||
"真机键盘、Safari/Firefox、读屏未测;等效视口不冒充真机(UX-001)。人物仍为参考静帧,真实视频/语音/口型/生活/记忆未接入(DEL-001)。A3 日子/回忆/创建/设置由 HEL-823 承接;R1 人格深度与 R2–R7 在主卡 HEL-797 追踪。"
|
||||
],
|
||||
"requirement_changes": [],
|
||||
"verification": [
|
||||
"附件 SHA256 复算 d18d54891f365f4b7999b4defb8cc4f92dace3e296b96707c617ac08f3b3e870,与卡片一致;解包为只读 before 与可写 work 两份,修改只在 work。",
|
||||
"修改前后文件哈希与新增/删除清单见交付包 CHANGES-HEL-824.json(6 改、1 增、0 删)。",
|
||||
"未执行任何构建、测试或浏览器检查(工具缺失);待总工执行:cd web && npm ci && npm run typecheck && npm run lint && npm test && npm run build;PYTHONPATH=src python3.12 web/tests/{browser_check,import_check,real_browser_check,rework_browser_check}.py;python3 scripts/check_requirements.py --base-ref origin/main --handoff docs/requirements/handoff-HEL-824.json 及实际 PR 目标引用;git diff --check。",
|
||||
"真实网关 SSE 证据仍为 HEL-822 已有记录(本次未改后端、协议、SQLite、RealChatAdapter/TurnGate/epoch/AbortController);rework 新节使用隔离临时库与受控模型,二者分别标明。"
|
||||
]
|
||||
}
|
||||
@@ -7,9 +7,5 @@
|
||||
"product-decisions-v1.6.json": "ccc5c50c5604385208eb054caac01e27fc63367dac7731e1be9775a1e5cf46ab",
|
||||
"visual-confirmation-v2.md": "6e0229aaf693f215cc9dcc647be694aeafb3770683b21bb7e3e30291af60255a",
|
||||
"integration-plan-v1.md": "454af1d4a3b0360d33aea9c0e97f738b320968ba7be68e012a5fcec6f6ed0169",
|
||||
"comment-evidence-visual-role-20261022.json": "ecf30eb323129dca2a0d9c2ff2e0163884ee94d3fc7828b0540cd45f03103797",
|
||||
"comment-evidence-shared-space-20261023.json": "e56299db726e64fbeea9e07d352066ef2b578889cc9a33cf1789e3234862130d",
|
||||
"shared-space-static-acceptance-20261023.md": "9aec04ab40e40ce275c75104f004cd3d1473ff8fbef428767afbbe5fafd09cb9",
|
||||
"comment-evidence-dynamic-sample-20261023.json": "fe7528a2b68aca99968734b200d9d27a17d85f5110e60c6f52d7c569755c260d",
|
||||
"dynamic-sample-effect-acceptance-20261023.md": "f5e9fde65a58ebc365de47569053ad7c30ce77ae82bb78773cc070e3cbffd90e"
|
||||
"comment-evidence-visual-role-20261022.json": "ecf30eb323129dca2a0d9c2ff2e0163884ee94d3fc7828b0540cd45f03103797"
|
||||
}
|
||||
|
||||
@@ -1,10 +0,0 @@
|
||||
[
|
||||
{
|
||||
"id": "01a16810-3b46-7345-8966-dd87b76efe07",
|
||||
"author_type": "member",
|
||||
"author_id": "e5c6c938-db48-4ff9-954f-4fb8b063a132",
|
||||
"content": "这个效果可以",
|
||||
"created_at": "2026-10-23T09:20:56Z",
|
||||
"parent_id": null
|
||||
}
|
||||
]
|
||||
@@ -1,42 +0,0 @@
|
||||
[
|
||||
{
|
||||
"id": "01a16650-0355-72c4-b291-f1b4494cde91",
|
||||
"author_type": "member",
|
||||
"author_id": "e5c6c938-db48-4ff9-954f-4fb8b063a132",
|
||||
"content": "主要是A和B,但是之前没注意到C的问题,你一说倒是有点",
|
||||
"created_at": "2026-10-23T01:11:22Z",
|
||||
"parent_id": "01a1664d-f242-71fa-a4ba-295b6c347478"
|
||||
},
|
||||
{
|
||||
"id": "01a16654-5fc5-74be-a704-99b76b48b0b1",
|
||||
"author_type": "member",
|
||||
"author_id": "e5c6c938-db48-4ff9-954f-4fb8b063a132",
|
||||
"content": "对就是B",
|
||||
"created_at": "2026-10-23T01:16:08Z",
|
||||
"parent_id": "01a1664d-f242-71fa-a4ba-295b6c347478"
|
||||
},
|
||||
{
|
||||
"id": "01a16655-fe53-73a5-905f-4c9e71a1ed30",
|
||||
"author_type": "member",
|
||||
"author_id": "e5c6c938-db48-4ff9-954f-4fb8b063a132",
|
||||
"content": "这个我不太能想象得到,我和她待在同一空间是什么概念",
|
||||
"created_at": "2026-10-23T01:17:54Z",
|
||||
"parent_id": "01a1664d-f242-71fa-a4ba-295b6c347478"
|
||||
},
|
||||
{
|
||||
"id": "01a16659-fdfa-72ce-a4a5-801e0762c0a9",
|
||||
"author_type": "member",
|
||||
"author_id": "e5c6c938-db48-4ff9-954f-4fb8b063a132",
|
||||
"content": "这个能否现在就做个样图让我看一下",
|
||||
"created_at": "2026-10-23T01:22:16Z",
|
||||
"parent_id": "01a1664d-f242-71fa-a4ba-295b6c347478"
|
||||
},
|
||||
{
|
||||
"id": "01a1668f-5810-7524-b72f-33574a32c7d6",
|
||||
"author_type": "member",
|
||||
"author_id": "e5c6c938-db48-4ff9-954f-4fb8b063a132",
|
||||
"content": "静态效果我认可",
|
||||
"created_at": "2026-10-23T02:20:32Z",
|
||||
"parent_id": null
|
||||
}
|
||||
]
|
||||
@@ -1,54 +0,0 @@
|
||||
## 对坐动态小样整体效果的认可(2026-10-23)
|
||||
|
||||
总工(HEL-816)按主卡交付与用户原话整理入库。本记录只写明用户已经说过的话及其适用范围,不改动任何已有来源文件,不扩大授权。
|
||||
|
||||
### 用户原话(主卡 HEL-797,作者白栖知 `e5c6c938-db48-4ff9-954f-4fb8b063a132`)
|
||||
|
||||
原文逐字保存在同目录 `comment-evidence-dynamic-sample-20261023.json`。
|
||||
|
||||
| 评论 | 时间(UTC) | 原话 | 回应的问题 |
|
||||
| --- | --- | --- | --- |
|
||||
| `01a16810-3b46-7345-8966-dd87b76efe07` | 2026-10-23 09:20:56 | 这个效果可以 | 总管交付评论 `01a167c1-458d-795b-81e1-584089bf3667`(2026-10-23 07:54:41)请其下载体验《对坐动态小样 v2》并回答「整体是否更像自己坐在她面前」 |
|
||||
|
||||
交付评论(总管撰写,不属于用户原话)列明的体验方式:走近她/结束交流、月光/雾光切换、长回复自动续读、暂停回看与全文、手机打开查看;并已声明人物仍是参考静帧、聊天生活天气均为演示、真实视频语音口型尚未接入、手机候选默认关闭。
|
||||
|
||||
### 被认可的作品
|
||||
|
||||
- 文件:`CyberGril-HEL-799-对坐动态小样-v2.html`,662,233 字节,SHA256 `826bfc045d941c2114b16a198626ca952ff3d95dff02cfc6e32ee09858bcf80e`。
|
||||
- 附件:主卡附件 `01a167c1-455b-751a-ac37-9fa984a1ed10`(随交付评论 `01a167c1-458d-795b-81e1-584089bf3667`)。
|
||||
- 仓库内同 hash 原稿:`prototypes/hel-799/index.html`(分支 `agent/agent/54df81e610fd` 提交 `ad6a3b1` 起保全;总工 HEL-811 独立重建逐字节一致,总管 2026-10-23 复下载核对一致)。
|
||||
- 作者:视觉总监(HEL-799 v2 续作);独立审核:总工 HEL-811(40 项行为通过,无必须返修项,Firefox/真机未测原因见该记录)。
|
||||
|
||||
### 认可范围(已交小样的效果)
|
||||
|
||||
对坐动态小样 v2 的**整体效果**(电脑端、演示数据):同室相处画面;点她或「和她说话」推近到获认可的交流构图(HEL-798 月光构图);「结束交谈」沿原路退回,中途可反向;Esc 立即回到相处画面;交流呈现与阅读方式(自动续读、暂停、‹ › 回看、全文、完整记录、身份标记);月光 ⇄ 雾光两主题切换(布局与操作位置不变);日子/设置浮层。
|
||||
|
||||
### 不在范围内(仍待验收或承接)
|
||||
|
||||
| 项 | 状态 |
|
||||
| --- | --- |
|
||||
| 手机真机 | 未验证;4:5 候选容器 `?frame=media` 默认关闭,本认可不视为批准启用;真机键盘与流畅度未测 |
|
||||
| 真实人物动态 | 人物仍是参考静帧;真实视频、眨眼/呼吸/口型/语音未接入、未验证 |
|
||||
| 真实生活、记忆、主动联系、天气、备份 | 均为演示数据,未接入 |
|
||||
| Firefox/Safari/真机/系统级后台节流 | HEL-811 因环境未测,不能用等效视口或合成事件代替 |
|
||||
| 新素材 | 多时段天气穿搭、无书无居家裤的新近景与远景、首尾衔接素材按 HEL-802/HEL-803 承接,尚未生成 |
|
||||
|
||||
### 不能推出的结论
|
||||
|
||||
- 不视为完整产品、整套界面或任何其余页面(生活、回忆、创建、管理)验收通过。
|
||||
- 相处静帧中她在看书:用户已否定以阅读作为默认日常(`01a166aa-5f37-77b2-a2bd-ceb62f665813`),本认可不恢复看书默认,也不把该静帧定为最终相处素材。
|
||||
- 不授权替换正式界面:8300/8310 及已有档案、聊天、记忆保持原状;PR#4/#6/#8 合并与否仍由总管与白栖知决定。
|
||||
- 不代表 CG-024 的真实动态验证(真实视频选片、动作循环衔接、实时口型语音)完成;小样通过只表示该演示阶段通过。
|
||||
|
||||
### 对其他要求的影响
|
||||
|
||||
- CG-004「交流镜头」:推近/退回的切镜方式与衔接在小样演示层面(两静帧对齐+镜头推近)获认可;真实视频的切近衔接仍待验收。
|
||||
- VIS-007「空间动效」、VIS-013「交流呈现」、VIS-004「两套首轮主题」:小样是该要求获认可的演示呈现;条文与边界不变。
|
||||
- VIS-011:v1.9 已认可交流静图,本次扩展到该小样的整体动态效果(演示层面);条文保留,边界更新。
|
||||
- 其余已确认要求不变。
|
||||
|
||||
### 入库操作(总工 HEL-816,2026-10-23)
|
||||
|
||||
1. 新增本文件与 `comment-evidence-dynamic-sample-20261023.json`,`source-manifest.json` 追加两者 SHA256;历史来源未动。
|
||||
2. 升版 v1.10:`changes.json`/`changes.md` 追加条目(批准评论 `01a16810-3b46-7345-8966-dd87b76efe07`,`affected_ids`=VIS-011、CG-004);两者边界在 `baseline.json` 与 `current.md` 同步更新;`coverage.json`/`coverage.md` 版本与对应项同步;`README.md` 入口版本更新。
|
||||
3. 检查:`python3 scripts/check_requirements.py --base-ref origin/main` 与 `--handoff docs/requirements/handoff-HEL-816.json` 通过;`git diff --check` 干净。结果见各自运行记录。
|
||||
@@ -1,46 +0,0 @@
|
||||
## 交流静态视觉基准的更新(2026-10-23)
|
||||
|
||||
视觉总监在 HEL-799 整理,供总管入库核验。本记录只写明用户已经说过的话及其适用范围,不改动任何已有来源文件,也不改写 `current.md`、`baseline.json` 的现行条文。
|
||||
|
||||
### 用户原话(主卡 HEL-797,作者白栖知 `e5c6c938-db48-4ff9-954f-4fb8b063a132`)
|
||||
|
||||
原文逐字保存在同目录 `comment-evidence-shared-space-20261023.json`。
|
||||
|
||||
| 评论 | 时间(UTC) | 原话 | 回应的问题 |
|
||||
| --- | --- | --- | --- |
|
||||
| `01a16650-0355-72c4-b291-f1b4494cde91` | 2026-10-23 01:11 | 主要是A和B,但是之前没注意到C的问题,你一说倒是有点 | 总管问最妨碍沉浸的是哪种感觉:A 空间太空泛;B 和她有距离,像窗口里的照片;C 操作出戏 |
|
||||
| `01a16654-5fc5-74be-a704-99b76b48b0b1` | 01:16 | 对就是B | 总管问:她即使能眨眼、抬头、回应,但仍在人物窗口里,是否主要的不满意还在 |
|
||||
| `01a16655-fe53-73a5-905f-4c9e71a1ed30` | 01:17 | 这个我不太能想象得到,我和她待在同一空间是什么概念 | 总管问更接近「同一个空间」还是「通向她的世界」 |
|
||||
| `01a16659-fdfa-72ce-a4a5-801e0762c0a9` | 01:22 | 这个能否现在就做个样图让我看一下 | 总管用第一人称镜头解释「同一空间」后 |
|
||||
| `01a1668f-5810-7524-b72f-33574a32c7d6` | 02:20 | 静态效果我认可 | 总管交付 HEL-798 样图(评论 `01a16663-3ad2-727c-8888-e116eca13116`),问是否更像「自己坐在她面前」 |
|
||||
|
||||
问题原文由总管撰写,在主卡根线程 `01a1664d-f242-71fa-a4ba-295b6c347478` 内,不属于用户原话。
|
||||
|
||||
### 被认可的图
|
||||
|
||||
- 文件:`hel-798-face-to-face-moon.png`,1600×1000,SHA256 `a8619a1ff459ec1d28ec192104c851f6dee079c7b6056c1a927842591861a56a`。
|
||||
- 主卡附件 `01a16663-3a5a-76eb-ac3c-1ef93165617c`(随交付评论 `01a16663-3ad2-727c-8888-e116eca13116`);HEL-799 卡附件 `01a16691-b0f0-73a9-aae4-9aba2146899c`,两者字节相同。
|
||||
- 同一评论另附的标注图 `hel-798-face-to-face-annotated.png` 和新旧对照图 `hel-798-compare-pr8.png` 是说明材料。
|
||||
- 作者:视觉总监(HEL-798)。源码在 `prototypes/hel-799/reference/hel-798-static/`。
|
||||
|
||||
### 旧要求、新认可与适用范围
|
||||
|
||||
| | 内容 |
|
||||
| --- | --- |
|
||||
| 旧(VIS-011,v1.8 仍有效) | 「人物平时作为空间中独立视窗;交流时自然放大。已认可的人物位置、分量与首页文字分量沿用。」来源 `01a15f09-db1e-705c-8baf-cde63c7651fb`、`01a15f1f-5a71-783c-a458-b326a0073d69`。 |
|
||||
| 新认可 | **交流状态、靛蓝月光、电脑 1600×1000 的静态画面**:不再用独立人物框;她身边的环境连续铺到屏幕四边;前景有你这一侧的圆桌沿、茶杯和烛灯,中间是她,远处是雨夜窗景;当前一两句对话落在近处、视线下方,底部保留输入和此刻/交谈/日子/设置导航。 |
|
||||
| 适用范围 | 仅以上交流状态静图。用户认可的是「静态效果」。 |
|
||||
| 不在范围内(仍待验收) | 相处(平时)状态的构图;进入与退出交流的过渡和整体动态;蓝紫雾光主题;手机版;真实人物动态、眨眼、口型与语音;生活、回忆、创建、管理等完整功能的最终页面。 |
|
||||
| 不能推出的结论 | 不能据此永久取消 VIS-011 在全部状态中的原规则;不能把完整前端锁定为全屏卧室照片或视频(CG-031 继续有效);不能视为整套界面或任何功能已经验收。 |
|
||||
|
||||
### 对其他要求的影响
|
||||
|
||||
- VIS-001、VIS-002、VIS-006、VIS-013:这张图是「两人的数字空间」「空间深度」「交流以人物为主、当前一两句」的一种获认可呈现。
|
||||
- CG-004「交谈时允许自然切近」:图只证明切近后的静态画面,切近过程要在 HEL-799 动态小样中另行验收。
|
||||
- 其余已确认要求不变。
|
||||
|
||||
### 入库建议(由总管决定,视觉总监未改动正式基准)
|
||||
|
||||
1. 将 `comment-evidence-shared-space-20261023.json` 加入 `docs/requirements/sources/`,并在 `source-manifest.json` 追加它的 SHA256;历史来源不动。
|
||||
2. 如决定升版为 v1.9:在 `changes.json` / `changes.md` 追加一条,`approval_comment_id` 为 `01a1668f-5810-7524-b72f-33574a32c7d6`,`affected_ids` 至少含 `VIS-011`,摘要写「交流状态静态视觉基准更新为 HEL-798 共同空间样图」,影响写明上表的适用范围与不在范围内;VIS-011 的结论原文保留,只在边界中补一句「交流状态静图已按上述评论更新,平时状态、过渡、雾光、手机待验收」,`current.md` 与 `baseline.json` 同步;`coverage.json` 的版本跟着改。
|
||||
3. 入库后运行 `python3 scripts/check_requirements.py --base-ref origin/main` 及 `--handoff prototypes/hel-799/handoff-hel-799.json`。本运行环境没有 git 和 Python,这两项都未执行。
|
||||
@@ -1,77 +0,0 @@
|
||||
HEL-783 六项返工交付与复审说明 · 2026-10-22
|
||||
|
||||
本轮由总管在可用的 Codex 环境亲自完成。沿用获批 HEL-746 R2 两主题和现有 R1 API,在原 PR#4 的 `agent/agent/de8874a3803b` 上追加修复,目标仍为 `main`。没有更换业务模型、修改现网或读写用户真实数据库,没有合并。最终提交号以 PR#4 最新 head 为准。
|
||||
|
||||
## 六项反馈闭环
|
||||
|
||||
| 用户反馈 / Before | 本轮 After | 实际验证 / Why |
|
||||
| --- | --- | --- |
|
||||
| 手机对话被输入栏挡住;台词和输入分别固定定位,没有长文高度预算 | `ChatPanel` 统一布局,人物占位、可滚动台词、状态/取消、语音条、输入分别占位;`Viewport` 跟随 visualViewport 的高度、顶部和底部偏移,含安全区。视口变化时人物窗立即调整,不等待装饰过渡 | 1440×900、360×640、390×700、390×844、390×420、844×390,两主题共12组;长中文前后文均在 DOM,可滚到末尾、完整记录能读全文。420高是键盘缩小等效场景,未冒称真机键盘实测 |
|
||||
| 流式全文在结束时被 `slice(-90)` 截成尾部;用户也被 `slice(-48)` 截断 | 当前双方消息保留全文;滚动阅读,跟随阅读位置;完整记录继续提供历史入口。流式和最终使用同一 turn 身份 | 长用户句首尾与五段长回复逐字相等;流式完成前后为同一个 DOM,取消立即中断,未完成文本标明未保存 |
|
||||
| 只写 opacity transition,没有真实改变透明度 | `SoftText` 按轮次用 WAAPI 淡入200ms、旧句保留160ms淡出;流式增量只更新文字,不重播。使用现有 `--ease-out`;减少动效120ms轻淡化 | 实际动画0/80/200ms逐帧截图及 computed opacity/transform;旧句0/80/159ms仍挂载、透明度递减。全轮只有一次入场,完成不重播,取消不等动画 |
|
||||
| 滚动条脱离主题 | 两套主题各有轨道/滑块/悬停 token;全局标准属性与 Chromium 兼容样式,强制色使用系统色;触摸区仍原生滚动 | 实际消息、记录、首建、设置长内容滚动及两主题截图;强制色有 CSS 回退。没有做真实辅助设备和各系统滚动条外观全覆盖测试 |
|
||||
| 底色只有公历和几个内部短标签 | 新增只读日历展示与六维解释映射:表达社交、亲密边界、冲突修复、行动节律、压力恢复、成长张力。显示真实农历/闰月、钟点、四柱和术语提示;每段可展开解释依据。预览/确认/已有档案共用组件 | 48组日期×时辰检查,含1900边界、春节、立春附近、真实闰四月;预览不写库。旧档案使用已存四柱、十神、Derived,禁止重新编译;GET前后原始JSON、底色行一致,关系修改不改底色和历史;聊天系统提示逐段复用同一解释 |
|
||||
| 分不清谁在说话 | 当前对话中“你”右对齐,真实伴侣名字左对齐,独立角色行;阅读状态行持续标明伴侣名字,滚动后也能确认正在读谁的回复。流式、最终、失败、取消与记录都使用同一身份 | 两主题截图,失败/重试、取消新轮、历史恢复都检查;不单靠颜色辨别 |
|
||||
| 真实入口把完整页面缩成“未接通”卡片 | 恢复日子/回忆双栏与分组;城市、外观、备份、四类服务的完整结构和真实空态;服务页可读健康检查,未接通写入控件明确禁用;加入未保存离开确认 | 实际手机逐页进入、返回、搜索空态、服务检查、未保存取消/放弃、演示事件→聊天→返回。真实入口无演示记录,演示模式全流程零API请求 |
|
||||
|
||||
## R2 功能覆盖差异表
|
||||
|
||||
“已接真”表示已有 API 持续可用;“本批补齐”表示前端结构/交互已恢复;“后台待接”表示本轮没有增加该后台能力,不能据此验收为已接通。
|
||||
|
||||
| R2 落点 | 演示模式 | 真实入口 | 本批结论 |
|
||||
| --- | --- | --- | --- |
|
||||
| 四类区域、两主题、底部导航 | 原有此刻/交谈/日子/设置 | 同样四区与主题切换 | 保留;手机短高度首页内容可滚动 |
|
||||
| 首页留言与日子入口 | 固定演示留言、已分享日子入口 | 服务器最近回复可打开完整记录;日子入口明确后台待接 | 本批补齐真实入口,历史已接真;不伪称主动留言 |
|
||||
| 日子列表、按日分组、三类事件、分页 | 原有已分享事件与18+12分页 | 完整列表区、三类图例和空态 | 本批补齐结构;真实生活后台待接,无示例填充 |
|
||||
| 事件详情、回忆互链、聊天与返回 | 可走详情→关联→聊天→回到原日子 | 详情阅读区域保留,无数据时不造条目/链接 | 演示路径实测;真实数据后台待接 |
|
||||
| 我们一起的/小习惯/她知道的你/成长 | 四组演示回忆、来源、关联日子 | 四组独立空态和阅读区 | 本批补齐真实分组;长期记忆后台待接 |
|
||||
| 隐私:她说过才显示 | 继续使用 publicView 过滤 | 当前没有生活/回忆数据 | 不放宽隐私,不展示未讲述事件 |
|
||||
| 首建四步、关系无预选、同意确认 | 本机独立创建;排盘不以固定假值冒充 | 服务端唯一档案、只读预览、实际创建 | 已接真;补公农历/闰月/四柱帮助和六维说明 |
|
||||
| 首建失败、返回修改、重试 | 原有模拟失败且保留输入 | API 中文错误、输入保留、409恢复唯一档案 | 保留;未增建档入口或清空入口 |
|
||||
| 她的档案与底色锁定 | 演示底色明确未计算 | 旧档案只读补展示,原参数和历史不动 | 本批补齐;无数据库迁移 |
|
||||
| 最初与后来成长分层 | 两栏及成长回忆 | 出生说明与后续记忆区分,当前长期记忆未接 | 不把出生说明当作已经发生的经历 |
|
||||
| 关系、称呼、边界;改变关系确认 | 原有模拟保存/取消/失败 | PATCH真实保存、二次确认、重开恢复 | 已接真,回归通过 |
|
||||
| 未保存提示、取消和离开 | 原有暖色点、取消、beforeunload | 同样提示;关闭/导航离开新增确认 | 本批补齐;取消继续编辑,放弃不写服务器 |
|
||||
| 城市搜索与列表/无结果 | 原有候选城市本机保存与失败演示 | 可搜索候选目录,有空态;明确未设置真实城市,保存禁用 | 本批补齐;真实城市/天气后台待接 |
|
||||
| 外观选择、五项检查、对比、确认 | JSON结构检查、对比与模拟标识确认 | 当前参考、文件入口、五项待检查、新旧对比、应用入口 | 本批补齐;真实导入与媒体检查禁用,后台待接 |
|
||||
| 自动备份列表、完整导出 | 已标真实备份未接通;本机演示JSON可导出 | 自动备份空列表、完整导出说明和禁用按钮 | 本批补齐;不制造成功备份 |
|
||||
| 恢复检查、同一档案、双重确认、先导出 | 原有本机恢复检查和输入“恢复” | 明示四步恢复过程;文件和执行入口禁用 | 本批补齐结构;真实恢复后台待接,不能实际覆盖 |
|
||||
| 四类外接服务与测试反馈 | 只保存演示地址,不发请求 | 文字、语音识别、语音合成、视觉四项;文字可重新检查健康,配置只读 | 本批补齐;不暴露凭据,不模拟其他连接成功 |
|
||||
| 显示、减少动效 | 原有本机设置 | 主题与减少动效保存于本浏览器,和服务器资料分开 | 减少动效刷新恢复;系统设置也生效 |
|
||||
| 长文字、完整记录、滚动、角色 | 模拟流式继续可用 | SSE、完整记录、失败与取消状态 | 本批修复全文、占位和角色;已接真 |
|
||||
| 重试、轮次/epoch、重启、多设备恢复 | 原有 TurnGate | 原有传输机制保留 | 确定性API测试和浏览器回归通过 |
|
||||
| 连续语音、打断、结束、拒绝/失败状态 | 保留无收音模拟和权限说明;新布局语音条不挡输入 | 控件明确尚未接通,文字仍可用 | 真实语音后台待接,未申请设备权限 |
|
||||
| 视觉说明、时效、失败、总服务区 | 原有30秒模拟过期与失败 | 明确未接通、不采集;服务项保留 | 真实视觉后台待接 |
|
||||
| 断线/模型不可达/草稿 | 原有断线重连演示 | 实际请求错误、草稿保留、重试、服务状态;已有档案历史可读 | 保留已接真能力;自动重连推送属后续,不假造补消息 |
|
||||
| 离开欢迎摘要、主动消息与未读 | 原有明确标注的固定演示,来源为已分享事件 | 生活/主动消息未接通,不伪造欢迎摘要或来信 | 后台待接;真实最近回复入口已保留 |
|
||||
| 手机列表/详情与设置返回、Esc | 保留推入和返回、原日子位置 | 同样区域/分区返回;Esc关闭记录再退出交流 | 本批补齐真实Esc与未保存确认 |
|
||||
| 新设计建议 | 无 | 无 | 未把新增后台能力夹进本批 |
|
||||
|
||||
## 验证记录
|
||||
|
||||
- Python 3.11:`pytest -q` **142通过**,含原92项和新增50项。唯一提示为既有 Starlette TestClient 依赖弃用提示。
|
||||
- TypeScript类型检查、ESLint、前端 **14项** Vitest、Vite生产构建通过。后端变更文件 Ruff通过。没有新增运行时依赖。
|
||||
- `web/tests/rework_browser_check.py`:8组通过,12组尺寸/主题组合;记录 `browser-results.json`。使用隔离SQLite和可控模型验证长中文、错误、取消与完整页面,不把可控模型说成在线模型。
|
||||
- `web/tests/real_browser_check.py --controlled`:8组回归通过,记录 `r1-regression/browser-results.json`。包括真实HTTP SSE、浏览器关闭流、立即新轮、同源重启epoch变化、多设备恢复、关系取消/确认保存。
|
||||
- `web/tests/real_browser_check.py`:真实批准网关完成两轮对话,第二轮正确回答上一轮暗号“蓝色风铃”;第三轮收到增量后取消,上游请求结束且没有完整回复落库。随后同源重启和故障段使用可控provider,结果逐项区分,记录 `live-gateway/browser-results.json`。所有建档、聊天和关系写入仍只在临时库。
|
||||
- 动效证据:`motion-enter-0/80/200.png` 和结果JSON中的 `motion.entry_frames/exit_frames`。截图暂停实际 WAAPI 后逐帧采样,随后恢复;没有为截图修改生产动画时长。
|
||||
- 代表图:`long-start-360-640-*.png`、`long-start/long-end-390-420-*.png`、`full-history-*.png`、`birth-*.png`、`existing-*.png`、城市/外观/备份/服务/生活回忆各图。图中“星河/小满”和聊天全部是本轮隔离测试资料。
|
||||
- 已实际看过代表性手机长文、短视口、语音模拟、出生预览、已有档案说明、服务页、回忆分组截图;复审仍需独立看图、播放实际界面,不能只用坐标和测试数认定视觉通过。
|
||||
- 未测:实体手机键盘、Safari、真实强制色设备、屏幕阅读器、长时运行和帧率。420/390高只证明等效可见高度布局,不等于真机键盘实测。
|
||||
|
||||
## 说明层的兼容性与回滚
|
||||
|
||||
`core/birth_view.py` 是可维护的确定性解释映射,不调用模型润色。分档值只选择解释段落,不产生新的底色参数。敏感度的展示分档与普通0–1参数分别归一到解释选择范围。四柱与十神取旧库已存值,五行侧重和性格取旧Derived;日历只从不可变生日、时辰换算展示。没有重新调用旧档案的四柱编译器,也没有把新说明写回旧档案。新增档案会在原有JSON中携带可选展示字段;旧字段仍保留,旧前端不依赖新增字段。
|
||||
|
||||
聊天提示与UI共用六段解释,仍明确本体、现实边界、未接通能力和不能编造生活。取消、历史、epoch、路由和业务模型配置未改。服务端关系修改只保存关系字段及原档案JSON,不把本次只读展示偷偷写回旧档案。
|
||||
|
||||
本批无schema改动、不需要重建库。回滚只切回上一个程序版本;旧版忽略JSON新增字段。服务器切换前按HEL-784要求备份,不能删除、替换或重算用户档案。浏览器新加 `cg.real.display` 仅保存减少动效偏好;不存真实聊天或底色。
|
||||
|
||||
## 给HEL-784的部署交接
|
||||
|
||||
1. 重新读取PR#4最新head,与本轮交付SHA一致后审核;base仍main。远端若另有推进,先协调,不覆盖。
|
||||
2. 独立运行检查,实际看截图及流式/取消/渐入渐出,特别检查用户原截图对应的手机短视口和长回复。
|
||||
3. 安装方式沿用 `docs/r1/IMPLEMENTATION.md`:Python≥3.11、`requirements.lock`、安装当前包,`npm ci --prefix web` 和 `npm run build --prefix web`。浏览器测试可选Playwright,不是部署依赖。
|
||||
4. 审核通过才部署8310的新release,保留现有用户库,切换前备份;不要把本轮临时测试库、测试人物或演示存储带上服务器。8300和其他服务不动。
|
||||
5. 回读现有档案/历史与health,检查新静态资源和旧档案补充说明;附件不要泄露真实聊天全文。记录部署SHA、备份位置和回滚指令。
|
||||
6. 本批用户尚未验收,不合并、不归档、不推进到收尾。
|
||||
|
Before Width: | Height: | Size: 128 KiB |
|
Before Width: | Height: | Size: 125 KiB |
|
Before Width: | Height: | Size: 1.0 MiB |
|
Before Width: | Height: | Size: 1.0 MiB |
@@ -1,760 +0,0 @@
|
||||
{
|
||||
"checks": [
|
||||
"Real creation: lunar leap month, all six explanations, same final confirmation; preview writes no rows",
|
||||
"Long Chinese stream: shown lines never change or re-key, ink plays once per line; pause/keyboard review is instant; record keeps everything",
|
||||
"12 viewport/theme combinations: lines stay inside the stage, stage/reader/composer/navigation never overlap; Esc closes full text with focus back; full history reachable",
|
||||
"390x420 and 390x430, both themes: with the input focused, the first press on send, review, pause/continue and full text acts; the dialogue does not move between press and release",
|
||||
"Cancel then immediate new turn, model error and same-turn retry preserve roles and avoid duplicate user messages",
|
||||
"Stop then new turn with busy (700 ms) frames: your line keeps its own time and her reply follows; the reading clock counts real time",
|
||||
"Restored real pages: city search/empty, appearance/check/compare, backup/recovery, four services/live health, life/memory groups; unsaved close guard",
|
||||
"Escape navigation; browser display preference survives reload; settings/system reduced motion uses gentle opacity",
|
||||
"Demo has its own profile, voice simulation, life/detail/chat/return path and zero API requests"
|
||||
],
|
||||
"viewports": [
|
||||
{
|
||||
"width": 1440,
|
||||
"height": 900,
|
||||
"theme": "moon",
|
||||
"stage": {
|
||||
"top": 605.609375,
|
||||
"bottom": 733.609375,
|
||||
"left": 250,
|
||||
"right": 1190,
|
||||
"height": 128
|
||||
},
|
||||
"reader": {
|
||||
"top": 762,
|
||||
"bottom": 792,
|
||||
"left": 596.5,
|
||||
"right": 843.5,
|
||||
"height": 30
|
||||
},
|
||||
"composer": {
|
||||
"top": 798,
|
||||
"bottom": 848,
|
||||
"left": 400,
|
||||
"right": 1040,
|
||||
"height": 50
|
||||
},
|
||||
"nav": {
|
||||
"top": 860,
|
||||
"bottom": 894,
|
||||
"left": 582,
|
||||
"right": 858,
|
||||
"height": 34
|
||||
},
|
||||
"lines": [
|
||||
{
|
||||
"top": 643.21875,
|
||||
"bottom": 665.71875,
|
||||
"left": 596.625,
|
||||
"right": 887.328125,
|
||||
"height": 22.5
|
||||
},
|
||||
{
|
||||
"top": 699.109375,
|
||||
"bottom": 733.609375,
|
||||
"left": 555.765625,
|
||||
"right": 884.21875,
|
||||
"height": 34.5
|
||||
}
|
||||
],
|
||||
"overflow": false
|
||||
},
|
||||
{
|
||||
"width": 1440,
|
||||
"height": 900,
|
||||
"theme": "fog",
|
||||
"stage": {
|
||||
"top": 605.609375,
|
||||
"bottom": 733.609375,
|
||||
"left": 250,
|
||||
"right": 1190,
|
||||
"height": 128
|
||||
},
|
||||
"reader": {
|
||||
"top": 762,
|
||||
"bottom": 792,
|
||||
"left": 596.5,
|
||||
"right": 843.5,
|
||||
"height": 30
|
||||
},
|
||||
"composer": {
|
||||
"top": 798,
|
||||
"bottom": 848,
|
||||
"left": 400,
|
||||
"right": 1040,
|
||||
"height": 50
|
||||
},
|
||||
"nav": {
|
||||
"top": 860,
|
||||
"bottom": 894,
|
||||
"left": 582,
|
||||
"right": 858,
|
||||
"height": 34
|
||||
},
|
||||
"lines": [
|
||||
{
|
||||
"top": 643.21875,
|
||||
"bottom": 665.71875,
|
||||
"left": 596.625,
|
||||
"right": 887.328125,
|
||||
"height": 22.5
|
||||
},
|
||||
{
|
||||
"top": 699.109375,
|
||||
"bottom": 733.609375,
|
||||
"left": 555.765625,
|
||||
"right": 884.21875,
|
||||
"height": 34.5
|
||||
}
|
||||
],
|
||||
"overflow": false
|
||||
},
|
||||
{
|
||||
"width": 360,
|
||||
"height": 640,
|
||||
"theme": "moon",
|
||||
"stage": {
|
||||
"top": 362,
|
||||
"bottom": 494,
|
||||
"left": 10,
|
||||
"right": 350,
|
||||
"height": 132
|
||||
},
|
||||
"reader": {
|
||||
"top": 496,
|
||||
"bottom": 526,
|
||||
"left": 72.5,
|
||||
"right": 287.5,
|
||||
"height": 30
|
||||
},
|
||||
"composer": {
|
||||
"top": 532,
|
||||
"bottom": 580,
|
||||
"left": 10,
|
||||
"right": 350,
|
||||
"height": 48
|
||||
},
|
||||
"nav": {
|
||||
"top": 586,
|
||||
"bottom": 634,
|
||||
"left": 30,
|
||||
"right": 330,
|
||||
"height": 48
|
||||
},
|
||||
"lines": [
|
||||
{
|
||||
"top": 412.453125,
|
||||
"bottom": 432.59375,
|
||||
"left": 155.5625,
|
||||
"right": 248.390625,
|
||||
"height": 20.140625
|
||||
},
|
||||
{
|
||||
"top": 466.109375,
|
||||
"bottom": 494,
|
||||
"left": 51.46875,
|
||||
"right": 308.515625,
|
||||
"height": 27.890625
|
||||
}
|
||||
],
|
||||
"overflow": false
|
||||
},
|
||||
{
|
||||
"width": 360,
|
||||
"height": 640,
|
||||
"theme": "fog",
|
||||
"stage": {
|
||||
"top": 362,
|
||||
"bottom": 494,
|
||||
"left": 10,
|
||||
"right": 350,
|
||||
"height": 132
|
||||
},
|
||||
"reader": {
|
||||
"top": 496,
|
||||
"bottom": 526,
|
||||
"left": 72.5,
|
||||
"right": 287.5,
|
||||
"height": 30
|
||||
},
|
||||
"composer": {
|
||||
"top": 532,
|
||||
"bottom": 580,
|
||||
"left": 10,
|
||||
"right": 350,
|
||||
"height": 48
|
||||
},
|
||||
"nav": {
|
||||
"top": 586,
|
||||
"bottom": 634,
|
||||
"left": 30,
|
||||
"right": 330,
|
||||
"height": 48
|
||||
},
|
||||
"lines": [
|
||||
{
|
||||
"top": 412.453125,
|
||||
"bottom": 432.59375,
|
||||
"left": 155.5625,
|
||||
"right": 248.390625,
|
||||
"height": 20.140625
|
||||
},
|
||||
{
|
||||
"top": 466.109375,
|
||||
"bottom": 494,
|
||||
"left": 51.46875,
|
||||
"right": 308.515625,
|
||||
"height": 27.890625
|
||||
}
|
||||
],
|
||||
"overflow": false
|
||||
},
|
||||
{
|
||||
"width": 390,
|
||||
"height": 700,
|
||||
"theme": "moon",
|
||||
"stage": {
|
||||
"top": 422,
|
||||
"bottom": 554,
|
||||
"left": 10,
|
||||
"right": 380,
|
||||
"height": 132
|
||||
},
|
||||
"reader": {
|
||||
"top": 556,
|
||||
"bottom": 586,
|
||||
"left": 87.5,
|
||||
"right": 302.5,
|
||||
"height": 30
|
||||
},
|
||||
"composer": {
|
||||
"top": 592,
|
||||
"bottom": 640,
|
||||
"left": 10,
|
||||
"right": 380,
|
||||
"height": 48
|
||||
},
|
||||
"nav": {
|
||||
"top": 646,
|
||||
"bottom": 694,
|
||||
"left": 45,
|
||||
"right": 345,
|
||||
"height": 48
|
||||
},
|
||||
"lines": [
|
||||
{
|
||||
"top": 472.453125,
|
||||
"bottom": 492.59375,
|
||||
"left": 91,
|
||||
"right": 342.953125,
|
||||
"height": 20.140625
|
||||
},
|
||||
{
|
||||
"top": 526.109375,
|
||||
"bottom": 554,
|
||||
"left": 66.46875,
|
||||
"right": 323.515625,
|
||||
"height": 27.890625
|
||||
}
|
||||
],
|
||||
"overflow": false
|
||||
},
|
||||
{
|
||||
"width": 390,
|
||||
"height": 700,
|
||||
"theme": "fog",
|
||||
"stage": {
|
||||
"top": 422,
|
||||
"bottom": 554,
|
||||
"left": 10,
|
||||
"right": 380,
|
||||
"height": 132
|
||||
},
|
||||
"reader": {
|
||||
"top": 556,
|
||||
"bottom": 586,
|
||||
"left": 87.5,
|
||||
"right": 302.5,
|
||||
"height": 30
|
||||
},
|
||||
"composer": {
|
||||
"top": 592,
|
||||
"bottom": 640,
|
||||
"left": 10,
|
||||
"right": 380,
|
||||
"height": 48
|
||||
},
|
||||
"nav": {
|
||||
"top": 646,
|
||||
"bottom": 694,
|
||||
"left": 45,
|
||||
"right": 345,
|
||||
"height": 48
|
||||
},
|
||||
"lines": [
|
||||
{
|
||||
"top": 472.453125,
|
||||
"bottom": 492.59375,
|
||||
"left": 91,
|
||||
"right": 342.953125,
|
||||
"height": 20.140625
|
||||
},
|
||||
{
|
||||
"top": 526.109375,
|
||||
"bottom": 554,
|
||||
"left": 66.46875,
|
||||
"right": 323.515625,
|
||||
"height": 27.890625
|
||||
}
|
||||
],
|
||||
"overflow": false
|
||||
},
|
||||
{
|
||||
"width": 390,
|
||||
"height": 844,
|
||||
"theme": "moon",
|
||||
"stage": {
|
||||
"top": 566,
|
||||
"bottom": 698,
|
||||
"left": 10,
|
||||
"right": 380,
|
||||
"height": 132
|
||||
},
|
||||
"reader": {
|
||||
"top": 700,
|
||||
"bottom": 730,
|
||||
"left": 87.5,
|
||||
"right": 302.5,
|
||||
"height": 30
|
||||
},
|
||||
"composer": {
|
||||
"top": 736,
|
||||
"bottom": 784,
|
||||
"left": 10,
|
||||
"right": 380,
|
||||
"height": 48
|
||||
},
|
||||
"nav": {
|
||||
"top": 790,
|
||||
"bottom": 838,
|
||||
"left": 45,
|
||||
"right": 345,
|
||||
"height": 48
|
||||
},
|
||||
"lines": [
|
||||
{
|
||||
"top": 616.453125,
|
||||
"bottom": 636.59375,
|
||||
"left": 91,
|
||||
"right": 342.953125,
|
||||
"height": 20.140625
|
||||
},
|
||||
{
|
||||
"top": 670.109375,
|
||||
"bottom": 698,
|
||||
"left": 66.46875,
|
||||
"right": 323.515625,
|
||||
"height": 27.890625
|
||||
}
|
||||
],
|
||||
"overflow": false
|
||||
},
|
||||
{
|
||||
"width": 390,
|
||||
"height": 844,
|
||||
"theme": "fog",
|
||||
"stage": {
|
||||
"top": 566,
|
||||
"bottom": 698,
|
||||
"left": 10,
|
||||
"right": 380,
|
||||
"height": 132
|
||||
},
|
||||
"reader": {
|
||||
"top": 700,
|
||||
"bottom": 730,
|
||||
"left": 87.5,
|
||||
"right": 302.5,
|
||||
"height": 30
|
||||
},
|
||||
"composer": {
|
||||
"top": 736,
|
||||
"bottom": 784,
|
||||
"left": 10,
|
||||
"right": 380,
|
||||
"height": 48
|
||||
},
|
||||
"nav": {
|
||||
"top": 790,
|
||||
"bottom": 838,
|
||||
"left": 45,
|
||||
"right": 345,
|
||||
"height": 48
|
||||
},
|
||||
"lines": [
|
||||
{
|
||||
"top": 616.453125,
|
||||
"bottom": 636.59375,
|
||||
"left": 91,
|
||||
"right": 342.953125,
|
||||
"height": 20.140625
|
||||
},
|
||||
{
|
||||
"top": 670.109375,
|
||||
"bottom": 698,
|
||||
"left": 66.46875,
|
||||
"right": 323.515625,
|
||||
"height": 27.890625
|
||||
}
|
||||
],
|
||||
"overflow": false
|
||||
},
|
||||
{
|
||||
"width": 390,
|
||||
"height": 420,
|
||||
"theme": "moon",
|
||||
"stage": {
|
||||
"top": 206,
|
||||
"bottom": 284,
|
||||
"left": 10,
|
||||
"right": 380,
|
||||
"height": 78
|
||||
},
|
||||
"reader": {
|
||||
"top": 284,
|
||||
"bottom": 314,
|
||||
"left": 87.5,
|
||||
"right": 302.5,
|
||||
"height": 30
|
||||
},
|
||||
"composer": {
|
||||
"top": 318,
|
||||
"bottom": 366,
|
||||
"left": 10,
|
||||
"right": 380,
|
||||
"height": 48
|
||||
},
|
||||
"nav": {
|
||||
"top": 436,
|
||||
"bottom": 480,
|
||||
"left": 45,
|
||||
"right": 345,
|
||||
"height": 44
|
||||
},
|
||||
"lines": [
|
||||
{
|
||||
"top": 259.203125,
|
||||
"bottom": 284,
|
||||
"left": 80.75,
|
||||
"right": 309.234375,
|
||||
"height": 24.796875
|
||||
}
|
||||
],
|
||||
"overflow": false
|
||||
},
|
||||
{
|
||||
"width": 390,
|
||||
"height": 420,
|
||||
"theme": "fog",
|
||||
"stage": {
|
||||
"top": 206,
|
||||
"bottom": 284,
|
||||
"left": 10,
|
||||
"right": 380,
|
||||
"height": 78
|
||||
},
|
||||
"reader": {
|
||||
"top": 284,
|
||||
"bottom": 314,
|
||||
"left": 87.5,
|
||||
"right": 302.5,
|
||||
"height": 30
|
||||
},
|
||||
"composer": {
|
||||
"top": 318,
|
||||
"bottom": 366,
|
||||
"left": 10,
|
||||
"right": 380,
|
||||
"height": 48
|
||||
},
|
||||
"nav": {
|
||||
"top": 436,
|
||||
"bottom": 480,
|
||||
"left": 45,
|
||||
"right": 345,
|
||||
"height": 44
|
||||
},
|
||||
"lines": [
|
||||
{
|
||||
"top": 259.203125,
|
||||
"bottom": 284,
|
||||
"left": 80.75,
|
||||
"right": 309.234375,
|
||||
"height": 24.796875
|
||||
}
|
||||
],
|
||||
"overflow": false
|
||||
},
|
||||
{
|
||||
"width": 844,
|
||||
"height": 390,
|
||||
"theme": "moon",
|
||||
"stage": {
|
||||
"top": 174,
|
||||
"bottom": 252,
|
||||
"left": 50.640625,
|
||||
"right": 793.359375,
|
||||
"height": 78
|
||||
},
|
||||
"reader": {
|
||||
"top": 252,
|
||||
"bottom": 282,
|
||||
"left": 359.5,
|
||||
"right": 484.5,
|
||||
"height": 30
|
||||
},
|
||||
"composer": {
|
||||
"top": 286,
|
||||
"bottom": 336,
|
||||
"left": 102,
|
||||
"right": 742,
|
||||
"height": 50
|
||||
},
|
||||
"nav": {
|
||||
"top": 406,
|
||||
"bottom": 450,
|
||||
"left": 284,
|
||||
"right": 560,
|
||||
"height": 44
|
||||
},
|
||||
"lines": [
|
||||
{
|
||||
"top": 227.203125,
|
||||
"bottom": 252,
|
||||
"left": 307.75,
|
||||
"right": 536.234375,
|
||||
"height": 24.796875
|
||||
}
|
||||
],
|
||||
"overflow": false
|
||||
},
|
||||
{
|
||||
"width": 844,
|
||||
"height": 390,
|
||||
"theme": "fog",
|
||||
"stage": {
|
||||
"top": 174,
|
||||
"bottom": 252,
|
||||
"left": 50.640625,
|
||||
"right": 793.359375,
|
||||
"height": 78
|
||||
},
|
||||
"reader": {
|
||||
"top": 252,
|
||||
"bottom": 282,
|
||||
"left": 359.5,
|
||||
"right": 484.5,
|
||||
"height": 30
|
||||
},
|
||||
"composer": {
|
||||
"top": 286,
|
||||
"bottom": 336,
|
||||
"left": 102,
|
||||
"right": 742,
|
||||
"height": 50
|
||||
},
|
||||
"nav": {
|
||||
"top": 406,
|
||||
"bottom": 450,
|
||||
"left": 284,
|
||||
"right": 560,
|
||||
"height": 44
|
||||
},
|
||||
"lines": [
|
||||
{
|
||||
"top": 227.203125,
|
||||
"bottom": 252,
|
||||
"left": 307.75,
|
||||
"right": 536.234375,
|
||||
"height": 24.796875
|
||||
}
|
||||
],
|
||||
"overflow": false
|
||||
}
|
||||
],
|
||||
"motion": {
|
||||
"inked_lines": {
|
||||
"a7926846-51f6-4d1a-8057-565c2350c71d:1:0": 1
|
||||
},
|
||||
"slow_frames_new_turn_to_reply_s": 2.32
|
||||
},
|
||||
"console_errors": [],
|
||||
"limits": [
|
||||
"Chromium only; physical phone keyboard, Safari and screen reader not tested.",
|
||||
"LLM is controlled for deterministic long-stream/error/cancel checks, not a live gateway."
|
||||
],
|
||||
"compact_first_press": [
|
||||
{
|
||||
"size": "390x420",
|
||||
"theme": "moon",
|
||||
"down": 182,
|
||||
"up": 182,
|
||||
"typing": false,
|
||||
"target": "发送"
|
||||
},
|
||||
{
|
||||
"size": "390x420",
|
||||
"theme": "moon",
|
||||
"down": 182,
|
||||
"up": 182,
|
||||
"typing": false,
|
||||
"target": "上一句"
|
||||
},
|
||||
{
|
||||
"size": "390x420",
|
||||
"theme": "moon",
|
||||
"down": 182,
|
||||
"up": 182,
|
||||
"typing": false,
|
||||
"target": "暂停"
|
||||
},
|
||||
{
|
||||
"size": "390x420",
|
||||
"theme": "moon",
|
||||
"down": 182,
|
||||
"up": 182,
|
||||
"typing": false,
|
||||
"target": "继续"
|
||||
},
|
||||
{
|
||||
"size": "390x420",
|
||||
"theme": "moon",
|
||||
"down": 182,
|
||||
"up": 182,
|
||||
"typing": false,
|
||||
"target": "全文"
|
||||
},
|
||||
{
|
||||
"size": "390x420",
|
||||
"theme": "fog",
|
||||
"down": 182,
|
||||
"up": 182,
|
||||
"typing": false,
|
||||
"target": "发送"
|
||||
},
|
||||
{
|
||||
"size": "390x420",
|
||||
"theme": "fog",
|
||||
"down": 182,
|
||||
"up": 182,
|
||||
"typing": false,
|
||||
"target": "上一句"
|
||||
},
|
||||
{
|
||||
"size": "390x420",
|
||||
"theme": "fog",
|
||||
"down": 182,
|
||||
"up": 182,
|
||||
"typing": false,
|
||||
"target": "暂停"
|
||||
},
|
||||
{
|
||||
"size": "390x420",
|
||||
"theme": "fog",
|
||||
"down": 182,
|
||||
"up": 182,
|
||||
"typing": false,
|
||||
"target": "继续"
|
||||
},
|
||||
{
|
||||
"size": "390x420",
|
||||
"theme": "fog",
|
||||
"down": 182,
|
||||
"up": 182,
|
||||
"typing": false,
|
||||
"target": "全文"
|
||||
},
|
||||
{
|
||||
"size": "390x430",
|
||||
"theme": "moon",
|
||||
"down": 192,
|
||||
"up": 192,
|
||||
"typing": false,
|
||||
"target": "发送"
|
||||
},
|
||||
{
|
||||
"size": "390x430",
|
||||
"theme": "moon",
|
||||
"down": 192,
|
||||
"up": 192,
|
||||
"typing": false,
|
||||
"target": "上一句"
|
||||
},
|
||||
{
|
||||
"size": "390x430",
|
||||
"theme": "moon",
|
||||
"down": 192,
|
||||
"up": 192,
|
||||
"typing": false,
|
||||
"target": "暂停"
|
||||
},
|
||||
{
|
||||
"size": "390x430",
|
||||
"theme": "moon",
|
||||
"down": 192,
|
||||
"up": 192,
|
||||
"typing": false,
|
||||
"target": "继续"
|
||||
},
|
||||
{
|
||||
"size": "390x430",
|
||||
"theme": "moon",
|
||||
"down": 192,
|
||||
"up": 192,
|
||||
"typing": false,
|
||||
"target": "全文"
|
||||
},
|
||||
{
|
||||
"size": "390x430",
|
||||
"theme": "fog",
|
||||
"down": 192,
|
||||
"up": 192,
|
||||
"typing": false,
|
||||
"target": "发送"
|
||||
},
|
||||
{
|
||||
"size": "390x430",
|
||||
"theme": "fog",
|
||||
"down": 192,
|
||||
"up": 192,
|
||||
"typing": false,
|
||||
"target": "上一句"
|
||||
},
|
||||
{
|
||||
"size": "390x430",
|
||||
"theme": "fog",
|
||||
"down": 192,
|
||||
"up": 192,
|
||||
"typing": false,
|
||||
"target": "暂停"
|
||||
},
|
||||
{
|
||||
"size": "390x430",
|
||||
"theme": "fog",
|
||||
"down": 192,
|
||||
"up": 192,
|
||||
"typing": false,
|
||||
"target": "继续"
|
||||
},
|
||||
{
|
||||
"size": "390x430",
|
||||
"theme": "fog",
|
||||
"down": 192,
|
||||
"up": 192,
|
||||
"typing": false,
|
||||
"target": "全文"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
Before Width: | Height: | Size: 120 KiB |
|
Before Width: | Height: | Size: 226 KiB |
|
Before Width: | Height: | Size: 231 KiB |
|
Before Width: | Height: | Size: 391 KiB |
|
Before Width: | Height: | Size: 116 KiB |
|
Before Width: | Height: | Size: 151 KiB |
|
Before Width: | Height: | Size: 388 KiB |
|
Before Width: | Height: | Size: 436 KiB |
|
Before Width: | Height: | Size: 282 KiB |
@@ -1,35 +0,0 @@
|
||||
{
|
||||
"checks": [
|
||||
"desktop: four-step real creation, side-effect-free lunar preview, mandatory relationship",
|
||||
"real gateway: complete streamed reply and second turn recalls 蓝色风铃 from server context",
|
||||
"real gateway: cancel after first delta, upstream request closed, no complete assistant row",
|
||||
"independent Chromium context 390×844: same companion/history; both themes; IME and Shift+Enter",
|
||||
"server restart on same origin: epoch 1→2, existing page sends automatically, data retained",
|
||||
"controlled SSE model error: Chinese notice, draft retained, same-turn retry without duplicate user row",
|
||||
"controlled blocked upstream: immediate cancellation/new question isolation",
|
||||
"mobile: relation cancel/confirm/save restores from server; unfinished life has no demo records/console"
|
||||
],
|
||||
"real_dialogue": [
|
||||
{
|
||||
"input": "请记住我们这次聊天的暗号是蓝色风铃。简短回应一句就好。",
|
||||
"reply": "好,暗号是蓝色风铃。",
|
||||
"source": "real gateway"
|
||||
},
|
||||
{
|
||||
"input": "刚才我们的暗号是什么?请直接回答。",
|
||||
"reply": "蓝色风铃",
|
||||
"source": "real gateway"
|
||||
},
|
||||
{
|
||||
"input": "重启后继续",
|
||||
"reply": "答复",
|
||||
"source": "controlled provider"
|
||||
},
|
||||
{
|
||||
"input": "新轮不会串台",
|
||||
"reply": "答复",
|
||||
"source": "controlled provider"
|
||||
}
|
||||
],
|
||||
"console_errors": []
|
||||
}
|
||||
|
Before Width: | Height: | Size: 1.2 MiB |
|
Before Width: | Height: | Size: 1.4 MiB |
|
Before Width: | Height: | Size: 1.0 MiB |
|
Before Width: | Height: | Size: 1.4 MiB |
|
Before Width: | Height: | Size: 397 KiB |
|
Before Width: | Height: | Size: 189 KiB |
|
Before Width: | Height: | Size: 110 KiB |
|
Before Width: | Height: | Size: 251 KiB |
|
Before Width: | Height: | Size: 221 KiB |
|
Before Width: | Height: | Size: 151 KiB |
|
Before Width: | Height: | Size: 145 KiB |
|
Before Width: | Height: | Size: 374 KiB |
|
Before Width: | Height: | Size: 363 KiB |
|
Before Width: | Height: | Size: 302 KiB |
|
Before Width: | Height: | Size: 302 KiB |
|
Before Width: | Height: | Size: 225 KiB |
|
Before Width: | Height: | Size: 227 KiB |
|
Before Width: | Height: | Size: 401 KiB |
|
Before Width: | Height: | Size: 399 KiB |
|
Before Width: | Height: | Size: 240 KiB |
|
Before Width: | Height: | Size: 213 KiB |
|
Before Width: | Height: | Size: 142 KiB |
|
Before Width: | Height: | Size: 137 KiB |
|
Before Width: | Height: | Size: 363 KiB |
|
Before Width: | Height: | Size: 354 KiB |
|
Before Width: | Height: | Size: 282 KiB |
|
Before Width: | Height: | Size: 974 KiB |
|
Before Width: | Height: | Size: 1016 KiB |
|
Before Width: | Height: | Size: 1017 KiB |
@@ -1,35 +0,0 @@
|
||||
{
|
||||
"checks": [
|
||||
"desktop: four-step real creation, side-effect-free lunar preview, mandatory relationship",
|
||||
"controlled provider: two complete streamed turns",
|
||||
"controlled provider: cancel after first delta, upstream request closed, no complete assistant row",
|
||||
"independent Chromium context 390×844: same companion/history; both themes; IME and Shift+Enter",
|
||||
"server restart on same origin: epoch 1→2, existing page sends automatically, data retained",
|
||||
"controlled SSE model error: Chinese notice, draft retained, same-turn retry without duplicate user row",
|
||||
"controlled blocked upstream: immediate cancellation/new question isolation",
|
||||
"mobile: relation cancel/confirm/save restores from server; unfinished life has no demo records/console"
|
||||
],
|
||||
"real_dialogue": [
|
||||
{
|
||||
"input": "请记住我们这次聊天的暗号是蓝色风铃。简短回应一句就好。",
|
||||
"reply": "答复",
|
||||
"source": "controlled provider"
|
||||
},
|
||||
{
|
||||
"input": "刚才我们的暗号是什么?请直接回答。",
|
||||
"reply": "答复",
|
||||
"source": "controlled provider"
|
||||
},
|
||||
{
|
||||
"input": "重启后继续",
|
||||
"reply": "答复",
|
||||
"source": "controlled provider"
|
||||
},
|
||||
{
|
||||
"input": "新轮不会串台",
|
||||
"reply": "答复",
|
||||
"source": "controlled provider"
|
||||
}
|
||||
],
|
||||
"console_errors": []
|
||||
}
|
||||
|
Before Width: | Height: | Size: 123 KiB |
@@ -1,42 +0,0 @@
|
||||
# HEL-799 原稿保全记录(机械入库,总工 HEL-811)
|
||||
|
||||
本目录是视觉总监 HEL-799 v2 交付原件的逐字节保全,由总工于 2026-10-23 机械入库;未改动任何作者文件内容。
|
||||
|
||||
## 来源
|
||||
|
||||
- 交付评论:HEL-799(01a16691-b114-7880-bf13-51b6201f6871)根评论 01a1679c-4178-7d65-8867-cd2716d91a13,作者为视觉总监(agent `d6da7655-1462-43b7-9b9c-227dcdf21bba`)。
|
||||
- 源码包附件 `01a1679a-4bfd-7651-bf62-176c025894d5`(HEL-799-v2-源码与离线HTML.zip,5,856,837 字节,SHA256 `ce302111150597793ef942d343583a3152e7b99489587a230d7fafc6c836bae7`)。zip 条目为 Windows 反斜杠分隔,入库前已规范为正斜杠;除路径分隔外未做任何内容改动。
|
||||
- `web/public/assets/her-room.jpg`、`her-talk.jpg` 与仓库现有文件 SHA256 逐一相同(51ca450a…、0b9e91b5…),正式 web 资产未改动、未覆盖。
|
||||
- 离线 HTML 附件 `01a1679a-25d1-74d9-aac8-80102716e895` 与包内 `index.html` 字节相同(SHA256 826bfc045d941c2114b16a198626ca952ff3d95dff02cfc6e32ee09858bcf80e)。
|
||||
|
||||
## 独立重建核验(HEL-811)
|
||||
|
||||
总工用独立实现的构建脚本(Python 复刻 build.ps1 的模板替换与 base64 内嵌规则,输入为本仓库 `web/public/assets/` 两张获批静帧)重建 `index.html`,结果 662,233 字节,SHA256 826bfc045d941c2114b16a198626ca952ff3d95dff02cfc6e32ee09858bcf80e,与交付 HTML 逐字节一致。
|
||||
|
||||
原中断运行(01a16691-b121-725d-a2e3-8d1f0ce57c02)的完整保全包为附件 `01a1679c-3ba9-7b62-a0a5-e828cb6e5d41`(26 个文件:代码、handoff、records、verification.json、两张总览图与 hel-798 静图参考),未随本目录入库;其与本目录续作差异见 HEL-811 审核记录。
|
||||
|
||||
## 文件清单与 SHA256
|
||||
|
||||
- `prototypes/hel-799/README.md` `8269d688ffbda2dd34608778204f5074079c254dbf69072e7a2fe78e793f3093`
|
||||
- `prototypes/hel-799/build.ps1` `8a5d8cba2c60eb0b4999a482635c317cf8f1df54bb295eb5fca4b5f9464b43a1`
|
||||
- `prototypes/hel-799/handoff-hel-799.json` `812d4eab8f1b4f57b8378ff0a1f810e8b2dce5342cbfc686cf430c03bd2e1452`
|
||||
- `prototypes/hel-799/index.html` `826bfc045d941c2114b16a198626ca952ff3d95dff02cfc6e32ee09858bcf80e`
|
||||
- `prototypes/hel-799/records/comment-evidence-shared-space-20261023.json` `e56299db726e64fbeea9e07d352066ef2b578889cc9a33cf1789e3234862130d`
|
||||
- `prototypes/hel-799/records/shared-space-static-acceptance-20261023.md` `9aec04ab40e40ce275c75104f004cd3d1473ff8fbef428767afbbe5fafd09cb9`
|
||||
- `prototypes/hel-799/reference/hel-798-static/assets/her-room.jpg` `51ca450a454c108d304feee2745070fbbbd3232863096126badf279ee53a925a`
|
||||
- `prototypes/hel-799/reference/hel-798-static/assets/her-talk.jpg` `0b9e91b58d75afb836efdad3d8e8f0aab0c44df64b2c4ddd59d011fd499aeb33`
|
||||
- `prototypes/hel-799/reference/hel-798-static/hel-798-compare-pr8.png` `6ec7b3d454af4404eafb0b0fa86c17baa10e6aa622456c2ef8689d9011bec764`
|
||||
- `prototypes/hel-799/reference/hel-798-static/hel-798-face-to-face-annotated.png` `8d5092b722d653d0217ed758635d0be61b70a5ebdc79da449a280a8bed43d52d`
|
||||
- `prototypes/hel-799/reference/hel-798-static/hel-798-face-to-face-moon.png` `a8619a1ff459ec1d28ec192104c851f6dee079c7b6056c1a927842591861a56a`
|
||||
- `prototypes/hel-799/reference/hel-798-static/index.html` `8ee3fba1e62409f06d0ee8b42cee735a1d5eb64965ea3a027b997352bcce3d7c`
|
||||
- `prototypes/hel-799/src/ambient.js` `6a9b5edf204364a31e855fa3554643715b91d1b2ef88175a0bc2be2cb0792e27`
|
||||
- `prototypes/hel-799/src/room.css` `a3daf8ac189969e8dab1de8f8139bf6fc2426b5c15d14d332f40532b3fe50515`
|
||||
- `prototypes/hel-799/src/scene.js` `d51302195996d6ec75c2044dfa01ec81ad2f17b11676f143ede965f0d282e2f6`
|
||||
- `prototypes/hel-799/src/shell.html` `53b468896e6b8d722fc8ded1d7a3f83b8f8e6ab0b027d7d0b0a2ba4bec70b292`
|
||||
- `prototypes/hel-799/src/talk.js` `55af813358f83c5e0f99948056489b4387138c1464c51bafaa1359ec6072f73a`
|
||||
- `prototypes/hel-799/tools/cdp.ps1` `e7b872ee6915bbfd4c6bb528c7b5593f25e60bde0bc66c79f3c63f0efddd22fb`
|
||||
- `prototypes/hel-799/tools/contact.ps1` `f91761ec80dc44d1746238667da47df291f43f7bb14d6137002d73777612fd0c`
|
||||
- `prototypes/hel-799/tools/record.ps1` `b6ed8344b125e739664c2a31b735d18238577f5d591ec9ad3e011bb20be99d37`
|
||||
- `prototypes/hel-799/tools/snap.ps1` `ecb8dc017bfcb3883942ac7b01e160037c8261749ddc5759b4048d85ad6020e6`
|
||||
- `prototypes/hel-799/tools/strip.ps1` `fe37c21270feeb64f810aef8f6aead21bdc3b79fc57ed99cff8435e35896817d`
|
||||
- `prototypes/hel-799/tools/verify.ps1` `796739f6d079cc500d6221a6155cc1fb4545f246c3cb753007b8d4b0b969d557`
|
||||
@@ -1,161 +0,0 @@
|
||||
# 对坐 · HEL-799 共同空间动态小样
|
||||
|
||||
视觉总监亲自设计并编写。直接用浏览器打开 `index.html` 即可:两张参考静帧、样式和脚本都已内嵌,不用安装,也不联网。这是独立小样,没有接入产品入口,也不替换正式界面。
|
||||
|
||||
基准:白栖知在主卡 HEL-797 评论 `01a1668f-5810-7524-b72f-33574a32c7d6` 中认可的 HEL-798 交流静图 `hel-798-face-to-face-moon.png`(1600×1000,SHA256 `a8619a1ff459ec1d28ec192104c851f6dee079c7b6056c1a927842591861a56a`)。原图及其 HTML/Canvas 源码原样保存在 `reference/hel-798-static/`。
|
||||
|
||||
人物仍是两张获批参考静帧,界面上标为「人物为参考静帧」。走近她的过程是镜头在两张照片之间对齐她的脸后推近,不是人物视频:她不会眨眼、呼吸、抬头或说话,也没有口型。文字、生活、回忆和天气都是虚构示例。小样没有连接模型、麦克风、摄像头、生活、天气或备份服务。
|
||||
|
||||
## 一句话方向
|
||||
|
||||
雨夜里,你坐在自己的小桌旁,她在窗边那张沙发上做她自己的事。想说话时,房间向你靠近,她就坐在桌子对面;说完,房间舒展开,她回到自己的事里。
|
||||
|
||||
> 相处画面用的仍是旧参考静帧,静帧里她在看书——这只示意你们在同一间房里的位置。用户已否定以阅读作为默认日常(主卡 01a166aa),按时段、天气、穿搭准备的新日常素材尚未生成;小样里的界面文字已不再写“看书”。
|
||||
|
||||
## 怎样试
|
||||
|
||||
1. **相处(此刻)**:先停留十几秒,不要操作。窗外的雨在落,城市的灯一盏盏亮灭,水珠沿玻璃滑下,月光下有薄云掠过。她身边和你桌上的烛光在跳,你的茶在冒热气,灯下有细小的光尘。电脑上移动鼠标,远处的房间和你面前的桌子会朝相反方向轻微移动。
|
||||
2. **走近她**:点她本人,或点「和她说话」。镜头从房间推到桌前:她从远处的沙发一路变近,近景从她脸部周围柔和地展开,直到成为获认可的交流画面;你面前的桌沿、茶杯和烛灯一直都在。全程是同一个人、同一身衣服、同一间房。
|
||||
3. **退回原处**:点右上「结束交谈」或底部「此刻」,镜头沿原路拉回。中途随时可以反向点击,镜头会从当前位置转向,不会跳回起点或闪黑。键盘 Esc 立刻回到相处画面(不播放过渡)。
|
||||
4. **交流**:保留 PR#8 已验证的阅读方式。回复默认自动一句接一句呈现,一直读到最后一句,中间不用点击。屏幕上只保留上一句(变淡、与身份同行)和当前一句。计数下的细线表示这句还会停留多久,鼠标停在文字上会先停住计时。「暂停」后可用 ‹ › 或键盘 ← → 回看,会出现「回到读到的地方 · 后面还有 N 句」;「全文」看整段;输入框左侧的按钮打开完整记录。发送新消息会自动恢复呈现,「停止回复」保留已出现的内容并标为未完成。
|
||||
5. **完整记录、全文**:从左侧展开,她留在桌对面不动;关闭后回到刚才那一句。**日子、设置**:房间退回远景并暗下来,浮层从下方升起;生活条目可进入详情,再「看那时说的话」。设置里的关系、城市、外观、备份、语音与视觉观察、空间与显示都能打开对应的演示或说明。
|
||||
6. **月光 ⇄ 雾光**:右上切换。布局和操作位置不变,窗外天色、房间色调、云或雾、雨和灯光颜色、桌面反光、茶杯与浮层材质约 1 秒内过渡。月光有月亮和冷蓝夜色;雾光没有月亮,窗外有缓慢折叠的紫粉雾带,整体偏紫。
|
||||
7. **手机**:同一文件。相处时她在上方的窗边,文字和入口在下方;交流时她的脸在上部,对话、输入框和导航在下方,彼此不遮挡。键盘弹出(可视高度变小)时先收上一句,正在输入时导航让开。
|
||||
8. 右上「独立小样 · 演示数据」里有长回复、连续两段话、生成中与停止、初次创建与长名字等试用片段。
|
||||
|
||||
可用的地址参数(评审和录屏用):`?theme=fog`、`?mode=talk`、`?scene=long`、`?tier=0|1|2`;候选与导出:`?frame=media`(手机 4:5 容器候选)、`?clean=1`(无界面)、`&fore=0`(去前景与暗角)、`&fit=height`(16:9 母版取景)。
|
||||
|
||||
## 2026-10-23 续作:恢复、候选取景与母版
|
||||
|
||||
原运行 `01a16691-b121-725d-a2e3-8d1f0ce57c02` 因会话额度中断,未交付。本轮由同一作者在原配置下恢复:先把原目录 `hel-799-8d1f0ce57c02/workdir/proto/prototypes/hel-799/` 整体打包保全(`hel-799-original-run-8d1f0ce57c02.zip`,随本卡附件交付,未删改原目录),再在副本上续作。原稿的 CSS 夜色层顺序修正保留。`evidence/` 根目录与 `evidence/media-candidate/` 下的截图、录屏和 `verification.json` 由本轮构建重新生成;上一构建(仍写“看书”文案)的总览图、过渡帧和录屏移到 `evidence/previous-build-20261022/`,只作历史对照。
|
||||
|
||||
### 本轮改动
|
||||
|
||||
1. **去掉“看书”作为日常的文字**:顶部状态、此刻标题、演示对话里的“这一页我念给你听”“读到……”改成不指向阅读的说法;参考说明改为「人物为旧参考静帧 · 不代表新日常」。交流态示例句因此与获认可静图的示例文字不同(静图只认可画面,不认可演示文案)。
|
||||
2. **手机 4:5 媒体容器候选**(`?frame=media`,默认关闭):按 HEL-802 v2 §2.3 实现,见下表。桌面不受影响。
|
||||
3. **无界面母版导出**(`?clean=1`,可加 `fore=0`、`fit=height`),见“母版与前景分工”。
|
||||
|
||||
### 手机 4:5 媒体容器:实际 DOM 与 HEL-802 v2 公式对照
|
||||
|
||||
规则:容器高 `H = min(1.25·宽, max(宽, 可视高 − 240), 可视高 − 56)`(后一项即键盘态的“可视高减输入条”),cover,底部 12% 渐隐到页面底色,容器本身不随镜头缩放,手机不画前景桌杯。数据来自无头 Edge 实测(`evidence/media-candidate/`)。
|
||||
|
||||
| 视口 | 容器 公式 → 实测 | 她的脸中心 公式 → 实测 | 对话/输入实测位置 | 差异与原因 |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| 390×844 | 390×487.5 → 390×487.5 | (178,146) → (170,157) | 当前句 619–698,输入 736–784,导航 790–838;对话区从 566 起,在容器下方 | 公式按 16:9 源(s=0.4514,可见 45%);小样用的是 16:10 获认可构图(s=0.4875,可见 50%),且该图脸在 y=0.315 而非 0.30,故偏 8/11px。相处态“此刻”文字从 462 起,压进容器底部渐隐带 26px,未压到人物 |
|
||||
| 320×568 | 320×328 → 320×328 | (148,98) → (143,105) | 当前句 359–432,输入 466–514,导航 518–562 | 同上;此高度触发紧凑排版(隐藏上一句),对话与容器不重叠,但整体偏挤,与 HEL-802 预判一致 |
|
||||
| 390×430 键盘 | 390×374 → 390×374 | (182,112) → (176,120) | 最近回复 294–342 盖在容器底部 80px(公式 88px),输入 376–424,导航让开 | 回复只压在开衫上,脸与下巴不被遮 |
|
||||
| 1600×1000 | 不启用 | (856,321) 与默认一致 | — | 候选只作用于 ≤720px |
|
||||
|
||||
**用现有静帧放进候选容器时暴露的问题(须用新素材解决,不能靠界面遮):** 获认可构图底部约 20%(y≥0.80)原本被页面绘制的桌沿挡住,里面是旧素材的书和深色居家裤。手机候选容器不画前景、整高可见,这一块落在容器底部(约 390–463px),一部分在渐隐带外仍看得见;推近途中两张静帧交叉时也能看到远景静帧的书和腿。HEL-802 v2 已要求近景 CT 的 y≥0.78 只出现衣服和沙发、不出现手部动作,新母版按此生成即可消除;现阶段如实保留,不另加遮挡。
|
||||
|
||||
**仍待验证**:真实视频放入容器后的推近是否保持人物中线(HEL-802 §2.4 的 ±0.03 门槛)、真机键盘弹出时容器 240ms 收缩的观感、渐隐带与真实视频暗部的衔接。用户未认可手机候选外观,默认仍是原整屏版本。
|
||||
|
||||
### 母版与前景分工
|
||||
|
||||
`masters/` 下为无界面母版(月光与雾光两套):
|
||||
|
||||
| 文件 | 内容 | 用途 |
|
||||
| --- | --- | --- |
|
||||
| `talk-*-1600x1000-with-foreground.png` | 获认可构图:照片+夜色叠层+月亮+窗内雨+灯光+页面桌沿/茶杯/近处烛灯+暗角,去掉全部界面 | 与获认可静图对照、给生成工具看“目标氛围”,**不作为视频首尾帧** |
|
||||
| `talk-*-1600x1000-plate.png` | 同上但去掉桌沿、茶杯、近处烛灯和暗角 | 16:10 路线的视频底板参考 |
|
||||
| `talk-*-1920x1080-plate-16x9-candidate.png` | 按高度铺满、左右各外延,原构图约占中间 90%(因原图右侧只多 74px,构图整体右移约 16px:x16:9 ≈ 0.058 + 0.9·x16:10);脸中心实测 (0.540, 0.317),HEL-802 v2 写 (0.54, 0.30) | 16:9 路线候选,**新取景待核对**,未裁脸、未拉伸 |
|
||||
| `room-moon-1600x1000-plate-reference-only.png` | 相处远景静帧 | 只作空间参考;相处远景未获认可,不是必备母版 |
|
||||
|
||||
分工(与 HEL-802 v2 §2.6 一致,均为候选):
|
||||
|
||||
- **烘焙进视频**:她、房间、窗外城市、窗内的雨、月亮(月光组)、她那一侧的落地灯和花旁小烛光、时段光线。
|
||||
- **页面另绘**:你这一侧的桌沿、茶杯与热气、近处烛灯、暗角、主题浮层。页面现有的窗内雨和月亮在接入真实视频后关闭,以视频里的天气为准,避免重复。
|
||||
- 前景只在镜头静止的近景交谈态淡入,运镜时不出现;手机候选不画前景。
|
||||
|
||||
**这些母版都不能直接拿去当最终首尾帧**:人物仍是旧参考素材(黄昏调原图经页面调成夜色、手里有书、穿居家裤),而 HEL-802 v2 的夜间造型是奶白开衫配百褶短裙和过膝袜、y≥0.78 不出现手。它们的作用是钉住构图、光色和脸的位置;正式 S/T 母版需按 HEL-802 v2 重新生成。原始 `her-talk.jpg`(1600×900 黄昏无字)仍只适合做人物稳定性试片。
|
||||
|
||||
## 与 HEL-798 静图、PR#8 的关系
|
||||
|
||||
| 项目 | 做法 |
|
||||
| --- | --- |
|
||||
| 交流状态 | 1600×1000 下与获认可静图使用同一张人物素材、同一组夜色叠层(月亮、雨、光束、灯光)和同一套桌沿、茶杯、烛灯绘制代码,对照见 `evidence/compare-approved-vs-talk.png`。差别:雨、灯、热气、光尘现在会动;文字区多了一行很轻的阅读控制(暂停、回看、计数、全文),所以当前句比静图高约 30px;短句会并成一行,与静图一致。 |
|
||||
| 相处状态(新增,待验收) | 同一间房的远景(第二张获批静帧),按静图的夜色重新调色,窗外同样下雨、有月亮。前景仍是你这一侧的桌沿、茶杯和烛灯,只是略低一些。左侧放「此刻」的状态和入口。她不在任何框里,房间铺满屏幕四边。 |
|
||||
| 过渡(新增,待验收) | 不是两张图硬切,也不是把人物框放大:两张静帧按她的脸对齐(脸的大小差约 3.04 倍),镜头在两者之间连续推近,近景从她脸部周围以柔和边缘展开,画面边缘一起变柔。月亮作为远处的物体,比房间移动得少,在两扇窗之间交接。 |
|
||||
| PR#8 保留的部分 | 两套主题 token、阅读节奏和所有阅读控制、身份标记、记录与全文、未分享不显示、初次创建与起名、语音界面演示、键盘即时规则(HEL-795)、减少动效和低档设备降级。 |
|
||||
| PR#8 去掉的部分 | 拱形人物窗与它的几何动画、Canvas 抽象光雾背景。空间改由房间本身承担。 |
|
||||
|
||||
## 视觉规范(施工依据)
|
||||
|
||||
**配色 Token**(两套主题结构相同;与 PR#8 相同的不再重复列出)
|
||||
|
||||
| Token | 靛蓝月光 | 蓝紫雾光 | 用途 |
|
||||
| --- | --- | --- | --- |
|
||||
| `--accent` | `#a9dcff` | `#ebbcff` | 关键操作、选中、她的身份点 |
|
||||
| `--text-1/2/3` | `#eef2ff / #b9c6e6 / #94a5c8` | `#f6efff / #dccbee / #bba7d6` | 正文/次要/说明 |
|
||||
| `--glass` / `--glass-read` | `#16244e66` / `#0b1534c4` | `#36226666` / `#211444c8` | 轻浮层/阅读浮层 |
|
||||
| `--input-a/b/c` | `#16244e70 → #1c264c70 → #3a2c3a60` | `#3a245e70 → #3a265470 → #5a2c5260` | 输入框横向渐变(静图原样) |
|
||||
| `--pool` | `#050918` | `#0e0820` | 文字背后的暗池与字影 |
|
||||
| 房间夜色(multiply) | `#16225c → #2a3a8a` | `#2c1f5e → #4a3a8a` | 远景调色;她和灯的位置保留原暖色 |
|
||||
| 窗外天色(color) | `#24357c` | `#5a3a92` | 只染窗和天空 |
|
||||
| 雨色 | `rgb(190,210,255)` | `rgb(228,204,255)` | 1 秒混色 |
|
||||
| 桌面 | `#3b2c30 → #221a24 → #0b0a14` | `#3a2a3e → #231a30 → #0e0a18` | 你这一侧的桌子 |
|
||||
|
||||
**字体**:PingFang SC / HarmonyOS Sans SC / MiSans / 微软雅黑。
|
||||
|
||||
| 场景 | 电脑 | 手机 | 键盘弹出 |
|
||||
| --- | --- | --- | --- |
|
||||
| 她的当前句 | 23px / 350 / 行高 1.5 | 18px | 16px |
|
||||
| 你的当前句 | 20px / 300 | 16px | 16px |
|
||||
| 上一句(与身份同行) | 15px / 300,透明度 .6,单行省略 | 13px | 隐藏 |
|
||||
| 身份标签 | 12px,字距 .08em | 12px | 12px |
|
||||
| 名字(顶部) | 22px / 400 | 16px | 16px |
|
||||
| 此刻标题 | 30px / 300 | 22px(矮屏 19px) | 18px |
|
||||
|
||||
**身份**:她的话前面是实心发光点和她的名字;你的话前面是空心圆圈和「你」。完整记录使用同样的标记。
|
||||
|
||||
**动效**:曲线沿用 PR#8:进入和停稳 `cubic-bezier(.22,1,.36,1)`;空间移动 `cubic-bezier(.65,0,.25,1)`;镜头本身用临界阻尼弹簧。
|
||||
|
||||
| 动效 | 触发 | 时长与方式 | 能否打断 |
|
||||
| --- | --- | --- | --- |
|
||||
| 镜头走近/退回 | 点她、和她说话、结束交谈、此刻、交谈 | 临界阻尼弹簧 ω=7.2,约 0.85 秒停稳;缩放在对数空间插值,她的脸在屏幕上走直线 | 是,保留当前速度转向 |
|
||||
| 近景展开 | 随镜头 | 走到 8%–45% 时近景淡入;以她的脸为圆心、半径 150→1600px、羽化 520px 展开;画面边缘羽化 260px,在 70%–98.5% 收为 0,到终点去掉遮罩 | 是 |
|
||||
| 月亮交接 | 随镜头 | 20%–80% 之间从远景窗移到近景窗,位移小于房间 | 是 |
|
||||
| 你的桌子 | 模式切换 | 850ms:相处时下移 3.5vh,交流时归位,浮层打开时下移 7vh 并变暗 | 是 |
|
||||
| 此刻文字 | 离开/回来 | 离开 220ms 淡出加模糊;回来延迟 240ms,360–520ms 淡入 | 是 |
|
||||
| 交流区 | 进入/离开 | 进入延迟 300ms,520–620ms;离开 220–420ms | 是 |
|
||||
| 结束交谈按钮 | 进入交流 | 420ms,延迟 200ms | — |
|
||||
| 新句、换句、逐字 | 自动或点击 | 与 PR#8 相同:680ms 进入;固定字号的两份副本交叉 520/620ms;逐字错开 14ms,最多 48 字 | 是 |
|
||||
| 浮层 | 打开/关闭 | 460ms/240ms,从下方升起并由模糊变清晰 | 是 |
|
||||
| 导航亮块 | 切换 | 460ms,只移动 transform | 是 |
|
||||
| 按钮反馈 | 按下 | 160ms,缩放 .97 | 是 |
|
||||
| **键盘** | Esc 退出交流或关闭浮层;← / → 回看、前进 | **0ms**:镜头、文字、界面直接到目标状态,不重播逐字;进行中的有限动画直接跳到终点 | — |
|
||||
| 主题 | 切换 | 房间调色 0.9s,雨色、月亮 1s,界面 0.6s | 是 |
|
||||
| 环境循环 | 一直运行 | 雨每秒 520–940px;城市灯慢闪;水珠下滑;云/雾 34s、47s;灯光呼吸 9s;烛光 2.8–3.2s 跳动;热气 7s、9s;光尘 17–24s | 页面隐藏时暂停 |
|
||||
| 指针视差 | 鼠标移动(仅精确指针) | 远景 ±16/10px,桌面反向 ±22/10px,1.4s/0.85s 缓出 | 是 |
|
||||
|
||||
**断点**
|
||||
|
||||
- **电脑(>1100px)**:相处时「此刻」在左侧约 6.5vw,她在右侧窗边;交流时她居中,对话落在桌沿上方,输入框宽 640px,导航贴底。
|
||||
- **720–1100px**:隐藏天气和右下说明。
|
||||
- **手机(≤720px)**:相处时她在上方,「此刻」文字和入口在下方;交流时她的脸在上部 27% 处,对话、输入框、导航在下方;结束交谈只留图标。宽度 ≤360px 时,演示标签缩成「演示」。
|
||||
- **可视高度 <610px**(键盘或横屏):隐藏上一句和顶部说明,正在输入时导航让开。**<420px**:再隐藏计数和「全文」,入口仍在记录中。
|
||||
|
||||
**性能与降级**
|
||||
|
||||
- 每帧只改两张静帧的 transform、近景的透明度和走近途中的遮罩。照片只随镜头整体等比缩放、平移,不做局部变形,也不单独做呼吸、眨眼、抬头之类的动画。远景、近景、月亮各自合成。
|
||||
- 雨只在两扇窗的玻璃范围内绘制;看不见的那张静帧不绘制雨。桌面、茶杯、烛灯按视口尺寸只在尺寸变化或换档时重画。
|
||||
- 自动降档:镜头静止时,最近 120 帧平均帧间隔超过 26ms 就降一档。档 1:雨降为半分辨率,桌面画布按 1 倍像素。档 2:走近时不用逐帧遮罩,改为两张静帧直接交叉淡化;去掉毛玻璃、光尘和雾带;雨约 30fps。
|
||||
- 系统「减少动态效果」或设置里的「减少动效」:镜头不推近,两张静帧原位 200ms 交叉淡化;雨停在一帧;环境循环、视差和逐字都关闭。
|
||||
- 页面隐藏时,绘制和 CSS 动画暂停。
|
||||
- 本机只有无头 Edge 软件光栅:走近过程中实测约 16–22fps(evidence 里的录屏同样来自软件光栅)。**真实 GPU 帧率未测**,不据此推断真机表现。
|
||||
|
||||
## 复现
|
||||
|
||||
```powershell
|
||||
powershell -File prototypes/hel-799/build.ps1 # 生成 index.html(只需 PowerShell 5.1)
|
||||
powershell -File prototypes/hel-799/tools/verify.ps1 # 行为检查,写入 evidence/verification.json
|
||||
```
|
||||
|
||||
`build.ps1` 读取 `src/` 下的 `shell.html`、`room.css`、`ambient.js`(雨、窗、桌)、`scene.js`(镜头)、`talk.js`(对话、浮层、模式),以及仓库 `web/public/assets/` 里的两张获批静帧。`tools/` 是本次在 Windows 上实际使用的无头 Edge 驱动:`cdp.ps1`(沿用 PR#8)、`snap.ps1` 截图、`verify.ps1` 行为检查、`record.ps1` 录屏、`contact.ps1` 录屏抽帧、`strip.ps1` 拼图。没有新增产品依赖。
|
||||
|
||||
## 验证范围与未验证项
|
||||
|
||||
- 已实测(无头 Edge,Chromium 内核):电脑 1600×1000、1440×900、1280×720;手机等效视口 390×844、360×740、320×568;键盘等效 390×430;两套主题;系统减少动效;强制档 2。结果见 `evidence/verification.json` 和截图、录屏。
|
||||
- **未验证**:真机软键盘、iOS Safari 和 Safari 桌面版、Firefox、真实 GPU 帧率、低端手机。等效视口不能代替真机验收。`mask-composite` 在旧版 Safari 上可能退化为只有圆形展开、没有边缘羽化。
|
||||
- 回复是逐句模拟生成的,不是真实 SSE。
|
||||
- 相处构图、走近与退回的过渡、雾光主题和手机版都还没有经过白栖知验收;本次认可只针对 HEL-798 那张月光交流静图。
|
||||
@@ -1,17 +0,0 @@
|
||||
# Builds the single offline index.html (Windows PowerShell 5.1; no Python or Node needed).
|
||||
# Inputs: src/shell.html, src/room.css, src/ambient.js, src/scene.js, src/talk.js and the two approved stills in web/public/assets.
|
||||
$root = $PSScriptRoot
|
||||
$src = Join-Path $root 'src'
|
||||
$utf8 = New-Object System.Text.UTF8Encoding($false)
|
||||
$read = { param($p) [System.IO.File]::ReadAllText((Join-Path $src $p), $utf8) }
|
||||
$html = & $read 'shell.html'
|
||||
$html = $html.Replace('{{STYLE}}', (& $read 'room.css'))
|
||||
$html = $html.Replace('{{SCRIPT}}', (& $read 'ambient.js') + "`n" + (& $read 'scene.js') + "`n" + (& $read 'talk.js'))
|
||||
$assets = Join-Path (Split-Path (Split-Path $root)) 'web\public\assets'
|
||||
foreach ($pair in @(@('ROOM', 'her-room.jpg'), @('TALK', 'her-talk.jpg'))) {
|
||||
$b64 = [Convert]::ToBase64String([System.IO.File]::ReadAllBytes((Join-Path $assets $pair[1])))
|
||||
$html = $html.Replace('{{' + $pair[0] + '}}', 'data:image/jpeg;base64,' + $b64)
|
||||
}
|
||||
if ($html.Contains('{{')) { throw 'Unreplaced placeholder' }
|
||||
[System.IO.File]::WriteAllText((Join-Path $root 'index.html'), $html, $utf8)
|
||||
"Built offline index.html ($($utf8.GetByteCount($html)) bytes)"
|
||||
@@ -1,61 +0,0 @@
|
||||
{
|
||||
"task": "HEL-799 视觉总监沿获认可的 HEL-798 交流静图,做共同空间(相处 ⇄ 交流)可操作动态小样;2026-10-23 中断恢复续作:保全原稿、去掉阅读日常文案、实现并实测 HEL-802 v2 手机 4:5 媒体容器候选、导出无界面母版与前景分工",
|
||||
"baseline_version": "1.8",
|
||||
"read_commit": "3a986726d8593e0ed2274f79db6cc5d807d2ebf0",
|
||||
"read_notes": [
|
||||
"原运行(01a16691-b121-725d-a2e3-8d1f0ce57c02)经 Gitea API 核对 main = 3a986726d8593e0ed2274f79db6cc5d807d2ebf0(v1.8,59 项),下载该提交归档并完整读取 AGENTS.md、docs/requirements/README.md、current.md、coverage.md、changes.md、source-manifest.json、task-handoff-template.md、scripts/check_requirements.py 及 sources/visual-confirmation-v2.md、design-acceptance-v1.md、comment-evidence-visual-role-20261022.json。",
|
||||
"本轮(恢复运行)未能独立复核 main:本机无 git,Gitea API 匿名访问返回 404。以总管在本卡写明的 origin/main 3a986726 为准,本轮未见到更新提交的证据;需总管入库时机械复核。",
|
||||
"本轮读取:本卡最新描述(恢复交接、HEL-800 素材核对、母版与镜头约束、原完整验收);附件 HEL-802 v2 HTML(§1–§3 全文、§2.3 容器公式与 §2.6 前景分工)、handoff-HEL-802-v2-manager-check.json、HEL-803 v2 衔接规格全文。用户最新原话来源 01a166aa(否定阅读试片、按时段/天气/穿搭准备完整素材)、01a166ad(基于前端给视频参数)、01a16699(效果取决于实际生成结果、未选远景路线)按本卡与 HEL-803 v2 记录引用。",
|
||||
"PR#8 仍未合并,head 21170f9fc9ab4666c4e9016ea80a1fabdd1f76aa;阅读逻辑、主题 token 与 HEL-795 键盘即时规则沿用其 prototypes/hel-793/src。"
|
||||
],
|
||||
"requirement_ids": ["CG-002", "CG-003", "CG-004", "CG-008", "CG-017", "CG-018", "CG-023", "CG-024", "CG-025", "CG-026", "CG-028", "CG-029", "CG-030", "CG-031", "VIS-001", "VIS-002", "VIS-003", "VIS-004", "VIS-005", "VIS-006", "VIS-007", "VIS-008", "VIS-009", "VIS-010", "VIS-011", "VIS-012", "VIS-013", "UX-001", "UX-002", "UX-003", "UX-005", "UX-006", "AM-001", "AM-002", "AM-003", "GOV-001", "GOV-002", "GOV-003", "GOV-004", "GOV-005", "DEL-001"],
|
||||
"deliverable": "独立目录 prototypes/hel-799/(视觉总监亲自设计并编写,未改正式产品、main、PR#4/#6/#8 或需求基准文件):离线单文件 index.html;源码 src/shell.html、room.css、ambient.js、scene.js、talk.js;build.ps1;tools/ 无头 Edge 截图、行为检查、录屏、抽帧与拼图脚本;README.md(方向、token、字体、动效表、断点、性能降级、验证范围,新增“2026-10-23 续作”:手机 4:5 容器候选的 DOM 与公式对照、母版与前景分工);evidence/(重新生成的截图、verification.json 29 项、walkthrough-desktop-v2.webm 及抽帧)与 evidence/media-candidate/(候选容器 390×844、320×568、390×430 键盘态截图、进出与 Esc 检查、录屏);masters/ 无界面母版 7 张(月光/雾光 × 含前景对照/无前景底板 1600×1000、16:9 1920×1080 候选底板、相处远景仅参考);reference/hel-798-static/ 获认可静图与其 HTML/Canvas 源码原样;records/ 用户原话来源与交流静态视觉基准更新记录。另附原运行目录完整打包 hel-799-original-run-8d1f0ce57c02.zip(保全原稿与原证据,未删改原目录)。",
|
||||
"acceptance": [
|
||||
"交流状态:1600×1000 下与获认可静图同素材、同夜色叠层、同一套桌沿/茶杯/烛灯绘制,环境铺满四边、无独立人物框,对话落在视线下方,底部保留输入与四个导航(evidence/compare-approved-vs-talk.png 为原运行生成;本轮 desktop-talk-moon.png 重新生成)。演示句已改为不指向阅读,静图认可只针对画面。",
|
||||
"相处状态(待用户验收):同一间房远景静帧调成同一雨夜,前景仍是你这一侧的桌沿、茶杯和烛灯;界面文案改为“她在窗边,雨声不大”,参考说明标“人物为旧参考静帧 · 不代表新日常”。静帧里的看书姿态只示意空间,不代表新日常。",
|
||||
"往返与快速开关:点她/和她说话/交谈进入,结束交谈/此刻退回;两张静帧按她的脸对齐由一台临界阻尼镜头连续推拉,中途反向点击从当前位置转向,不跳回、不闪黑(verification: click-enter-*、enter-no-jump-no-black-frame、rapid-toggle-redirects-smoothly 均 PASS)。",
|
||||
"键盘即时:Esc、←/→ 在 80ms 内到达目标、有限动画 0 个、不重播逐字(HEL-795 规则);候选容器模式下 Esc 同样 80ms 内回到相处、有限动画 0。",
|
||||
"照片不变形:两张静帧只随镜头整体等比缩放和平移,不用缩放冒充眨眼、呼吸、抬头或口型(photos-never-warped-or-animated PASS)。",
|
||||
"交流能力沿用 PR#8:长回复自动续读到最后、全文与原文一致、暂停/回看/回到进度、发送恢复自动、身份标记、停止保留已生成内容并标未完成、记录打开时她仍在桌对面且关闭回原句。",
|
||||
"功能入口:日子→生活详情→看那时说的话、设置→关系/备份/语音与视觉观察等均打开带“演示/尚未接入”标记的内容;语音只演示界面,未申请麦克风。",
|
||||
"两主题:月光与雾光切换后输入框、导航、对话区、结束按钮位置完全相同,房间、窗外、雨、桌面与材质不同(themes-keep-structure PASS)。",
|
||||
"布局:1600×1000、1440×900、1280×720、390×844、360×740、320×568、390×430 长回复流动全程无遮挡、长名字不溢出(no-overlap-* 7 项 PASS)。",
|
||||
"减少动效与降级:系统减少动效时原位约 200ms 交叉淡化、环境循环停止;强制档 2 无逐帧遮罩、无毛玻璃、雨半分辨率。",
|
||||
"手机 4:5 媒体容器候选(?frame=media,默认关闭):390×844 容器 390×487.5、320×568 为 320×328、390×430 键盘态 390×374,三者与 HEL-802 v2 公式一致;脸中心实测 (170,157)/(143,105)/(176,120),公式 (178,146)/(148,98)/(182,112),差异来自小样用 16:10 获认可构图而非 16:9 源;键盘态最近回复覆盖容器底部 80px(公式 88px),只压在开衫上;桌面不受影响。",
|
||||
"无界面母版:masters/ 下母版不含任何界面;含前景版与获认可构图对照,无前景底板与 16:9 候选底板用于视频取景参考;README 写明烘焙进视频与页面另绘的分工。",
|
||||
"行为检查 29/29 通过(evidence/verification.json,本轮构建重新运行)。"
|
||||
],
|
||||
"deferred": [
|
||||
"用户体验验收:相处构图、走近与退回的过渡、雾光主题、手机版(含 4:5 容器候选)、整体动态均未经白栖知验收;本次认可只针对 HEL-798 月光交流静图。认可前不替换正式界面(8300/8310),不合并 PR#4/#6/#8。",
|
||||
"现有静帧放进候选容器时暴露获认可构图底部(y≥0.80)原本被页面桌沿挡住的书和居家裤,推近途中也能看到远景静帧的书和腿;需按 HEL-802 v2 重新生成近景 CT(y≥0.78 只有衣服和沙发)与新造型母版,不靠界面遮挡。",
|
||||
"母版仍是旧参考人物(黄昏原图经页面调成夜色、手里有书、居家裤),只钉构图、光色与脸位置,不能当最终首尾帧;正式 S/T 母版、真实视频、同脸/循环/推拉中线(±0.03)与 LIVE 接管几何由主卡与首批小队制作承接(CG-030)。",
|
||||
"需求入库:records/ 中的来源与静态基准更新记录需总管放入 docs/requirements/sources/ 并更新 source-manifest;是否升版及 VIS-011 边界注明由总管按 records/shared-space-static-acceptance-20261023.md 核定。视觉总监未改 baseline/current/changes/coverage。",
|
||||
"工具:本运行时无 git 与 Python,未能运行 python3 scripts/check_requirements.py --base-ref origin/main、--handoff,也未能运行 git diff --check;已用 PowerShell 检查本 JSON 必填键、改动文本无行尾空白。须在入库环境补跑。",
|
||||
"未验证:真机软键盘与容器 240ms 收缩观感、iOS/macOS Safari(mask-composite 可能退化)、Firefox、真实 GPU 帧率与低端手机;本机为无头 Edge 软件光栅。页面隐藏暂停已实现但无头环境未实测。",
|
||||
"emil-skills 在本运行时不可用,未能查阅 animate/MAIN.md、review-animations/MAIN.md 与 STANDARDS.md;按本卡第 6 条明确约束执行。",
|
||||
"完整生活/回忆/创建/管理状态、R1 个性成长、R2–R7 真实接入由主卡 HEL-797 按获批依赖推进;小样通过不等于项目完成。"
|
||||
],
|
||||
"requirement_changes": [
|
||||
{
|
||||
"approval_comment_id": "01a1668f-5810-7524-b72f-33574a32c7d6",
|
||||
"approved_by": "e5c6c938-db48-4ff9-954f-4fb8b063a132",
|
||||
"quote": "静态效果我认可",
|
||||
"kind": "交流静态视觉基准的更新",
|
||||
"affected_ids": ["VIS-011"],
|
||||
"old": "VIS-011:人物平时作为空间中独立视窗;交流时自然放大。",
|
||||
"new": "交流状态(靛蓝月光、电脑 1600×1000)的获认可静态画面改为 HEL-798 共同空间样图:无独立人物框,环境连续到四边,前景桌沿/茶杯/烛灯,中间是她,远处雨夜窗景,对话在近处视线下方。",
|
||||
"scope": "仅交流状态静图。相处状态、过渡与动态、雾光、手机、真实人物动态和完整功能仍待验收;不永久取消 VIS-011 在其他状态中的原规则,不把完整前端锁定为全屏卧室照片或视频(CG-031)。",
|
||||
"context_comment_ids": ["01a16650-0355-72c4-b291-f1b4494cde91", "01a16654-5fc5-74be-a704-99b76b48b0b1", "01a16655-fe53-73a5-905f-4c9e71a1ed30", "01a16659-fdfa-72ce-a4a5-801e0762c0a9"],
|
||||
"evidence_file": "prototypes/hel-799/records/comment-evidence-shared-space-20261023.json(入库时放入 docs/requirements/sources/)",
|
||||
"image_sha256": "a8619a1ff459ec1d28ec192104c851f6dee079c7b6056c1a927842591861a56a"
|
||||
}
|
||||
],
|
||||
"verification": [
|
||||
"build.ps1 本轮实际运行,生成离线 index.html(662,233 字节,无残留占位符)。",
|
||||
"evidence/verification.json:tools/verify.ps1 本轮在无头 Edge 用 CDP 真实鼠标、键盘事件执行 29 项检查,29/29 通过。",
|
||||
"evidence/media-candidate/:候选容器 390×844(月光/雾光、相处/交流)、320×568、390×430 键盘态截图,现行整屏 390 与键盘态对照截图,进出中途帧 m390-enter-mid.png;DOM 实测数字见 README 续作表;进入 200ms 时镜头 0.47、无黑帧,退出与 Esc 后有限动画 0。",
|
||||
"evidence/walkthrough-desktop-v2.webm(37 秒,1440×900)与 evidence/media-candidate/walkthrough-mobile-media-candidate.webm(37 秒,390×844)本轮录制,并各有抽帧拼图;录屏圆圈为点击位置标记,非小样内容。原运行录屏仍在原稿打包中。",
|
||||
"masters/ 7 张母版本轮导出(tier 0、无界面),逐张目视:含前景版与获认可构图一致;无前景底板与 16:9 底板露出书与居家裤(已列 deferred)。16:9 底板脸中心实测 (0.540, 0.317)。",
|
||||
"未运行 Python 需求检查与 git diff --check(见 deferred)。"
|
||||
]
|
||||
}
|
||||
@@ -1,42 +0,0 @@
|
||||
[
|
||||
{
|
||||
"id": "01a16650-0355-72c4-b291-f1b4494cde91",
|
||||
"author_type": "member",
|
||||
"author_id": "e5c6c938-db48-4ff9-954f-4fb8b063a132",
|
||||
"content": "主要是A和B,但是之前没注意到C的问题,你一说倒是有点",
|
||||
"created_at": "2026-10-23T01:11:22Z",
|
||||
"parent_id": "01a1664d-f242-71fa-a4ba-295b6c347478"
|
||||
},
|
||||
{
|
||||
"id": "01a16654-5fc5-74be-a704-99b76b48b0b1",
|
||||
"author_type": "member",
|
||||
"author_id": "e5c6c938-db48-4ff9-954f-4fb8b063a132",
|
||||
"content": "对就是B",
|
||||
"created_at": "2026-10-23T01:16:08Z",
|
||||
"parent_id": "01a1664d-f242-71fa-a4ba-295b6c347478"
|
||||
},
|
||||
{
|
||||
"id": "01a16655-fe53-73a5-905f-4c9e71a1ed30",
|
||||
"author_type": "member",
|
||||
"author_id": "e5c6c938-db48-4ff9-954f-4fb8b063a132",
|
||||
"content": "这个我不太能想象得到,我和她待在同一空间是什么概念",
|
||||
"created_at": "2026-10-23T01:17:54Z",
|
||||
"parent_id": "01a1664d-f242-71fa-a4ba-295b6c347478"
|
||||
},
|
||||
{
|
||||
"id": "01a16659-fdfa-72ce-a4a5-801e0762c0a9",
|
||||
"author_type": "member",
|
||||
"author_id": "e5c6c938-db48-4ff9-954f-4fb8b063a132",
|
||||
"content": "这个能否现在就做个样图让我看一下",
|
||||
"created_at": "2026-10-23T01:22:16Z",
|
||||
"parent_id": "01a1664d-f242-71fa-a4ba-295b6c347478"
|
||||
},
|
||||
{
|
||||
"id": "01a1668f-5810-7524-b72f-33574a32c7d6",
|
||||
"author_type": "member",
|
||||
"author_id": "e5c6c938-db48-4ff9-954f-4fb8b063a132",
|
||||
"content": "静态效果我认可",
|
||||
"created_at": "2026-10-23T02:20:32Z",
|
||||
"parent_id": null
|
||||
}
|
||||
]
|
||||
@@ -1,46 +0,0 @@
|
||||
## 交流静态视觉基准的更新(2026-10-23)
|
||||
|
||||
视觉总监在 HEL-799 整理,供总管入库核验。本记录只写明用户已经说过的话及其适用范围,不改动任何已有来源文件,也不改写 `current.md`、`baseline.json` 的现行条文。
|
||||
|
||||
### 用户原话(主卡 HEL-797,作者白栖知 `e5c6c938-db48-4ff9-954f-4fb8b063a132`)
|
||||
|
||||
原文逐字保存在同目录 `comment-evidence-shared-space-20261023.json`。
|
||||
|
||||
| 评论 | 时间(UTC) | 原话 | 回应的问题 |
|
||||
| --- | --- | --- | --- |
|
||||
| `01a16650-0355-72c4-b291-f1b4494cde91` | 2026-10-23 01:11 | 主要是A和B,但是之前没注意到C的问题,你一说倒是有点 | 总管问最妨碍沉浸的是哪种感觉:A 空间太空泛;B 和她有距离,像窗口里的照片;C 操作出戏 |
|
||||
| `01a16654-5fc5-74be-a704-99b76b48b0b1` | 01:16 | 对就是B | 总管问:她即使能眨眼、抬头、回应,但仍在人物窗口里,是否主要的不满意还在 |
|
||||
| `01a16655-fe53-73a5-905f-4c9e71a1ed30` | 01:17 | 这个我不太能想象得到,我和她待在同一空间是什么概念 | 总管问更接近「同一个空间」还是「通向她的世界」 |
|
||||
| `01a16659-fdfa-72ce-a4a5-801e0762c0a9` | 01:22 | 这个能否现在就做个样图让我看一下 | 总管用第一人称镜头解释「同一空间」后 |
|
||||
| `01a1668f-5810-7524-b72f-33574a32c7d6` | 02:20 | 静态效果我认可 | 总管交付 HEL-798 样图(评论 `01a16663-3ad2-727c-8888-e116eca13116`),问是否更像「自己坐在她面前」 |
|
||||
|
||||
问题原文由总管撰写,在主卡根线程 `01a1664d-f242-71fa-a4ba-295b6c347478` 内,不属于用户原话。
|
||||
|
||||
### 被认可的图
|
||||
|
||||
- 文件:`hel-798-face-to-face-moon.png`,1600×1000,SHA256 `a8619a1ff459ec1d28ec192104c851f6dee079c7b6056c1a927842591861a56a`。
|
||||
- 主卡附件 `01a16663-3a5a-76eb-ac3c-1ef93165617c`(随交付评论 `01a16663-3ad2-727c-8888-e116eca13116`);HEL-799 卡附件 `01a16691-b0f0-73a9-aae4-9aba2146899c`,两者字节相同。
|
||||
- 同一评论另附的标注图 `hel-798-face-to-face-annotated.png` 和新旧对照图 `hel-798-compare-pr8.png` 是说明材料。
|
||||
- 作者:视觉总监(HEL-798)。源码在 `prototypes/hel-799/reference/hel-798-static/`。
|
||||
|
||||
### 旧要求、新认可与适用范围
|
||||
|
||||
| | 内容 |
|
||||
| --- | --- |
|
||||
| 旧(VIS-011,v1.8 仍有效) | 「人物平时作为空间中独立视窗;交流时自然放大。已认可的人物位置、分量与首页文字分量沿用。」来源 `01a15f09-db1e-705c-8baf-cde63c7651fb`、`01a15f1f-5a71-783c-a458-b326a0073d69`。 |
|
||||
| 新认可 | **交流状态、靛蓝月光、电脑 1600×1000 的静态画面**:不再用独立人物框;她身边的环境连续铺到屏幕四边;前景有你这一侧的圆桌沿、茶杯和烛灯,中间是她,远处是雨夜窗景;当前一两句对话落在近处、视线下方,底部保留输入和此刻/交谈/日子/设置导航。 |
|
||||
| 适用范围 | 仅以上交流状态静图。用户认可的是「静态效果」。 |
|
||||
| 不在范围内(仍待验收) | 相处(平时)状态的构图;进入与退出交流的过渡和整体动态;蓝紫雾光主题;手机版;真实人物动态、眨眼、口型与语音;生活、回忆、创建、管理等完整功能的最终页面。 |
|
||||
| 不能推出的结论 | 不能据此永久取消 VIS-011 在全部状态中的原规则;不能把完整前端锁定为全屏卧室照片或视频(CG-031 继续有效);不能视为整套界面或任何功能已经验收。 |
|
||||
|
||||
### 对其他要求的影响
|
||||
|
||||
- VIS-001、VIS-002、VIS-006、VIS-013:这张图是「两人的数字空间」「空间深度」「交流以人物为主、当前一两句」的一种获认可呈现。
|
||||
- CG-004「交谈时允许自然切近」:图只证明切近后的静态画面,切近过程要在 HEL-799 动态小样中另行验收。
|
||||
- 其余已确认要求不变。
|
||||
|
||||
### 入库建议(由总管决定,视觉总监未改动正式基准)
|
||||
|
||||
1. 将 `comment-evidence-shared-space-20261023.json` 加入 `docs/requirements/sources/`,并在 `source-manifest.json` 追加它的 SHA256;历史来源不动。
|
||||
2. 如决定升版为 v1.9:在 `changes.json` / `changes.md` 追加一条,`approval_comment_id` 为 `01a1668f-5810-7524-b72f-33574a32c7d6`,`affected_ids` 至少含 `VIS-011`,摘要写「交流状态静态视觉基准更新为 HEL-798 共同空间样图」,影响写明上表的适用范围与不在范围内;VIS-011 的结论原文保留,只在边界中补一句「交流状态静图已按上述评论更新,平时状态、过渡、雾光、手机待验收」,`current.md` 与 `baseline.json` 同步;`coverage.json` 的版本跟着改。
|
||||
3. 入库后运行 `python3 scripts/check_requirements.py --base-ref origin/main` 及 `--handoff prototypes/hel-799/handoff-hel-799.json`。本运行环境没有 git 和 Python,这两项都未执行。
|
||||
|
Before Width: | Height: | Size: 217 KiB |
|
Before Width: | Height: | Size: 192 KiB |
|
Before Width: | Height: | Size: 850 KiB |
|
Before Width: | Height: | Size: 1.7 MiB |
|
Before Width: | Height: | Size: 1.7 MiB |