Skip to content

Commit 3d8bd3d

Browse files
committed
feat: Update AI capability management with enhanced default parameter handling and UI improvements
1 parent 3d2d8c7 commit 3d8bd3d

4 files changed

Lines changed: 25 additions & 3 deletions

File tree

openspec/changes/add-ai-text-capability-center/tasks.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,3 +176,9 @@
176176
- 修复记录:已在宿主 `aitext` 契约新增 `CapabilityMethod``CapabilityMethodGenerate``GenerateRequest` 显式返回 `CapabilityTypeText + CapabilityMethodGenerate`;插件 SQL 为模型、档位和调用日志增加 `capability_method`,唯一约束、筛选索引、seed 和 DAO/DO/Entity 均同步;插件 service/API/controller/front-end client/E2E helper 均传递或投影 `capabilityMethod`,档位唯一身份和缓存 key 调整为 `capabilityType + capabilityMethod + tierCode`;模型选择、模型写入、同步模型、调用日志写入和筛选均默认使用 `text.generate`,并在绑定解析时拒绝 method 不匹配的模型。
177177
- 影响分析:API 契约有影响,新增 `capabilityMethod` 请求/响应字段和 API 文档翻译,HTTP 方法、路径、权限标签和时间字段契约不变;数据库有影响,插件安装 SQL 保持幂等,`capability_method` 默认 `generate`,索引覆盖模型筛选、档位唯一身份和调用日志过滤;后端 Go 有影响,未新增运行期依赖或 DI 路径,缓存权威源仍为插件数据库,失效仍通过写入成功后的共享修订号和本地缓存清理完成;前端 UI 无新增可编辑字段,前端适配器仅固定传入 `text.generate`;数据权限边界不变,仍为平台配置控制面和既有权限;`i18n` 有 API 文档翻译影响,无新增运行时 UI 文案;开发工具跨平台影响限于重新执行既有 `make dao` 生成流程,无新增脚本或入口;插件目录本地 `AGENTS.md` 不存在,已按顶层插件规则执行。已读取规则:`.agents/rules/openspec.md`、`documentation.md`、`architecture.md`、`plugin.md`、`api-contract.md`、`backend-go.md`、`database.md`、`cache-consistency.md`、`data-permission.md`、`frontend-ui.md`、`testing.md`、`i18n.md`、`dev-tooling.md`,并使用 `lina-feedback`、`goframe-v2`、`vben` 和 `lina-e2e`。
178178
- 验证记录:`make -C apps/lina-plugins/linapro-ai-core dao` 通过并重新生成 DAO/DO/Entity;`GOWORK=off go test ./backend/internal/service/ai -count=1` 通过;`GOWORK=off go test ./backend/... -count=1` 通过;`GOWORK=off go test ./pkg/plugin/capability/ai/aitext ./internal/service/plugin/internal/wasm ./pkg/plugin/pluginbridge/internal/hostservice ./pkg/plugin/capability/guest ./internal/service/plugin ./internal/cmd -count=1` 通过;`pnpm -C apps/lina-vben/apps/web-antd typecheck` 通过;`make i18n.check` 通过,仍仅有既有模块级 `$t()` warning,未新增 `plugin:linapro-ai-core` warning;`pnpm -C hack/tests test:validate` 通过;`E2E_PARALLEL_WORKERS=1 pnpm -C hack/tests test:module -- plugin:linapro-ai-core` 因本地 `http://127.0.0.1:9120/admin/auth/login` 未启动返回 `ERR_CONNECTION_REFUSED`,未进入业务断言;`openspec validate add-ai-text-capability-center --strict``git diff --check``git -C apps/lina-plugins diff --check` 均通过。
179+
- [x] **FB-18**: 智能中心供应商列表端点角标、编辑密钥占位、操作列高度和端点操作需按反馈调整
180+
- 问题分析:根因是供应商列表端点列仍使用左侧协议标签结构,且列位置在模型列之后,默认视口下接入链接与协议标识不易同时看到;供应商操作列把“编辑、端点、删除、同步”堆叠在固定列中,内容高度容易被 VXE 固定列单元格裁剪;供应商编辑抽屉虽然已不回填脱敏密钥,但 placeholder 复用了端点级“留空则保持原端点密钥”文案,不符合供应商密钥语义。
181+
- 修复记录:端点列改为每个接入链接卡片右上角浮动协议文字角标,并将端点列提前到名称后方;供应商操作列移除“端点”按钮,保留编辑、删除和按协议同步模型按钮,并改为可换行的紧凑操作布局,同时关闭操作列溢出裁剪;供应商新增和编辑表单密钥字段统一复用供应商级 placeholder,编辑时保持空值并显示“留空则保持原密钥”,新增时显示“输入 API 密钥”;插件版本提升到 `v0.1.14` 以触发已安装源码插件资源刷新。
182+
- 影响分析:前端 UI 有影响,范围为 `linapro-ai-core` 供应商列表端点列、操作列和供应商抽屉密钥字段;`i18n` 有影响但未新增资源,复用启用 `i18n` 插件已有 `provider.placeholders.*` 运行时键,并通过 `make i18n.check` 验证;测试有影响,更新插件自有 `TC001`/`TC004` 与 POM 断言,覆盖多端点角标、密钥字段空值与占位、端点操作移除和操作列不裁剪;缓存一致性无新增业务缓存,插件版本升级仅触发现有插件运行时资源刷新;数据权限无新增或修改数据读写边界,仍使用既有平台配置控制面、供应商删除和模型同步权限;API 契约、后端 Go、SQL 和开发工具跨平台无影响,未修改路由、DTO、服务、数据库或脚本入口;插件目录本地 `AGENTS.md` 不存在,已按顶层插件规则执行。已读取规则:`.agents/rules/openspec.md`、`documentation.md`、`plugin.md`、`frontend-ui.md`、`testing.md`、`i18n.md`、`cache-consistency.md`、`data-permission.md`,并使用 `lina-feedback`、`lina-e2e`、`vben`、`frontend-design`、`browser` 和 `lina-review`。
183+
- 验证记录:`pnpm -C apps/lina-vben/apps/web-antd typecheck` 通过;`pnpm -C hack/tests test:validate` 通过;`make i18n.check` 通过,仍仅有既有模块级 `$t()` warning,未新增 `plugin:linapro-ai-core` warning;`pnpm --dir hack/tests exec playwright test apps/lina-plugins/linapro-ai-core/hack/tests/e2e/TC001-smart-center-provider-management.ts --trace off --output ../../temp/20260603-fb18-tc001-results` 通过,3 个供应商管理子用例全部通过;`pnpm --dir hack/tests exec playwright test apps/lina-plugins/linapro-ai-core/hack/tests/e2e/TC001-smart-center-provider-management.ts apps/lina-plugins/linapro-ai-core/hack/tests/e2e/TC004-smart-center-provider-endpoints.ts` 中 `TC004` 通过,`TC001` 因 Playwright trace artifact 清理目录缺失失败,随后已用独立输出目录重跑 `TC001` 通过;`E2E_PARALLEL_WORKERS=1 pnpm -C hack/tests test:module -- plugin:linapro-ai-core` 中本轮相关 `TC001`/`TC004` 已通过,失败集中在既有档位默认参数和多模态用例;OpenSpec 严格校验、空白检查和子仓库空白检查在本任务收尾阶段重新执行。截图验证:in-app Browser 返回 `iab` 不可用,已降级使用 Playwright/E2E 截图,`temp/20260603120200-tc004-provider-endpoint-list.png` 显示两个接入链接右上角分别展示 Anthropic/OpenAI 角标,`temp/20260603120330-tc001-provider-edit-agent-box-fields.png` 显示编辑密钥字段为空且 placeholder 为“留空则保持原密钥”。
184+
- 审查记录:已按 `lina-review` 展开父仓库和 `apps/lina-plugins` 子仓库状态,识别到当前工作树存在与本轮无关的多模态档位改动;本轮反馈级审查限定在供应商页、供应商抽屉、供应商相关 E2E/POM、插件版本和 `FB-18` 任务记录。审查结论未发现阻塞问题;E2E 质量审查触发原因是用户可观察页面和表单行为变更,覆盖依据为 `TC001``TC004` 的断言和截图证据。

openspec/changes/extend-ai-multimodal-capabilities/specs/linapro-ai-core-multimodal-plugin/spec.md

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,13 +77,15 @@
7777

7878
- **WHEN** 前端按`capabilityType=image``capabilityMethod=generate`查询档位
7979
- **THEN** 系统 MUST 返回该能力方法下的`basic``standard``advanced`档位投影
80-
- **AND** 响应 MUST 包含主绑定、默认参数摘要、最近测试摘要和 Unix 毫秒更新时间
80+
- **AND** 响应 MUST 包含主绑定、最近测试摘要和 Unix 毫秒更新时间
81+
- **AND** 默认参数 MUST 通过能力方法默认参数接口在配置抽屉中展示和维护,而不是作为列表页默认值展示
8182

8283
#### Scenario: 默认参数不跨模态复用
8384

8485
- **WHEN** 管理员配置`audio.transcribe`档位
8586
- **THEN** 系统 MUST 使用音频转写相关默认参数
8687
- **AND** 系统 MUST NOT 暴露`thinkingEffort`、图片尺寸或视频时长等不属于该方法的默认参数
88+
- **AND** 默认参数配置输入 MUST 支持代码高亮并保存为该能力方法的默认参数
8789

8890
#### Scenario: 固定档位 seed
8991

@@ -148,11 +150,19 @@
148150
#### Scenario: 档位页面按能力类型 Tab 切换
149151

150152
- **WHEN** 管理员在档位管理页选择文档能力`Tab`
151-
- **THEN** 页面 MUST 展示该能力类型当前默认方法下的三档配置、绑定模型、默认参数和最近测试结果
153+
- **THEN** 页面 MUST 展示该能力类型当前默认方法下的三档配置、绑定模型和最近测试结果
152154
- **AND** 页面 MUST 不再要求管理员通过顶部搜索表单选择`document.analyze`等具体能力方法
153155
- **AND** `Tab`标题 MUST 通过插件运行时`i18n`资源渲染,英文标题使用首字母大写,中文标题使用专业能力名称
154156
- **AND** 页面内部请求和保存仍 MUST 带上目标`capabilityType`和默认`capabilityMethod`
155157

158+
#### Scenario: 档位配置抽屉维护默认参数
159+
160+
- **WHEN** 管理员编辑某个能力类型的档位
161+
- **THEN** 配置抽屉 MUST 展示该能力方法的默认参数 JSON
162+
- **AND** 参数输入框 MUST 支持 JSON 代码高亮
163+
- **AND** 保存时 MUST 同时持久化档位绑定配置和该能力方法默认参数
164+
- **AND** 文本生成档位的空`Thinking Effort` MUST 显示为“模型默认”并按空值保存,不能自动落到`low`
165+
156166
#### Scenario: 不展示业务任务页面
157167

158168
- **WHEN** 智能中心扩展视频能力

openspec/changes/extend-ai-multimodal-capabilities/tasks.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,8 @@
9797
- [x] **FB-26**: 将档位管理页能力类型`Tab`内容区改为 Ant Tabs 原生内容结构以贴近组件示例背景样式。
9898
- [x] **FB-27**: 将档位管理页能力类型`Tab`标题调整为参考图中的图标线型页签样式。
9999
- [x] **FB-28**: 调整档位管理页能力类型`Tab`标题左侧间距,避免首个`Tab`贴近边缘。
100+
- [x] **FB-29**: 修复编辑文本档位时空`Thinking Effort`应显示“模型默认”并按空值保存,不能自动落到`low`
101+
- [x] **FB-30**: 将能力方法默认参数从档位列表移入配置抽屉编辑,并提供 JSON 代码高亮输入和 E2E 覆盖。
100102

101103
## 实施记录
102104

@@ -200,4 +202,8 @@
200202
- `FB-28`修复:为档位管理页能力类型`Tab``.ant-tabs-nav-wrap`增加左右`20px`内边距,保持线型页签、图标、激活指示线和原生内容区连接关系不变;同步更新`TC005`视觉断言,要求首个`Tab`距离容器左边缘至少`16px`;插件版本从`v0.1.12`递增到`v0.1.13`以触发源码插件前端资源升级。
201203
- `FB-28`影响分析:已读取`AGENTS.md``.agents/rules/openspec.md``.agents/rules/documentation.md``.agents/rules/plugin.md``.agents/rules/frontend-ui.md``.agents/rules/testing.md``.agents/rules/i18n.md`,并使用`lina-feedback``lina-review``vben``frontend-design``lina-e2e`规范。`apps/lina-plugins/linapro-ai-core/AGENTS.md`不存在。本次仅修改插件前端样式、插件 E2E/POM、插件版本和 OpenSpec 反馈记录;`i18n`无新增运行时文案、语言包或 API 文档源文本影响,复用既有能力类型翻译;API 契约、Go 后端、SQL/DAO、数据权限、缓存一致性和 DI 来源均无变更;开发工具跨平台无脚本、CI 或默认入口变化;E2E 质量审查触发,覆盖首个`Tab`左侧间距、线型标题、图标、激活指示线、内容区连接和截图验证。
202204
- `FB-28`验证:`pnpm -C apps/lina-vben exec prettier --write ../lina-plugins/linapro-ai-core/frontend/pages/tier-management.vue ../lina-plugins/linapro-ai-core/hack/tests/pages/SmartCenterPage.ts`通过;`openspec validate extend-ai-multimodal-capabilities --strict`通过;`pnpm -C apps/lina-vben -F @lina/web-antd typecheck`通过;`pnpm -C apps/lina-vben -F @lina/web-antd i18n:check`通过;`pnpm -C hack/tests test:validate`通过;`git diff --check``git -C apps/lina-plugins diff --check`通过;`pnpm -C hack/tests exec playwright test ../apps/lina-plugins/linapro-ai-core/hack/tests/e2e/TC005-smart-center-multimodal-tiers.ts --project=chromium --workers=1 --reporter=list`通过,结果为`1 passed`。截图验证已查看`temp/20260603105107-tc005-document-tier-tab-list.png`,确认“文本”`Tab`左侧已保留间距,未发现原始`i18n` key、文本截断或元素重叠。
205+
- `FB-29`/`FB-30`根因:档位列表同时展示能力方法默认参数和`Thinking Effort`列,导致方法级默认参数被误放在列表页;编辑抽屉打开时将空`defaultEffort`写入表单后,测试辅助和种子数据仍默认回落到`low/medium/high`,使“模型默认”的空值语义不稳定。
206+
- `FB-29`/`FB-30`修复:档位列表移除默认参数摘要和`Thinking Effort`列,列表只保留三档绑定与测试状态;档位配置抽屉按当前`capabilityType + capabilityMethod`加载能力方法默认参数,新增插件本地`JsonHighlightEditor`提供 JSON 高亮输入,保存时同时调用既有档位更新接口和方法默认参数更新接口;文本生成档位的空`Thinking Effort`在抽屉中显示为“模型默认”,保存时继续按空字符串持久化。插件安装 seed 同步将文本生成方法默认参数收敛为`{"maxOutputTokens":1024}`,三档`default_effort`默认值为空字符串。
207+
- `FB-29`/`FB-30`影响分析:已读取`AGENTS.md`、`.agents/rules/openspec.md`、`.agents/rules/documentation.md`、`.agents/rules/architecture.md`、`.agents/rules/plugin.md`、`.agents/rules/api-contract.md`、`.agents/rules/backend-go.md`、`.agents/rules/database.md`、`.agents/rules/data-permission.md`、`.agents/rules/cache-consistency.md`、`.agents/rules/dev-tooling.md`、`.agents/rules/frontend-ui.md`、`.agents/rules/testing.md`和`.agents/rules/i18n.md`,并使用`lina-feedback`、`lina-review`、`vben`、`frontend-design`、`karpathy-guidelines`和`lina-e2e`规范。`apps/lina-plugins/linapro-ai-core/AGENTS.md`不存在。本次修改集中在`linapro-ai-core`插件前端页面、插件运行时语言包、插件安装 seed、插件 E2E/POM/helper 和 OpenSpec 反馈记录;未修改`lina-core`宿主契约,宿主边界无影响。`i18n`影响为新增默认参数字段、占位符和无效 JSON 提示文案,已维护插件`zh-CN`与`en-US`运行时语言包;SQL 影响仅为插件基线 Seed DML 默认值调整,未新增表、索引、DAO 或迁移路径,幂等性和自增主键写入规则不变;API 契约使用既有`GET /ai/method-defaults`和`PUT /ai/method-defaults/{capabilityType}/{capabilityMethod}`,未新增 HTTP 路由、方法、DTO 或 OpenAPI 源定义;Go 后端和 DI 来源无新增运行期依赖;数据权限边界沿用既有`ai:tier:list`与`ai:tier:update`权限和平台上下文校验;缓存一致性沿用既有方法默认参数写后失效,未新增缓存或失效策略;开发工具跨平台无脚本、CI 或默认入口变化;E2E 质量审查触发,覆盖列表不展示默认参数、抽屉“模型默认”、JSON 高亮、保存后 API 状态和截图验证。
208+
- `FB-29`/`FB-30`验证:`node`解析插件`zh-CN`和`en-US`语言包通过;`make i18n.check`通过,仍仅有既有 module-level `$t()` warning;`go test ./pkg/dialect -run 'TestOnConflictTargetsHaveDeclaredIdempotencyBasis|TestSQLCreateTablesHaveBilingualPurposeComments' -count=1`通过;`pnpm -C hack/tests exec tsc --noEmit`通过;`pnpm -C apps/lina-vben --filter @lina/web-antd typecheck`通过;`openspec validate extend-ai-multimodal-capabilities --strict`通过;`pnpm -C hack/tests exec playwright test ../apps/lina-plugins/linapro-ai-core/hack/tests/e2e/TC002-smart-center-tier-management.ts --project=chromium --workers=1 --reporter=list --trace=off`通过,结果为`5 passed`;`pnpm -C hack/tests exec playwright test ../apps/lina-plugins/linapro-ai-core/hack/tests/e2e/TC005-smart-center-multimodal-tiers.ts --project=chromium --workers=1 --reporter=list --trace=off`通过,结果为`1 passed`。截图验证已查看`temp/20260603115848-tc002-tier-default-config-drawer.png`,确认抽屉显示“模型默认”和默认参数 JSON 高亮输入,未发现原始`i18n` key、文本截断或元素重叠。
203209
- 最终验证:完整验证日志位于`temp/extend-ai-multimodal-capabilities-final-20260603-014508/``openspec validate`、宿主 Go 测试、插件 Go 测试、`make i18n.check`、前端构建、`hack/tests test:validate``pnpm -C hack/tests test:module -- plugin:linapro-ai-core`全部通过,插件 E2E 结果为`11 passed`。TC004、TC005、TC006 聚焦组合验证为`3 passed`,截图已按规则写入项目根`temp/`目录。

0 commit comments

Comments
 (0)