feat(skills): host 模式 skill 归档目录迁移到运行态 agentskills
This commit is contained in:
parent
3db4e0beb4
commit
765196ea3c
@ -1,15 +0,0 @@
|
|||||||
---
|
|
||||||
name: Test Skill
|
|
||||||
description: Validate skills loading and read_file flow.
|
|
||||||
example_prompts:
|
|
||||||
- "Use the test skill to explain how to proceed."
|
|
||||||
tools:
|
|
||||||
- read_file
|
|
||||||
tags:
|
|
||||||
- test
|
|
||||||
---
|
|
||||||
|
|
||||||
# Test Skill
|
|
||||||
|
|
||||||
This skill exists to verify that the skills system can discover, list, sync,
|
|
||||||
and read SKILL.md content via read_file. Replace this content later.
|
|
||||||
@ -105,6 +105,9 @@ USER_SPACE_DIR = _runtime_dir("USER_SPACE_DIR", "users")
|
|||||||
# API 专用用户与工作区(与网页用户隔离)
|
# API 专用用户与工作区(与网页用户隔离)
|
||||||
API_USER_SPACE_DIR = _runtime_dir("API_USER_SPACE_DIR", "api/users")
|
API_USER_SPACE_DIR = _runtime_dir("API_USER_SPACE_DIR", "api/users")
|
||||||
|
|
||||||
|
# ── 用户自定义 skill 归档目录(host 模式全局;docker/web 模式可与 per-user 并存)──
|
||||||
|
CUSTOM_SKILLS_DIR = str(Path(RUNTIME_ROOT) / _MODE / "agentskills")
|
||||||
|
|
||||||
# ── 是否宿主机模式 ──
|
# ── 是否宿主机模式 ──
|
||||||
IS_HOST_MODE = _MODE == "host"
|
IS_HOST_MODE = _MODE == "host"
|
||||||
|
|
||||||
@ -190,6 +193,7 @@ __all__ = [
|
|||||||
"INVITE_CODES_FILE",
|
"INVITE_CODES_FILE",
|
||||||
"ADMIN_POLICY_FILE",
|
"ADMIN_POLICY_FILE",
|
||||||
"API_USER_SPACE_DIR",
|
"API_USER_SPACE_DIR",
|
||||||
|
"CUSTOM_SKILLS_DIR",
|
||||||
"API_USERS_DB_FILE",
|
"API_USERS_DB_FILE",
|
||||||
"API_TOKENS_FILE",
|
"API_TOKENS_FILE",
|
||||||
"API_USAGE_FILE",
|
"API_USAGE_FILE",
|
||||||
|
|||||||
@ -26,7 +26,6 @@ try:
|
|||||||
READONLY_RUN_COMMAND_ALLOWED,
|
READONLY_RUN_COMMAND_ALLOWED,
|
||||||
READONLY_RUN_COMMAND_ALLOWED_GIT_SUBCOMMANDS,
|
READONLY_RUN_COMMAND_ALLOWED_GIT_SUBCOMMANDS,
|
||||||
READONLY_RUN_COMMAND_BLOCKED_TOKENS,
|
READONLY_RUN_COMMAND_BLOCKED_TOKENS,
|
||||||
AGENT_SKILLS_DIR,
|
|
||||||
)
|
)
|
||||||
except ImportError:
|
except ImportError:
|
||||||
import sys
|
import sys
|
||||||
@ -50,7 +49,6 @@ except ImportError:
|
|||||||
READONLY_RUN_COMMAND_ALLOWED,
|
READONLY_RUN_COMMAND_ALLOWED,
|
||||||
READONLY_RUN_COMMAND_ALLOWED_GIT_SUBCOMMANDS,
|
READONLY_RUN_COMMAND_ALLOWED_GIT_SUBCOMMANDS,
|
||||||
READONLY_RUN_COMMAND_BLOCKED_TOKENS,
|
READONLY_RUN_COMMAND_BLOCKED_TOKENS,
|
||||||
AGENT_SKILLS_DIR,
|
|
||||||
)
|
)
|
||||||
|
|
||||||
from modules.file_manager import FileManager
|
from modules.file_manager import FileManager
|
||||||
@ -496,9 +494,6 @@ class MainTerminalToolsExecutionMixin:
|
|||||||
return (project_root / candidate).resolve()
|
return (project_root / candidate).resolve()
|
||||||
|
|
||||||
def _get_create_skill_target_root(self) -> Path:
|
def _get_create_skill_target_root(self) -> Path:
|
||||||
if self._is_host_mode():
|
|
||||||
return Path(AGENT_SKILLS_DIR).expanduser().resolve()
|
|
||||||
|
|
||||||
inferred = infer_private_skills_dir(self.data_dir)
|
inferred = infer_private_skills_dir(self.data_dir)
|
||||||
if inferred:
|
if inferred:
|
||||||
return inferred
|
return inferred
|
||||||
|
|||||||
@ -11,7 +11,7 @@ import threading
|
|||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from typing import Dict, List, Optional, Sequence
|
from typing import Dict, List, Optional, Sequence
|
||||||
|
|
||||||
from config import AGENT_SKILLS_DIR, WORKSPACE_SKILLS_DIRNAME
|
from config import AGENT_SKILLS_DIR, CUSTOM_SKILLS_DIR, IS_HOST_MODE, WORKSPACE_SKILLS_DIRNAME
|
||||||
from utils.logger import setup_logger
|
from utils.logger import setup_logger
|
||||||
|
|
||||||
logger = setup_logger(__name__)
|
logger = setup_logger(__name__)
|
||||||
@ -48,10 +48,15 @@ def ensure_workspace_skills_dir(project_path: str | Path) -> Path:
|
|||||||
|
|
||||||
|
|
||||||
def infer_private_skills_dir(data_dir: str | Path | None) -> Optional[Path]:
|
def infer_private_skills_dir(data_dir: str | Path | None) -> Optional[Path]:
|
||||||
"""Infer per-user private skills dir from workspace data_dir."""
|
"""Infer per-user private skills dir from workspace data_dir.
|
||||||
|
|
||||||
|
host 模式下统一使用运行态根下的 ``agentskills``,不再按用户拆分。
|
||||||
|
"""
|
||||||
if not data_dir:
|
if not data_dir:
|
||||||
return None
|
return None
|
||||||
try:
|
try:
|
||||||
|
if IS_HOST_MODE:
|
||||||
|
return Path(CUSTOM_SKILLS_DIR).expanduser().resolve()
|
||||||
data_path = Path(data_dir).expanduser().resolve()
|
data_path = Path(data_dir).expanduser().resolve()
|
||||||
if data_path.name == "data" and data_path.parent.parent.name == "workspaces":
|
if data_path.name == "data" and data_path.parent.parent.name == "workspaces":
|
||||||
return (data_path.parent.parent.parent / "agentskills").resolve()
|
return (data_path.parent.parent.parent / "agentskills").resolve()
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user