mirror of
https://github.com/aiclientproxy/proxycast.git
synced 2026-09-24 23:10:56 +08:00
release: v1.4.0
This commit is contained in:
@@ -69,7 +69,7 @@ Lime 的命令体系固定按以下关系理解:
|
||||
|
||||
对图片任务再补一条固定约束:
|
||||
|
||||
`@配图/@修图` 原始文本必须先进入 Agent turn,再由 `harness.image_skill_launch` 辅助首刀 `Skill(image_generate)`;不要把 current 主链重新改回前端预翻 slash skill 或前端直建任务。
|
||||
`@配图/@修图/@重绘` 原始文本必须先进入 Agent turn,再由 `harness.image_skill_launch` 辅助首刀 `Skill(image_generate)`;文稿 inline 配图、封面位、图片工作台编辑/变体这类显式图片动作也一样,必须先组装 `image_task` 上下文后再复用统一发送主线。不要把 current 主链重新改回前端预翻 slash skill、前端直建任务或“按钮直调 task API”。
|
||||
|
||||
不要再把命令能力直接叙述成:
|
||||
|
||||
@@ -102,9 +102,10 @@ Lime 的命令体系固定按以下关系理解:
|
||||
当前 `scene` slash 的第一刀执行也固定如下:
|
||||
|
||||
- `useWorkspaceSendActions` 先识别 `/scene-key ...`
|
||||
- 再通过 `useWorkspaceServiceSkillEntryActions.handleRuntimeSceneLaunch(...)` 从本地缓存 `SkillCatalog.entries` 里解析 `scene`
|
||||
- 客户端按 `linkedSkillId -> ServiceSkillHomeItem` 复用已有 `ServiceSkill` 启动链,而不是新增一套 scene 执行器
|
||||
- 若云端 `cloud_scene` 在创建 run 之前就失败,例如缺少会话、服务端暂不可达,客户端要自动回退到本地工作区 prompt 主链,不能让 `/scene-key` 直接失能
|
||||
- 从统一 `SkillCatalog.entries` 里解析 `scene -> linkedSkillId -> ServiceSkillHomeItem`
|
||||
- 前端只负责把结构化 `service_scene_launch` 写进当前 turn metadata,不负责前端直建云端 run
|
||||
- Rust 侧会把该 turn 收口到 `workbench`,并通过系统提示强约束 Agent 首刀优先调用 `lime_run_service_skill`
|
||||
- `lime_run_service_skill` 再根据当前 turn 绑定的 `serviceSkillId + OEM runtime` 发起服务端 run / 短轮询,保证 slash scene 也走 `Agent -> tool -> timeline` 主链
|
||||
- 未命中统一目录的 slash 文本必须继续回到普通 slash 流程,不能被错误吞成“未找到本地 Skill”
|
||||
|
||||
一句话:
|
||||
@@ -123,7 +124,10 @@ Lime 的命令体系固定按以下关系理解:
|
||||
- `@修图`
|
||||
- `@重绘`
|
||||
- `@视频`
|
||||
- `@播报`
|
||||
- `@素材`
|
||||
- `@转写`
|
||||
- `@排版`
|
||||
|
||||
特点:
|
||||
|
||||
@@ -135,10 +139,19 @@ Lime 的命令体系固定按以下关系理解:
|
||||
其中图片类能力当前已经有额外运行时纪律:
|
||||
|
||||
- `@配图` / `@修图` / `@重绘` 的 current 主链必须保留原始用户消息进入 Agent
|
||||
- 前端只负责补 `harness.image_skill_launch` 这类结构化上下文,不负责预翻成 slash skill
|
||||
- 文稿 inline 配图、封面位、图片工作台编辑/变体等显式动作也必须补成同构的 `harness.image_skill_launch`,而不是绕过 Agent 直建任务
|
||||
- 前端只负责补 `harness.image_skill_launch` 这类结构化上下文,不负责预翻成 slash skill 或偷偷发起 task
|
||||
- Agent 首刀优先调用 `Skill(image_generate)`,再由 skill / CLI / task file 链路继续执行
|
||||
- 聊天区轻卡与 viewer 只消费后端真实运行态,不伪造“已完成”
|
||||
|
||||
`@素材` 在这个分型里是一个混合分流特例:
|
||||
|
||||
- 命令仍必须先进入 `Agent -> Skill(modal_resource_search)` 主链
|
||||
- 当 `resource_type=image` 且关键词明确时,skill 应优先调用 `lime_search_web_images`,直接复用现有 `Pexels API Key` 设置返回候选
|
||||
- `lime_search_web_images` 命中后,聊天区应直接展示真实 tool result 生成的素材轻卡与缩略图,点击后在右侧打开同回合 artifact document,而不是只留一段文本总结
|
||||
- 当资源类型是 `bgm / sfx / video`,或图片直搜失败时,再回退 `Bash -> lime task create resource-search --json` / `lime_create_modal_resource_search_task`
|
||||
- 无论走直搜还是 task,都必须保留真实 `tool_timeline`,不能回到前端直连图库或隐藏底层 tools
|
||||
|
||||
### 2. `Agent + ServiceSkill`
|
||||
|
||||
适合:
|
||||
@@ -157,8 +170,9 @@ Lime 的命令体系固定按以下关系理解:
|
||||
|
||||
- `/scene-key` 不再直接落回本地 slash skill 预处理
|
||||
- 先按统一目录找到 `scene` 与其 `linkedSkillId`
|
||||
- 复用现有 `ServiceSkill` 启动主链
|
||||
- 云端首提失败时自动回退本地工作区,保证 seeded/fallback 仍可推进
|
||||
- 把 `service_scene_launch` 作为当前 turn 的 binding 上下文,而不是前端直接调用云端 run
|
||||
- 由 Agent 首刀调用 `lime_run_service_skill` 执行服务型技能 run
|
||||
- 服务端目录失联或 scene 未命中时,客户端 seeded/fallback 仍要保证 slash 输入能回到普通工作区主链
|
||||
|
||||
### 3. `Agent + Workflow`
|
||||
|
||||
@@ -177,6 +191,11 @@ Lime 的命令体系固定按以下关系理解:
|
||||
|
||||
适合:
|
||||
|
||||
- `@搜索`
|
||||
- `@深搜`
|
||||
- `@研报`
|
||||
- `@站点搜索`
|
||||
- `@读PDF`
|
||||
- `@总结`
|
||||
- `@翻译`
|
||||
- `@分析`
|
||||
@@ -184,9 +203,66 @@ Lime 的命令体系固定按以下关系理解:
|
||||
特点:
|
||||
|
||||
- 首期轻量
|
||||
- 保留真实 skills / tools timeline
|
||||
- 可以先不独立恢复
|
||||
- 后续可升级为更重的形态
|
||||
|
||||
当前 `@搜索` 已按这条主链收口:
|
||||
|
||||
- 前端只补 `harness.research_skill_launch`
|
||||
- Agent 首刀优先调用 `Skill(research)`
|
||||
- `research` skill 再驱动 `search_query`
|
||||
- 不走 task file,也不允许前端伪造“已搜索完成”
|
||||
|
||||
当前 `@深搜` 也已按这条主链收口:
|
||||
|
||||
- 前端只补 `harness.deep_search_skill_launch`
|
||||
- Agent 首刀优先调用 `Skill(research)`
|
||||
- `research` skill 继续驱动 `search_query`,但系统提示强约束至少多轮扩搜
|
||||
- 不走 task file,也不允许前端把深搜伪装成“普通搜索加强版”
|
||||
|
||||
当前 `@研报` 也已按这条主链收口:
|
||||
|
||||
- 前端只补 `harness.report_skill_launch`
|
||||
- Agent 首刀优先调用 `Skill(report_generate)`
|
||||
- `report_generate` skill 再驱动 `search_query`,并把结果写成结构化研究报告
|
||||
- 不走 task file,也不允许前端本地先拼报告再伪装成 skill 结果
|
||||
|
||||
当前 `@站点搜索` 也已按这条主链收口:
|
||||
|
||||
- 前端只补 `harness.site_search_skill_launch`
|
||||
- Agent 首刀优先调用 `Skill(site_search)`
|
||||
- `site_search` skill 再驱动 `lime_site_info / lime_site_run / lime_site_search`
|
||||
- 不走 task file,也不允许前端先退回 `research / WebSearch`
|
||||
|
||||
当前 `@读PDF` 也应按这条主链收口:
|
||||
|
||||
- 前端只补 `harness.pdf_read_skill_launch`
|
||||
- Agent 首刀优先调用 `Skill(pdf_read)`
|
||||
- `pdf_read` skill 再最小化驱动 `list_directory / read_file`
|
||||
- 不走 task file,也不允许前端本地直接解析 PDF 或伪造“已读结果”
|
||||
|
||||
当前 `@总结` 也已按这条主链收口:
|
||||
|
||||
- 前端只补 `harness.summary_skill_launch`
|
||||
- Agent 首刀优先调用 `Skill(summary)`
|
||||
- `summary` skill 默认直接总结 `summary_request.content` 或当前对话上下文;当用户显式给出本地路径时,才最小化使用 `list_directory / read_file`
|
||||
- 不走 task file,也不允许前端本地直接总结后再伪装成 skill 结果
|
||||
|
||||
当前 `@翻译` 也已按这条主链收口:
|
||||
|
||||
- 前端只补 `harness.translation_skill_launch`
|
||||
- Agent 首刀优先调用 `Skill(translation)`
|
||||
- `translation` skill 默认直接翻译 `translation_request.content` 或当前对话上下文;当用户显式给出本地路径时,才最小化使用 `list_directory / read_file`
|
||||
- 不走 task file,也不允许前端本地直接翻译后再伪装成 skill 结果
|
||||
|
||||
当前 `@分析` 也已按这条主链收口:
|
||||
|
||||
- 前端只补 `harness.analysis_skill_launch`
|
||||
- Agent 首刀优先调用 `Skill(analysis)`
|
||||
- `analysis` skill 默认直接分析 `analysis_request.content` 或当前对话上下文;当用户显式给出本地路径时,才最小化使用 `list_directory / read_file`
|
||||
- 不走 task file,也不允许前端本地直接分析后再伪装成 skill 结果
|
||||
|
||||
## 公共设计包在哪里
|
||||
|
||||
命令运行时的公共实施设计包统一在:
|
||||
@@ -229,6 +305,12 @@ Lime 的命令体系固定按以下关系理解:
|
||||
|
||||
- `docs/prd/gongneng/peitu/`
|
||||
- `docs/prd/gongneng/xiutu/`
|
||||
- `docs/prd/gongneng/sousuo/`
|
||||
- `docs/prd/gongneng/shensou/`
|
||||
- `docs/prd/gongneng/zhandiansousuo/`
|
||||
- `docs/prd/gongneng/zongjie/`
|
||||
- `docs/prd/gongneng/fanyi/`
|
||||
- `docs/prd/gongneng/fenxi/`
|
||||
|
||||
旧平铺文档如果仍保留,只能作为 compat 索引,不再作为 current 主文档。
|
||||
|
||||
|
||||
+56
-11
@@ -88,17 +88,17 @@
|
||||
|
||||
- `CharacterMention`、`builtinCommands`、场景 slash 补全不得再各自维护一套业务命令静态常量
|
||||
- 服务端尚未返回 `entries` 时,允许网关层从 legacy `items` 兼容投影出 `entries`
|
||||
- 客户端必须保留 seeded fallback,不能因为服务端暂时不可用就让 `@配图`、`@转写` 这类主链入口失能
|
||||
- 客户端必须保留 seeded fallback,不能因为服务端暂时不可用就让 `@配图`、`@搜索`、`@深搜`、`@研报`、`@站点搜索`、`@读PDF`、`@总结`、`@翻译`、`@分析`、`@转写` 这类主链入口失能
|
||||
- `src/components/agent/chat/commands/catalog.ts` 只继续承接 Lime 本地 / Codex 原生命令;产品型 `/` 场景不应再长期硬编码在这里
|
||||
- 若服务端下发的 `renderContract` 超出 Lime 当前支持范围,优先由服务端回退到已支持类型,客户端也必须退化到通用 timeline / artifact 展示
|
||||
|
||||
当前 `/scene-key` 的发送主链也已经固定:
|
||||
|
||||
- 发送前由 `src/components/agent/chat/workspace/useWorkspaceSendActions.ts` 统一拦截 slash 场景
|
||||
- 再委托 `src/components/agent/chat/workspace/useWorkspaceServiceSkillEntryActions.ts` 的 `handleRuntimeSceneLaunch(...)`
|
||||
- 运行时只从统一 catalog 解析 `scene -> linkedSkillId -> ServiceSkillHomeItem`
|
||||
- 对 `cloud_scene`,优先复用现有 `createServiceSkillRun(...)` 云端运行链
|
||||
- 若云端 run 在创建前就失败,客户端必须自动回退到本地工作区 prompt 主链,不能把 slash scene 直接判死
|
||||
- 运行时只从统一 catalog 解析 `scene -> linkedSkillId -> ServiceSkillHomeItem`,并把结构化上下文写入 `request_metadata.harness.service_scene_launch`
|
||||
- Rust 侧 `runtime_turn` 会把这类 turn 统一切到 `workbench`,并通过 `prompt_context` 强约束首刀优先调用 `lime_run_service_skill`
|
||||
- `lime_run_service_skill` 负责基于当前 session / turn 上下文读取已绑定的 `serviceSkillId + OEM runtime`,再向 OEM Scene Runtime 发起 run / poll
|
||||
- slash scene 不应再在前端直接调用 `createServiceSkillRun(...)` 或其它云端 run API;客户端当前职责只剩 catalog 解析、metadata 注入与 seeded/fallback 托底
|
||||
- 未命中统一 scene 目录的 slash 文本必须继续回到普通 slash / Codex 命令流,不能误报本地 Skill 不存在
|
||||
|
||||
如果这轮改动触达了 `client/skills` 协议,不仅要改 Lime 前端 selector,还要同步检查 `limecore` 的:
|
||||
@@ -116,17 +116,17 @@
|
||||
|
||||
这些命令统一产出 `.lime/tasks/<task_type>/*.json` artifact 与稳定 JSON 输出。仓库内现有 `lime_create_*_generation_task`、`social_generate_cover_image` 与相关 Tauri / agent tool 入口在兼容期内允许保留,但应继续委托同一套任务文件与输出契约,不要再长出第三套“媒体任务协议”。
|
||||
|
||||
`Claw` 的图片任务当前需要分成两条已收敛主链:
|
||||
`Claw` 的图片任务当前已经收敛到同一条 current 主链:
|
||||
|
||||
- Agent 驱动的图片命令:`@配图` / `@修图` / `@重绘` / `@image` / `/image` 在 `src/components/agent/chat/workspace/useWorkspaceSendActions.ts` 中保留原始用户文本发送,不再预翻译为 `/image_generate ...`。聊天发送边界会把结构化 `image_task` 写入 `request_metadata.harness.image_skill_launch`,同时打开 `request_metadata.harness.allow_model_skills = true`。Rust 侧 `src-tauri/src/commands/aster_agent_cmd/runtime_turn.rs` 与 `src-tauri/src/commands/aster_agent_cmd/image_skill_launch.rs` 会物化 `skill-input-image://N` 引用,并给当前 turn 注入只允许首刀优先调用 `Skill(image_generate)` 的系统提示。后续默认 skill 继续优先走 `Bash -> lime media image generate --json`,CLI 不可用时再回退 `lime_create_image_generation_task`,最终仍只落到标准 task file。
|
||||
- 显式 task 动作:文稿 inline 配图、封面位、图片工作台编辑/变体、带引用图或带参考图的动作,继续通过 `src/lib/api/mediaTasks.ts` 承接:
|
||||
- Agent 驱动的图片命令与显式图片动作:`@配图` / `@修图` / `@重绘` / `@image` / `/image`,以及文稿 inline 配图、封面位、图片工作台编辑/变体、带引用图或带参考图的动作,都必须先进入 Agent turn。纯文本入口由 `src/components/agent/chat/workspace/useWorkspaceSendActions.ts` 保留原始用户文本发送;显式动作则由 `src/components/agent/chat/workspace/useWorkspaceImageWorkbenchActionRuntime.ts` 组装同构的 `image_task` 上下文后,再复用统一发送主线。两类入口都会把结构化 `image_task` 写入 `request_metadata.harness.image_skill_launch`,同时打开 `request_metadata.harness.allow_model_skills = true`。Rust 侧 `src-tauri/src/commands/aster_agent_cmd/runtime_turn.rs` 与 `src-tauri/src/commands/aster_agent_cmd/image_skill_launch.rs` 会物化 `skill-input-image://N` 引用,并给当前 turn 注入只允许首刀优先调用 `Skill(image_generate)` 的系统提示。后续默认 skill 继续优先走 `Bash -> lime media image generate --json`,CLI 不可用时再回退 `lime_create_image_generation_task`,最终仍只落到标准 task file。
|
||||
- 图片 task 控制面:`src/lib/api/mediaTasks.ts` 继续承接 task control / replay / recovery,而不是首发入口:
|
||||
|
||||
- `create_image_generation_task_artifact`
|
||||
- `get_media_task_artifact`
|
||||
- `list_media_task_artifacts`
|
||||
- `cancel_media_task_artifact`
|
||||
|
||||
无论入口来自 slash skill 还是显式 task action,最终都只允许写入当前项目根目录下的标准 `image_generate` task file,并写入 `session_id / project_id / content_id / entry_source / mode` 等上下文。若当前来源是文稿 inline 配图,还会继续写入 `usage=document-inline`,并以 `relationships.slot_id` 作为正文占位块与后续任务回填的正式绑定字段;payload 中的 `slot_id` 仅保留兼容读取。若前端已经能推断目标小节,还应继续把 `anchor_section_title` 写入 task payload;若还能识别用户当前选中的具体段落,还应继续把裁剪后的 `anchor_text` 一并写入,用于正文占位图与最终图片的 paragraph 级原位落位。聊天区动态占位、正文占位替换、结果回填、刷新恢复都必须继续以 `.lime/tasks` 为唯一事实源,不允许重新回到前端直连图片服务。
|
||||
无论入口来自纯文本命令、slash scene 组合还是显式图片动作,最终都只允许写入当前项目根目录下的标准 `image_generate` task file,并写入 `session_id / project_id / content_id / entry_source / mode` 等上下文。若当前来源是文稿 inline 配图,还会继续写入 `usage=document-inline`,并以 `relationships.slot_id` 作为正文占位块与后续任务回填的正式绑定字段;payload 中的 `slot_id` 仅保留兼容读取。若前端已经能推断目标小节,还应继续把 `anchor_section_title` 写入 task payload;若还能识别用户当前选中的具体段落,还应继续把裁剪后的 `anchor_text` 一并写入,用于正文占位图与最终图片的 paragraph 级原位落位。聊天区动态占位、正文占位替换、结果回填、刷新恢复都必须继续以 `.lime/tasks` 为唯一事实源,不允许重新回到前端直连图片服务。
|
||||
|
||||
Workspace `Bash` 运行时在当前主链中应优先解析同名 `lime` 入口:开发态优先回落到 `cargo run -p lime-cli`,打包态优先使用随应用提供的 CLI 二进制。默认 skill 若已经切到 `Bash -> lime media ...`,仍应保留 compat tool 作为兜底,避免在 CLI 暂不可用时把用户流量打断。
|
||||
|
||||
@@ -145,6 +145,47 @@ Skill 执行链路同样遵循单一命令边界。当前前端入口为 `src/li
|
||||
`Claw` 的纯文本视频命令也应沿相同心智收敛:
|
||||
|
||||
- Agent 驱动的视频命令:`@视频` / `@video` 在 `src/components/agent/chat/workspace/useWorkspaceSendActions.ts` 中保留原始用户文本发送。聊天发送边界会把结构化 `video_task` 写入 `request_metadata.harness.video_skill_launch`,同时打开 `request_metadata.harness.allow_model_skills = true`。Rust 侧 `src-tauri/src/commands/aster_agent_cmd/runtime_turn.rs` 与 `src-tauri/src/commands/aster_agent_cmd/video_skill_launch.rs` 会给当前 turn 注入只允许首刀优先调用 `Skill(video_generate)` 的系统提示。后续默认 skill 继续优先走 `Bash -> lime media video generate --json`,CLI 不可用时再回退 `lime_create_video_generation_task` / `create_video_generation_task`,最终仍只允许落到标准 `video_generate` 任务主链。
|
||||
- 前端消费层不再把 `@视频` 当成图片任务特判。当前聊天区通过统一 `taskPreview` 消费 `video_generate` 任务摘要,点击结果卡后直接复用现有 `VideoCanvas / VideoWorkspace` 打开右侧 viewer;运行中的视频任务则由 `useWorkspaceVideoTaskPreviewRuntime` 基于 `videoGenerationApi.getTask(...)` 轮询回流状态与结果 URL。
|
||||
|
||||
`Claw` 的纯文本播报命令也应沿同一条 current 主链收敛:
|
||||
|
||||
- Agent 驱动的播报命令:`@播报` / `@播客` / `@broadcast` 在 `src/components/agent/chat/workspace/useWorkspaceSendActions.ts` 中保留原始用户文本发送。聊天发送边界会把结构化 `broadcast_task` 写入 `request_metadata.harness.broadcast_skill_launch`,同时打开 `request_metadata.harness.allow_model_skills = true`。Rust 侧 `src-tauri/src/commands/aster_agent_cmd/runtime_turn.rs` 与 `src-tauri/src/commands/aster_agent_cmd/broadcast_skill_launch.rs` 会给当前 turn 注入只允许首刀优先调用 `Skill(broadcast_generate)` 的系统提示。后续默认 skill 继续优先走 `Bash -> lime task create broadcast --json`,CLI 不可用时再回退 `lime_create_broadcast_generation_task`,最终仍只允许落到标准 `broadcast_generate` task file;若当前上下文缺少待整理原文,允许 Agent 最多追问 1 个关键问题,但不能伪造“播报已完成”。
|
||||
|
||||
`Claw` 的纯文本素材命令也应沿同一条 current 主链收敛:
|
||||
|
||||
- Agent 驱动的素材命令:`@素材` / `@资源` / `@resource` 在 `src/components/agent/chat/workspace/useWorkspaceSendActions.ts` 中保留原始用户文本发送。聊天发送边界会把结构化 `resource_search_task` 写入 `request_metadata.harness.resource_search_skill_launch`,同时打开 `request_metadata.harness.allow_model_skills = true`。Rust 侧 `src-tauri/src/commands/aster_agent_cmd/runtime_turn.rs` 与 `src-tauri/src/commands/aster_agent_cmd/resource_search_skill_launch.rs` 会给当前 turn 注入只允许首刀优先调用 `Skill(modal_resource_search)` 的系统提示。若 `resource_type=image` 且 query 明确,默认 skill 必须优先调用 `lime_search_web_images`,直接复用现有“设置 -> 系统 -> 网络搜索 -> Pexels API Key”返回候选,并保留真实 tool timeline;只有 `Pexels API Key` 未配置、无结果,或用户明确要求继续异步追踪时,才回退 `Bash -> lime task create resource-search --json`。对 `bgm / sfx / video` 等非图片素材,仍优先走 `Bash -> lime task create resource-search --json`,CLI 不可用时再回退 `lime_create_modal_resource_search_task`,最终落到标准 `modal_resource_search` task file;若当前上下文缺少明确资源类型或检索关键词,允许 Agent 最多追问 1 个关键问题,但不能伪造“素材已检索完成”。
|
||||
|
||||
`Claw` 的纯文本搜索命令也应沿同一条 current 主链收敛:
|
||||
|
||||
- Agent 驱动的搜索命令:`@搜索` / `@search` / `@research` / `@调研` 在 `src/components/agent/chat/workspace/useWorkspaceSendActions.ts` 中保留原始用户文本发送。聊天发送边界会把结构化 `research_request` 写入 `request_metadata.harness.research_skill_launch`,同时打开 `request_metadata.harness.allow_model_skills = true`。Rust 侧 `src-tauri/src/commands/aster_agent_cmd/runtime_turn.rs` 与 `src-tauri/src/commands/aster_agent_cmd/research_skill_launch.rs` 会给当前 turn 注入只允许首刀优先调用 `Skill(research)` 的系统提示。后续默认 skill 必须沿 `research` prompt skill -> `search_query` 主链先真实联网检索,再输出结论、来源与建议;当前上下文缺少明确搜索主题时,允许 Agent 最多追问 1 个关键问题,但不能伪造“已完成搜索”,也不能直接凭记忆跳过检索。
|
||||
|
||||
`Claw` 的纯文本深搜命令也应沿同一条 current 主链收敛:
|
||||
|
||||
- Agent 驱动的深搜命令:`@深搜` / `@deep` / `@deepsearch` 在 `src/components/agent/chat/workspace/useWorkspaceSendActions.ts` 中保留原始用户文本发送。聊天发送边界会把结构化 `deep_search_request` 写入 `request_metadata.harness.deep_search_skill_launch`,同时打开 `request_metadata.harness.allow_model_skills = true`。Rust 侧 `src-tauri/src/commands/aster_agent_cmd/runtime_turn.rs` 与 `src-tauri/src/commands/aster_agent_cmd/deep_search_skill_launch.rs` 会给当前 turn 注入只允许首刀优先调用 `Skill(research)`、且至少执行多轮扩搜的系统提示。后续默认 skill 仍必须沿 `research` prompt skill -> `search_query` 主链先真实联网检索,再输出事实、推断与待确认项;当前上下文缺少明确搜索主题时,允许 Agent 最多追问 1 个关键问题,但不能伪造“已完成深搜”,也不能退化成只搜一次的普通搜索。
|
||||
|
||||
`Claw` 的纯文本研报命令也应沿同一条 current 主链收敛:
|
||||
|
||||
- Agent 驱动的研报命令:`@研报` / `@report` / `@research_report` 在 `src/components/agent/chat/workspace/useWorkspaceSendActions.ts` 中保留原始用户文本发送。聊天发送边界会把结构化 `report_request` 写入 `request_metadata.harness.report_skill_launch`,同时打开 `request_metadata.harness.allow_model_skills = true`。Rust 侧 `src-tauri/src/commands/aster_agent_cmd/runtime_turn.rs` 与 `src-tauri/src/commands/aster_agent_cmd/report_skill_launch.rs` 会给当前 turn 注入只允许首刀优先调用 `Skill(report_generate)` 的系统提示。后续默认 skill 必须沿 `report_generate` prompt skill -> `search_query` 主链先真实联网检索,再写出结构化研究报告;当前上下文缺少明确研报主题时,允许 Agent 最多追问 1 个关键问题,但不能伪造“研报已完成”,也不能直接退回普通聊天长文。
|
||||
|
||||
`Claw` 的纯文本站点搜索命令也应沿同一条 current 主链收敛:
|
||||
|
||||
- Agent 驱动的站点搜索命令:`@站点搜索` / `@站点` / `@site_search` / `@site` 在 `src/components/agent/chat/workspace/useWorkspaceSendActions.ts` 中保留原始用户文本发送。聊天发送边界会把结构化 `site_search_request` 写入 `request_metadata.harness.site_search_skill_launch`,同时打开 `request_metadata.harness.allow_model_skills = true`。Rust 侧 `src-tauri/src/commands/aster_agent_cmd/runtime_turn.rs` 与 `src-tauri/src/commands/aster_agent_cmd/site_search_skill_launch.rs` 会给当前 turn 注入只允许首刀优先调用 `Skill(site_search)` 的系统提示。后续默认 skill 必须沿 `site_search` prompt skill -> `lime_site_info / lime_site_run / lime_site_search` 主链先执行真实站点适配器,再输出摘要与来源;当前上下文缺少明确站点或检索关键词时,允许 Agent 最多追问 1 个关键问题,但不能伪造“已完成站点搜索”,也不能先退回 `research / WebSearch`。
|
||||
|
||||
`Claw` 的纯文本读 PDF 命令也应沿同一条 current 主链收敛:
|
||||
|
||||
- Agent 驱动的读 PDF 命令:`@读PDF` / `@pdf` / `@read_pdf` 在 `src/components/agent/chat/workspace/useWorkspaceSendActions.ts` 中保留原始用户文本发送。聊天发送边界会把结构化 `pdf_read_request` 写入 `request_metadata.harness.pdf_read_skill_launch`,同时打开 `request_metadata.harness.allow_model_skills = true`。Rust 侧 `src-tauri/src/commands/aster_agent_cmd/runtime_turn.rs` 与 `src-tauri/src/commands/aster_agent_cmd/pdf_read_skill_launch.rs` 会给当前 turn 注入只允许首刀优先调用 `Skill(pdf_read)` 的系统提示。后续默认 skill 必须沿 `pdf_read` prompt skill -> `list_directory / read_file` 主链先真实读取本地或工作区 PDF,再输出结构化解读结果;当前上下文只有远程 PDF URL 或缺少明确 PDF 来源时,允许 Agent 最多追问 1 个关键问题请求本地路径或导入路径,但不能伪造“PDF 已读完”,也不能退回普通聊天总结。
|
||||
|
||||
`Claw` 的纯文本总结命令也应沿同一条 current 主链收敛:
|
||||
|
||||
- Agent 驱动的总结命令:`@总结` / `@summary` / `@summarize` / `@摘要` 在 `src/components/agent/chat/workspace/useWorkspaceSendActions.ts` 中保留原始用户文本发送。聊天发送边界会把结构化 `summary_request` 写入 `request_metadata.harness.summary_skill_launch`,同时打开 `request_metadata.harness.allow_model_skills = true`。Rust 侧 `src-tauri/src/commands/aster_agent_cmd/runtime_turn.rs` 与 `src-tauri/src/commands/aster_agent_cmd/summary_skill_launch.rs` 会给当前 turn 注入只允许首刀优先调用 `Skill(summary)` 的系统提示。后续默认 skill 必须沿 `summary` prompt skill 主链先总结显式正文或当前对话相关上下文;只有当用户显式给出本地路径或目录时,才允许最小化使用 `list_directory / read_file` 读取必要内容并保留真实 tool timeline。当前上下文缺少显式正文时,允许 Agent 优先总结当前对话;只有在显式正文和对话上下文都不足时,才最多追问 1 个关键问题,但不能伪造“已完成总结”,也不能在前端直接生成摘要绕过 skill。
|
||||
|
||||
`Claw` 的纯文本翻译命令也应沿同一条 current 主链收敛:
|
||||
|
||||
- Agent 驱动的翻译命令:`@翻译` / `@translate` / `@translation` 在 `src/components/agent/chat/workspace/useWorkspaceSendActions.ts` 中保留原始用户文本发送。聊天发送边界会把结构化 `translation_request` 写入 `request_metadata.harness.translation_skill_launch`,同时打开 `request_metadata.harness.allow_model_skills = true`。Rust 侧 `src-tauri/src/commands/aster_agent_cmd/runtime_turn.rs` 与 `src-tauri/src/commands/aster_agent_cmd/translation_skill_launch.rs` 会给当前 turn 注入只允许首刀优先调用 `Skill(translation)` 的系统提示。后续默认 skill 必须沿 `translation` prompt skill 主链先翻译显式正文或当前对话相关上下文;只有当用户显式给出本地路径或目录时,才允许最小化使用 `list_directory / read_file` 读取必要内容并保留真实 tool timeline。当前上下文缺少显式正文时,允许 Agent 优先翻译当前对话;只有在显式正文和对话上下文都不足时,才最多追问 1 个关键问题,但不能伪造“已完成翻译”,也不能在前端直接生成译文绕过 skill。
|
||||
|
||||
`Claw` 的纯文本分析命令也应沿同一条 current 主链收敛:
|
||||
|
||||
- Agent 驱动的分析命令:`@分析` / `@analysis` / `@analyze` 在 `src/components/agent/chat/workspace/useWorkspaceSendActions.ts` 中保留原始用户文本发送。聊天发送边界会把结构化 `analysis_request` 写入 `request_metadata.harness.analysis_skill_launch`,同时打开 `request_metadata.harness.allow_model_skills = true`。Rust 侧 `src-tauri/src/commands/aster_agent_cmd/runtime_turn.rs` 与 `src-tauri/src/commands/aster_agent_cmd/analysis_skill_launch.rs` 会给当前 turn 注入只允许首刀优先调用 `Skill(analysis)` 的系统提示。后续默认 skill 必须沿 `analysis` prompt skill 主链先分析显式正文或当前对话相关上下文;只有当用户显式给出本地路径或目录时,才允许最小化使用 `list_directory / read_file` 读取必要内容并保留真实 tool timeline。当前上下文缺少显式正文时,允许 Agent 优先分析当前对话;只有在显式正文和对话上下文都不足时,才最多追问 1 个关键问题,但不能伪造“已完成分析”,也不能在前端直接生成分析结论绕过 skill。
|
||||
|
||||
`Claw` 的纯文本转写命令也应沿同一条 current 主链收敛:
|
||||
|
||||
@@ -154,7 +195,11 @@ Skill 执行链路同样遵循单一命令边界。当前前端入口为 `src/li
|
||||
|
||||
- Agent 驱动的链接解析命令:`@链接解析` / `@链接` / `@url_parse` 在 `src/components/agent/chat/workspace/useWorkspaceSendActions.ts` 中保留原始用户文本发送。聊天发送边界会把结构化 `url_parse_task` 写入 `request_metadata.harness.url_parse_skill_launch`,同时打开 `request_metadata.harness.allow_model_skills = true`。Rust 侧 `src-tauri/src/commands/aster_agent_cmd/runtime_turn.rs` 与 `src-tauri/src/commands/aster_agent_cmd/url_parse_skill_launch.rs` 会给当前 turn 注入只允许首刀优先调用 `Skill(url_parse)` 的系统提示。后续默认 skill 继续优先走 `Bash -> lime task create url-parse --json`,CLI 不可用时再回退 `lime_create_url_parse_task`,最终仍只允许落到标准 `url_parse` task file;若当前上下文缺少 URL,允许 Agent 最多追问 1 个关键问题,但不能伪造“链接已解析完成”。
|
||||
|
||||
这五条命令除了 Tauri `generate_handler!` 之外,也必须继续保持 DevBridge dispatcher 已桥接,避免浏览器模式、headless smoke 或 Playwright 续测时回退成 unknown command。
|
||||
`Claw` 的纯文本排版命令也应沿同一条 current 主链收敛:
|
||||
|
||||
- Agent 驱动的排版命令:`@排版` / `@typesetting` 在 `src/components/agent/chat/workspace/useWorkspaceSendActions.ts` 中保留原始用户文本发送。聊天发送边界会把结构化 `typesetting_task` 写入 `request_metadata.harness.typesetting_skill_launch`,同时打开 `request_metadata.harness.allow_model_skills = true`。Rust 侧 `src-tauri/src/commands/aster_agent_cmd/runtime_turn.rs` 与 `src-tauri/src/commands/aster_agent_cmd/typesetting_skill_launch.rs` 会给当前 turn 注入只允许首刀优先调用 `Skill(typesetting)` 的系统提示。后续默认 skill 继续优先走 `Bash -> lime task create typesetting --json`,CLI 不可用时再回退 `lime_create_typesetting_task`,最终仍只允许落到标准 `typesetting` task file;若当前上下文缺少待排版正文,允许 Agent 最多追问 1 个关键问题,但不能伪造“排版已完成”。
|
||||
|
||||
这些命令除了 Tauri `generate_handler!` 之外,也必须继续保持 DevBridge dispatcher 已桥接,避免浏览器模式、headless smoke 或 Playwright 续测时回退成 unknown command。
|
||||
|
||||
自动化设置链路同样遵循这条路径。当前主入口为 `src/lib/api/automation.ts`,统一承接:
|
||||
|
||||
@@ -379,7 +424,7 @@ npm run verify:local
|
||||
- **运行时外部分析交接主链**:继续收敛到 `agent_runtime_export_analysis_handoff`,复用 handoff bundle + evidence pack + replay case 生成 `analysis-brief.md / analysis-context.json / copy_prompt`,供外部诊断代理直接诊断与最小修复;当前 GUI 入口位于 `HarnessStatusPanel`
|
||||
- **运行时人工审核记录主链**:继续收敛到 `agent_runtime_export_review_decision_template` + `agent_runtime_save_review_decision`;前者复用 `analysis handoff` 生成 `review-decision.md / review-decision.json` 模板,后者把开发者的接受 / 延后 / 拒绝与回归要求回写到同一份工作区制品;当前 GUI 入口位于 `HarnessStatusPanel`
|
||||
- **会话主题上下文主链**:`getSession` 返回的 `execution_runtime.recent_theme / recent_session_mode` 负责承接最近一次运行态主题上下文;当前端已命中同一 steady-state theme/workbench mode 时,不应继续每回合重复携带 `harness.theme / harness.session_mode`
|
||||
- **会话运行阶段上下文主链**:`getSession` 返回的 `execution_runtime.recent_gate_key / recent_run_title` 负责承接最近一次 Theme Workbench 运行阶段上下文;当前端已命中同一 steady-state gate/run 时,不应继续每回合重复携带 `harness.gate_key / harness.run_title`
|
||||
- **会话运行阶段上下文主链**:`getSession` 返回的 `execution_runtime.recent_gate_key / recent_run_title` 负责承接最近一次通用工作区运行阶段上下文;当前端已命中同一 steady-state gate/run 时,不应继续每回合重复携带 `harness.gate_key / harness.run_title`
|
||||
- **会话内容上下文主链**:`getSession` 返回的 `execution_runtime.recent_content_id` 负责承接最近一次运行态 `content_id`;当前端已命中同一 steady-state 内容时,不应继续每回合重复携带 `harness.content_id`
|
||||
- **运行态摘要主链**:Aster `runtime_status` item -> timeline `turn_summary`
|
||||
- **上下文压缩策略主链**:`workspace.settings.auto_compact` 是运行时自动压缩的唯一 workspace 级开关;`agent_runtime_submit_turn` 与 `agent_runtime_respond_action` 都会把该设置注入 turn context。值为 `false` 时,Lime 不会做发起前自动压缩,并会显式告诉 Aster 关闭当前回合的内部自动压缩 / overflow recovery 自动压缩;此时只允许用户通过 `agent_runtime_compact_session` 手动压缩。
|
||||
|
||||
@@ -126,6 +126,7 @@ Lime 的整体界面应当接近以下气质:
|
||||
- 一个页面只保留一个主标题中心
|
||||
- 子页面不要重复出现“标题 + 同标题卡片标题”双重堆叠
|
||||
- 标题负责定性,说明负责补充,不要写两句意思相同的话
|
||||
- 首屏静态解释文案默认不要整段铺开;标题旁优先放 help / tips 入口,把写法建议、卡片 hint、快捷键说明等收进悬浮提示,避免说明文字压过主操作
|
||||
|
||||
### 3. 统计卡文字
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ Lime 是一个以创作为中心的本地优先 AI Agent 交互工作台,基
|
||||
|
||||
可以把它理解为三层结构:
|
||||
|
||||
1. **产品层**:Workspace、主题工作台、Agent 对话、Skills、Artifact/Canvas、记忆与风格
|
||||
1. **产品层**:Workspace、通用工作区 / Harness、Agent 对话、Skills、Artifact/Canvas、记忆与风格
|
||||
2. **能力层**:MCP、浏览器运行时、终端、插件、批量/心跳、Claw 渠道
|
||||
3. **基础设施层**:Aster Agent、Provider 凭证池、协议兼容、路由、服务器、数据库与监控
|
||||
|
||||
@@ -60,7 +60,7 @@ lime/
|
||||
|------|------|
|
||||
| `workspace/` | 工作区与项目边界,承载文件、会话与配置上下文 |
|
||||
| `components/agent/` | Agent 对话主入口,负责会话、流式事件与交互 |
|
||||
| `components/workspace/` + `lib/workspace/` | 主题工作台、画布联动与共享工作区能力 |
|
||||
| `components/workspace/` + `lib/workspace/` | 共享工作区、画布联动、上下文 Harness 与编排兼容能力 |
|
||||
| `skills/` | 技能加载、标准校验与经验编排能力;统一遵循 `skill-standard.md` |
|
||||
| `lib/artifact/` | Artifact 解析、状态与轻量渲染器 |
|
||||
| `memory / personas` | 项目记忆与人设沉淀 |
|
||||
@@ -110,7 +110,7 @@ lime/
|
||||
|
||||
| 模块 | 说明 |
|
||||
|------|------|
|
||||
| `components/` | 主 UI 组件与主题工作台 |
|
||||
| `components/` | 主 UI 组件与共享工作区 |
|
||||
| `features/` | 浏览器运行时等较独立特性域 |
|
||||
| `hooks/` | 业务逻辑 Hooks |
|
||||
| `lib/api/` | Tauri API 与运行时封装 |
|
||||
|
||||
@@ -143,7 +143,7 @@ npm run test:contracts
|
||||
4. 点击 `新建文稿`
|
||||
5. 选择 `新开帖子(创建新文稿)`
|
||||
6. 点击 `确认生成`
|
||||
7. 验证页面出现 `Theme Workbench` 或相关工作台内容
|
||||
7. 验证页面出现通用工作区相关内容
|
||||
8. 再次检查控制台 error
|
||||
9. 如能查看运行时摘要,继续确认当前 gate 与任务标题恢复自该话题最近一次 `execution_runtime.recent_gate_key / recent_run_title`
|
||||
10. 当前项目管理与工作台侧已下线“项目风格 / 风格策略”旧入口,不再对其做存在性验证;如页面仍出现相关入口,应判定为回流
|
||||
@@ -189,10 +189,11 @@ npm run test:contracts
|
||||
5. 刷新页面或切换会话再返回原话题,确认最近图片任务会从 `.lime/tasks` 恢复
|
||||
6. 如手动打开右侧查看器,确认任务卡状态与聊天区一致,且不会自动展开独立图片画布
|
||||
7. 如当前界面已暴露任务控制入口,确认 `get/list/retry/cancel` 仍然只经由 task file 主链,不会回流前端直连图片服务
|
||||
8. 如果任务来自文稿工具栏的 inline 配图,确认正文先出现占位图块,task file 成功回填后同一位置被真实图片替换,而不是在正文末尾额外追加第二张图
|
||||
9. 刷新页面后再次返回该文稿,确认 inline 配图仍能通过 task file 中的 `relationships.slot_id` 恢复并原位替换,不依赖前端内存状态
|
||||
10. 如果当前文稿已有明确小节并且用户在某一节内发起配图,确认占位图与最终图片会优先落到 `anchor_section_title` 指向的小节,而不是默认追加到全文末尾
|
||||
11. 如果用户是在某个具体段落上发起配图,确认占位图与最终图片会优先落到 `anchor_text` 对应段落之后,而不是只落到该小节顶部
|
||||
8. 如果任务来自文稿工具栏的 inline 配图、封面位或图片工作台动作,确认聊天区也会出现一条对应的用户消息与 `image_generate` 工具轨迹,而不是只有 task 卡突然出现
|
||||
9. 如果任务来自文稿工具栏的 inline 配图,确认正文先出现占位图块,task file 成功回填后同一位置被真实图片替换,而不是在正文末尾额外追加第二张图
|
||||
10. 刷新页面后再次返回该文稿,确认 inline 配图仍能通过 task file 中的 `relationships.slot_id` 恢复并原位替换,不依赖前端内存状态
|
||||
11. 如果当前文稿已有明确小节并且用户在某一节内发起配图,确认占位图与最终图片会优先落到 `anchor_section_title` 指向的小节,而不是默认追加到全文末尾
|
||||
12. 如果用户是在某个具体段落上发起配图,确认占位图与最终图片会优先落到 `anchor_text` 对应段落之后,而不是只落到该小节顶部
|
||||
|
||||
### Claw `@封面` 异步任务验证
|
||||
|
||||
@@ -214,6 +215,22 @@ npm run test:contracts
|
||||
6. 刷新页面或切换会话再返回原话题,确认最近转写任务仍可从 `.lime/tasks` 恢复
|
||||
7. 如当前界面已暴露任务控制入口,确认 `get/list/retry/cancel` 仍然只经由 task file 主链,不会回流前端旧 ASR 接口
|
||||
|
||||
### Claw `@研报` Prompt Skill 验证
|
||||
|
||||
1. 在 `Claw` 对话框输入 `@研报 关键词:AI Agent 融资 站点:36Kr 时间:近30天 重点:融资额与代表产品 输出:投资人研报`
|
||||
2. 确认聊天区先进入 skill 执行态,并能看到 `report_generate` 与 `search_query` 的真实工具轨迹,而不是前端静默直接生成长文
|
||||
3. 确认首个 skill 调用来自 `report_generate`,而不是退回 `research` 或普通聊天回答
|
||||
4. 等待结果完成后,确认最终输出包含结论、来源、风险/待确认项与建议动作,而不是一段无来源的纯主观总结
|
||||
5. 如果输入里没有明确主题,确认 Agent 最多只追问 1 个关键问题,而不是直接伪造研报完成态
|
||||
|
||||
### Claw `@读PDF` Prompt Skill 验证
|
||||
|
||||
1. 在 `Claw` 对话框输入 `@读PDF /tmp/agent-report.pdf 提炼三点结论并标注关键证据`
|
||||
2. 确认聊天区先进入 skill 执行态,并能看到 `pdf_read` 与 `list_directory / read_file` 的真实工具轨迹,而不是前端静默直接给出摘要
|
||||
3. 确认首个 skill 调用来自 `pdf_read`,而不是退回 `summary`、`analysis` 或普通聊天回答
|
||||
4. 如果输入的是本地路径,确认 Agent 不会再追问“请上传 PDF”,而是直接读取并输出文档信息、核心要点、关键证据
|
||||
5. 如果输入里只有 PDF URL,确认 Agent 最多只追问 1 个关键问题请求本地路径或导入工作区,而不是伪造“已读 PDF”
|
||||
|
||||
### Claw `@链接解析` 异步任务验证
|
||||
|
||||
1. 在 `Claw` 对话框输入 `@链接解析 https://example.com/agent 提取要点 并整理成投资人可读摘要`
|
||||
@@ -231,6 +248,15 @@ npm run test:contracts
|
||||
4. 打开控制台,确认浏览器模式接通 DevBridge 时不再出现 `execute_skill`、`list_executable_skills` 或 `get_skill_detail` 的 unknown command 报错
|
||||
5. 如当前 skill 设计为走 `Bash -> lime ...`,继续确认最终反馈的是任务提交摘要或任务状态,而不是前端本地伪造成功态
|
||||
|
||||
### Slash Scene / ServiceSkill 验证
|
||||
|
||||
1. 进入 `Claw` 对话框,确认当前租户目录里存在一个 `entries.kind=scene` 的场景,例如 `/daily-trend-brief`
|
||||
2. 输入 `/daily-trend-brief 帮我整理今天的小红书趋势赛题`
|
||||
3. 确认聊天区先出现正常的用户消息,再进入 Agent 执行态,而不是前端静默直接提交云端 run
|
||||
4. 打开时间线,确认首个执行器是 `lime_run_service_skill`,而不是前端本地直接产出结果卡
|
||||
5. 如当前 OEM 会话可用,确认工具结果会回流 run 状态或摘要;若当前会话缺失,确认聊天区明确提示需要登录或注入会话,而不是伪造成功
|
||||
6. 未命中 scene 目录时,确认 `/unknown-scene ...` 仍回到普通 slash / Codex 流程,不会被误报为本地技能异常
|
||||
|
||||
### 开发者页站点来源导入验证
|
||||
|
||||
1. 进入 `设置 -> 开发者`
|
||||
@@ -360,15 +386,15 @@ npm run test:contracts
|
||||
|
||||
### 话题主题上下文恢复验证
|
||||
|
||||
1. 进入普通对话话题完成一次发送,再切到 `Theme Workbench` 话题完成一次发送
|
||||
1. 进入普通对话话题完成一次发送,再切到通用工作区话题完成一次发送
|
||||
2. 在两个话题之间来回切换,必要时新建一个空白话题再切回
|
||||
3. 验证 UI 恢复的是该话题最近一次主题上下文,而不是页面一次性参数或主题级缓存
|
||||
4. 如能查看调试面板或运行时摘要,继续确认依据是当前话题最近一次 `execution_runtime.recent_theme / recent_session_mode`
|
||||
5. 再从普通对话切到新的 `theme_workbench` 后立即发送一次,确认同步窗口内仍命中新 theme / session mode,而不是被旧 runtime 误覆盖
|
||||
5. 再从普通对话切到新的 `general_workbench` 后立即发送一次,确认同步窗口内仍命中新 theme / session mode,而不是被旧 runtime 误覆盖
|
||||
|
||||
### Theme Workbench 运行阶段恢复验证
|
||||
### 通用工作区运行阶段恢复验证
|
||||
|
||||
1. 进入同一个 Theme Workbench 话题,至少完成一次 `write_mode` 或 `publish_confirm` 阶段发送
|
||||
1. 进入同一个通用工作区话题,至少完成一次 `write_mode` 或 `publish_confirm` 阶段发送
|
||||
2. 留在同一话题下再次发送,保持当前 gate 和任务标题不变
|
||||
3. 验证本轮仍衔接当前 gate / 任务标题,而不是掉回旧阶段或空标题
|
||||
4. 如能查看调试面板或运行时摘要,继续确认恢复依据是当前话题最近一次 `execution_runtime.recent_gate_key / recent_run_title`
|
||||
|
||||
@@ -183,10 +183,19 @@ npm run bridge:health -- --timeout-ms 120000
|
||||
- 检查 harness metadata / execution runtime / 后端 request metadata 的关键字段是否漂移
|
||||
- 检查浏览器桥接 / mock 优先路径是否同步
|
||||
- 检查 `DevBridge` 是否可用
|
||||
- 检查纯文本 `Claw @配图` 是否已经走 `原始用户消息 -> harness.image_skill_launch -> Agent 首刀 Skill(image_generate) -> task file` 主链,以及显式 task 动作是否仍然只写 task file,而不是回流前端直连图片服务
|
||||
- 检查纯文本 `Claw @配图` 是否已经走 `原始用户消息 -> harness.image_skill_launch -> Agent 首刀 Skill(image_generate) -> task file` 主链,以及显式图片动作是否也已经走 `synthetic user message / displayContent -> harness.image_skill_launch -> Agent 首刀 Skill(image_generate) -> task file`,而不是回流前端直连图片服务
|
||||
- 检查纯文本 `Claw @封面` 是否已经走 `原始用户消息 -> harness.cover_skill_launch -> Agent 首刀 Skill(cover_generate) -> task file` 主链,而不是回流成普通图片命令或前端本地伪造结果
|
||||
- 检查纯文本 `Claw @播报` 是否已经走 `原始用户消息 -> harness.broadcast_skill_launch -> Agent 首刀 Skill(broadcast_generate) -> task file` 主链,而不是退回普通聊天改写
|
||||
- 检查纯文本 `Claw @素材` 是否已经走 `原始用户消息 -> harness.resource_search_skill_launch -> Agent 首刀 Skill(modal_resource_search) -> task file` 主链,而不是回流到前端本地素材页逻辑
|
||||
- 检查纯文本 `Claw @搜索` 是否已经走 `原始用户消息 -> harness.research_skill_launch -> Agent 首刀 Skill(research) -> search_query / tool timeline` 主链,而不是直接凭模型记忆回答
|
||||
- 检查纯文本 `Claw @深搜` 是否已经走 `原始用户消息 -> harness.deep_search_skill_launch -> Agent 首刀 Skill(research) -> 多轮 search_query / tool timeline` 主链,而不是退化成一次普通搜索
|
||||
- 检查纯文本 `Claw @研报` 是否已经走 `原始用户消息 -> harness.report_skill_launch -> Agent 首刀 Skill(report_generate) -> search_query / tool timeline` 主链,而不是直接退回普通聊天长文
|
||||
- 检查纯文本 `Claw @站点搜索` 是否已经走 `原始用户消息 -> harness.site_search_skill_launch -> Agent 首刀 Skill(site_search) -> lime_site_* / tool timeline` 主链,而不是先退回 `research / WebSearch`
|
||||
- 检查纯文本 `Claw @读PDF` 是否已经走 `原始用户消息 -> harness.pdf_read_skill_launch -> Agent 首刀 Skill(pdf_read) -> list_directory / read_file / tool timeline` 主链,而不是退回普通聊天总结或前端本地解析
|
||||
- 检查纯文本 `Claw @转写` 是否已经走 `原始用户消息 -> harness.transcription_skill_launch -> Agent 首刀 Skill(transcription_generate) -> task file` 主链,而不是回流到前端直连旧 ASR 接口
|
||||
- 检查纯文本 `Claw @链接解析` 是否已经走 `原始用户消息 -> harness.url_parse_skill_launch -> Agent 首刀 Skill(url_parse) -> task file` 主链,而不是退回普通聊天总结
|
||||
- 检查纯文本 `Claw @排版` 是否已经走 `原始用户消息 -> harness.typesetting_skill_launch -> Agent 首刀 Skill(typesetting) -> task file` 主链,而不是退回普通聊天润色
|
||||
- 检查产品型 `/scene-key` 是否已经走 `原始用户消息 -> harness.service_scene_launch -> Agent 首刀 lime_run_service_skill -> OEM run/timeline` 主链,而不是前端直接调用云端 run API
|
||||
|
||||
高频场景:
|
||||
|
||||
@@ -206,10 +215,22 @@ npm run bridge:health -- --timeout-ms 120000
|
||||
- 修改浏览器资料 / 环境预设命令族,或调整它们在 `mockPriorityCommands` 里的优先级
|
||||
- 修改浏览器连接器命令族,例如安装目录、启用状态、系统连接器、浏览器动作配置、扩展安装状态、打开 Chrome 扩展 / 远程调试页,或主动断开扩展连接
|
||||
- 修改 `get_model_registry_provider_ids`、Provider 模型映射或 `src-tauri/resources/models/index.json` 真相源读取语义
|
||||
- 修改 `create_image_generation_task_artifact`、`get_media_task_artifact`、`list_media_task_artifacts`、`cancel_media_task_artifact`、`src/lib/api/mediaTasks.ts`、`src/lib/api/skill-execution.ts`、`useWorkspaceSendActions`、`runtime_turn`,或调整 `Claw @配图 -> harness.image_skill_launch -> Agent 首刀 Skill(image_generate) -> task file` 的异步图片任务主链
|
||||
- 修改 `create_image_generation_task_artifact`、`get_media_task_artifact`、`list_media_task_artifacts`、`cancel_media_task_artifact`、`src/lib/api/mediaTasks.ts`、`src/lib/api/skill-execution.ts`、`useWorkspaceSendActions`、`useWorkspaceImageWorkbenchActionRuntime`、`runtime_turn`,或调整 `Claw @配图 -> harness.image_skill_launch -> Agent 首刀 Skill(image_generate) -> task file` 的异步图片任务主链
|
||||
- 修改 `@封面` parser、`useWorkspaceSendActions`、`runtime_turn`、`cover_skill_launch`、`lime task create cover`、`cover_generate` skill 或 `lime_create_cover_generation_task`,尤其是调整 `Claw @封面 -> harness.cover_skill_launch -> Agent 首刀 Skill(cover_generate) -> task file` 主链
|
||||
- 修改 `@播报` parser、`useWorkspaceSendActions`、`runtime_turn`、`broadcast_skill_launch`、`lime task create broadcast`、`broadcast_generate` skill 或 `lime_create_broadcast_generation_task`,尤其是调整 `Claw @播报 -> harness.broadcast_skill_launch -> Agent 首刀 Skill(broadcast_generate) -> task file` 主链
|
||||
- 修改 `@素材` parser、`useWorkspaceSendActions`、`runtime_turn`、`resource_search_skill_launch`、`lime task create resource-search`、`modal_resource_search` skill 或 `lime_create_modal_resource_search_task`,尤其是调整 `Claw @素材 -> harness.resource_search_skill_launch -> Agent 首刀 Skill(modal_resource_search) -> task file` 主链
|
||||
- 修改 `@搜索` parser、`useWorkspaceSendActions`、`runtime_turn`、`research_skill_launch`、`research` 默认 skill 或相关 tool timeline 展示,尤其是调整 `Claw @搜索 -> harness.research_skill_launch -> Agent 首刀 Skill(research) -> search_query / timeline` 主链
|
||||
- 修改 `@深搜` parser、`useWorkspaceSendActions`、`runtime_turn`、`deep_search_skill_launch`、`research` 默认 skill 或相关 tool timeline 展示,尤其是调整 `Claw @深搜 -> harness.deep_search_skill_launch -> Agent 首刀 Skill(research) -> 多轮 search_query / timeline` 主链
|
||||
- 修改 `@研报` parser、`useWorkspaceSendActions`、`runtime_turn`、`report_skill_launch`、`report_generate` 默认 skill 或相关 tool timeline 展示,尤其是调整 `Claw @研报 -> harness.report_skill_launch -> Agent 首刀 Skill(report_generate) -> search_query / timeline` 主链
|
||||
- 修改 `@站点搜索` parser、`useWorkspaceSendActions`、`runtime_turn`、`site_search_skill_launch`、`site_search` 默认 skill 或相关 `lime_site_*` timeline 展示,尤其是调整 `Claw @站点搜索 -> harness.site_search_skill_launch -> Agent 首刀 Skill(site_search) -> lime_site_* / timeline` 主链
|
||||
- 修改 `@读PDF` parser、`useWorkspaceSendActions`、`runtime_turn`、`pdf_read_skill_launch`、`pdf_read` 默认 skill 或相关 `list_directory / read_file` timeline 展示,尤其是调整 `Claw @读PDF -> harness.pdf_read_skill_launch -> Agent 首刀 Skill(pdf_read) -> list_directory / read_file / timeline` 主链
|
||||
- 修改 `@总结` parser、`useWorkspaceSendActions`、`runtime_turn`、`summary_skill_launch`、`summary` 默认 skill 或相关 skill / tool timeline 展示,尤其是调整 `Claw @总结 -> harness.summary_skill_launch -> Agent 首刀 Skill(summary) -> 可选 list_directory/read_file / timeline` 主链
|
||||
- 修改 `@翻译` parser、`useWorkspaceSendActions`、`runtime_turn`、`translation_skill_launch`、`translation` 默认 skill 或相关 skill / tool timeline 展示,尤其是调整 `Claw @翻译 -> harness.translation_skill_launch -> Agent 首刀 Skill(translation) -> 可选 list_directory/read_file / timeline` 主链
|
||||
- 修改 `@分析` parser、`useWorkspaceSendActions`、`runtime_turn`、`analysis_skill_launch`、`analysis` 默认 skill 或相关 skill / tool timeline 展示,尤其是调整 `Claw @分析 -> harness.analysis_skill_launch -> Agent 首刀 Skill(analysis) -> 可选 list_directory/read_file / timeline` 主链
|
||||
- 修改 `@转写` parser、`useWorkspaceSendActions`、`runtime_turn`、`transcription_skill_launch`、`lime task create transcription`、`transcription_generate` skill 或 `lime_create_transcription_task`,尤其是调整 `Claw @转写 -> harness.transcription_skill_launch -> Agent 首刀 Skill(transcription_generate) -> task file` 主链
|
||||
- 修改 `@链接解析` parser、`useWorkspaceSendActions`、`runtime_turn`、`url_parse_skill_launch`、`lime task create url-parse`、`url_parse` skill 或 `lime_create_url_parse_task`,尤其是调整 `Claw @链接解析 -> harness.url_parse_skill_launch -> Agent 首刀 Skill(url_parse) -> task file` 主链
|
||||
- 修改 `@排版` parser、`useWorkspaceSendActions`、`runtime_turn`、`typesetting_skill_launch`、`lime task create typesetting`、`typesetting` skill 或 `lime_create_typesetting_task`,尤其是调整 `Claw @排版 -> harness.typesetting_skill_launch -> Agent 首刀 Skill(typesetting) -> task file` 主链
|
||||
- 修改 `/scene-key` 解析、`serviceSkillSceneLaunch`、`useWorkspaceSendActions`、`runtime_turn`、`prompt_context`、`lime_run_service_skill` 或 `client/skills` scene 目录协议,尤其是调整 `Claw /scene-key -> harness.service_scene_launch -> Agent 首刀 lime_run_service_skill -> OEM run/timeline` 主链
|
||||
- 修改 `src/lib/dev-bridge/`
|
||||
- 修改 `src/lib/tauri-mock/`
|
||||
- 修改 `src-tauri/src/app/runner.rs`
|
||||
@@ -219,6 +240,7 @@ npm run bridge:health -- --timeout-ms 120000
|
||||
|
||||
- `npm run test:contracts`
|
||||
- `imageWorkbenchCommand`、`useWorkspaceSendActions`、受影响 skill / image task Hook 单测,以及 `aster_agent_cmd` 图片主链定向测试
|
||||
- 如果本轮还改了显式图片动作入口,例如文稿 inline 配图、封面位或图片工作台编辑/重绘,额外覆盖 `useWorkspaceImageWorkbenchActionRuntime` 或对应发送桥接回归
|
||||
- 若本轮还改了显式 `execute_skill` 的 `images / requestContext` 透传或 compat 续接,额外覆盖 `skillCommand` 回归
|
||||
- 受影响的 `image task` / `image workbench` Hook 单测
|
||||
- `npm run verify:gui-smoke`
|
||||
@@ -238,6 +260,69 @@ npm run bridge:health -- --timeout-ms 120000
|
||||
- `npm run test:contracts`
|
||||
- `npm run verify:gui-smoke`
|
||||
|
||||
如果本轮修改了 `Claw @播报` 或播报任务协议,最低校验至少包含:
|
||||
|
||||
- `broadcastWorkbenchCommand`、`useWorkspaceSendActions`、提及面板 builtin command 回归,以及 `aster_agent_cmd` 播报主链定向测试
|
||||
- `lime-cli` 播报任务创建测试、受影响的默认 skill / tool catalog 测试
|
||||
- `npm run test:contracts`
|
||||
- 若 GUI 主路径受影响,再补 `npm run verify:gui-smoke`
|
||||
|
||||
如果本轮修改了 `Claw @素材` 或素材检索任务协议,最低校验至少包含:
|
||||
|
||||
- `resourceSearchWorkbenchCommand`、`useWorkspaceSendActions`、提及面板 builtin command 回归,以及 `aster_agent_cmd` 素材检索主链定向测试
|
||||
- `lime-cli` 资源检索任务创建测试、受影响的默认 skill / tool catalog 测试
|
||||
- `npm run test:contracts`
|
||||
- 若 GUI 主路径受影响,再补 `npm run verify:gui-smoke`
|
||||
|
||||
如果本轮修改了 `Claw @搜索` 或搜索 prompt skill 协议,最低校验至少包含:
|
||||
|
||||
- `searchWorkbenchCommand`、`useWorkspaceSendActions`、提及面板 builtin command 回归,以及 `aster_agent_cmd` 搜索主链定向测试
|
||||
- `research` 默认 skill / tool catalog 相关回归
|
||||
- `npm run test:contracts`
|
||||
- 若 GUI 主路径受影响,再补 `npm run verify:gui-smoke`
|
||||
|
||||
如果本轮修改了 `Claw @深搜` 或深搜 prompt skill 协议,最低校验至少包含:
|
||||
|
||||
- `deepSearchWorkbenchCommand`、`useWorkspaceSendActions`、提及面板 builtin command 回归,以及 `aster_agent_cmd` 深搜主链定向测试
|
||||
- `research` 默认 skill / tool catalog 相关回归,且要确认没有退化成只执行一轮浅搜
|
||||
- `npm run test:contracts`
|
||||
- 若 GUI 主路径受影响,再补 `npm run verify:gui-smoke`
|
||||
|
||||
如果本轮修改了 `Claw @研报` 或研报 prompt skill 协议,最低校验至少包含:
|
||||
|
||||
- `reportWorkbenchCommand`、`useWorkspaceSendActions`、提及面板 builtin command 回归,以及 `aster_agent_cmd` 研报主链定向测试
|
||||
- `report_generate` 默认 skill / `skillCatalog` 相关回归,且要确认没有退回普通聊天长文或跳过真实 `search_query`
|
||||
- `npm run test:contracts`
|
||||
- 若 GUI 主路径受影响,再补 `npm run verify:gui-smoke`
|
||||
|
||||
如果本轮修改了 `Claw @站点搜索` 或站点搜索 prompt skill 协议,最低校验至少包含:
|
||||
|
||||
- `siteSearchWorkbenchCommand`、`useWorkspaceSendActions`、提及面板 builtin command 回归,以及 `aster_agent_cmd` 站点搜索主链定向测试
|
||||
- `site_search` 默认 skill / `lime_site_*` tool catalog 相关回归
|
||||
- `npm run test:contracts`
|
||||
- 若 GUI 主路径受影响,再补 `npm run verify:gui-smoke`
|
||||
|
||||
如果本轮修改了 `Claw @总结` 或总结 prompt skill 协议,最低校验至少包含:
|
||||
|
||||
- `summaryWorkbenchCommand`、`useWorkspaceSendActions`、提及面板 builtin command 回归,以及 `aster_agent_cmd` 总结主链定向测试
|
||||
- `summary` 默认 skill / `skillCatalog` 相关回归;若支持文件路径总结,还要确认没有跳过真实 `list_directory / read_file` timeline
|
||||
- `npm run test:contracts`
|
||||
- 若 GUI 主路径受影响,再补 `npm run verify:gui-smoke`
|
||||
|
||||
如果本轮修改了 `Claw @翻译` 或翻译 prompt skill 协议,最低校验至少包含:
|
||||
|
||||
- `translationWorkbenchCommand`、`useWorkspaceSendActions`、提及面板 builtin command 回归,以及 `aster_agent_cmd` 翻译主链定向测试
|
||||
- `translation` 默认 skill / `skillCatalog` 相关回归;若支持文件路径翻译,还要确认没有跳过真实 `list_directory / read_file` timeline
|
||||
- `npm run test:contracts`
|
||||
- 若 GUI 主路径受影响,再补 `npm run verify:gui-smoke`
|
||||
|
||||
如果本轮修改了 `Claw @分析` 或分析 prompt skill 协议,最低校验至少包含:
|
||||
|
||||
- `analysisWorkbenchCommand`、`useWorkspaceSendActions`、提及面板 builtin command 回归,以及 `aster_agent_cmd` 分析主链定向测试
|
||||
- `analysis` 默认 skill / `skillCatalog` 相关回归;若支持文件路径分析,还要确认没有跳过真实 `list_directory / read_file` timeline
|
||||
- `npm run test:contracts`
|
||||
- 若 GUI 主路径受影响,再补 `npm run verify:gui-smoke`
|
||||
|
||||
如果本轮修改了 `Claw @转写` 或转写任务协议,最低校验至少包含:
|
||||
|
||||
- `transcriptionWorkbenchCommand`、`useWorkspaceSendActions`、提及面板 builtin command 回归,以及 `aster_agent_cmd` 转写主链定向测试
|
||||
@@ -252,6 +337,13 @@ npm run bridge:health -- --timeout-ms 120000
|
||||
- `npm run test:contracts`
|
||||
- 若 GUI 主路径受影响,再补 `npm run verify:gui-smoke`
|
||||
|
||||
如果本轮修改了 `Claw @排版` 或排版任务协议,最低校验至少包含:
|
||||
|
||||
- `typesettingWorkbenchCommand`、`useWorkspaceSendActions`、提及面板 builtin command 回归,以及 `aster_agent_cmd` 排版主链定向测试
|
||||
- `lime-cli` 排版任务创建测试、受影响的默认 skill / tool catalog 测试
|
||||
- `npm run test:contracts`
|
||||
- 若 GUI 主路径受影响,再补 `npm run verify:gui-smoke`
|
||||
|
||||
如果本轮修改了 Provider 模型真相源或设置页中的“支持的模型”展示逻辑,还应额外确认:
|
||||
|
||||
- 资源索引损坏时,GUI 会明确提示“模型真相源异常”
|
||||
@@ -300,7 +392,7 @@ npm run bridge:health -- --timeout-ms 120000
|
||||
- 切换到新 content 但 runtime 尚未同步时,前端仍会保留显式 `content_id`
|
||||
- 如果这次改动把 `theme / session_mode` steady-state 从“每回合显式提交”后移到 `session/runtime`,除了契约检查之外,还应补 Hook/UI 回归,证明:
|
||||
- session 已有 `execution_runtime.recent_theme / recent_session_mode` 时,前端不会重复提交相同 `harness.theme / harness.session_mode`
|
||||
- 切换到新 theme 或 `theme_workbench` 但 runtime 尚未同步时,前端仍会保留显式 `theme / session_mode`
|
||||
- 切换到新 theme 或 `general_workbench` 但 runtime 尚未同步时,前端仍会保留显式 `theme / session_mode`
|
||||
- 如果这次改动影响 `harness.team_memory_shadow` 这类 repo-scoped Team 协作上下文,除了契约检查之外,还应补:
|
||||
- 前端发送边界回归,确认 `team_memory_shadow` 能随当前请求进入 `agent_runtime_submit_turn`
|
||||
- Rust `prompt_context` 定向测试,确认 shadow 只作为低优先级协作参考,不覆盖显式 `selected_team_*` 或 `recent_team_selection`
|
||||
@@ -315,7 +407,7 @@ npm run bridge:health -- --timeout-ms 120000
|
||||
- execution_runtime 缺失但本地 shadow 已命中时,前端仍会回填 `recent_access_mode` 到 session
|
||||
- 如果这次改动把 `gate_key / run_title` steady-state 从“每回合显式提交”后移到 `session/runtime`,除了契约检查之外,还应补 Hook/UI 回归,证明:
|
||||
- session 已有 `execution_runtime.recent_gate_key / recent_run_title` 时,前端不会重复提交相同 `harness.gate_key / harness.run_title`
|
||||
- 切换到新的 Theme Workbench gate 或运行标题、但 runtime 尚未同步时,前端仍会保留显式 `gate_key / run_title`
|
||||
- 切换到新的通用工作区 gate 或运行标题、但 runtime 尚未同步时,前端仍会保留显式 `gate_key / run_title`
|
||||
- 如果这次改动影响浏览器工作台里的站点采集链路,例如推荐区、资料自动选择、`site_get_adapter_launch_readiness` 门禁、`report_hint` 展示、`lime_site_recommend`,或“优先写回当前 `content_id` 而不是新建资源文档”的主线收敛,除了契约检查,还应补对应 `*.test.tsx` 回归并执行 `verify:gui-smoke`。
|
||||
- 如果这次改动影响浏览器资料 / 环境预设的真实来源,还应补一次浏览器模式实测,确认控制台不再出现 `[Mock] invoke: list_browser_profiles_cmd` 或 `[Mock] invoke: list_browser_environment_presets_cmd`。
|
||||
- 如果这次改动影响设置页“连接器”主路径或 Chrome 扩展导出链路,除了 `test:contracts`,还应补对应设置页回归,并在 GUI smoke 或 Playwright 续测里确认连接器页能打开、目录可选、扩展状态可读。
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
# Skills 异步图片任务与动态渲染 PRD
|
||||
|
||||
> 说明:本文件已降级为历史背景文档,`@配图` current 主方案请以 [docs/prd/gongneng/peitu/prd.md](/Users/coso/Documents/dev/ai/aiclientproxy/lime/docs/prd/gongneng/peitu/prd.md) 与 [docs/aiprompts/command-runtime.md](/Users/coso/Documents/dev/ai/aiclientproxy/lime/docs/aiprompts/command-runtime.md) 为准。当前首发入口已经统一收敛到 `image_skill_launch -> Agent -> Skill(image_generate) -> task file` 主链,不再保留“前端快路径”作为 current 实现。
|
||||
|
||||
> 文档版本:v1.0
|
||||
> 状态:Draft
|
||||
> 更新时间:2026-04-03
|
||||
> 更新时间:2026-04-06
|
||||
> 适用范围:`image_generate` skill、`lime-cli`、媒体任务协议、Claw 对话框、图片工作台
|
||||
> 目标读者:产品、前端、Rust/CLI、测试
|
||||
|
||||
@@ -585,4 +587,3 @@ skill 输出的语义是:
|
||||
- 测试可做
|
||||
- 能力可组合
|
||||
- 后续可扩展到队列、重试、自动化与多 worker
|
||||
|
||||
|
||||
Reference in New Issue
Block a user