mirror of
https://github.com/aiclientproxy/proxycast.git
synced 2026-09-01 15:30:52 +08:00
docs: sync roadmap status
This commit is contained in:
@@ -131,7 +131,7 @@ Lime current 主链是落点
|
||||
|
||||
### 6.4 修 Agent turn streaming 卡住
|
||||
|
||||
作为 Agent Runtime 维护者,当 Lime 出现停止后不能继续、final_done 后仍显示输出中、reasoning/tool/final answer 顺序错乱时,我希望参考 Codex 的 turn/item lifecycle,而不是在 UI 上加 timeout 或文案正则。
|
||||
作为 Agent Runtime 维护者,当 Lime 出现停止后不能继续、current turn terminal 后仍显示输出中,或旧 `final_done` 残留误关流、reasoning/tool/final answer 顺序错乱时,我希望参考 Codex 的 turn/item lifecycle,而不是在 UI 上加 timeout 或文案正则。
|
||||
|
||||
验收:
|
||||
|
||||
|
||||
@@ -125,7 +125,7 @@
|
||||
| 2026-07-06 | P1-7 第三十八刀第十五切片:context policy Rust typed owner | `done for typed owner / budget consumer pending` | `internal/research/refactor/v1/priority-tracking-plan.md`;`internal/research/refactor/v1/quality-fixture-matrix.md`;`internal/research/refactor/v1/completion-audit.md`;`lime-rs/crates/agent/src/model_request_policy.rs`;`lime-rs/crates/agent/src/model_request_policy/tests.rs` | 继续避让第十四切片 App Server fallback 写集 `lime-rs/crates/app-server/src/runtime_backend/request_context.rs`、`lime-rs/crates/app-server/src/runtime_backend/tests/model_selection.rs`;继续避让 `internal/exec-plans/writing-v2-workflow-completion-plan.md`、`internal/roadmap/Writing/v2/**`、`internal/roadmap/astermigration/**`、`lime-rs/crates/agent-runtime/**`、`lime-rs/crates/agent/src/runtime_*.rs`、`lime-rs/crates/agent/src/subagent_*.rs`、`lime-rs/crates/agent/src/agent_tools/**`、`lime-rs/crates/agent/src/request_tool_policy/**`、`lime-rs/crates/model-provider/src/provider_stream.rs`、`lime-rs/vendor/aster-rust/**`、`scripts/**` 内容工厂 / signed release gate 热区、`src/lib/governance/asterMigrationBoundary.test.ts` | `ModelContextPolicySnapshot` 已只从 `request_metadata.harness.model_request_policy.context_policy` 读取 selected model policy,按 Codex `ModelInfo::resolved_context_window()`、`ModelInfo::auto_compact_token_limit()` 与 `TurnContext::model_context_window()` 语义计算 `resolved_context_window`、`model_context_window`、`auto_compact_token_limit`;snake/camel metadata、95% effective 默认、`context_window ?? max_context_window`、auto compact 90% clamp 与缺 context 时显式 compact limit 均有 Rust fixture;本切片不接 App Server prompt budget 热区,不碰 provider/vendor,下一刀仍需让 App Server/runtime prompt budget owner 消费 snapshot;`cargo fmt --manifest-path "lime-rs/Cargo.toml" -p lime-agent --check`、`cargo test --manifest-path "lime-rs/Cargo.toml" -p lime-agent context_policy -- --nocapture`、`cargo test --manifest-path "lime-rs/Cargo.toml" -p lime-agent model_request_policy -- --nocapture` 通过 |
|
||||
| 2026-07-06 | P1-7 第三十八刀第十四切片:reasoning policy request fallback consumer | `done for request_context fallback` | `internal/research/refactor/v1/priority-tracking-plan.md`;`internal/research/refactor/v1/quality-fixture-matrix.md`;`internal/research/refactor/v1/completion-audit.md`;`lime-rs/crates/app-server/src/runtime_backend/request_context.rs`;`lime-rs/crates/app-server/src/runtime_backend/tests/model_selection.rs` | 继续避让 `internal/exec-plans/writing-v2-workflow-completion-plan.md`、`internal/roadmap/Writing/v2/**`、`internal/roadmap/astermigration/**`、`lime-rs/crates/agent-runtime/**`、`lime-rs/crates/agent/src/runtime_*.rs`、`lime-rs/crates/agent/src/subagent_*.rs`、`lime-rs/crates/agent/src/agent_tools/**`、`lime-rs/crates/agent/src/model_request_policy.rs`、`lime-rs/crates/agent/src/request_tool_policy/**`、`lime-rs/crates/model-provider/src/provider_stream.rs`、`lime-rs/vendor/aster-rust/**`、`scripts/**` 内容工厂 / signed release gate 热区、`src/lib/governance/asterMigrationBoundary.test.ts` | App Server `reasoning_effort_from_request` 只在没有显式 host / request reasoning effort 时,消费 `request_metadata.harness.model_request_policy.reasoning_policy.default_reasoning_level`;必须要求 `supports_reasoning_summaries=true`,并继续让显式请求优先;`cargo fmt --manifest-path "lime-rs/Cargo.toml" -p app-server --check`、`cargo test --manifest-path "lime-rs/Cargo.toml" -p app-server model_selection -- --nocapture` 通过,26 tests passed |
|
||||
| 2026-07-06 | P1-7 第三十八刀第十三切片:input modality Rust fail-closed consumer | `done for current user-message gate` | `internal/research/refactor/v1/priority-tracking-plan.md`;`internal/research/refactor/v1/quality-fixture-matrix.md`;`internal/research/refactor/v1/completion-audit.md`;`lime-rs/crates/agent/src/model_request_policy.rs`;`lime-rs/crates/agent/src/model_request_policy/tests.rs`;`lime-rs/crates/agent/src/request_tool_policy/aster_reply_adapter.rs`;`lime-rs/crates/agent/src/request_tool_policy/aster_reply_adapter/tests.rs` | 继续避让 `internal/exec-plans/writing-v2-workflow-completion-plan.md`、`internal/roadmap/Writing/v2/**`、`internal/roadmap/astermigration/**`、`lime-rs/crates/agent-runtime/**`、`lime-rs/crates/agent/src/runtime_*.rs`、`lime-rs/crates/agent/src/subagent_*.rs`、`lime-rs/crates/agent/src/agent_tools/tool_orchestrator.rs`、`lime-rs/crates/agent/src/agent_tools/catalog.rs`、`lime-rs/vendor/aster-rust/**`、`scripts/**` 内容工厂 / signed release gate 热区、`src/lib/governance/asterMigrationBoundary.test.ts` | Aster reply 构造当前 user message 前消费 selected model `input_modality_policy`;显式 text-only 模型遇到 `input.images` 时 fail-closed,不依赖前端 send gate 作为唯一防线;`aster_reply_adapter.rs` 测试已拆到子模块,避免继续推高 900+ 行主文件;`cargo test --manifest-path "lime-rs/Cargo.toml" -p lime-agent input_modality_policy -- --nocapture`、`cargo test --manifest-path "lime-rs/Cargo.toml" -p lime-agent build_reply_message_ -- --nocapture`、`cargo test --manifest-path "lime-rs/Cargo.toml" -p lime-agent model_request_policy -- --nocapture` 通过;历史 prompt 中已存在 image item 的过滤仍归后续 prompt/history consumer |
|
||||
| 2026-07-06 | P1 runtime current fixture evidence | `done for runtime fixture` | `internal/research/refactor/v1/priority-tracking-plan.md`;`internal/research/refactor/v1/quality-fixture-matrix.md`;`internal/research/refactor/v1/completion-audit.md` | 只读运行 `npm run smoke:agent-runtime-current-fixture`;继续避让源码热区和 `.lime/qc/**` 生成 evidence 产物 | `npm run smoke:agent-runtime-current-fixture` 完整通过,覆盖 history/cache、stream final_done、Electron fixture guard、Coding Workbench、Claw 图片/画图/停止继续/Plan history、Skills Runtime、Multi-Agent、MCP structuredContent、Expert Skills、内容工厂 Article Editor 等 current GUI/runtime fixture;`liveProviderUsed=false` |
|
||||
| 2026-07-06 | P1 runtime current fixture evidence | `done for runtime fixture` | `internal/research/refactor/v1/priority-tracking-plan.md`;`internal/research/refactor/v1/quality-fixture-matrix.md`;`internal/research/refactor/v1/completion-audit.md` | 只读运行 `npm run smoke:agent-runtime-current-fixture`;继续避让源码热区和 `.lime/qc/**` 生成 evidence 产物 | `npm run smoke:agent-runtime-current-fixture` 完整通过,覆盖 history/cache、stream terminal(current `turn.completed` 工具收尾,legacy `final_done` 仅负向 guard)、Electron fixture guard、Coding Workbench、Claw 图片/画图/停止继续/Plan history、Skills Runtime、Multi-Agent、MCP structuredContent、Expert Skills、内容工厂 Article Editor 等 current GUI/runtime fixture;`liveProviderUsed=false` |
|
||||
| 2026-07-06 | P1-7 第三十八刀第十二切片:MCP / Aster extension output truncation consumer | `done for Aster ToolResponse compat formatter` | `internal/research/refactor/v1/priority-tracking-plan.md`;`internal/research/refactor/v1/quality-fixture-matrix.md`;`internal/research/refactor/v1/completion-audit.md`;`lime-rs/crates/agent/src/message_content_adapter.rs`;`lime-rs/crates/agent/src/event_converter.rs`;`lime-rs/crates/agent/src/aster_runtime_projection.rs`;`lime-rs/crates/agent/src/request_tool_policy/aster_event_adapter.rs`;`lime-rs/crates/agent/src/request_tool_policy/aster_reply_adapter.rs` | 继续避让 `lime-rs/crates/agent/src/agent_tools/tool_orchestrator.rs`、`lime-rs/crates/agent/src/agent_tools/tool_orchestrator/truncation_tests.rs`、`lime-rs/crates/agent/src/agent_tools/catalog.rs`、`internal/exec-plans/writing-v2-workflow-completion-plan.md`、`internal/roadmap/Writing/v2/**`、`internal/roadmap/astermigration/**`、`lime-rs/crates/agent-runtime/**`、`lime-rs/crates/agent/src/runtime_*.rs`、`lime-rs/crates/agent/src/subagent_*.rs`、`lime-rs/vendor/aster-rust/**`、`scripts/**` 内容工厂 / signed release gate 热区、`src/lib/governance/asterMigrationBoundary.test.ts` | `mcpTool/call*` App Server control plane 不套 model output truncation;模型可见 MCP extension output 经 Aster `ToolResponse` compat path 投影时,stateful `RuntimeEventProjector` 保存 `TurnStarted` 的 `AgentTurnContext`,`message_content_adapter` 复用 `ToolOutputTruncationPolicy` 格式化输出,并继续标记 compat/non-canonical;`cargo fmt --manifest-path "lime-rs/Cargo.toml" -p lime-agent`、`lime-agent projector_applies_turn_context_truncation_to_later_tool_response`、`lime-agent convert_message_tool_response` 通过 |
|
||||
| 2026-07-06 | P1-7 第三十八刀第十一切片:tool orchestrator output truncation consumer | `done for registry tool output formatter` | `internal/research/refactor/v1/priority-tracking-plan.md`;`internal/research/refactor/v1/quality-fixture-matrix.md`;`internal/research/refactor/v1/completion-audit.md`;`lime-rs/crates/agent/src/agent_tools/tool_orchestrator.rs`;`lime-rs/crates/agent/src/agent_tools/tool_orchestrator/truncation_tests.rs` | 继续避让隔壁新增的 `catalog.rs` 第十切片、`internal/exec-plans/writing-v2-workflow-completion-plan.md`、`internal/roadmap/Writing/v2/**`、`internal/roadmap/astermigration/**`、`lime-rs/crates/agent-runtime/**`、`lime-rs/crates/agent/src/runtime_*.rs`、`lime-rs/crates/agent/src/subagent_*.rs`、`lime-rs/vendor/aster-rust/**`、`scripts/**` 内容工厂 / signed release gate 热区、`src/lib/governance/asterMigrationBoundary.test.ts` | `ToolOutputTruncationPolicy` 已从 live native hook 扩到 current `tool_orchestrator`:registry tool output 与该 orchestrator 的 live shell terminal output 都会在进入 `ToolExecutionOutcome` / `ToolEnd` 前按 selected model truncation policy 格式化;`cargo fmt --manifest-path "lime-rs/Cargo.toml" -p lime-agent`、`lime-agent tool_orchestrator`、`lime-agent tool_output_truncation`、`node scripts/check-app-server-client-contract.mjs`、`npm run test:contracts` 通过 |
|
||||
| 2026-07-06 | P1-7 第三十八刀第十切片:unified_exec false alias cleanup | `done for unified_exec catalog guard` | `internal/research/refactor/v1/priority-tracking-plan.md`;`lime-rs/crates/agent/src/agent_tools/catalog.rs` | 继续避让 `internal/exec-plans/writing-v2-workflow-completion-plan.md`、`internal/roadmap/Writing/v2/**`、`internal/roadmap/astermigration/aster-capability-intake-execution-plan.md`、`lime-rs/crates/agent-runtime/**`、`lime-rs/crates/agent/src/runtime_queue.rs`、`lime-rs/crates/agent/src/runtime_support.rs`、`lime-rs/crates/agent/src/subagent_control.rs`、`lime-rs/crates/agent/src/subagent_runtime_adapter.rs`、`lime-rs/crates/model-provider/src/provider_stream.rs`、`lime-rs/vendor/aster-rust/**`、`scripts/**` 内容工厂 / signed release gate 热区、`src/lib/governance/asterMigrationBoundary.test.ts` | Codex `exec_command` 不再被 catalog alias 归一到 legacy `Bash`;后续 unified_exec current surface 必须显式落 `exec_command/write_stdin`,不能借 Bash compat 面续命;`cargo fmt --manifest-path "lime-rs/Cargo.toml" -p lime-agent`、`lime-agent tool_catalog_entry`、`native_tool_policy`、`native_tool` 定向测试通过 |
|
||||
|
||||
@@ -31,7 +31,7 @@ P1 质量口径分成五类证据:
|
||||
- 当前进程 2026-07-06 第十一刀复跑已确认 RuntimeState/Aster pending resume 当前为 green:`cargo test --manifest-path "lime-rs/Cargo.toml" -p lime-agent confirm_tool_action_resumes_pending_aster_tool_execution -- --nocapture` 通过,结果为 1 passed。
|
||||
- 当前进程 2026-07-06 第十五刀 App Server RuntimeBackend bridge 回归已通过:补齐 `coding_event_projection.rs` missing import 后,`CARGO_TARGET_DIR="/tmp/lime-codex-p2-tool-target-bridge" CARGO_BUILD_JOBS=4 cargo test --manifest-path "lime-rs/Cargo.toml" -p app-server respond_action_tool_confirmation_resumes_pending_aster_tool_future -- --nocapture` 结果为 `1 passed`;该证据证明 `ExecutionBackend::start_turn` 能发出 `ActionRequired(tool_confirmation)`,并通过 `ExecutionBackend::respond_action(ToolConfirmation)` 释放同一 pending Aster tool future。
|
||||
- 当前进程 2026-07-06 已重新执行 `npm run test:contracts`:protocol types 无漂移,App Server client / command / harness / modality / scripts / electron release / harness cleanup / docs boundary 全部通过;首次失败点是 contract 文件列表未覆盖 `tool_process_runtime_metadata.rs`,补 current owner 文件列表后 `node scripts/check-app-server-client-contract.mjs` 通过 287 checks,完整 contract gate 已绿。
|
||||
- 当前进程 2026-07-06 已重新执行 `npm run smoke:agent-runtime-current-fixture`:history/cache、stream final_done、Electron fixture guard、Coding Workbench、Claw 图片 / 画图 / 停止继续 / Plan history、Skills Runtime、Multi-Agent、MCP structuredContent、Expert Skills、内容工厂 Article Editor 等 current GUI/runtime fixture 全部通过。
|
||||
- 当前进程 2026-07-06 已重新执行 `npm run smoke:agent-runtime-current-fixture`:history/cache、stream terminal(current `turn.completed` 工具收尾,legacy `final_done` 仅负向 guard)、Electron fixture guard、Coding Workbench、Claw 图片 / 画图 / 停止继续 / Plan history、Skills Runtime、Multi-Agent、MCP structuredContent、Expert Skills、内容工厂 Article Editor 等 current GUI/runtime fixture 全部通过。
|
||||
- 当前进程 2026-07-06 已完成 P2 Plugin / Skills / MCP 第一代码刀:新增 `plugin_packages/runtime_capabilities.rs` typed owner,从 projected plugin manifest 生成 `runtimeCapabilities` snapshot,覆盖 plugin identity/version、skill metadata、workflow-scoped prompt injection policy、tool binding 与 MCP binding;`plugin_manifest.rs` 只在 manifest projection 末尾消费该 owner,不把 App Center UI 当 runtime truth,不接管 App Server runtime/backend 热区。`CARGO_TARGET_DIR="/tmp/lime-codex-p2-plugin-capabilities" CARGO_BUILD_JOBS=4 cargo test --manifest-path "lime-rs/Cargo.toml" -p app-server runtime_capabilities -- --nocapture` 通过,4 tests。随后前端 App Center projection consumer 已完成:`normalizeManifest(...)` 保留 `runtimeCapabilities`,`projectApp(...)` 优先用 snapshot 生成 skill/tool/MCP capability projection,legacy `skillRefs/toolRefs` 只作为缺 snapshot fallback;schema gate 已补 snapshot identity guard;App Center detail 技能展示已迁到 `projection.skillRequirements` consumer,旧 `manifest.skillRefs` 只在 projection 缺失时 fallback;`npx vitest run "src/features/plugin/projection/projectApp.test.ts" "src/features/plugin/schema/schemaGate.test.ts" "src/features/plugin/ui/pluginDetailDeclarations.unit.test.ts" "src/features/plugin/ui/PluginsPage.test.tsx"` 通过 42 tests,`npm run typecheck` 通过。2026-07-07 继续补 detail tools/MCP consumer:`buildDetailTools(...)` 优先消费 `projection.toolRequirements`,`buildDetailMcpBindings(...)` 优先消费 `projection.runtimeCapabilities.mcpBindings`,`PluginDetailRuntimeSections` 接管 subagent / skill / tool / MCP detail sections;`npx vitest run "src/features/plugin/ui/pluginDetailDeclarations.unit.test.ts" "src/features/plugin/ui/PluginDetailRuntimeSections.unit.test.tsx" "src/features/plugin/ui/PluginsPage.test.tsx"` 通过 39 tests,`npm run typecheck` 通过。2026-07-07 已补 App Server runtime consumer:`plugin_runtime_context` 消费 plugin activation / harness runtime capabilities,Agent Skills selection 注入 workflow-scoped skill body,session prompt 渲染 `<plugin_runtime_capabilities>`,telemetry 输出 `plugin_runtime_capabilities` 事件;本地 folder package skill 已通过 `package_source_uri` 与包内 `runtimeCapabilities.skills[].path` 合入统一 `AgentSkillSnapshot`;MCP binding 已由 `tool_inventory` 归一化为 `plugin_mcp_targets` 并消费 MCP status / tool snapshot 输出 target runtime status 与 `toolListRequest` skeleton;前端 API `mcpApi.executePrepareRequests(...)` 已能顺序执行 candidate import / start / listForContext,`mcpApi.executeCallProofRequests(...)` 已能执行 candidate `mcpTool/callWithCaller` 并 fail closed;Workspace Harness 已接手动 prepare trigger、执行后 inventory refresh skeleton、caller-scoped list proof、显式 call proof skeleton 与 default list proof skeleton。`cargo test --manifest-path "lime-rs/Cargo.toml" -p app-server plugin_runtime -- --nocapture` 最新通过,10 tests;package skill prompt 注入单测 1 test 通过;显式 proof 窄域 `runtime_capabilities` 5 tests、hook / MCP Vitest 30 tests 与 scoped ESLint 通过;`cargo test --manifest-path "lime-rs/Cargo.toml" -p app-server tool_inventory --lib` 当前被并行 `media_task.rs` 缺失 idempotency import 编译错误阻塞,`npm run typecheck -- --pretty false` 当前被并行删除 `src/features/plugin/runtime/workflowRuntimeCapabilityProfile.ts` 阻塞。仍需 GUI smoke、自动触发才能宣称 MCP runtime 完整可用;无显式 proof 的默认 list proof skeleton 已完成。
|
||||
- 当前进程 2026-07-06 已完成 P2 Context / Token / Compaction 第一 consumer:App Server `runtime/context_packet.rs` 已从本地手写 `truncate_to_token_budget` 迁到 RuntimeCore `ContextFragmentEnvelope::from_input(...)`,telemetry 输出 `fragmentEnvelope`,secret / empty reject 输出 `fragmentEnvelope=null`,metadata `sidecarRef` / `sidecar_reference` 进入 `ContextSidecarReference`;`CARGO_TARGET_DIR="/tmp/lime-codex-p2-context-packet-target" CARGO_BUILD_JOBS=4 cargo test --manifest-path "lime-rs/Cargo.toml" -p app-server context_packet -- --nocapture` 通过,4 tests。2026-07-07 已完成 Evidence export consumer:App Server `evidence/export` 从 turn runtime metadata / event payload 读取 `context_packet_telemetry`,输出 `context-evidence-summary.v1`,包含 packet / fragment / budget / source / sidecar 摘要,且不导出 preview 正文或 sha256;`cargo test --manifest-path "lime-rs/Cargo.toml" -p app-server export_evidence_pack_includes_context_fragment_summary_from_turn_metadata -- --nocapture` 通过,1 test。随后已完成 session compaction sidecar source 与 compact item 第一刀:`session_compaction_prompt_context` 透传真实 `sidecarRef` 到 next-turn `ContextPacket` metadata,read model `items` materialize `context_compaction` Item;两条 `compact_agent_session_*` 定向测试通过。memory summary sidecarRef 已进入 `ContextPacket.metadata` 骨架并通过 `memory_prompt` 回归;turn attachment 中的 media URI 已进入 `ContextPacket::media_reference(...)` 与 `context_packet_telemetry`,inline `data:` media fail closed;`media-reference` GUI smoke 已证明 Workbench preview skeleton 与 read model `contentParts` 链路可用;binary sidecar read / full preview detail 仍 pending。
|
||||
- 当前进程 2026-07-06 已执行 `npm run governance:legacy-report`:边界违规 0;报告摘要里仍有 1 个分类漂移候选 `rust-agent-subagent-metadata-direct-read -> deprecated / 零引用`,不阻塞 P2,但最终收口前可单独判定是否从 `deprecated` 收到 `dead-candidate`。
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
| Composer | `src/components/agent/chat/skill-selection/**`、`skillCommand.ts`、`runtimeInputCapabilityCatalog.ts` | 有 SkillSelector、mention / slash、scene command、skill id map;普通 slash skill 回到 Agent Runtime turn 主链 |
|
||||
| Workspace binding | `workspaceSkillBindings/list`、`workspaceSkillBindingsMetadata.ts` | 有 workspace skill binding metadata 和 `ready_for_manual_enable`,但仍偏手动启用证据 |
|
||||
| Runtime gate | `lime-rs/crates/agent/src/tools/skill_tool_gate.rs` | 有 session access gate、allowed skills、allowed skill sources、source metadata、allow / deny 测试 |
|
||||
| Runtime 执行 | `lime-rs/crates/agent/src/skill_execution.rs` | 有 workflow / prompt execution、`skill-exec-*` runtime turn、allowed_tools 转发、TextDelta / FinalDone |
|
||||
| Runtime 执行 | `lime-rs/crates/agent/src/skill_execution.rs` | 有 workflow / prompt execution、`skill-exec-*` runtime turn、allowed_tools 转发、TextDelta / runtime.status;回合终态由 App Server `turn.completed / turn.failed / turn.canceled` 收口 |
|
||||
| Service / Site Skill | `ServiceSkillExecutionCard.tsx`、`useWorkspaceServiceSkillEntryActions.test.tsx`、`serviceSkillSceneLaunch.test.ts` | 有 site skill blocked/success/error、saved content、result file、browser prep、recent usage |
|
||||
| Evidence | `scripts/agent-runtime/service-skill-entry-smoke.mjs`、`HarnessEvidencePackCard.tsx` | 有 SkillTool gate transcript proof 和 evidence count 字段,但 Skill 专项 evidence pack 仍未完整产品化 |
|
||||
| Current boundary | `scripts/skills-current-smoke.mjs`、`src/lib/api/skills.current-boundary.test.ts` | 有 current App Server JSON-RPC smoke 和 legacy command 防回流守卫 |
|
||||
@@ -127,7 +127,7 @@
|
||||
| `skill-implicit-trigger-eval` | Description / trigger | 正例触发、反例不触发、相似 skill 不误触发;记录 description 修改前后得分 |
|
||||
| `skill-required-vs-invoked` | Runtime / UI | required skill、实际 invoked skill、读取的 `SKILL.md` snapshot、resources、tool dependencies 可查 |
|
||||
| `skill-tool-gate-allow-deny` | Security / policy | 未启用默认拒绝;session allowlist 允许;source metadata、approval scope、permission summary 入 transcript |
|
||||
| `skill-workflow-execution` | Runtime steps / UI | `skill-exec-*` inline process、step progress、TextDelta、FinalDone、失败、取消、重试 |
|
||||
| `skill-workflow-execution` | Runtime steps / UI | `skill-exec-*` inline process、step progress、TextDelta、runtime.status、current turn terminal、失败、取消、重试 |
|
||||
| `skill-service-site-browser` | ServiceSkill / SiteSkill | 缺参 gate、attached browser、site run、saved content、result file、导出 Markdown |
|
||||
| `skill-artifact-evidence-replay` | Artifact / Evidence | prompt、skill version、resources hash、allowed tools、tool calls、artifact refs、grader verdict 可回放 |
|
||||
| `skill-subagent-preload` | Team / Subagent | subagent 预加载 skill、worker 调用 skill、handoff 结果和权限边界可见 |
|
||||
|
||||
@@ -275,8 +275,8 @@ AgentChatWorkspace
|
||||
- Phase 3 已继续抽出 `agentStreamArtifactActionController`,统一 `artifact_snapshot / action_required` 前置 activate、清 optimistic item 与 meaningful completion signal 计划。
|
||||
- Phase 3 已继续抽出 `agentStreamRuntimeContextController`,统一 `context_trace / turn_context / model_change` 前置 activate / clear optimistic item 计划与 execution runtime apply wrapper。
|
||||
- Phase 3 已继续抽出 `agentStreamThinkingDeltaController`,统一 `thinking_delta` 前置 activate / surface guard 与 thinking 消息 patch。
|
||||
- Phase 3 已继续扩展 `agentStreamCompletionController`,统一完成态 assistant message patch,`final_done` 与 empty-final graceful completion 不再内联拼 `content / contentParts / usage / runtimeStatus`。
|
||||
- Phase 3 已继续扩展 `agentStreamCompletionController`,统一 `final_done` 与 empty-final error 的 completion side-effect plan,handler 只执行日志、队列清理、observer 与 listener 副作用。
|
||||
- Phase 3 已继续扩展 `agentStreamCompletionController`,统一 current terminal assistant message patch,legacy `final_done` 与 empty-final graceful completion 不再内联拼 `content / contentParts / usage / runtimeStatus`。
|
||||
- Phase 3 已继续扩展 `agentStreamCompletionController`,统一 current terminal 与 empty-final error 的 completion side-effect plan;legacy `final_done` 只保留 fail-closed 语义,handler 只执行日志、队列清理、observer 与 listener 副作用。
|
||||
- Phase 3 已继续扩展 `agentStreamErrorController`,统一普通 runtime error 的失败 side-effect plan,error 分支不再内联 queued turn 清理、request log payload 与 toast plan。
|
||||
- Phase 3 已继续扩展 `agentStreamErrorController`,统一 failed timeline turn / turn_summary 更新计划,handler 不再内联查找 running turn 或拼失败 summary 文案。
|
||||
- Phase 3 已继续扩展 `agentStreamWarningController`,统一 warning toast action 与 dispatcher 执行,warning 分支不再内联 toast level switch。
|
||||
|
||||
@@ -67,7 +67,7 @@ flowchart TB
|
||||
| `src/lib/api/agentRuntime/sessionClient.ts` | create/list/get/update session | `getAgentRuntimeSession(sessionId, { historyLimit, historyOffset, historyBeforeMessageId })`;有 `runtimeGetSession.slow` 日志 |
|
||||
| `src/lib/api/agentRuntime/threadClient.ts` | submit、interrupt、compact、resume、respond action、queue 操作、thread read | `submitAgentRuntimeTurn`、`respondAgentRuntimeAction`、`getAgentRuntimeThreadRead` |
|
||||
| `src/lib/api/agentRuntime/types.ts` | DTO 类型 | `AsterSessionDetail`、`AgentRuntimeThreadReadModel`、`AgentRuntimeSubmitTurnRequest`、history cursor |
|
||||
| `src/lib/api/agentProtocol.ts` | AgentEvent 类型和兼容 normalizer | `turn_started`、`text_delta`、`thinking_delta`、`tool_start/end`、`artifact_snapshot`、`runtime_status`、queue、subagent、`done/final_done` |
|
||||
| `src/lib/api/agentProtocol.ts` | AgentEvent 类型和兼容 normalizer | `turn_started`、`text_delta`、`thinking_delta`、`tool_start/end`、`artifact_snapshot`、`runtime_status`、queue、subagent、current terminal;legacy `done/final_done` fail-closed |
|
||||
| `src/lib/api/agentTextNormalization.ts` | legacy 文本与 item normalizer | 兼容旧事件/旧 item | 继续收口 compat,不新增旧形态 |
|
||||
|
||||
协议层的架构判断:
|
||||
|
||||
@@ -42,7 +42,7 @@ sequenceDiagram
|
||||
Bind->>State: threadItems + tool parts
|
||||
RT-->>Bind: artifact_snapshot
|
||||
Bind->>State: artifact signal
|
||||
RT-->>Bind: done / final_done
|
||||
RT-->>Bind: turn.completed / turn.failed / turn.canceled
|
||||
Bind->>State: reconcileFinalContentParts
|
||||
State->>UI: completed message
|
||||
```
|
||||
@@ -51,7 +51,7 @@ sequenceDiagram
|
||||
|
||||
- `registerAgentStreamTurnEventBinding` 早于 submit invoke。
|
||||
- 首个 `runtime_status` 能在首个 `text_delta` 前显示。
|
||||
- `final_done` 不导致完整答案重复追加。
|
||||
- current terminal 不导致完整答案重复追加;legacy `final_done` fail closed。
|
||||
|
||||
## 2. 打开旧会话渐进恢复
|
||||
|
||||
|
||||
@@ -221,7 +221,7 @@ AgentRuntimeProfileEvent / ThreadReadModel / EvidenceSummary
|
||||
- 已补 TaskUpdate owner_change reassignment source:`TaskUpdateTool` 在 owner 真正变化时输出结构化 `ownerChange` / `owner_change`;`agentUiEventProjection.ts` 只从 `item_completed + tool_call(TaskUpdate) + metadata.updated_fields includes owner` 派生 `work_board` assign/reassign,保留 previous/next assignee 与 source tool/task list id,不从 `task_assignment` peer message、assistant prose 或 teammate transcript 反推负责人变化。
|
||||
- 已补 Review request actual source:`HarnessStatusPanel` 导出人工审核模板时,除了 `review.requested` evidence event,还会记录 `team_control_projection(control=request_review)`,以 `review_relative_root` 作为 review work item,落到 `review_lane` 并保留 `sessionId/threadId` scope。
|
||||
- 已补 Remote teammate actual source baseline:`remoteTaskAgentUiProjection.ts` 提供 `remote_task_projection`,将结构化 remote task 映射为 `agent.changed/task.changed(surface=remote_teammate, runtimeEntity=external_task)`,保留 Agent Card、remote task id、input/auth、artifact refs,并且只在真实 terminal status 下输出 `worker.notification`,避免 heartbeat 猜完成;input/auth need 会额外输出 `action.required(surface=remote_teammate, control=answer)`,让远端待输入 / 待鉴权成为结构化 HITL fact;当 `remote_task` provenance 提供 `event/taskStatus/status/state/phase` 或嵌套 `task/a2aTask` artifact updates 时也会进入同一 projection,terminal `AgentRun.status` 仍优先压过 stale remote/input/auth source;`agentUiEventProjection.ts` 内的旧 remote teammate builder 已改为兼容 wrapper,统一委托该 helper。2026-05-10 已把 `gateway_channel_*` / gateway crate 接到 current source:渠道 runtime 写入 `source_metadata.remote_task`,`agent_runs.metadata` 保留 provenance,`useRemoteTaskExecutionRunProjection` 再按当前 session 投影到 Subagents;剩余原生 A2A ingress 与 remote artifact store/content 回流已登记为 future product boundary。
|
||||
- 已补 active stream overlay 收口:`text_delta` 继续走低频 overlay 实时显示,`final_done` 后回填到 message content/contentParts;失败态保留已有 tool/process contentParts 并追加失败正文,避免“无最终正文”错误把工具过程清空。
|
||||
- 已补 active stream overlay 收口:`text_delta` 继续走低频 overlay 实时显示,current terminal 后回填到 message content/contentParts;失败态保留已有 tool/process contentParts 并追加失败正文,避免“无最终正文”错误把工具过程清空。
|
||||
- 已完成 2026-05-10 final gate fresh 复验:`npm run verify:local` 统一门禁通过,覆盖 app-version、lint、typecheck、Vitest smart 52 批、contracts、Rust 全量与 GUI smoke;此前旧 stale gate / DevBridge 不可用问题已由 fresh unified gate 证据替代,不再阻塞 v0.6.0 标准对齐完成判定。
|
||||
|
||||
## 8.1 2026-05-10 final gate green
|
||||
|
||||
@@ -76,7 +76,7 @@ Codex state_*.sqlite / rollout JSONL
|
||||
- `resolved`:图片 / 视频任务默认状态、fallback prompt 已切到 `agentChat.taskPreview.image.*` 与 `agentChat.taskPreview.video.*` 五语言资源;联网搜图、配音、转写任务预览与 artifact document 继续走同一 `agent` namespace。协议事实、tool name、task type、provider、model、path、sourceClient 和 provenance 保持 stable facts,不进入本地化判断。
|
||||
- `guarded`:`taskPreviewFromToolResult.test.ts` 新增英文 locale 回归,覆盖图片 / 视频默认状态、联网搜图 artifact、配音 / 转写 artifact,防止非中文界面重新混入中文 fallback;同时新增图片 / 视频任务预览资源覆盖断言,要求 `zh-CN / zh-TW / en-US / ja-JP / ko-KR` 全量存在。
|
||||
- 已通过验证:`npx eslint "src/components/agent/chat/utils/taskPreviewFromToolResult.ts" "src/components/agent/chat/utils/taskPreviewFromToolResult.test.ts" "src/components/agent/chat/utils/taskPreviewAudioTranscription.ts" "src/components/agent/chat/utils/taskPreviewAudioTranscriptionArtifact.ts" "src/components/agent/chat/utils/taskPreviewCopy.ts" "src/components/agent/chat/utils/taskPreviewWebImageSearch.ts" "src/components/agent/chat/utils/taskPreviewImage.ts" "src/components/agent/chat/utils/taskPreviewVideo.ts" "src/components/agent/chat/utils/taskPreviewToolResultShared.ts" --max-warnings 0` 通过;`npx vitest run "src/components/agent/chat/utils/taskPreviewFromToolResult.test.ts" --silent=passed-only --disableConsoleIntercept --testTimeout=30000`,20 tests passed;`npm run i18n:check:json` 五语言 coverage 100%、missing=0、extra=0;`npm run i18n:unused -- --check` unused=0;相关文件 `git diff --check` 通过。
|
||||
- 追加真实 Electron 验证:`npm run smoke:agent-runtime-current-fixture` 通过,覆盖 history/cache hydration、final_done 工具收尾、Claw 终态 UI、代码工作台、停止后同会话继续输出,`liveProviderUsed=false`;`npm run smoke:codex-import-click-through-electron-fixture -- --timeout-ms 180000` 通过,summary `ok=true`、`consoleErrors=[]`,导入 13 items / 4 messages,覆盖导入弹窗、确认导入、导入细节、附件/文件预览、侧栏可发现性、环境弹层边界、同 session 续聊和三视口 visual audit;`npm run smoke:local-history-import-real-sample-visual-audit -- --timeout-ms 300000 --commit-timeout-ms 240000` 通过,真实 `/Users/coso/Documents/dev/ai/limecloud/content-studio` 样本导入 read model 为 92 messages / 1901 items,完整记录下钻 probe 为 `totalEvents=19419`、`materializedRuntimeEvents=2343`、`sidecarRuntimeEvents=17076`,`consoleErrors=[]`。
|
||||
- 追加真实 Electron 验证:`npm run smoke:agent-runtime-current-fixture` 通过,覆盖 history/cache hydration、`turn.completed` 工具收尾(legacy `final_done` 仅负向 guard)、Claw 终态 UI、代码工作台、停止后同会话继续输出,`liveProviderUsed=false`;`npm run smoke:codex-import-click-through-electron-fixture -- --timeout-ms 180000` 通过,summary `ok=true`、`consoleErrors=[]`,导入 13 items / 4 messages,覆盖导入弹窗、确认导入、导入细节、附件/文件预览、侧栏可发现性、环境弹层边界、同 session 续聊和三视口 visual audit;`npm run smoke:local-history-import-real-sample-visual-audit -- --timeout-ms 300000 --commit-timeout-ms 240000` 通过,真实 `/Users/coso/Documents/dev/ai/limecloud/content-studio` 样本导入 read model 为 92 messages / 1901 items,完整记录下钻 probe 为 `totalEvents=19419`、`materializedRuntimeEvents=2343`、`sidecarRuntimeEvents=17076`,`consoleErrors=[]`。
|
||||
- 追加质量复核:`npm run test:contracts` 通过,覆盖协议类型生成检查、App Server client contract、command contracts、harness、modality、scripts governance、Electron release workflow、cleanup report 和 docs boundary;`npm run verify:gui-smoke` 首次暴露拆分后的 artifact document builder 重新导出错误,已把 `taskPreviewFromToolResult.ts` 改为从 `taskPreviewAudioTranscriptionArtifact.ts` 重新导出,随后复跑完整通过,覆盖 renderer production build、Electron main / preload build、`typecheck:electron`、App Server sidecar assets、renderer load、App Server ready、Claw workbench shell 和 memory settings。定向 `npx eslint "src/components/agent/chat/utils/taskPreviewFromToolResult.ts" "src/components/agent/chat/utils/taskPreviewAudioTranscription.ts" "src/components/agent/chat/utils/taskPreviewAudioTranscriptionArtifact.ts" --max-warnings 0` 与 `npx vitest run "src/components/agent/chat/utils/taskPreviewFromToolResult.test.ts" --silent=passed-only --disableConsoleIntercept --testTimeout=30000` 同步通过。
|
||||
- 追加 Rust 定向复核:此前因 artifact lock 未拿到全组通过证据的 `runtime::conversation_import::tests::runtime_events` 已复跑通过,10 tests passed,覆盖重复用户消息合并、未闭合 lifecycle、assistant 顺序、tool/command/patch、late runtime events、update_plan、specialized runtime items 和高容量事件预算;`cargo test --manifest-path "lime-rs/Cargo.toml" -p lime-agent request_tool_policy::tests::allowed_web_search_should_not_run_preflight_from_message_keywords --lib` 通过,确认 WebSearch preflight 默认关闭回归可编译,且本轮未复现 `should_run_web_search_preflight` dead_code warning。
|
||||
- 追加 TypeScript 复核:`npm run typecheck -- --pretty false` 首次暴露 `useWorkspaceArtifactPreviewActions.test.tsx` 夹具类型漂移:mocked `crypto.randomUUID()` 不是 UUID 形状,且非通用工作台测试把 `mappedTheme` 写成不再被 hook 接受的 `"article"`。已按真实类型修正测试夹具,保持 `activeTheme="article"` 表达主题工作台场景、`mappedTheme="general"` 走当前 hook 类型,并更新 task selection 断言;`npx vitest run "src/components/agent/chat/workspace/useWorkspaceArtifactPreviewActions.test.tsx" --silent=passed-only --disableConsoleIntercept --testTimeout=30000` 通过,19 tests passed;同文件 ESLint 通过;复跑 `npm run typecheck -- --pretty false` 通过。
|
||||
@@ -189,7 +189,7 @@ Codex state_*.sqlite / rollout JSONL
|
||||
- `resolved`:复核并清理图片展示硬编码:base64 markdown 图片默认 alt 从固定英文 `Generated Image` 改为五语言 i18n key;去重回归测试不再使用平台品牌文本作为样例,生产源码中不保留来源品牌或特定错误词匹配。后续只能按 markdown image 结构、结构化 attachments 与 `[Image #n]` 兼容占位判断,不得重新按本地化错误句子做清洗。
|
||||
- `verified`:2026-06-18 复查 `src/components/agent/chat` / `src/lib` / `src/i18n/resources` / 本路线图,生产代码不再命中 `Generated Image`、来源品牌平台名或旧图片不可达诊断句;命中项只剩 i18n presentation、测试断言和本 tracker 记录。
|
||||
- `verified`:2026-06-18 复跑 `npm run smoke:local-history-import-visual-audit -- --timeout-ms 180000` 通过,summary `.lime/qc/gui-evidence/local-history-import-visual-audit/local-history-import-visual-audit-summary.json`:`ok=true`、三视口 `inputbarVisible=true` / `messageListVisible=true` / `hasCommandRecordVisible=true` / `hasPatchText=true` / `hasSearchEvidence=true` / `hasApprovalText=true`、`visibleTextLeaks=[]`、`hidesSourceBrandText=true`。
|
||||
- 当前已通过:`npx vitest run "src/components/agent/chat/components/MessageImageAttachments.test.tsx" "src/components/agent/chat/components/MarkdownRenderer.test.tsx" "src/components/agent/chat/utils/messageDisplaySanitizer.test.ts" "src/components/agent/chat/components/messageListItemProjection.unit.test.ts" "src/components/agent/chat/components/MessageList.test.tsx" --silent=passed-only --disableConsoleIntercept`;`npx vitest run "src/i18n/__tests__/loadNamespace.test.ts" "src/i18n/__tests__/types.test.ts" --silent=passed-only --disableConsoleIntercept`;`npm run smoke:agent-runtime-current-fixture`(覆盖 history/cache hydration、final_done 工具收尾、failed read model、Claw 终态 UI、真实 Electron Coding Workbench fixture、Claw GUI current fixture guard、停止后同会话继续输出,`liveProviderUsed=false`);`npm run smoke:local-history-import-visual-audit -- --timeout-ms 180000`;`git diff --check`。`npm run typecheck` 此前复现 TypeScript 5.9.3 内部崩溃 `Debug Failure. No error for last overload signature`,未输出源码位置;本轮仍不把全仓 typecheck 当作通过证据。
|
||||
- 当前已通过:`npx vitest run "src/components/agent/chat/components/MessageImageAttachments.test.tsx" "src/components/agent/chat/components/MarkdownRenderer.test.tsx" "src/components/agent/chat/utils/messageDisplaySanitizer.test.ts" "src/components/agent/chat/components/messageListItemProjection.unit.test.ts" "src/components/agent/chat/components/MessageList.test.tsx" --silent=passed-only --disableConsoleIntercept`;`npx vitest run "src/i18n/__tests__/loadNamespace.test.ts" "src/i18n/__tests__/types.test.ts" --silent=passed-only --disableConsoleIntercept`;`npm run smoke:agent-runtime-current-fixture`(覆盖 history/cache hydration、`turn.completed` 工具收尾(legacy `final_done` 仅负向 guard)、failed read model、Claw 终态 UI、真实 Electron Coding Workbench fixture、Claw GUI current fixture guard、停止后同会话继续输出,`liveProviderUsed=false`);`npm run smoke:local-history-import-visual-audit -- --timeout-ms 180000`;`git diff --check`。`npm run typecheck` 此前复现 TypeScript 5.9.3 内部崩溃 `Debug Failure. No error for last overload signature`,未输出源码位置;本轮仍不把全仓 typecheck 当作通过证据。
|
||||
|
||||
## 2026-06-18 进度记录:导入协议枚举事实源单一化
|
||||
|
||||
|
||||
@@ -611,7 +611,7 @@ npm run verify:gui-smoke
|
||||
|
||||
1. `npm run verify:local` 曾完整推进到 Vitest 第 56 批并暴露两个与本主线相邻的测试隔离 / UI 安全问题:live runtime copy 的 locale 泄漏、completed reasoning 默认 inline 泄露正文。两处均已通过定向测试修复。
|
||||
2. 中断恢复后,`verify:local` smart 模式只看到 `test-results/.last-run.json` 并 no-op,因此最终以显式定向测试 + contracts + current fixture + GUI smoke 作为本轮可交付证据。
|
||||
3. `smoke:agent-runtime-current-fixture` 已覆盖 history/cache hydration、final_done 工具收尾、Claw 终态 UI、Electron fixture guard、Coding Workbench Electron fixture、Claw GUI current fixture guard 与 cancel-then-continue。
|
||||
3. `smoke:agent-runtime-current-fixture` 已覆盖 history/cache hydration、`turn.completed` 工具收尾(legacy `final_done` 仅负向 guard)、Claw 终态 UI、Electron fixture guard、Coding Workbench Electron fixture、Claw GUI current fixture guard 与 cancel-then-continue。
|
||||
4. `verify:gui-smoke` 已完成 Electron renderer / host build、App Server 初始化、Claw workbench shell ready 与 memory settings ready。
|
||||
|
||||
剩余下一刀:
|
||||
|
||||
@@ -176,7 +176,7 @@ Lime 其实不是没有事件,而是已经有一条相当强的事件骨架。
|
||||
- `context_compaction_started / completed`
|
||||
- `runtime_status`
|
||||
- `queue_added / queue_removed / queue_started / queue_cleared`
|
||||
- `done / final_done`
|
||||
- 回合终态由 App Server current `turn.completed / turn.failed / turn.canceled` 表达;旧 `done / final_done` 不再属于 `AgentEvent` current surface
|
||||
- `warning / error / message`
|
||||
|
||||
这说明 Lime 已经有“流式 runtime 事件层”,不是从零开始。
|
||||
|
||||
@@ -186,7 +186,7 @@ npx vitest run "src/components/agent/chat/hooks/agentStreamTurnEventBinding.test
|
||||
|
||||
- `agentStreamRuntimeHandler.unit.test.ts` 定向:`4 passed, 28 skipped`,覆盖已有 item lifecycle 时 `tool_input_delta/tool_progress/tool_output_delta/tool.failed` 不再新建或改写 `message.toolCalls`,但仍更新 `threadItems` 与 Agent UI projection detail。
|
||||
- `conversationProjectionStore.test.ts`:`9 passed`,保持 item lifecycle 回收 legacy `tool.started/tool.result` 主事件、不同 turn 同名 toolCallId 不误删。
|
||||
- `npm run smoke:agent-runtime-current-fixture`:通过,覆盖 history/cache hydration、final_done 工具收尾、failed read model、Claw 终态 UI、code artifact workbench Electron fixture、Claw cancel-then-continue Electron fixture;`liveProviderUsed=false`。
|
||||
- `npm run smoke:agent-runtime-current-fixture`:通过,覆盖 history/cache hydration、`turn.completed` 工具收尾(legacy `final_done` 仅负向 guard)、failed read model、Claw 终态 UI、code artifact workbench Electron fixture、Claw cancel-then-continue Electron fixture;`liveProviderUsed=false`。
|
||||
2026-06-19 本轮补充 history hydrate item-first 收口证据:
|
||||
|
||||
- `agentChatHistory.test.ts` 定向:`5 passed, 56 skipped`,覆盖无 timeline 时 `thread_read.tool_calls` 仍兜底、Codex 导入 `detail.items` 合入助手消息、timeline 已有工具过程时不再注入 `thread_read.tool_calls` 兼容摘要。
|
||||
|
||||
@@ -240,7 +240,7 @@ npx eslint "src/components/agent/chat/components/messageListItemProjection.ts" "
|
||||
- `lime-agent request_tool_policy`:`48 passed`。
|
||||
- `app-server runtime::tests::read_model`:`9 passed`。
|
||||
- `npm run test:contracts`:通过,`app-server-client-contract` 为 `277 checks`,`mock priority commands: 0`。
|
||||
- `npm run smoke:agent-runtime-current-fixture`:通过,包含 history/cache hydration、final_done 工具收尾、failed read model、Claw 终态 UI、Coding Workbench Electron fixture、Claw 停止后同会话继续输出;`liveProviderUsed=false`。
|
||||
- `npm run smoke:agent-runtime-current-fixture`:通过,包含 history/cache hydration、`turn.completed` 工具收尾(legacy `final_done` 仅负向 guard)、failed read model、Claw 终态 UI、Coding Workbench Electron fixture、Claw 停止后同会话继续输出;`liveProviderUsed=false`。
|
||||
- `agentStreamRuntimeHandler.unit.test.ts`:`31 passed`,覆盖 `item_completed 应把已有 legacy 工具卡同步为完成态`。
|
||||
- `agentStreamTurnEventBinding.test.ts` + `agentStreamSubmitExecution.test.ts`:`11 passed`,覆盖 `getThreadItems` 透传链路不破坏事件绑定和提交执行。
|
||||
- `npm run verify:gui-smoke`:通过,最终输出 `claw workbench shell ready`;本轮复跑包含 `packages/app-server-client` build、Electron typecheck、host build 与 app-server sidecar 准备。
|
||||
@@ -749,7 +749,7 @@ npx playwright test --config ".lime/qc/playwright-cli/playwright.config.mjs"
|
||||
- 正常 SkillTool 输出不被误吞:`output: "已完成能力分析。"` 仍进入 UI;只隐藏运行时证明包络字段如 `sourceDraftId / workspaceSkillRuntimeEnable`。
|
||||
- ESLint 与 `git diff --check`:通过。
|
||||
- `service-skill-entry-smoke.mjs`:通过;继续证明 SkillTool gate allow/deny、source metadata、服务技能入口路由与 A2UI 主链仍可用。
|
||||
- `npm run smoke:agent-runtime-current-fixture`:通过;覆盖 history/cache hydration、final_done 工具收尾、MessageList 终态 UI、Electron fixture guard、真实 GUI coding 输入到 Coding Workbench Electron fixture、Claw 停止后同会话继续输出 Electron fixture;`liveProviderUsed=false`。
|
||||
- `npm run smoke:agent-runtime-current-fixture`:通过;覆盖 history/cache hydration、`turn.completed` 工具收尾(legacy `final_done` 仅负向 guard)、MessageList 终态 UI、Electron fixture guard、真实 GUI coding 输入到 Coding Workbench Electron fixture、Claw 停止后同会话继续输出 Electron fixture;`liveProviderUsed=false`。
|
||||
- Playwright CLI:`2 passed`,继续覆盖 Codex 对话 WebSearch/WebFetch 过程流折叠、展开、Markdown 渲染一致,以及 Codex 导入态 Markdown / 搜索过程 / 继续对话。
|
||||
- 产品结论:普通 `SkillTool` 的运行时 gate proof 与服务技能运行包络一样被视为协议证据,不再作为用户可读正文;搜索、思考、WebFetch 和 Codex 导入渲染主链未回退。
|
||||
|
||||
@@ -769,7 +769,7 @@ npx playwright test --config ".lime/qc/playwright-cli/playwright.config.mjs"
|
||||
- 误吞保护:命令类工具如 `Bash` 的 JSON stdout 不走通用协议包络隐藏,仍保留 `durationMs / result.ok` 等真实命令输出;带 `output` 正文的协议包络也不隐藏。
|
||||
- ESLint 与 `git diff --check`:通过。
|
||||
- `service-skill-entry-smoke.mjs`:通过;继续覆盖前端 metadata、App Server workspace skills、`lime-agent` SkillTool gate、服务技能入口路由与 Agent 对话内 A2UI 挂起主链。
|
||||
- `npm run smoke:agent-runtime-current-fixture`:通过;覆盖 history/cache hydration、final_done 工具收尾、MessageList 终态 UI、Electron fixture guard、真实 GUI coding 输入到 Coding Workbench Electron fixture、Claw 停止后同会话继续输出 Electron fixture;`liveProviderUsed=false`。
|
||||
- `npm run smoke:agent-runtime-current-fixture`:通过;覆盖 history/cache hydration、`turn.completed` 工具收尾(legacy `final_done` 仅负向 guard)、MessageList 终态 UI、Electron fixture guard、真实 GUI coding 输入到 Coding Workbench Electron fixture、Claw 停止后同会话继续输出 Electron fixture;`liveProviderUsed=false`。
|
||||
- Playwright CLI:`2 passed`,继续覆盖 Codex 对话 WebSearch/WebFetch 过程流折叠、展开、Markdown 渲染一致,以及 Codex 导入态 Markdown / 搜索过程 / 继续对话。
|
||||
- 产品结论:工具结果展示现在区分“协议诊断证据”和“用户输出”;非命令工具的 metadata-only / diagnostics-only 包络不会再被当作用户正文,命令 stdout 与真实正文不被误吞。
|
||||
|
||||
@@ -797,7 +797,7 @@ wc -l "src/components/agent/chat/components/ToolCallDisplay.tsx" "src/components
|
||||
- ESLint:本轮新增 / 拆分实现文件与相关测试文件全部通过。
|
||||
- 超限拆分:`ToolCallDisplay.tsx` 从 `1830` 行拆到 `923` 行,`InlineToolProcessStep.tsx` 从 `1111` 行拆到 `849` 行,`StreamingRenderer.tsx` 从 `1687` 行拆到 `996` 行;拆出的职责文件均低于 `500` 行。
|
||||
- `service-skill-entry-smoke.mjs`:通过;继续覆盖前端 metadata、App Server workspace skills、`lime-agent` SkillTool gate、服务技能入口路由与 Agent 对话内 A2UI 挂起主链。
|
||||
- `npm run smoke:agent-runtime-current-fixture`:通过;继续覆盖 history/cache hydration、final_done 工具收尾、真实 GUI coding 输入到 Coding Workbench Electron fixture、Claw 停止后同会话继续输出 Electron fixture;`liveProviderUsed=false`。
|
||||
- `npm run smoke:agent-runtime-current-fixture`:通过;继续覆盖 history/cache hydration、`turn.completed` 工具收尾(legacy `final_done` 仅负向 guard)、真实 GUI coding 输入到 Coding Workbench Electron fixture、Claw 停止后同会话继续输出 Electron fixture;`liveProviderUsed=false`。
|
||||
- Playwright CLI:`2 passed`,继续覆盖 Codex 对话 WebSearch/WebFetch 过程流折叠、展开、Markdown 渲染一致,以及 Codex 导入态 Markdown / 搜索过程 / 继续对话。
|
||||
- `npm run verify:gui-smoke`:通过;Electron renderer build、Electron host typecheck、app-server sidecar 与 claw workbench / memory settings smoke 均可启动。
|
||||
- `git diff --check`:通过。
|
||||
@@ -885,7 +885,7 @@ wc -l "src/components/agent/chat/components/messageListItemProjection"*.ts "src/
|
||||
- Projection ESLint:通过。
|
||||
- Projection 定向 Vitest:`8 files passed, 36 tests passed`,覆盖搜索 running 不提前显示最终正文、搜索完成后穿插 final answer、running 残留完成态归一、Codex 导入只读工具过程、legacy toolCalls 兜底边界、timeline 审批 / 图片 / 任务板穿插、文件 artifact 去重与失败正文去重。
|
||||
- MarkdownRenderer + MessageList 合并渲染回归:`20 files passed, 198 tests passed`,覆盖 Markdown 标题 / 表格 / 代码块、导入历史、搜索过程流、思考持久化、运行态完成、artifact timeline、媒体任务与失败 Web tools。
|
||||
- `npm run smoke:agent-runtime-current-fixture`:通过;继续覆盖 history/cache hydration、final_done 工具收尾、failed read model、Claw 终态 UI、Electron fixture guard、真实 GUI coding 输入到 Coding Workbench Electron fixture、Claw GUI current fixture guard、停止后同会话继续输出 Electron fixture、Skills Runtime natural + 显式 `$skill` + 技能中心试用入口三入口按需加载 Electron fixture;`liveProviderUsed=false`。
|
||||
- `npm run smoke:agent-runtime-current-fixture`:通过;继续覆盖 history/cache hydration、`turn.completed` 工具收尾(legacy `final_done` 仅负向 guard)、failed read model、Claw 终态 UI、Electron fixture guard、真实 GUI coding 输入到 Coding Workbench Electron fixture、Claw GUI current fixture guard、停止后同会话继续输出 Electron fixture、Skills Runtime natural + 显式 `$skill` + 技能中心试用入口三入口按需加载 Electron fixture;`liveProviderUsed=false`。
|
||||
- Playwright CLI:`2 passed`,继续覆盖 Codex 对话 WebSearch/WebFetch 过程流折叠、展开、Markdown 渲染一致,以及 Codex 导入态 Markdown、搜索过程和继续对话。
|
||||
- `npm run verify:gui-smoke`:通过;Electron renderer build、Electron host typecheck、App Server sidecar 初始化、Claw workbench shell 与 memory settings smoke 均通过。
|
||||
- `git diff --check`:通过。
|
||||
@@ -975,7 +975,7 @@ git diff --check
|
||||
- `agentChatHistory` 定向 Vitest:`7 files passed, 61 tests passed`,覆盖累计正文去重、Codex 导入 detail.items / reasoning / tool call、thread_read 工具摘要、失败 read model、历史压缩、图片 / 视频任务预览、token usage、本地消息图片和流式尾部保留。
|
||||
- Codex 导入 / 搜索渲染回归:`6 files passed, 35 tests passed`,覆盖 MessageList 导入历史、StreamingRenderer 导入态、WebSearch imported 和 timeline reasoning 合并。
|
||||
- StreamingRenderer / WebSearch / InlineToolProcessStep / ToolCallDisplay 回归:`7 files passed, 88 tests passed`,覆盖 WebSearch/WebFetch 运行中默认展开、搜索 / 思考 / 读取页面时间顺序、工具轻卡摘要与 Markdown 渲染。
|
||||
- `npm run smoke:agent-runtime-current-fixture`:通过;覆盖 history/cache hydration、final_done 工具收尾、failed read model、Claw 终态 UI、Electron fixture guard、真实 GUI coding 输入到 Coding Workbench、停止后同会话继续输出、Skills Runtime、MCP structuredContent、Expert Skills Runtime 和 Expert Plaza 技能闭环;`liveProviderUsed=false`。
|
||||
- `npm run smoke:agent-runtime-current-fixture`:通过;覆盖 history/cache hydration、`turn.completed` 工具收尾(legacy `final_done` 仅负向 guard)、failed read model、Claw 终态 UI、Electron fixture guard、真实 GUI coding 输入到 Coding Workbench、停止后同会话继续输出、Skills Runtime、MCP structuredContent、Expert Skills Runtime 和 Expert Plaza 技能闭环;`liveProviderUsed=false`。
|
||||
- Playwright CLI:`2 passed`,继续覆盖 Codex 对话 WebSearch/WebFetch 过程流折叠、展开、Markdown 渲染一致,以及 Codex 导入态 Markdown、搜索过程和继续对话。
|
||||
- `npm run verify:gui-smoke`:通过;Electron renderer build、Electron host typecheck、App Server sidecar 初始化、Claw workbench shell 与 memory settings smoke 均通过。
|
||||
- `git diff --check`:通过。
|
||||
|
||||
Reference in New Issue
Block a user