Skip to content

feat: integrate skills support#51

Merged
AQing-527 merged 1 commit intomainfrom
feature/20260318_28660127_skills_1_clean
Apr 13, 2026
Merged

feat: integrate skills support#51
AQing-527 merged 1 commit intomainfrom
feature/20260318_28660127_skills_1_clean

Conversation

@AQing-527
Copy link
Copy Markdown
Collaborator

本次改动接入了SKILLS,因为SKILLS与assistant-agent原本的经验模型在概念上高度相似,都是通过组织化的指令,提升Agent完成任务的成功率,指令之外也可以包含可执行的产物(SKILLS的脚本 对应 REACT经验中的Artifact)。所以本次进一步扩展原本的经验模块,使之能够与外部的SKILLS进行转换(支持SKILL导入为经验),在内部运行时还是使用经验模型。

改动具体来说主要包含两大块内容:

  • 扩展原本的经验模型,使其支持与外部SKILLS间的转换。并且REACT/COMMON/TOOL经验将进行统一存储,在导入外部SKILL时,也是将SKILL转换为经验模型存入。在运行时,每一个TOOL经验会转化为一个CodeactTool,这些CodeactTool能够在react阶段以function call的形式被直接调用,或者在代码中被调用。
  • 在react阶段,新增experience相关工具,包含search_exp(按要求查询相关经验),read_exp(读取指定经验的完整内容),通过这两个工具实现经验的渐进式披露

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings April 13, 2026 03:11
Copy link
Copy Markdown
Collaborator

@canfuu canfuu left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@AQing-527 AQing-527 merged commit 1b31634 into main Apr 13, 2026
3 checks passed
@AQing-527 AQing-527 deleted the feature/20260318_28660127_skills_1_clean branch April 13, 2026 03:12
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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-management module exposing an experience console UI + REST APIs, and bumps version to 0.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 {
@AQing-527
Copy link
Copy Markdown
Collaborator Author

#41 已完成

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants