Merged
Conversation
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
This PR integrates external Skills support by extending the existing experience system into a unified COMMON / REACT / TOOL model, adding progressive disclosure in the React loop (via search_exp / read_exp), and introducing a management module for experience CRUD + SKILL import/export.
Changes:
- Unifies experience data model (adds TOOL, tenant-aware metadata, disclosure strategy) and updates learning/extraction accordingly.
- Adds progressive disclosure runtime (prefetch hook, model/tool interceptors, prompt contributor) and gates React-direct tool calls by disclosed allowlist.
- Introduces
assistant-agent-managementmodule exposing an experience console UI + REST APIs, and bumps version to0.2.5.
Reviewed changes
Copilot reviewed 113 out of 115 changed files in this pull request and generated 6 comments.
Show a summary per file
| File | Description |
|---|---|
| README.md | Documents unified experience + Skills conversion + management console. |
| README_zh.md | Chinese docs updated for unified experience + Skills + management console. |
| pom.xml | Bumps version and adds new assistant-agent-management module + compiler parameters. |
| assistant-agent-start/src/main/resources/application.yml | Enables experience console in the example app config. |
| assistant-agent-start/src/main/resources/application-reference.yml | Adds console config section; removes legacy per-type toggles. |
| assistant-agent-start/src/main/java/com/alibaba/assistant/agent/start/validator/ExperienceTestValidator.java | Updates repository APIs and tenant field usage. |
| assistant-agent-start/src/main/java/com/alibaba/assistant/agent/start/config/ReactPhaseGuidancePromptContributor.java | Refines fuzzy-intent guidance and skips clarification when experience candidates exist. |
| assistant-agent-start/src/main/java/com/alibaba/assistant/agent/start/config/ExperienceEvaluationCriterionProvider.java | Adjusts criteria (3-level fuzziness) and removes legacy experience_retrieval criterion. |
| assistant-agent-start/src/main/java/com/alibaba/assistant/agent/start/config/DemoRuleBasedEvaluationProvider.java | Adds demo rule-based evaluator example. |
| assistant-agent-start/src/main/java/com/alibaba/assistant/agent/start/config/CodeactAgentConfig.java | Injects placeholder tools + experience disclosure tools; expands system guidance. |
| assistant-agent-start/src/main/java/com/alibaba/assistant/agent/start/AssistantAgentApplication.java | Prints experience console URL on startup. |
| assistant-agent-start/pom.xml | Adds dependency on assistant-agent-management and bumps version. |
| assistant-agent-prompt-builder/pom.xml | Bumps version. |
| assistant-agent-management/pom.xml | New management module (web console + APIs). |
| assistant-agent-management/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports | Registers management auto-configuration (Boot 3 style). |
| assistant-agent-management/src/main/resources/META-INF/spring.factories | Registers management auto-configuration (legacy style). |
| assistant-agent-management/src/main/java/com/alibaba/assistant/agent/management/config/ExperienceConsoleAutoConfiguration.java | Auto-configures console controllers/services when enabled. |
| assistant-agent-management/src/main/java/com/alibaba/assistant/agent/management/config/ExperienceConsoleProperties.java | Defines console properties including basePath. |
| assistant-agent-management/src/main/java/com/alibaba/assistant/agent/management/config/ConsoleWebMvcConfigurer.java | Serves console static resources and index routing. |
| assistant-agent-management/src/main/java/com/alibaba/assistant/agent/management/controller/ExperienceManagementController.java | Adds experience list/search/stats/CRUD APIs. |
| assistant-agent-management/src/main/java/com/alibaba/assistant/agent/management/controller/SkillExchangeController.java | Adds SKILL import/export + package upload endpoints. |
| assistant-agent-management/src/main/java/com/alibaba/assistant/agent/management/controller/ToolSourceController.java | Adds tool-source browsing/import/sync endpoints. |
| assistant-agent-management/src/main/java/com/alibaba/assistant/agent/management/controller/TenantController.java | Adds tenant options endpoint. |
| assistant-agent-management/src/main/java/com/alibaba/assistant/agent/management/controller/ConsoleExceptionHandler.java | Console-specific exception mapping. |
| assistant-agent-management/src/main/java/com/alibaba/assistant/agent/management/internal/RepositoryBackedExperienceManagementService.java | Implements management service on top of ExperienceRepository. |
| assistant-agent-management/src/main/java/com/alibaba/assistant/agent/management/internal/InMemoryToolSourceBrowser.java | Default no-op tool source browser. |
| assistant-agent-management/src/main/java/com/alibaba/assistant/agent/management/internal/InMemorySkillExchangeService.java | Default in-memory skill exchange implementation. |
| assistant-agent-management/src/main/java/com/alibaba/assistant/agent/management/internal/SkillPackageParser.java | Parses zip/tgz skill packages into structured model. |
| assistant-agent-management/src/main/java/com/alibaba/assistant/agent/management/model/* | Adds management DTOs (paging, import results, tool source models, skill package models). |
| assistant-agent-management/src/main/java/com/alibaba/assistant/agent/management/spi/* | Adds SPI contracts for tenants/tool sources/skill exchange/experience management. |
| assistant-agent-management/src/main/resources/static/exp-console/app.js | Console front-end logic (calls /exp-console/api). |
| assistant-agent-management/src/main/resources/static/exp-console/index.html | Console UI entrypoint. |
| assistant-agent-management/src/main/resources/static/exp-console/style.css | Console UI styling. |
| assistant-agent-extensions/src/main/resources/META-INF/spring.factories | Registers new ExperienceDisclosure auto-configuration. |
| assistant-agent-extensions/src/main/resources/application-experience-example.properties | Removes legacy per-type experience toggles. |
| assistant-agent-extensions/src/main/java/com/alibaba/assistant/agent/extension/prompt/PromptContributionToolCallback.java | Adds placeholder internal tool to match injected guidance tool calls. |
| assistant-agent-extensions/src/main/java/com/alibaba/assistant/agent/extension/prompt/CodeactToolSignatureInjectionToolCallback.java | Adds placeholder tool for tool-signature injection hook. |
| assistant-agent-extensions/src/main/java/com/alibaba/assistant/agent/extension/prompt/config/PromptContributorAutoConfiguration.java | Wires placeholder tool callbacks under prompt contributor config. |
| assistant-agent-extensions/src/main/java/com/alibaba/assistant/agent/extension/learning/extractor/ExperienceLearningExtractor.java | Updates learning extraction to COMMON/REACT/TOOL and new state keys. |
| assistant-agent-extensions/src/main/java/com/alibaba/assistant/agent/extension/experience/spi/ExperienceRepository.java | Tenant-based repository APIs + new findAllByType. |
| assistant-agent-extensions/src/main/java/com/alibaba/assistant/agent/extension/experience/model/ExperienceType.java | Replaces CODE with TOOL in the experience taxonomy. |
| assistant-agent-extensions/src/main/java/com/alibaba/assistant/agent/extension/experience/model/Experience.java | Renames/extends model to align with Skills and disclosure needs. |
| assistant-agent-extensions/src/main/java/com/alibaba/assistant/agent/extension/experience/model/DisclosureStrategy.java | Adds disclosure strategy enum (DIRECT/PROGRESSIVE). |
| assistant-agent-extensions/src/main/java/com/alibaba/assistant/agent/extension/experience/model/ExperienceMetadata.java | Adds tenantIdList helpers + tenant matching. |
| assistant-agent-extensions/src/main/java/com/alibaba/assistant/agent/extension/experience/model/ExperienceQuery.java | Adds disclosureStrategy filter; removes scope/language filters. |
| assistant-agent-extensions/src/main/java/com/alibaba/assistant/agent/extension/experience/model/ExperienceQueryContext.java | Simplifies context to tenantId + userQuery. |
| assistant-agent-extensions/src/main/java/com/alibaba/assistant/agent/extension/experience/internal/InMemoryExperienceRepository.java | Implements tenant-aware queries and new repository methods. |
| assistant-agent-extensions/src/main/java/com/alibaba/assistant/agent/extension/experience/internal/InMemoryExperienceProvider.java | Updates query path to tenant-based repo; adds disclosure strategy filter and text matching improvements. |
| assistant-agent-extensions/src/main/java/com/alibaba/assistant/agent/extension/experience/config/ExperienceExtensionProperties.java | Adds React-direct allowlist for TOOL experiences. |
| assistant-agent-extensions/src/main/java/com/alibaba/assistant/agent/extension/experience/config/ExperienceExtensionAutoConfiguration.java | Removes legacy hooks and updates property gates. |
| assistant-agent-extensions/src/main/java/com/alibaba/assistant/agent/extension/experience/config/ExperienceDisclosureAutoConfiguration.java | Wires prefetch hook + disclosure tools + interceptors + prompt contributor. |
| assistant-agent-extensions/src/main/java/com/alibaba/assistant/agent/extension/experience/disclosure/* | Implements progressive disclosure runtime, payloads, interceptors, tool gating and TOOL invocation classification. |
| assistant-agent-extensions/src/main/java/com/alibaba/assistant/agent/extension/experience/tool/ReactDirectCodeactToolCallbackWrapper.java | Wraps CodeactTool into React-stage FunctionToolCallback with qualified names. |
| assistant-agent-extensions/src/main/java/com/alibaba/assistant/agent/extension/evaluation/config/CodeactEvaluationContextFactory.java | Updates comments for new prefetch hook injection behavior. |
| assistant-agent-extensions/src/main/java/com/alibaba/assistant/agent/extension/evaluation/experience/ExperienceRetrievalEvaluatorFactory.java | Removes language formatting (aligns with model changes). |
| assistant-agent-extensions/src/main/java/com/alibaba/assistant/agent/extension/dynamic/tool/AbstractDynamicCodeactTool.java | Stops truncating tool description at “Return schema”. |
| assistant-agent-extensions/pom.xml | Bumps version. |
| assistant-agent-evaluation/pom.xml | Bumps version. |
| assistant-agent-core/src/main/java/com/alibaba/assistant/agent/core/tool/definition/ShapeExtractor.java | Adds map-shape inference for dynamic-key objects. |
| assistant-agent-core/src/main/java/com/alibaba/assistant/agent/core/tool/definition/ReturnSchemaMerger.java | Adds merge logic for MapShapeNode. |
| assistant-agent-core/src/test/java/com/alibaba/assistant/agent/core/tool/definition/ShapeExtractorTest.java | Tests for map-shape inference/merging. |
| assistant-agent-core/pom.xml | Adds JUnit dependency for new tests. |
| assistant-agent-common/src/main/java/com/alibaba/assistant/agent/common/tools/definition/MapShapeNode.java | Introduces MapShapeNode for dynamic-key return schemas. |
| assistant-agent-common/src/main/java/com/alibaba/assistant/agent/common/constant/CodeactStateKeys.java | Adds progressive disclosure state keys; removes legacy ones. |
| assistant-agent-common/pom.xml | Bumps version. |
| assistant-agent-autoconfigure/src/main/java/com/alibaba/assistant/agent/autoconfigure/tools/FlexibleStringListDeserializer.java | Flattens nested parameter arrays for tolerant request parsing. |
| assistant-agent-autoconfigure/src/main/java/com/alibaba/assistant/agent/autoconfigure/tools/WriteCodeTool.java | Removes CODE fast-intent path; improves parameters guidance; adds tolerant deserialization. |
| assistant-agent-autoconfigure/src/main/java/com/alibaba/assistant/agent/autoconfigure/tools/WriteConditionCodeTool.java | Removes CODE fast-intent path; simplifies tool callback factory. |
| assistant-agent-autoconfigure/src/main/java/com/alibaba/assistant/agent/autoconfigure/evaluation/DefaultEvaluationSuiteConfig.java | Registers custom evaluators via Spring beans instead of hard-wiring experience retrieval evaluator. |
| assistant-agent-autoconfigure/src/main/java/com/alibaba/assistant/agent/autoconfigure/CodeactAgent.java | Removes CODE fast-intent support wiring for write_code / write_condition_code. |
| assistant-agent-autoconfigure/src/test/java/com/alibaba/assistant/agent/autoconfigure/tools/WriteCodeToolRequestDeserializationTest.java | Adds tests for nested/empty parameter array deserialization. |
| assistant-agent-autoconfigure/pom.xml | Bumps version. |
| assistant-agent-extensions/src/test/java/com/alibaba/assistant/agent/extension/learning/extractor/ExperienceLearningExtractorTest.java | Tests TOOL type parsing + legacy CODE rejection. |
| assistant-agent-extensions/src/test/java/com/alibaba/assistant/agent/extension/experience/tool/ReactDirectCodeactToolCallbackWrapperTest.java | Tests qualified React tool name wrapping behavior. |
| assistant-agent-extensions/src/test/java/com/alibaba/assistant/agent/extension/experience/disclosure/* | Tests disclosure serialization, tool gating, prefetch state, prompt contributor output. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| import com.alibaba.cloud.ai.graph.store.StoreItem; | ||
| import com.fasterxml.jackson.annotation.JsonProperty; | ||
| import com.fasterxml.jackson.annotation.JsonPropertyDescription; | ||
| import com.fasterxml.jackson.annotation.JsonSetter; |
Comment on lines
245
to
249
| if (state != null) { | ||
| state.value("user_id", String.class).ifPresent(context::setUserId); | ||
| state.value("project_id", String.class).ifPresent(context::setProjectId); | ||
| state.value("task_type", String.class).ifPresent(context::setTaskType); | ||
| state.value("tenant_id", String.class).ifPresent(context::setTenantId); | ||
| state.value("user_id", String.class).ifPresent(context::setTenantId); | ||
| } | ||
| if (config != null) { |
Comment on lines
+91
to
+95
| 0. 代码整洁规范(强制): | ||
| - 禁止在代码中使用三引号 docstring(\"\"\"...\"\"\"),因为三引号会破坏 JSON 参数格式 | ||
| - 禁止生成任何形式的注释(包括 # 注释和多行注释) | ||
| - 代码应通过清晰的变量命名和函数结构来自解释 | ||
|
|
Comment on lines
+8
to
+10
| // ─── Configuration ─── | ||
| const API_BASE = '/exp-console/api'; | ||
| const GLOBAL_TENANT_ID = 'global'; |
Comment on lines
+25
to
+29
| /** | ||
| * Placeholder ToolCallback for the {@code __prompt_contribution__} internal tool. | ||
| * | ||
| * <p>{@link PromptContributorModelHook} injects fake AssistantMessage + ToolResponseMessage | ||
| * pairs using this tool name. The agent framework needs a registered ToolCallback so that: |
Comment on lines
+29
to
+31
| @RestController | ||
| @RequestMapping("/exp-console/api/experiences") | ||
| public class ExperienceManagementController { |
Collaborator
Author
|
#41 已完成 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
本次改动接入了SKILLS,因为SKILLS与assistant-agent原本的经验模型在概念上高度相似,都是通过组织化的指令,提升Agent完成任务的成功率,指令之外也可以包含可执行的产物(SKILLS的脚本 对应 REACT经验中的Artifact)。所以本次进一步扩展原本的经验模块,使之能够与外部的SKILLS进行转换(支持SKILL导入为经验),在内部运行时还是使用经验模型。
改动具体来说主要包含两大块内容: