Commit c2ccac24c056221498df349fe444d94a6730c8cb
1 parent
b47e4364
docs: update implementation-gap-analysis.md's stale entries
This is a point-in-time snapshot doc (dated 2026-08-03) that's explicitly meant to be hand-edited in place as gaps close, not rewritten -- three entries had gone stale relative to work landed since: the Planner-output review gate (Phase 1, already done back in early August but never marked here), the Work Graph node execution deblackbox migration, and the new-Goal auto-dispatch scheduler loop. Updated each to ✅ and refreshed the "most worth watching" summary and the self-hosting task table row accordingly -- the still-open Deploy Supervisor poll_fn gap is called out explicitly as a *different*, still-unsolved closed loop so it doesn't get conflated with the now-solved scheduler entry point gap. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Showing
1 changed file
with
33 additions
and
22 deletions
docs/implementation-gap-analysis.md
| ... | ... | @@ -31,10 +31,16 @@ |
| 31 | 31 | |
| 32 | 32 | ## 2. "熄ç¯"å™äº‹æœ¬èº«ï¼šæ²¡æœ‰å¸¸é©»è°ƒåº¦å…¥å£ |
| 33 | 33 | |
| 34 | -`src/scheduler.py`(U-032)从未被 `backend_server.py` 或任何生产入å£è°ƒç”¨â€”—`backend_server.py` é‡Œåªæœ‰ä¸€å¥æ³¨ | |
| 35 | -释æåˆ°"调度器以åŽä¼šé•¿åœ¨è¿™é‡Œ"(grep ç¡®è®¤ï¼Œæ— å®žé™…è°ƒç”¨ï¼‰ã€‚ç³»ç»Ÿç›®å‰ä¸å˜åœ¨ä¸€ä¸ªçœŸæ£å¸¸é©»ã€è‡ªåŠ¨æ‰«æ `queued` 任务 | |
| 36 | -å¹¶æ´¾å‘的进程;æ¯ä¸€æ¬¡"è·‘èµ·æ¥"都是脚本/测试手动调用 `run_scheduler_once`/`run_goal_to_completion`。这和"Level | |
| 37 | -5 è‡ªä¸»ç ”å‘系统"çš„å™äº‹æœ‰å®žè´¨å·®è·â€”—机制都é½äº†ï¼Œä½†ç¼º"自己跑起æ¥"这一层。 | |
| 34 | +**✅ 已修å¤ï¼ˆ2026-08-13,FR-1 æ–° Goal 自动派å‘,`docs/done/scheduler-new-goal-dispatch-requirements.md`)**: | |
| 35 | +本节原è¯"系统目å‰ä¸å˜åœ¨ä¸€ä¸ªçœŸæ£å¸¸é©»ã€è‡ªåŠ¨æ‰«æ `queued` 任务并派å‘的进程"已䏿ˆç«‹â€”—`backend_server.py::main()` | |
| 36 | +现在有两æ¡ç‹¬ç«‹çš„常驻åŽå°çº¿ç¨‹ï¼šå·²å®žçŽ°çš„"在途任务å¤åŽŸ"(`task_reconciliation.py`,300 秒)和新增的"æ–° Goal | |
| 37 | +自动派å‘"(`src/new_goal_dispatch.py`,45 秒,`find_queued_tasks()`/`dispatch_once()`,é€ä¸ªå€™é€‰è°ƒç”¨ | |
| 38 | +`task_execution.start_task_execution_in_background()`ï¼‰ã€‚ä¸æ˜¯ç›´æŽ¥æŽ¥ `scheduler.run_scheduler_once()`(那个函数 | |
| 39 | +è¯ä¹‰æ˜¯"新建并跑完一批 Goal",跟"扫æå·²å˜åœ¨çš„ `queued` 任务"䏿˜¯åŒä¸€ä»¶äº‹ï¼Œæœ¬èŠ‚åŽŸæ–‡å’Œç¬¬ 6 节任务清å•é¡ºåº 6 | |
| 40 | +当åˆéƒ½æŠŠè¿™ä¸¤è€…混为一谈了)——实际实现绕开了 `run_scheduler_once()`,直接对已å˜åœ¨çš„ `queued` task 行派å‘ï¼Œæ›´è´´åˆ | |
| 41 | +çœŸå®žéœ€æ±‚ã€‚ç”¨æˆ·å·²æ˜Žç¡®æ‹æ¿ï¼šå®Œæ•´å¼€æ”¾ã€å¸¸é©»è½®è¯¢ï¼Œä¸æ˜¯ä¿å®ˆé»˜è®¤å…³é—。"自己跑起æ¥"这一层现在是真的有了,但è§"最值得 | |
| 42 | +关注的三æ¡":这åªè§£å†³äº†"新任务/å¡ä½ä»»åŠ¡æ€Žä¹ˆè‡ªåŠ¨å¯åЍ",ä¸ç‰äºŽ PH5 Deploy Supervisor çš„"自动å‘现待部署改动" | |
| 43 | +(`poll_fn`)也一并解决了——那是完全独立的å¦ä¸€ä¸ªé—çŽ¯ï¼Œä»æœªå®žçŽ°ï¼Œè§ä¸‹æ–¹ç¬¬ 1 节。 | |
| 38 | 44 | |
| 39 | 45 | ## 3. SDD 契约与实现之间已知的简化/åå·® |
| 40 | 46 | |
| ... | ... | @@ -72,18 +78,17 @@ |
| 72 | 78 | åœºæ™¯ä»æœªä¸“门测试过,ä¸ç®—完全清零。 |
| 73 | 79 | - `v_artifact_browser`(U-028)有æ„ä¸åš Markdown 渲染/代ç 高亮(02-V åŽŸåž‹æœŸæœ›æœ‰ï¼‰ï¼Œå› ä¸ºè¦é¿å…引入第一个å‰ç«¯ |
| 74 | 80 | 第三方库,判æ–为有æ„ç®€åŒ–è€Œéžæ¼åšã€‚ |
| 75 | -- **Coder 开始实现å‰ï¼ŒPlanner è‡ªå·±çš„äº§å‡ºä»Žæœªè¢«ç‹¬ç«‹å¤æ ¸è¿‡**(2026-08-08 æ–°å‘现,真实å¤çŽ°è§ | |
| 76 | - `docs/todo/validator-test-script-narrative-output-issue.md` 时间线第 5 轮,任务 `2084590a`):`org_node_lifecycle.py` | |
| 77 | - 的固定æµç¨‹æ˜¯ `planner → coder → validator`,`artifact_write.py` çš„ `validation_status` å†™å…¥æ—¶æ— æ¡ä»¶è®¾æˆ | |
| 78 | - `'passed'`(自己承认"è¯ä¹‰å†…å®¹æ ¡éªŒè¿˜æ²¡æœ‰ä¸“å±ž LLM-judgment 调用"),实际上没有任何机制拦ä½"Planner 产出å™è¿°æ–‡å— | |
| 79 | - 冒充 benchmark"这类内容直接æµå…¥ Coder。**设计已完æˆï¼Œå¾…实施**:`docs/todo/org-graph-unification-phase1-review- | |
| 80 | - gate-design.md`(新增 `planner_reviewer` org role + `reviewing_planner_output` 状æ€ï¼Œæ’在 Planner/Coder 之间)。 | |
| 81 | -- **Work Graph å•节点执行层ä»ä¾èµ– Claude Code 原生 Dynamic Workflowï¼Œä¸æ˜¯è‡ªç ”**(2026-08-08 æ–°å‘现):图编排层 | |
| 82 | - (`work_graph_orchestrate.py`ï¼‰æ—©å·²è‡ªç ”ï¼ˆREQ-06 æ–点ç»è·‘驱动),但 `_render_node_script()`/`_llm_judgment_ | |
| 83 | - verify_fn`/`e2e_pipeline._check_prd_consistency` 三处ä»åœ¨ç”Ÿæˆä¸€æ¬¡æ€§ `.claude/workflows/*.js` 脚本ã€ç» | |
| 84 | - `claude -p 'Run /<name>...'` 执行——`plan_work_graph()` å·²ç»è¯æ˜ŽåŒä¸€ä¸ª"`--agent` 身份 + 结构化输出"需求å¯ä»¥ | |
| 85 | - ä¸ç» Workflowã€é flat `claude --agent` 调用 + JSON å›´æ æå–解决。**设计已完æˆï¼Œå¾…实施**: | |
| 86 | - `docs/done/work-graph-node-execution-deblackbox-requirements.md`。 | |
| 81 | +- **✅ 已修å¤ï¼ˆPhase 1,commit `ea19c7d`,2026-08-08)Coder 开始实现å‰ï¼ŒPlanner è‡ªå·±çš„äº§å‡ºä»Žæœªè¢«ç‹¬ç«‹å¤æ ¸è¿‡** | |
| 82 | + (真实å¤çŽ°è§ `docs/done/validator-test-script-narrative-output-issue.md` 时间线第 5 轮,任务 `2084590a`): | |
| 83 | + 新增独立 org role `planner_reviewer` + `reviewing_planner_output` 状æ€ï¼Œæ’在 Planner/Coder ä¹‹é—´ï¼Œç‹¬ç«‹å¤æ ¸ | |
| 84 | + BRD/PRD/SDD/Benchmark 是å¦ä¸ºçœŸå®žç»“æž„åŒ–å†…å®¹ã€‚è¯¦è§ `docs/done/org-graph-unification-phase1-review-gate-design.md`。 | |
| 85 | +- **✅ 已修å¤ï¼ˆ2026-08-13,`docs/done/work-graph-node-execution-deblackbox-requirements.md`)Work Graph å•节点 | |
| 86 | + 执行层ä¸å†ä¾èµ– Claude Code 原生 Dynamic Workflow**:`_make_run_fn`/`_llm_judgment_verify_fn`/ | |
| 87 | + `_check_prd_consistency` 三处(以åŠå®žæ–½è¿‡ç¨‹ä¸é¢å¤–å‘现的 `_run_reflection_perspective`/`_fix_skill_for_node` | |
| 88 | + 两处,Phase 2a Reflection-review/Fix-Skill 引入,原设计文档撰写时还ä¸å˜åœ¨ï¼‰å…¨éƒ¨è¿ç§»åˆ°æ–°å¢žçš„ | |
| 89 | + `org_node_trigger.trigger_org_node_structured()`——flat `claude --agent` 调用 + JSON å›´æ æå–,`plan_work_graph()` | |
| 90 | + 验è¯è¿‡çš„åŒä¸€å¥—机制,ä¸å†ç» Dynamic Workflow。`write_workflow_script`/`execute_work_graph` ç¡®è®¤æ— ç”Ÿäº§è°ƒç”¨æ–¹ï¼Œ | |
| 91 | + æ ‡è®°ä¸ºåŽ†å²é—留(文件ä¿ç•™æœªåˆ 除)。 | |
| 87 | 92 | |
| 88 | 93 | ## 4. 文档本身滞åŽäºŽå®žçŽ°ï¼ˆè¿™æœ¬èº«å°±æ˜¯ä¸€ç§"å·®è·") |
| 89 | 94 | |
| ... | ... | @@ -139,8 +144,8 @@ Deploy Supervisor 走到 cutover å‰ï¼Œä»æŒ‰çŽ°æœ‰ä¹ æƒ¯äººå·¥ç¡®è®¤ä¸€æ¬¡ã€‚ |
| 139 | 144 | | 3 | ✅ 已修å¤ï¼ˆ2026-08-04,**真æ£èµ° graphlemon 自举æµç¨‹éªŒè¯**) Skill 内容未真æ£è¿ç§»ï¼ˆÂ§3) | ~~把 `~/.hermes/profiles/{code,planning,qa}/skills/` 下 frontmatter 引用到的 Skill 真实内容è¿ç§»è¿›ä»“库 `skills/<skill_id>/`~~ | ä¸ | å¯åЍå‰å…ˆäººå·¥æ ¸å®žäº† 12 个 skill_id 的真实æºè·¯å¾„(8 个比预想深一层,è—在分类åç›®å½•é‡Œï¼‰å¹¶æŠŠç²¾ç¡®æ˜ å°„ç›´æŽ¥å†™è¿› goal_text,é¿å… Coder ä¼šè¯æµªè´¹çœŸå®ž token 去æœç´¢â€”—原先担心的"读å–仓库外路径æƒé™"最åŽè¯æ˜Žä¸æ˜¯é—®é¢˜ï¼Œ`Bash`/`Read` 能æ£å¸¸è¯» `~/.hermes/...`。真实跑的路上还顺带é‡åˆ°å¹¶ä¿®å¥½ä¸¤ä¸ªæ“作性问题:①一次真实 API 网络瞬æ–(`ENOTFOUND`)导致任务阻塞,直接推动修了 `manual_resume` ä¸ä¼šçœŸçš„ç»è·‘这个 bug(è§ä¸‹æ–¹"顺带修å¤");② 我自己用一次性脚本调 `start_task_execution_in_background()` 导致 daemon 线程éšè„šæœ¬é€€å‡ºè¢«è¯¯æ€ï¼Œæ”¹ç”¨ `nohup` æŒä¹…è¿›ç¨‹åŽæ£å¸¸è·‘完。**结果**:12 个 Skill 目录全部真实è¿ç§»ï¼ˆ`SKILL.md`+`references`/`templates`/`scripts`),Validator åšäº†é€å—节 `diff -rq` æ ¸å¯¹ï¼ˆ9/12 完全一致,3/12 åªå·®ä¸€è¡Œâ€”—主动å‘现并脱æ•äº†æºæ–‡ä»¶é‡Œä¸€ä¸ªçœŸå®žæ³„æ¼çš„飞书 API tokenï¼Œè·Ÿä»“åº“å·²æœ‰å…ˆä¾‹ä¸€è‡´ï¼Œä¸æ˜¯å†…容改写),`agent_profile.py` çš„ `FRONTMATTER` 与新目录åé€ä¸€æ ¸å¯¹ä¸€è‡´ã€‚Validator 顺带报过一次 `supervisor/test_deploy_rollback.RollbackPathBFailureTest` 失败并称"确认是è¿ç§»å‰å°±æœ‰çš„";事åŽç‹¬ç«‹å¤æ ¸ï¼ˆå•独跑 + å…¨é‡è·‘ `supervisor/`)**没能å¤çް**,大概率是这个套件已知的å¤å„¿è¿›ç¨‹/资æºç«žäº‰ç±»å¶å‘失败,ä¸ç®—新缺å£ï¼Œå…ˆè®°å½•观察。**顺带修å¤**:`src/backend_server.py` çš„ `manual_resume` 之å‰åªå¯¹ `user_paused`/`user_stopped` 自动ç»è·‘,`execution_error`(网络瞬æ–ç‰ï¼‰resume åŽå¡æ»â€”—改æˆé™¤ `budget_exceeded`/`loop_limit_reached` 外都自动ç»è·‘ï¼Œè§ commit `db62570`。 | |
| 140 | 145 | | 4 | 部署缺互斥é”(本节新å‘现,§1) | ç»™ `deploy_stage.stage_deployment()` åŠ "当剿˜¯å¦å·²æœ‰è¿›è¡Œä¸éƒ¨ç½²"的检查,拒ç»/排队é‡å¤ staging | ä¸ | 应该在å¯ç”¨å¹¶å‘è‡ªä¸¾ï¼ˆé¡ºåº 6 之åŽï¼‰ä¹‹å‰å®Œæˆï¼Œå¦åˆ™åŽç»ä»»åС并å‘跑时有真实冲çªé£Žé™© | |
| 141 | 146 | | 5 | PH3 å‰ç«¯ä»Žæœªè¢«çœŸäººéªŒè¯ï¼ˆÂ§5) | ä¸é€‚åˆä½œä¸ºè‡ªåŠ¨åŒ– Coder 任务——这是"人用æµè§ˆå™¨ç‚¹ä¸€é"的验è¯ç¼ºå£ï¼Œä¸æ˜¯ä»£ç 缺陷;列在这里是为了ä¸è®©å®ƒè¢«è¯¯å½“æˆå¯è‡ªä¸¾ä»»åŠ¡ | ä¸é€‚用 | 需è¦äººï¼ˆæˆ– claude-in-chrome 之类的æµè§ˆå™¨è‡ªåŠ¨åŒ–ï¼‰ä»‹å…¥ï¼Œä¸å»ºè®®å¡žè¿› Planner→Coder 循环 | |
| 142 | -| 6 | 调度器接入生产入å£ï¼ˆÂ§2) | ç»™æŸä¸ªå¸¸é©»è¿›ç¨‹ï¼ˆ`backend_server.py` 或独立进程)接入 `scheduler.run_scheduler_once()` 的轮询循环 | 高 | **改å˜ç³»ç»Ÿè‡ªå·±çš„自主æƒè¾¹ç•Œ**,建议å•独一批ã€é¢å¤–人工审查 diff,ä¸è¦å’Œå…¶ä»– gap 混跑;完æˆå¹¶ cutover åŽï¼Œç†è®ºä¸ŠåŽç» gap æ‰è°ˆå¾—上真æ£é»‘ç¯ | | |
| 143 | -| 7 | Deploy Supervisor 缺 `poll_fn`(§1) | 实现"å‘现待部署的 self-target åˆå¹¶"逻辑,接入 `supervisor/deploy_supervisor.py` çš„ `poll_fn` é’©å | 高 | ä¾èµ–é¡ºåº 6 先完æˆï¼ˆä¸¤è€…å…±åŒæž„æˆ"真æ£è‡ªé©±åЍ");且 SDD 里"什么æ¡ä»¶è§¦å‘自部署"本身有文档内部冲çªï¼ˆè®¾è®¡æ–‡æ¡£ vs è§„èŒƒæ£æ–‡ï¼‰ï¼Œéœ€è¦äººå·¥å…ˆæ‹æ¿è¿™ä¸ªè®¾è®¡å†³ç–,ä¸èƒ½è®© Planner 自己悄悄选一ç§ç†è§£ | | |
| 147 | +| 6 | ✅ 已修å¤ï¼ˆ2026-08-13) 调度器接入生产入å£ï¼ˆÂ§2) | ~~ç»™æŸä¸ªå¸¸é©»è¿›ç¨‹ï¼ˆ`backend_server.py` 或独立进程)接入 `scheduler.run_scheduler_once()` 的轮询循环~~ | 高 | **改å˜ç³»ç»Ÿè‡ªå·±çš„自主æƒè¾¹ç•Œ**,用户已å•ç‹¬æ‹æ¿ã€å•独实施(`docs/done/scheduler-new-goal-dispatch-requirements.md`ï¼Œä¸æ˜¯èµ°æœ¬èŠ‚"自举修 gap"æµç¨‹ï¼Œæ˜¯è¿™æ¬¡äº¤äº’å¼ä¼šè¯ç›´æŽ¥æ”¹ä»£ç )。实际实现没有直接接 `run_scheduler_once()`,è§ç¬¬ 2 节更新——ä¸å½±å“下一æ¡ä¾ç„¶å¾…办 | | |
| 148 | +| 7 | Deploy Supervisor 缺 `poll_fn`(§1) | 实现"å‘现待部署的 self-target åˆå¹¶"逻辑,接入 `supervisor/deploy_supervisor.py` çš„ `poll_fn` é’©å | 高 | é¡ºåº 6 已完æˆï¼Œä½†è¿™æ¡**ä¾ç„¶ç‹¬ç«‹æœªè§£å†³**——"自动å‘现待部署改动"è·Ÿ"è‡ªåŠ¨æ´¾å‘æ–°ä»»åŠ¡"是两个ä¸åŒçš„é—环,ä¸è¦å› 为 6 done 了就误以为这æ¡ä¹Ÿä¸€èµ·è§£å†³äº†ï¼›ä¸” SDD 里"什么æ¡ä»¶è§¦å‘自部署"本身有文档内部冲çªï¼ˆè®¾è®¡æ–‡æ¡£ vs è§„èŒƒæ£æ–‡ï¼‰ï¼Œéœ€è¦äººå·¥å…ˆæ‹æ¿è¿™ä¸ªè®¾è®¡å†³ç–,ä¸èƒ½è®© Planner 自己悄悄选一ç§ç†è§£ | | |
| 144 | 149 | | — | Coder é˜¶æ®µçš„å¤šæ¨¡å— Work Graph 规划(§3) | ä¸å»ºè®®åˆ—入这批"ä¿® gap"任务 | ä¸é€‚用 | 这是被明确判æ–为"超出范围的新能力"ï¼Œä¸æ˜¯ç¼ºé™·ï¼›å¦‚æžœè¦åšï¼Œåº”该走æ£å¸¸çš„æ–°åŠŸèƒ½ç«‹é¡¹ï¼Œä¸è¯¥åŒ…装æˆ"ä¿®å¤"塞进自动循环 | |
| 145 | 150 | |
| 146 | 151 | **执行建议**:先跑 1→2ï¼ˆéªŒè¯æµç¨‹æœ¬èº«ï¼‰ï¼Œå†è·‘ 3→4(补é½å·²çŸ¥é£Žé™©ç‚¹ï¼‰ï¼Œ5 留给人工/æµè§ˆå™¨è‡ªåŠ¨åŒ–å¤„ç†ï¼Œ6→7 作为 |
| ... | ... | @@ -219,9 +224,15 @@ gap,但**å…¨å±€è€ŒéžæŒ‰é¡¹ç›®çš„å¹¶å‘统计**æ˜¯ä¸æ˜¯æœ‰æ„为之,值得æ |
| 219 | 224 | |
| 220 | 225 | --- |
| 221 | 226 | |
| 222 | -## æœ€å€¼å¾—å…³æ³¨çš„ä¸‰æ¡ | |
| 227 | +## 最值得关注的两æ¡ï¼ˆåŽŸç¬¬ 1 æ¡å·²äºŽ 2026-08-13 解决,è§ä¸‹ï¼‰ | |
| 223 | 228 | |
| 224 | -1. 调度器没接入生产入å£ï¼Œç³»ç»Ÿè¿˜ä¸æ˜¯çœŸæ£è‡ªé©±åŠ¨çš„ï¼ˆç¬¬ 2 节)。 | |
| 225 | -2. Deploy Supervisor 缺"自动å‘现待部署改动"çš„ `poll_fn`,PH5 çš„"自动"两个å—还没完全兑现(第 1 节)。 | |
| 229 | +1. ~~调度器没接入生产入å£ï¼Œç³»ç»Ÿè¿˜ä¸æ˜¯çœŸæ£è‡ªé©±åŠ¨çš„~~ **✅ 已解决(2026-08-13,第 2 节)**:新 Goal è‡ªåŠ¨æ´¾å‘ | |
| 230 | + + 在途任务å¤åŽŸä¸¤æ¡å¸¸é©»å¾ªçŽ¯éƒ½å·²æŽ¥å…¥ `backend_server.py::main()`。**注æ„ä¸è¦è·Ÿä¸‹ä¸€æ¡æ··ä¸ºä¸€è°ˆ**:这解决的是 | |
| 231 | + "å·²å˜åœ¨çš„ task 行怎么自动å¯åЍ/ç»è·‘",跟 Deploy Supervisor çš„"自动å‘现待部署的 self-target 改动"是两个完全 | |
| 232 | + 独立的é—环,下一æ¡ä¾ç„¶æ²¡è§£å†³ã€‚ | |
| 233 | +2. Deploy Supervisor 缺"自动å‘现待部署改动"çš„ `poll_fn`,PH5 çš„"自动"两个å—还没完全兑现(第 1 节)——这是 | |
| 234 | + "改完代ç åŽè¦ä¸è¦è‡ªåŠ¨ä¸Šçº¿è‡ªå·±",跟上é¢"è¦ä¸è¦è‡ªåŠ¨å¼€å§‹è·‘ä¸€ä¸ªæ–°ä»»åŠ¡"是两件ä¸åŒçš„事,一个解决ä¸ä»£è¡¨å¦ä¸€ä¸ª | |
| 235 | + 也解决了。 | |
| 226 | 236 | 3. 文档(development-plan/unit_matrix/build-report)本身æŒç»æ»žåŽäºŽè‡ªä¸¾äº§ç”Ÿçš„æ–°æäº¤ï¼Œè¿™ä¸ªæ»žåŽä¼šè¶Šæ»šè¶Šå¤§ï¼Œ |
| 227 | - 建议找个时间点åšä¸€æ¬¡æ–‡æ¡£æ”¶å£ï¼Œè€Œä¸æ˜¯ç»§ç»é 事åŽè¡¥è®°ç»´æŒå¯è¯»æ€§ï¼ˆç¬¬ 4 节)。 | |
| 237 | + 建议找个时间点åšä¸€æ¬¡æ–‡æ¡£æ”¶å£ï¼Œè€Œä¸æ˜¯ç»§ç»é 事åŽè¡¥è®°ç»´æŒå¯è¯»æ€§ï¼ˆç¬¬ 4 节)——本文档自己也是这类滞åŽçš„æ´»ä¾‹å: | |
| 238 | + 2026-08-03 的快照到 2026-08-13 å·²ç»æ‰‹åŠ¨æ‰“äº† 4 处"✅ 已修å¤"è¡¥ä¸ï¼Œæ˜¯è¿™æ¡é£Žé™©æœ¬èº«çš„一次真实示范。 | ... | ... |