Skip to content

声明式场景

声明式场景通过 JSON 配置文件定义 AI 应用,无需编写任何代码。适合快速创建对话助手、提示词模板等场景。

项目结构

声明式场景的典型项目结构:

my-scenario/
├── scenario.json           # 主配置文件(必填)
├── package.json            # 仅用于记录场景元信息
├── prompts/                # 提示词文件
│   ├── system.md           # 系统提示词
│   ├── security.md         # 安全规则
│   ├── conventions.md      # 编码规范
│   └── workflow.md         # 工作流
├── scripts/                # 生命周期脚本(可选)
│   ├── onActivate.js       # 激活时执行的脚本
│   ├── onDeactivate.js     # 停用时执行的脚本
│   └── onHealthCheck.js    # 健康检查脚本
├── db/                     # 数据库脚本(可选)
│   ├── install.sql         # 安装时执行的 SQL
│   └── uninstall.sql       # 卸载时清理 SQL
└── assets/                 # 静态资源

配置文件详解

完整配置示例

json
{
  "id": "legal-advisor",
  "version": "1.0.0",
  "name": "Legal Advisor",
  "nameZh": "法律顾问",
  "description": "AI legal document reviewer and advisor",
  "descriptionZh": "AI 法律文件审查与咨询助手",
  "author": "aweeclaw",
  "icon": "Scale",
  "category": "legal",
  "tags": ["legal", "document", "review"],
  "type": "declarative",
  "permissions": ["web:search", "workspace:read"],
  "minAppVersion": "1.0.0",
  "dependencies": [
    { "scenarioId": "document-parser", "version": ">=1.0.0" }
  ],

  "identity": {
    "systemPrompt": "你是一位经验丰富的法律顾问,专注于中国法律体系。",
    "systemPromptFile": "prompts/system.md",
    "securityRules": "不得提供具体的法律建议,提醒用户咨询专业律师。",
    "securityRulesFile": "prompts/security.md",
    "conventions": "使用正式的专业语言,引用相关法律条文时注明出处。",
    "conventionsFile": "prompts/conventions.md",
    "workflow": "1. 了解用户需求\n2. 分析法律问题\n3. 提供参考意见\n4. 建议专业咨询",
    "workflowFile": "prompts/workflow.md"
  },

  "capabilities": {
    "builtinTools": ["web_search", "ask_user", "read_file", "write_file", "remember"],
    "customTools": [
      {
        "name": "search_legal_database",
        "description": "搜索法律数据库",
        "descriptionZh": "在中国法律数据库中搜索相关法条和案例",
        "parameters": {
          "query": {
            "type": "string",
            "description": "搜索关键词",
            "required": true
          },
          "law_type": {
            "type": "string",
            "description": "法律类型",
            "enum": ["civil", "criminal", "administrative", "constitutional", "all"]
          }
        },
        "executor": "web_search",
        "template": "site:pkulaw.com OR site:chinalawinfo.com 中国法律 {query} {law_type}"
      }
    ]
  },

  "ui": {
    "layout": "chat-centric",
    "panels": [],
    "sidebarItems": [
      {
        "id": "explorer",
        "icon": "Files",
        "label": "Workspace",
        "labelZh": "工作区",
        "component": "ExplorerView",
        "position": 0
      },
      {
        "id": "knowledge",
        "icon": "BookOpen",
        "label": "Knowledge",
        "labelZh": "知识库",
        "component": "KnowledgeView",
        "position": 1
      }
    ],
    "statusBarItems": [],
    "welcomeMessage": "你好,我是法律顾问助手。请告诉我你需要什么帮助?",
    "welcomeMessageZh": "你好,我是法律顾问助手。请告诉我你需要什么帮助?",
    "defaultSidePanel": "explorer"
  },

  "database": {
    "installScript": "CREATE TABLE IF NOT EXISTS legal_cases (id TEXT PRIMARY KEY, title TEXT, content TEXT);",
    "installScriptFiles": ["db/install.sql"],
    "uninstallScript": "DROP TABLE IF EXISTS legal_cases;",
    "uninstallScriptFiles": ["db/uninstall.sql"]
  },

  "scripts": {
    "onActivate": "console.log('Legal advisor activated');",
    "onActivateFile": "scripts/onActivate.js",
    "onDeactivate": "console.log('Legal advisor deactivated');",
    "onDeactivateFile": "scripts/onDeactivate.js",
    "onHealthCheck": "return [{ name: 'legal_db', status: 'healthy' }];",
    "onHealthCheckFile": "scripts/onHealthCheck.js",
    "scriptTools": [
      {
        "name": "check_case_status",
        "description": "Check case status",
        "descriptionZh": "检查案件状态",
        "parameters": {
          "case_id": {
            "type": "string",
            "description": "案件编号",
            "required": true
          }
        },
        "scriptFile": "scripts/checkCase.js"
      }
    ]
  }
}

字段说明

顶层字段

字段类型必填说明
idstring场景唯一标识,小写字母+数字+连字符
versionstring语义化版本号
namestring英文名称
nameZhstring中文名称
descriptionstring英文描述
descriptionZhstring中文描述
authorstring作者名称
iconstring图标名称(lucide-react 图标)
categorystring分类
tagsstring[]标签
typestring固定为 "declarative"
permissionsstring[]所需权限列表
minAppVersionstring最低客户端版本要求
dependenciesarray场景间依赖

identity 字段

提示词配置支持两种方式:内联文本文件引用。文件引用优先级更高。

字段说明
systemPrompt / systemPromptFile系统提示词,定义 AI 角色和行为
securityRules / securityRulesFile安全规则,限制 AI 的不安全行为
conventions / conventionsFile编码规范,定义回复格式和风格
workflow / workflowFile工作流,定义 AI 处理任务的步骤

capabilities 字段

字段说明
builtinTools启用的内置工具列表
customTools自定义工具定义

ui 字段

字段说明
layoutUI 布局类型
panels面板配置
sidebarItems左侧菜单项
statusBarItems状态栏项
welcomeMessage / welcomeMessageZh欢迎消息
defaultSidePanel默认打开的侧边面板

提示词文件

提示词文件使用 Markdown 格式,支持 YAML frontmatter 元数据。

prompts/system.md 示例:

markdown
---
version: "1.0"
temperature: 0.7
max_tokens: 4096
---

# 角色定义

你是一位专业的法律顾问助手。

# 核心能力

1. 分析法律文件和合同条款
2. 检索相关法律条文和案例
3. 提供法律风险评估
4. 起草法律文书模板

# 行为准则

- 不得提供最终法律意见,始终建议用户咨询专业律师
- 引用法律条文时注明出处和时效性
- 保持客观中立,不偏袒任何一方
- 对敏感信息进行脱敏处理

生命周期脚本

脚本在沙箱环境中运行,可访问有限的 API。

scripts/onActivate.js 示例:

javascript
// 场景激活时执行
// 可访问:context, db, logger

logger.info('场景已激活');

// 初始化数据库
const result = db.querySql('SELECT count(*) as cnt FROM legal_cases');
logger.info(`当前案件数: ${result.data[0].cnt}`);

// 发布状态更新
context.publishData('scenario:ready', { status: 'active' });

下一步

AweeClaw AI 应用构建平台