chore(.features): sync feature memory (auto) (#43)

Generated by sparticle-toolkit feature-memory-sync

Co-authored-by: Denya0529 <217564326+Denya0529@users.noreply.github.com>
This commit is contained in:
github-actions[bot] 2026-05-29 17:13:19 +00:00 committed by GitHub
parent 5173ca13b4
commit 2205d830e1
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 128 additions and 0 deletions

View File

@ -1,6 +1,7 @@
# Skill 功能
> 负责范围:技能包管理服务 - 核心实现
> 最后更新2026-05-26
> 最后更新2026-05-23
> 最后更新2026-04-20
@ -30,6 +31,10 @@ MCP UI 类 skill 已按 MCP Apps 模式改造:工具返回数据,静态 HTML
## 最近重要事项
- [2026-05-26](changelog/2026-Q2.md): skill 引入 `category` 字段——`routes/skill_manager.py` 在 `SkillItem` / `SkillValidationResult` 增加 `category`,从 `plugin.json``SKILL.md` frontmatter 解析official skill 默认 `"other"`、user skill 默认 `"custom"`;并通过 batch 给 common/developing/onprem/support 路径下大量 skill 元数据补 `category``data-dashboard` / `mcp-ui` 归类 `Interactive UI``203dcf4`, `3ada55a`, `9658588`
- [2026-05-26](changelog/2026-Q2.md): developing 分支大合并新增多个 skill`ai-ppt-generator`(百度 AI PPT、`nfc-medicine-lookup`NFC 药品检索)、`ppt-outline`PPT 大纲 / HTML 演示文稿)、`z-card-image`(配图 / 卡片图),同时 `skills/linggan/*` 系列 skill 经合并回归(`3ada55a`
- [2026-05-23](changelog/2026-Q2.md): 新增 MCP App 型 `skills/developing/ecommerce-storefront/`——含 `product-list` / `order-confirm` 两个 HTML App + 自带 `ecommerce_server.py` MCP server同时落地 `docs/mcp-app-training.md`(约 1063 行)作为 MCP App 培训材料(`9d001c8`
- [2026-05-21](changelog/2026-Q2.md): Daytona 沙箱模式下 `init_agent` 在沙箱内写入 `BASH_ENV` 文件,注入 `ASSISTANT_ID` / `USER_IDENTIFIER` / `TRACE_ID` / `ENABLE_SELF_KNOWLEDGE``config.shell_env` 的 shell 环境变量(`776acc2`
- [2026-05-12](changelog/2026-Q2.md): 跨 6→10 个 skill 变体批量精修 `retrieval-policy*.md`,统一 onprem/support/autoload 各路径下的 policy 口径(`be96f24`, `7b4f03d`
- [2026-05-11](changelog/2026-Q2.md): 新增子 agent (SubAgent) 支持——skill 包通过 `agents/*.md` 暴露子 agent`SubAgentMiddleware` 加载;附 `pmda-drug-info` skill 示例(`5b634bc`
- [2026-05-11](changelog/2026-Q2.md): `pmda-drug-info``pmda_server.py` 大改为 mock 实现(`a92096a`
@ -77,6 +82,9 @@ MCP UI 类 skill 已按 MCP Apps 模式改造:工具返回数据,静态 HTML
- ⚠️ **MCP `_meta.trace_id` 是全局 monkey-patch 注入**`agent/mcp_trace_meta.patch_mcp_client_session_trace_meta()` 在 `get_tools_from_mcp()` 入口调用一次后,会把 `mcp.ClientSession.call_tool` 永久包装;仅对工具名在 `{"rag_retrieve", "table_rag_retrieve"}` 集合内的调用注入 `_meta.trace_id`,扩展白名单要直接改 `_TRACE_META_TOOL_NAMES` 常量。
- ⚠️ **PrePrompt hook 内容位置由模板决定**:自 2026-04-23 起 hook 产出通过 `{hook_content}` 占位符注入 `prompt/system_prompt.md`,不再追加在 prompt 末尾;自定义模板必须包含 `{hook_content}` 占位符否则 hook 内容会丢失。
- ⚠️ **`init_agent` 返回值已变 3 元素**Daytona 改造后 `init_agent` 返回 `(agent, checkpointer, sandbox)`;调用方解构必须更新。
- ⚠️ **skill `category` 默认值**API 返回的 `SkillItem.category`——official skill fallback 为 `"other"`、user skill fallback 为 `"custom"`;前端做分类视图时需要同时识别这两个 sentinel不要假设官方/用户 skill 用同一套缺省值。
- ⚠️ **`category` 字段双入口**:同一 skill 可以同时在 `.claude-plugin/plugin.json``SKILL.md` frontmatter 写 `category``get_skill_metadata` 优先走 `parse_plugin_json`,若 skill 包没有 plugin.json 才回落到 `parse_skill_frontmatter`——两者写不一致时以 plugin.json 为准。
- ⚠️ **Daytona shell_env 是文件注入而非 process env**`init_agent` 通过 `cat > $REMOTE_BASH_ENV_PATH` 写入 `export VAR=...` 行,沙箱内必须由 shellbash`BASH_ENV` 加载才能生效;非 daytona 模式或不走 bash 启动的脚本拿不到这些变量。扩展注入项需直接改 `init_agent` 里的 `_shell_env` 字典。
## Skill 目录结构

View File

@ -4,6 +4,126 @@
---
## 2026-05-26: skill `category` 字段全面接入
**类型**:新功能
**背景**skill 数量越来越多common / developing / onprem / support / linggan / autoload 各路径下数十个),列表 API 需要前端能按类别分组展示,元数据层面缺少 `category` 字段。
**改动**
- `routes/skill_manager.py`
- `SkillItem` model 新增 `category: str = "other"`
- `SkillValidationResult` dataclass 新增可选 `category: Optional[str]`
- `parse_plugin_json` 解析 `plugin_config.get('category')``parse_skill_frontmatter` 解析 frontmatter 的 `metadata.get('category')`
- `get_official_skills` 中 fallback 为 `"other"``get_user_skills` 中 fallback 为 `"custom"`
- `get_skill_metadata_legacy``category` 非空时写入返回 dict保持向后兼容
- 批量给 common / developing / onprem / support 多个 skill 的 `.claude-plugin/plugin.json``SKILL.md` frontmatter 添加 `category` 字段。
- `data-dashboard``mcp-ui``category``"Data & Retrieval"` 修正为 `"Interactive UI"`(更贴切 MCP App 的渲染语义)。
**根因**N/A新功能
**影响**
- `GET /api/v1/skill/list` 返回项现在包含 `category` 字段;前端可按 category 维度做分组/筛选。
- skill 元数据约定扩展——新 skill 应在 plugin.json 或 SKILL.md frontmatter 中写明 `category`,否则会落到 `"other"` / `"custom"` 兜底。
- `plugin.json.category``SKILL.md.category` 同时存在时以前者为准(`get_skill_metadata` 优先 plugin.json
**相关文件**
- `routes/skill_manager.py`
- `skills/common/data-dashboard/.claude-plugin/plugin.json`
- `skills/common/mcp-ui/.claude-plugin/plugin.json`
- 以及一批 `skills/{common,developing,onprem,support}/*/SKILL.md``.claude-plugin/plugin.json`
**Commit/PR**`203dcf4`, `3ada55a`, `9658588`
---
## 2026-05-26: developing 分支批量新增多类 skill
**类型**:新功能
**背景**[待补充]——经 developing→staging 合并集中落地一批新 skill 与 linggan 系列 skill 回归。
**改动**
- 新增 `skills/developing/ai-ppt-generator/`:调用百度 AI 生成 PPT按 topic 自动选模板(商务/科技/教育/创意/中国风等);`category: Document Processing`。
- 新增 `skills/developing/nfc-medicine-lookup/`:通过 NFC 芯片 ID 或药品名称查询药品信息,面向老年用户的语音助手交互口径;`category: Developer Tools`。
- 新增 `skills/developing/ppt-outline/`PPT 大纲与独立 HTML 演示文稿生成dark/light/tech/minimal 四种风格);`category: Document Processing`。
- 新增 `skills/developing/z-card-image/`:生成配图、封面图、卡片图、社媒帖子分享图等;依赖 `python3` + `google-chrome`
- `skills/developing/static-hosting/SKILL.md` 由 1 行说明扩展为完整 80 行 skill同时一批已有 SKILL.md / plugin.json 补 `category`
- `skills/linggan/*` 系列 skillbaidu-search / bot-self-modifier / caiyun-weather / competitor-news-intel / contract-document-generator / financial-report-generator / market-academic-insight / ragflow-loader / sales-decision-report / seedream / static-hosting / static-site-deploy / voice-notification / weather-china经合并回归 staging。
**根因**N/A
**影响**
- developing skill 池扩张约 5 个新业务 skilllinggan 系列重新出现在 staging。
- 新 skill 多为 SKILL.md 型业务 skill符合"workflow + 模板"的纯 markdown 模式;其中 `ai-ppt-generator`、`z-card-image` 依赖外部 `BAIDU_API_KEY``google-chrome` 二进制。
**相关文件**
- `skills/developing/ai-ppt-generator/SKILL.md`
- `skills/developing/nfc-medicine-lookup/SKILL.md`
- `skills/developing/ppt-outline/SKILL.md`
- `skills/developing/z-card-image/SKILL.md`
- `skills/developing/static-hosting/SKILL.md`
- `skills/linggan/**`(回归)
**Commit/PR**`3ada55a`
---
## 2026-05-23: 新增 ecommerce-storefront skillMCP App 型)+ MCP App 培训文档
**类型**:新功能
**背景**MCP App 模式host 加载静态 HTML + postMessage 传数据)已经在 `mcp-ui`、`data-dashboard` 上跑通,需要一个面向电商场景的样例 skill演示产品浏览 / 选购 / 下单确认这类多步交互的 App 渲染;同时沉淀一份 MCP App 开发指南。
**改动**
- 新增 `skills/developing/ecommerce-storefront/`
- `apps/product-list.html`288 行)与 `apps/order-confirm.html`233 行)两个静态 App。
- `ecommerce_server.py`213 行)作为自带 MCP server`ecommerce_tools.json` 定义工具 schema。
- `hooks/ecommerce_guide.md` + `hooks/pre_prompt.py` 注入 skill 使用指引到 system prompt。
- `mcp_common.py`252 行)复用 MCP 通用工具基类。
- `.claude-plugin/plugin.json` 配置 PrePrompt hook 与 stdio MCP server`category: Developer Tools`。
- 新增 `docs/mcp-app-training.md`(约 1063 行MCP App 模式的开发培训材料。
**根因**N/A
**影响**
- developing skill 池新增一个 MCP App 型 skill体例对齐 `mcp-ui` / `data-dashboard`
- MCP App 开发者有完整培训材料可参考。
**相关文件**
- `skills/developing/ecommerce-storefront/**`
- `docs/mcp-app-training.md`
**Commit/PR**`9d001c8`
---
## 2026-05-21: Daytona 沙箱注入 shell_env 到 BASH_ENV
**类型**:新功能
**背景**Daytona 沙箱内的 skill 脚本需要能读取 `ASSISTANT_ID` / `USER_IDENTIFIER` / `TRACE_ID` 等运行时上下文,但宿主 process env 无法直接透传到沙箱里。
**改动**
- `agent/deep_assistant.py` `init_agent`:当 `sandbox is not None and sandbox_type == "daytona"` 时,组装 `_shell_env` 字典(`ASSISTANT_ID` / `USER_IDENTIFIER` / `TRACE_ID` / `ENABLE_SELF_KNOWLEDGE` 加上 `config.shell_env`),构造 `cd {REMOTE_WORKSPACE_ROOT}\n` + `export VAR="..."` 行,通过 `sandbox.execute("cat > $REMOTE_BASH_ENV_PATH << 'ENVEOF' ... ENVEOF")` 写入沙箱内。
- `utils/daytona_sync.py` 提供常量 `REMOTE_BASH_ENV_PATH` / `REMOTE_WORKSPACE_ROOT`
- `AgentConfig` 增加 `shell_env: Optional[Dict[str, str]]`(调用方可追加自定义 env
**根因**N/A
**影响**
- 沙箱内通过 bash 启动的 skill 脚本可以 `os.environ.get("ASSISTANT_ID")` 等读到运行时上下文。
- 仅 daytona 沙箱模式生效;本地或非 bash 启动的进程不会收到 `BASH_ENV` 注入的变量。
- 扩展注入项(新增固定环境变量)需要直接改 `init_agent` 里的 `_shell_env` 字典。
**相关文件**
- `agent/deep_assistant.py`
- `utils/daytona_sync.py`
**Commit/PR**`776acc2`
---
## 2026-05-12: 批量精修 retrieval policy 文案
**类型**:内容调整