From 08c93caa8b7991d1e46dba3ad325f9752fd91d3a Mon Sep 17 00:00:00 2001 From: sean Date: Tue, 17 Jun 2025 14:23:25 +0800 Subject: [PATCH] =?UTF-8?q?optimize:=E4=BC=98=E5=8C=96=E5=A5=B3=E5=A8=B2?= =?UTF-8?q?=E6=8F=90=E7=A4=BA=E8=AF=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../execution/dpml-authoring.execution.md | 123 +++++++++ .../dpml-protocol-knowledge.execution.md | 133 ---------- .../execution-authoring.execution.md | 148 ----------- .../execution/resource-authoring.execution.md | 223 ---------------- .../execution/role-authoring.execution.md | 241 ------------------ .../execution/role-generation.execution.md | 166 ++++++++---- .../execution/thought-authoring.execution.md | 183 ------------- .../visualization-enhancement.execution.md | 172 +++++++++++++ prompt/core/nuwa/nuwa.role.md | 36 ++- 9 files changed, 434 insertions(+), 991 deletions(-) create mode 100644 prompt/core/execution/dpml-authoring.execution.md delete mode 100644 prompt/core/execution/dpml-protocol-knowledge.execution.md delete mode 100644 prompt/core/execution/execution-authoring.execution.md delete mode 100644 prompt/core/execution/resource-authoring.execution.md delete mode 100644 prompt/core/execution/role-authoring.execution.md delete mode 100644 prompt/core/execution/thought-authoring.execution.md create mode 100644 prompt/core/execution/visualization-enhancement.execution.md diff --git a/prompt/core/execution/dpml-authoring.execution.md b/prompt/core/execution/dpml-authoring.execution.md new file mode 100644 index 0000000..8bbc880 --- /dev/null +++ b/prompt/core/execution/dpml-authoring.execution.md @@ -0,0 +1,123 @@ + + + ## 客观技术限制 + - **DPML语法约束**:必须遵循EBNF定义的标签语法结构 + - **XML格式要求**:标签必须正确闭合,属性值必须用双引号包围 + - **文件编码**:必须使用UTF-8编码 + - **PromptX系统集成**:必须与ResourceManager和promptx命令兼容 + + + + ## 强制性编写规则 + - **纯XML结构**:文件必须从根标签开始,不得包含任何XML结构外的内容 + - **文件纯净性**:除了标签结构外,不得包含任何其他内容 + - **引用规范性**:使用@!引用时必须遵循resource协议语法 + - **镜像结构约束**:用户资源必须遵循`.promptx/resource/domain/`结构 + + + + ## 编写指导原则 + - **简洁性原则**:保持文件的简洁和清晰,避免冗长内容 + - **模块化思维**:将具体内容抽离到独立文件中 + - **可维护性**:通过引用机制实现内容的独立维护和复用 + - **一致性维护**:同一项目中保持DPML使用风格一致 + + + + ## 通用DPML编写流程 + + ### Step 1: 分析元素类型 + ```mermaid + graph TD + A[DPML元素] --> B{元素类型} + B -->|role| C[三组件架构
personality/principle/knowledge] + B -->|thought| D[四种思维模式
exploration/challenge/reasoning/plan] + B -->|execution| E[五层优先级
constraint→rule→guideline→process→criteria] + B -->|resource| F[三组件定义
location/params/registry] + ``` + + ### Step 2: 应用元素模板 + + #### Role元素模板 + ```xml + + @!thought://base + 角色特定内容 + @!execution://specific + @!knowledge://domain + + ``` + + #### Thought元素模板 + ```xml + + 发散性思考内容 + 批判性思考内容 + 系统性推理内容 + 结构化计划内容 + + ``` + + #### Execution元素模板 + ```xml + + 客观限制条件 + 强制性规则 + 指导原则 + 执行步骤 + 评价标准 + + ``` + + #### Resource元素模板 + ```xml + + EBNF路径定义 + 参数表格定义 + 资源映射表 + + ``` + + ### Step 3: 内容组织最佳实践 + + ```mermaid + flowchart LR + A[用户需求] --> B[选择元素类型] + B --> C[应用对应模板] + C --> D{内容复杂度} + D -->|简单| E[直接内容] + D -->|复杂| F[@!引用机制] + E --> G[质量检查] + F --> G + G --> H[交付使用] + ``` + + ### Step 4: 质量检查清单 + - ☐ XML语法正确,标签闭合 + - ☐ 符合元素类型的语义要求 + - ☐ 引用路径有效可达 + - ☐ 文件结构清晰简洁 + - ☐ 与系统集成正常 +
+ + + ## 通用质量标准 + + ### 格式合规性 + - ✅ 文件从根标签直接开始 + - ✅ XML语法完全正确 + - ✅ 子标签符合元素规范 + - ✅ 引用格式标准 + + ### 内容质量 + - ✅ 语义清晰准确 + - ✅ 逻辑结构合理 + - ✅ 信息密度适中 + - ✅ 可操作性强 + + ### 系统集成 + - ✅ ResourceManager可发现 + - ✅ promptx命令可激活 + - ✅ 引用关系有效 + - ✅ 性能表现良好 + +
\ No newline at end of file diff --git a/prompt/core/execution/dpml-protocol-knowledge.execution.md b/prompt/core/execution/dpml-protocol-knowledge.execution.md deleted file mode 100644 index 2ef6467..0000000 --- a/prompt/core/execution/dpml-protocol-knowledge.execution.md +++ /dev/null @@ -1,133 +0,0 @@ - - - ## DPML协议技术边界 - - **语法固化**:DPML遵循EBNF定义的标准语法,不可随意扩展 - - **标签语义固定**:role、personality、principle、knowledge的语义边界明确 - - **引用协议约束**:@引用必须遵循resource协议标准格式 - - **XML兼容性**:必须与标准XML解析器兼容 - - **PromptX集成约束**:必须与ResourceManager和锦囊串联系统兼容 - - - - ## DPML协议核心规则 - - **标签层次结构**:role为根标签,三组件为子标签,内容可嵌套 - - **引用语义固定**:@!为必需引用,@?为可选引用,@为标准引用 - - **协议实现绑定**:A:B语法表示"A通过B协议实现" - - **语义占位符原则**:@引用在原位置展开,保持语义连贯性 - - **镜像结构约束**:用户资源必须镜像系统资源结构 - - **文件纯净性**:角色文件从标签直接开始,无多余内容 - - - - ## DPML协议应用指导 - - **编排优先**:role文件主要用于编排组合,优先使用@引用 - - **模块化设计**:将具体内容抽离到独立的thought、execution文件 - - **语义清晰性**:标签名称具有自解释性,降低理解成本 - - **一致性原则**:同一项目中保持DPML使用风格一致 - - **向下兼容**:新版本DPML保持对旧版本的兼容性 - - - - ## DPML协议深度理解框架 - - ### Level 1: 语法层理解 - ``` - DPML = 标签结构 + Markdown内容 + 引用机制 - - 核心语法元素: - - 标签:content - - 属性:content - - 引用:@[!?]protocol://resource - - 绑定:content - - 内容:Markdown格式文本 - ``` - - ### Level 2: 语义层理解 - ``` - 三组件语义体系: - - personality ≈ 思维模式 + 认知特征 + 交互风格 - - 定义AI的思考方式和性格特点 - - 通过@!thought://引用获得思维能力 - - 可包含直接的人格描述内容 - - principle ≈ 行为原则 + 工作流程 + 质量标准 - - 定义AI的执行方式和操作规范 - - 通过@!execution://引用获得执行能力 - - 可包含直接的原则说明内容 - - knowledge ≈ 专业知识 + 技能框架 + 领域经验 - - 定义AI的知识体系和专业能力 - - 通过@!knowledge://引用获得专业知识 - - 可包含直接的知识结构内容 - ``` - - ### Level 3: 架构层理解 - ``` - DPML在PromptX生态中的位置: - - 用户需求 → 角色定义(DPML) → 资源组织 → 系统发现 → 角色激活 - - 关键架构组件: - - SimplifiedRoleDiscovery:角色发现算法 - - ResourceManager:资源管理和引用解析 - - DPMLContentParser:DPML内容解析 - - SemanticRenderer:语义渲染和@引用展开 - - 协议处理器:各种resource协议的具体实现 - ``` - - ### Level 4: 实践层理解 - ``` - DPML最佳实践模式: - - 1. 简洁编排模式(推荐): - - @!thought://base + @!thought://specific - @!execution://specific - @!knowledge://domain - - - 2. 混合内容模式: - - - @!thought://base - # 角色特定内容 - @!thought://specific - - - - 3. 直接内容模式(特殊情况): - - # 完全自定义内容 - - ``` - - - - ## DPML协议掌握标准 - - ### 语法掌握度 - - ✅ 能正确编写所有DPML语法元素 - - ✅ 理解标签、属性、引用的正确用法 - - ✅ 掌握协议实现绑定的语义 - - ✅ 能识别和修复语法错误 - - ### 语义理解度 - - ✅ 深刻理解三组件的语义边界 - - ✅ 掌握@引用的语义占位符本质 - - ✅ 理解DPML的"释义即实现"设计思想 - - ✅ 能设计符合语义的角色结构 - - ### 架构认知度 - - ✅ 理解DPML在PromptX生态中的定位 - - ✅ 掌握镜像结构的设计理念 - - ✅ 理解ResourceManager的工作机制 - - ✅ 能设计系统兼容的角色架构 - - ### 实践应用度 - - ✅ 能根据需求选择合适的DPML模式 - - ✅ 能设计高质量的角色定义文件 - - ✅ 能优化现有角色的DPML结构 - - ✅ 能指导他人正确使用DPML协议 - - \ No newline at end of file diff --git a/prompt/core/execution/execution-authoring.execution.md b/prompt/core/execution/execution-authoring.execution.md deleted file mode 100644 index a97d5f1..0000000 --- a/prompt/core/execution/execution-authoring.execution.md +++ /dev/null @@ -1,148 +0,0 @@ - - - ## 客观技术限制 - - **DPML语法约束**:必须遵循EBNF定义的execution语法结构 - - **XML格式要求**:标签必须正确闭合,属性值必须用双引号包围 - - **Markdown兼容性**:内容部分必须是有效的Markdown格式 - - **文件编码**:必须使用UTF-8编码 - - **优先级固化**:五个子标签的优先级关系不可改变 - - - - ## 强制性编写规则 - - **纯XML结构**:execution文件必须从``标签开始,不得包含任何XML结构外的内容(如Markdown标题、注释等) - - **根标签强制**:文件必须使用``作为根标签包装全部内容 - - **子标签命名**:只能使用规范定义的五个子标签:constraint, rule, guideline, process, criteria - - **优先级顺序**:子标签必须按constraint → rule → guideline → process → criteria顺序排列 - - **内容完整性**:每个子标签都必须包含实质性内容,不得为空 - - **语义一致性**:子标签内容必须与其语义定义保持一致 - - **文件纯净性**:除了``标签结构外,不得包含任何其他内容 - - - - ## 编写指导原则 - - **语义明确性**:每个子标签的内容应清晰表达其特定语义 - - **内容层次化**:使用Markdown的标题、列表等结构组织内容 - - **实用性导向**:内容应具有实际操作指导价值 - - **简洁性原则**:避免冗长表述,保持核心要点突出 - - **一致性维护**:在整个文件中保持术语和表达方式的一致性 - - - - ## 编写执行流程 - - ### Phase 1: 分析需求和上下文 - 1. **明确execution目的**:确定这个execution要解决什么问题 - 2. **识别客观限制**:分析技术、环境、资源等客观约束条件 - 3. **定义强制要求**:确定必须遵守的规则和底线要求 - 4. **收集最佳实践**:整理相关领域的指导原则和建议 - - ### Phase 2: 内容规划和结构设计 - 1. **约束条件梳理**: - - 列出所有客观存在的限制条件 - - 按重要性和影响程度排序 - - 确保约束条件的客观性和不可变性 - - 2. **规则定义设计**: - - 识别必须严格遵守的行为准则 - - 明确违反规则的后果和风险 - - 确保规则与约束条件不冲突 - - 3. **指导原则制定**: - - 提供灵活性建议和最佳实践 - - 允许根据具体情况调整 - - 确保不违反已定义的规则和约束 - - 4. **流程步骤设计**: - - 在约束和规则框架内设计执行路径 - - 包含正常流程和异常处理 - - 确保步骤的可操作性和逻辑性 - - 5. **评价标准确立**: - - 定义成功完成的判断依据 - - 考虑所有优先级更高元素的要求 - - 提供可量化的评估方法 - - ### Phase 3: DPML结构实现 - - **关键要求:文件必须从``标签直接开始** - - ```xml - - - [客观限制条件内容] - - - - [强制性规则内容] - - - - [指导原则内容] - - - - [具体执行步骤] - - - - [评价标准内容] - - - ``` - - **错误示例(禁止):** - ```markdown - # 标题 - 这是描述内容... - - - ... - - ``` - - ### Phase 4: 质量检查和优化 - 1. **语法验证**:确保DPML语法正确性 - 2. **语义一致性检查**:验证各部分逻辑关系 - 3. **优先级关系验证**:确认无冲突和矛盾 - 4. **实用性测试**:验证内容的可操作性 - 5. **完整性审核**:确保覆盖所有必要方面 - 6. **纯净性检查**:确认文件从``标签开始,无多余内容 - - - - ## 质量评价标准 - - ### 格式合规性 - - ✅ 文件从``标签直接开始,无额外内容 - - ✅ 使用正确的DPML execution标签结构 - - ✅ 五个子标签按规定顺序排列 - - ✅ XML语法正确,标签正确闭合 - - ✅ Markdown格式规范,层次清晰 - - ### 内容完整性 - - ✅ 每个子标签都包含实质性内容 - - ✅ 约束条件体现客观性和不可变性 - - ✅ 规则体现强制性和明确性 - - ✅ 指导原则体现建议性和灵活性 - - ✅ 流程步骤具有可操作性和逻辑性 - - ✅ 评价标准具有可验证性 - - ### 语义一致性 - - ✅ 各子标签内容与其语义定义匹配 - - ✅ 优先级关系得到正确体现 - - ✅ 不存在逻辑冲突和矛盾 - - ✅ 术语使用保持一致性 - - ### 实用价值 - - ✅ 内容具有实际指导意义 - - ✅ 步骤和标准可以实际执行 - - ✅ 能够解决实际问题 - - ✅ 适用于目标场景和用户 - - ### 文件纯净性 - - ✅ 文件结构完全符合DPML execution规范 - - ✅ 无任何XML结构外的多余内容 - - ✅ 体现execution文件的标准格式 - - \ No newline at end of file diff --git a/prompt/core/execution/resource-authoring.execution.md b/prompt/core/execution/resource-authoring.execution.md deleted file mode 100644 index 67d7c25..0000000 --- a/prompt/core/execution/resource-authoring.execution.md +++ /dev/null @@ -1,223 +0,0 @@ - - - ## 客观技术限制 - - **DPML语法约束**:必须遵循EBNF定义的resource语法结构 - - **XML格式要求**:标签必须正确闭合,属性值必须用双引号包围 - - **protocol属性强制**:resource标签必须包含protocol属性指定协议名 - - **文件编码**:必须使用UTF-8编码 - - **代码实现约束**:必须与ResourceManager、ResourceProtocol基类兼容 - - **注册表集成**:必须与resource.registry.json统一注册表集成 - - **查询参数限制**:查询参数必须符合URL标准格式 - - - - ## 强制性编写规则 - - **纯XML结构**:resource文件必须从``标签开始,不得包含任何XML结构外的内容 - - **根标签强制**:文件必须使用``作为根标签 - - **三组件完整**:必须包含location、params、registry三个子标签 - - **组件顺序固定**:子标签必须按location → params → registry顺序排列 - - **protocol属性必需**:根标签必须包含protocol属性且值唯一 - - **文件纯净性**:除了``标签结构外,不得包含任何其他内容 - - **EBNF规范性**:location标签内容必须使用EBNF语法定义路径格式 - - - - ## 编写指导原则 - - **协议名称清晰**:protocol属性值应简洁明了,符合kebab-case命名规范 - - **路径格式标准化**:使用EBNF语法精确定义资源路径结构 - - **参数文档完整**:详细说明所有支持的查询参数及其类型和用途 - - **注册表合理性**:注册表映射应体现抽象性和实用性的平衡 - - **兼容性考虑**:确保与PromptX资源管理系统的无缝集成 - - **示例丰富性**:提供足够的使用示例帮助理解协议用法 - - - - ## 编写执行流程 - - ### Phase 1: 协议概念设计 - 1. **确定协议用途**:明确这个资源协议要解决什么资源访问问题 - 2. **分析资源特征**:识别目标资源的组织方式、访问模式和参数需求 - 3. **设计协议名称**:选择简洁清晰的协议标识符 - 4. **评估系统集成**:确认与PromptX现有协议的兼容性和差异性 - - ### Phase 2: 路径格式设计(location组件) - 1. **路径结构分析**: - - 确定资源的层次结构和定位方式 - - 分析是否需要支持参数化路径 - - 设计路径的语义表达 - - 2. **EBNF语法定义**: - ```ebnf - location ::= protocol_name '://' path_structure - path_structure ::= segment {'/' segment} - segment ::= literal | parameter - parameter ::= '{' parameter_name '}' - ``` - - 3. **路径规范示例**: - - 简单路径:`protocol://resource_id` - - 参数化路径:`protocol://{category}/{id}` - - 复杂路径:`protocol://{domain}/{namespace}/{resource}` - - ### Phase 3: 查询参数设计(params组件) - 1. **参数分类规划**: - - **格式控制参数**:如format、encoding等 - - **行为控制参数**:如cache、timeout等 - - **过滤参数**:如line、type等 - - **特定功能参数**:协议专有的参数 - - 2. **参数文档格式**: - ```markdown - | 参数名 | 类型 | 描述 | 默认值 | 示例 | - |-------|------|------|--------|------| - | format | string | 输出格式 | text | json, xml | - | cache | boolean | 是否缓存 | true | true, false | - ``` - - 3. **参数验证考虑**: - - 参数类型验证 - - 参数值范围限制 - - 参数组合逻辑 - - ### Phase 4: 注册表设计(registry组件) - 1. **注册表策略选择**: - - **有注册表协议**:需要ID到路径的映射(如thought, execution) - - **无注册表协议**:直接使用路径(如file, http) - - 2. **映射关系设计**(适用于有注册表协议): - ```markdown - | 资源ID | 实际路径 | 描述 | - |--------|----------|------| - | resource-id | @package://path/to/file.md | 资源描述 | - ``` - - 3. **路径引用规范**: - - 支持@package://前缀引用包资源 - - 支持@project://前缀引用项目资源 - - 支持@file://前缀引用文件系统资源 - - 支持嵌套协议引用 - - ### Phase 5: DPML结构实现 - - **关键要求:文件必须从``标签直接开始** - - **有注册表协议示例:** - ```xml - - - ```ebnf - location ::= custom-protocol://{resource_id} - resource_id ::= [a-zA-Z][a-zA-Z0-9_-]* - ``` - - - - | 参数名 | 类型 | 描述 | 默认值 | - |-------|------|------|--------| - | format | string | 输出格式(text\|json\|xml) | text | - | cache | boolean | 是否缓存结果 | true | - | encoding | string | 文件编码 | utf8 | - - - - | 资源ID | 文件路径 | - |--------|----------| - | example-resource | @package://path/to/example.md | - | another-resource | @project://config/another.md | - - - ``` - - **无注册表协议示例:** - ```xml - - - ```ebnf - location ::= direct-access://{path} - path ::= absolute_path | relative_path - absolute_path ::= '/' path_segment {'/' path_segment} - relative_path ::= path_segment {'/' path_segment} - path_segment ::= [^/]+ - ``` - - - - | 参数名 | 类型 | 描述 | 默认值 | - |-------|------|------|--------| - | encoding | string | 文件编码 | utf8 | - | line | string | 行范围(如"1-10") | - | - - - - - - - ``` - - ### Phase 6: 系统集成验证 - 1. **注册表集成**:确保协议定义与resource.registry.json格式兼容 - 2. **代码实现检查**:验证是否需要创建对应的Protocol类文件 - 3. **ResourceManager集成**:确认协议能被ResourceManager正确加载 - 4. **加载语义支持**:验证@、@!、@?前缀的正确处理 - 5. **查询参数解析**:确保参数能被正确解析和应用 - - ### Phase 7: 质量检查和测试 - 1. **语法验证**:确保DPML resource语法正确性 - 2. **EBNF验证**:验证location部分的EBNF语法正确性 - 3. **参数完整性**:确认所有参数都有清晰的类型和描述 - 4. **注册表一致性**:验证注册表映射的逻辑正确性 - 5. **纯净性检查**:确认文件从``标签开始,无多余内容 - - - - ## 质量评价标准 - - ### 格式合规性 - - ✅ 文件从``标签直接开始 - - ✅ 使用正确的DPML resource标签结构 - - ✅ 三个子标签按location → params → registry顺序排列 - - ✅ XML语法正确,标签正确闭合 - - ✅ protocol属性值符合命名规范 - - ### 路径格式规范性 - - ✅ location部分使用正确的EBNF语法 - - ✅ 路径格式清晰明确,无歧义 - - ✅ 参数化路径使用`{parameter}`格式 - - ✅ 路径结构与协议用途匹配 - - ✅ 支持协议的典型使用场景 - - ### 参数文档完整性 - - ✅ 所有参数都有清晰的类型定义 - - ✅ 参数描述详细且准确 - - ✅ 提供了合理的默认值 - - ✅ 参数示例有助于理解 - - ✅ 参数组合逻辑合理 - - ### 注册表设计合理性 - - ✅ 注册表策略与协议特性匹配 - - ✅ 映射关系清晰且实用 - - ✅ 路径引用符合PromptX规范 - - ✅ 抽象性和具体性平衡适当 - - ✅ 支持嵌套协议引用 - - ### 系统集成性 - - ✅ 与ResourceManager兼容 - - ✅ 与resource.registry.json格式一致 - - ✅ 支持标准加载语义(@、@!、@?) - - ✅ 查询参数能被正确解析 - - ✅ 与现有协议生态协调 - - ### 实用价值 - - ✅ 解决了实际的资源访问需求 - - ✅ 路径格式简洁易用 - - ✅ 参数设计灵活且必要 - - ✅ 注册表提供了实际价值 - - ✅ 整体设计具有可扩展性 - - ### 文件纯净性 - - ✅ 文件结构完全符合DPML resource规范 - - ✅ 无任何XML结构外的多余内容 - - ✅ 体现resource协议定义的标准格式 - - ✅ 三组件内容充实且相互配合 - - \ No newline at end of file diff --git a/prompt/core/execution/role-authoring.execution.md b/prompt/core/execution/role-authoring.execution.md deleted file mode 100644 index 385c801..0000000 --- a/prompt/core/execution/role-authoring.execution.md +++ /dev/null @@ -1,241 +0,0 @@ - - - ## 客观技术限制 - - **DPML语法约束**:必须遵循EBNF定义的role语法结构 - - **XML格式要求**:标签必须正确闭合,属性值必须用双引号包围 - - **三组件架构固化**:personality、principle、knowledge三组件的语义边界固定 - - **文件编码**:必须使用UTF-8编码 - - **引用协议约束**:@!引用必须指向实际存在的资源 - - **PromptX系统集成**:必须与promptx命令行工具和ResourceManager兼容 - - - - ## 强制性编写规则 - - **纯XML结构**:role文件必须从``标签开始,不得包含任何XML结构外的内容 - - **根标签强制**:文件必须使用``作为根标签包装全部内容 - - **三组件完整**:必须包含personality、principle、knowledge三个子标签 - - **组件顺序固定**:子标签必须按personality → principle → knowledge顺序排列 - - **文件纯净性**:除了``标签结构外,不得包含任何其他内容 - - **引用规范性**:使用@!引用时必须遵循resource协议语法 - - **镜像结构约束**:用户资源必须遵循`.promptx/resource/domain/`结构,镜像系统`prompt/domain/` - - - - ## 编写指导原则 - - **编排优先**:role文件主要职责是编排组合,推荐使用@!引用机制而非直接内容 - - **简洁性原则**:保持role文件的简洁和清晰,避免冗长的直接内容 - - **模块化思维**:将具体内容抽离到独立的thought、execution、knowledge文件中 - - **引用一致性**:在同一role文件中保持引用风格的一致性 - - **可维护性**:通过引用机制实现内容的独立维护和复用 - - **灵活性保留**:允许在引用和直接内容之间选择,但推荐引用 - - **镜像一致性**:用户资源结构与系统资源保持一致,降低认知负载 - - - - ## 编写执行流程 - - ### Phase 1: 角色概念设计 - 1. **明确角色定位**:确定AI角色的核心身份和专业领域 - 2. **分析能力需求**:识别角色需要的思维特征、行为原则和专业知识 - 3. **规划组件结构**:决定三个组件的具体内容来源和组织方式 - 4. **选择编排策略**:决定使用引用机制还是直接内容 - - ### Phase 2: 资源组织规划 - - #### 用户资源目录结构(镜像系统结构): - ``` - .promptx/resource/domain/{roleId}/ - ├── {roleId}.role.md # 主角色文件 - ├── thought/ # 思维模式目录 - │ └── {name}.thought.md # 专业思维模式 - └── execution/ # 执行流程目录 - └── {name}.execution.md # 专业执行流程 - ``` - - #### 内容来源规划: - 1. **思维模式来源**(personality组件): - - 核心引用:`@!thought://remember`(记忆能力) - - 核心引用:`@!thought://recall`(回忆能力) - - 专业引用:`@!thought://[role-specific]`(角色特定思维) - - 或直接定义角色的思维特征和认知偏好 - - 2. **行为原则来源**(principle组件): - - 专业引用:`@!execution://[role-specific]`(角色特定执行原则) - - 或直接定义角色的行为准则和工作流程 - - 3. **专业知识来源**(knowledge组件): - - 领域引用:`@!knowledge://[domain-specific]`(领域专业知识) - - 或直接定义角色的知识体系和技能框架 - - ### Phase 3: DPML结构实现 - - **关键要求:文件必须从``标签直接开始** - - **推荐编排风格(引用优先):** - ```xml - - - @!thought://remember - @!thought://recall - @!thought://[role-specific-thought] - - - - @!execution://[role-specific-execution] - - - - @!knowledge://[domain-specific-knowledge] - - - ``` - - **示例:助手角色(参考assistant.role.md)** - ```xml - - - @!thought://remember - @!thought://recall - @!thought://assistant - - - - @!execution://assistant - - - - @!knowledge://general-assistant - - - ``` - - **用户资源示例(自定义销售分析师):** - ```xml - - - @!thought://remember - @!thought://recall - @!thought://sales-analyst - - - - @!execution://sales-data-analysis - - - - @!knowledge://business-intelligence - - - ``` - - **混合风格(引用+直接内容):** - ```xml - - - @!thought://remember - @!thought://recall - - ## 角色特定思维特征 - - **用户导向思维**:始终以用户需求为中心 - - **解决方案思维**:专注于提供实用的解决方案 - - - - @!execution://assistant - - ## 补充行为原则 - - 保持耐心和友善的交互风格 - - 承认不确定性,不臆测答案 - - - - @!knowledge://general-assistant - - - ``` - - **纯直接内容风格(不推荐但允许):** - ```xml - - - # 角色思维模式 - ## 核心思维特征 - - **特征1**:描述 - - **特征2**:描述 - - - - # 角色行为原则 - ## 核心原则 - - **原则1**:描述 - - **原则2**:描述 - - - - # 角色专业知识 - ## 知识领域 - - **领域1**:描述 - - **领域2**:描述 - - - ``` - - ### Phase 4: 质量检查和集成验证 - 1. **结构验证**:确保DPML role语法正确性 - 2. **引用检查**:验证所有@!引用的资源实际存在 - 3. **三组件完整性**:确认personality、principle、knowledge都有实质内容 - 4. **系统集成测试**:验证与promptx命令和ResourceManager的兼容性 - 5. **纯净性检查**:确认文件从``标签开始,无多余内容 - 6. **镜像结构验证**:确认用户资源目录结构符合镜像规范 - - - - ## 质量评价标准 - - ### 格式合规性 - - ✅ 文件从``标签直接开始,无额外内容 - - ✅ 使用正确的DPML role标签结构 - - ✅ 三个子标签按personality → principle → knowledge顺序排列 - - ✅ XML语法正确,标签正确闭合 - - ✅ Markdown格式规范(如有直接内容) - - ### 编排质量 - - ✅ 体现role文件的编排组合职责 - - ✅ 合理使用@!引用机制实现模块化 - - ✅ 保持文件的简洁性和可读性 - - ✅ 引用风格在文件内保持一致 - - ✅ 避免不必要的冗长直接内容 - - ### 三组件完整性 - - ✅ personality组件包含思维特征定义或引用 - - ✅ principle组件包含行为原则定义或引用 - - ✅ knowledge组件包含专业知识定义或引用 - - ✅ 三组件逻辑一致,共同构建完整角色 - - ✅ 组件内容与角色定位匹配 - - ### 引用有效性 - - ✅ 所有@!引用遵循resource协议语法 - - ✅ 引用的资源路径正确且存在 - - ✅ 引用内容与组件语义匹配 - - ✅ 引用关系清晰,无循环依赖 - - ### 系统集成性 - - ✅ 与PromptX锦囊串联系统兼容 - - ✅ 支持promptx action命令激活 - - ✅ 角色定义可被AI系统正确解析 - - ✅ 实现角色的即时专家化能力 - - ✅ ResourceManager可正确发现和加载 - - ### 文件纯净性 - - ✅ 文件结构完全符合DPML role规范 - - ✅ 无任何XML结构外的多余内容 - - ✅ 体现role文件的标准编排格式 - - ✅ 维持role文件的简洁优雅特性 - - ### 架构合规性 - - ✅ 用户资源目录结构镜像系统结构 - - ✅ 文件组织符合`.promptx/resource/domain/`规范 - - ✅ 与系统资源结构保持一致性 - - ✅ 降低用户认知负载和学习成本 - - \ No newline at end of file diff --git a/prompt/core/execution/role-generation.execution.md b/prompt/core/execution/role-generation.execution.md index af19a96..ce20eca 100644 --- a/prompt/core/execution/role-generation.execution.md +++ b/prompt/core/execution/role-generation.execution.md @@ -28,83 +28,141 @@ - **即用原则**:生成的角色应立即可用,无需额外配置 - **用户友好**:保持简单明了的交互体验 - **镜像一致**:与系统结构保持一致,降低认知负载 + - **可视化思维**:复杂流程用图形表达,提高理解效率 - ## 极简3步生成流程 + ## 🚀 极简3步生成流程 + + ```mermaid + flowchart TD + Start([用户描述需求]) --> A[Step 1: 领域识别] + A --> B[Step 2: 模板生成] + B --> C[Step 3: 结果交付] + C --> End([角色可用]) + + A -.->|30秒| A1[提取关键词] + B -.->|60秒| B1[生成文件] + C -.->|30秒| C1[验证激活] + ``` ### Step 1: 领域快速识别 (30秒内) + + ```mermaid + mindmap + root((用户描述)) + 技术栈关键词 + 微信小程序 + React/Vue + Java/Python + 数据库 + 职业角色关键词 + 产品经理 + 设计师 + 开发者 + 运营 + 功能需求关键词 + 开发 + 分析 + 营销 + 管理 ``` - 目标:从用户描述中快速提取领域关键词 - 识别策略: - - 提取技术栈关键词(如:微信小程序、React、Python等) - - 识别职业角色关键词(如:产品经理、设计师、运营等) - - 理解功能需求关键词(如:开发、分析、营销等) + **快速确认模板**: + > "明白了!您需要一个【X领域】的专业AI助手,对吗?" - 快速确认: - "明白了!您需要一个【X领域】的专业AI助手,对吗?" - - 处理原则: + **处理原则**: - 最多1次确认,用户确认后立即进入生成 - 如果领域明确,跳过确认直接生成 - ``` ### Step 2: 模板化角色生成 (60秒内) + + ```mermaid + graph TD + A[识别领域] --> B{选择模板} + B -->|前端开发| C[前端工程师模板] + B -->|产品管理| D[产品经理模板] + B -->|数据分析| E[数据分析师模板] + B -->|内容创作| F[创作者模板] + B -->|其他领域| G[通用专家模板] + + C --> H[生成角色文件] + D --> H + E --> H + F --> H + G --> H ``` - 基于识别的领域,调用标准模板: - 模板选择逻辑: - - 微信小程序 → 小程序开发专家模板 - - 前端开发 → 前端工程师模板 - - 产品管理 → 产品经理模板 - - 数据分析 → 数据分析师模板 - - 更多领域... → 对应专业模板 + **文件组织结构**: + ```mermaid + graph LR + A[.promptx/resource/domain/{roleId}/] --> B[{roleId}.role.md] + A --> C[thought/] + A --> D[execution/] + C --> E[{specific}.thought.md] + D --> F[{specific}.execution.md] + ``` - 文件组织结构(镜像系统结构): - .promptx/resource/domain/{roleId}/ - ├── {roleId}.role.md # 主角色文件 - ├── thought/ # 思维模式目录(需要时创建) - │ └── {specific}.thought.md # 专业思维模式 - └── execution/ # 执行模式目录(需要时创建) - └── {specific}.execution.md # 专业执行流程 - - 三组件自动填充: - personality: 引用该领域的标准思维模式(remember + recall + 专业思维) - principle: 引用该领域的标准执行流程(可独立创建execution文件) - knowledge: 引用该领域的专业知识体系(或直接定义) - - 质量检查: - ☐ DPML格式正确 - ☐ 三组件完整 - ☐ 引用资源有效 - ☐ 目录结构规范(镜像系统结构) - ☐ 文件路径正确 - ☐ ResourceManager可发现 + **三组件快速填充**: + ```mermaid + flowchart LR + A[personality] --> A1[@!thought://remember] + A --> A2[@!thought://recall] + A --> A3[@!thought://domain-specific] + + B[principle] --> B1[@!execution://domain-workflow] + + C[knowledge] --> C1[领域专业知识] ``` ### Step 3: 结果直接交付 (30秒内) + + ```mermaid + graph TD + A[生成完成] --> B[展示价值] + B --> C[确认创建] + C --> D[提供激活命令] + D --> E{用户满意?} + E -->|是| F[完成] + E -->|需扩展| G[指导扩展] ``` - 呈现格式: - 1. 角色价值简述 - 2. 文件创建确认(正确目录结构) - 3. 激活命令说明 - 4. 使用建议(可选) - 目录结构展示(镜像系统结构): + **交付模板**: + ``` + ✅ 角色创建成功! + + 📁 文件结构: .promptx/resource/domain/{roleId}/ - ├── {roleId}.role.md # ✅ 已创建 - └── [其他扩展文件] # ✅ 按需创建 + ├── {roleId}.role.md + └── [扩展文件...] - 交付策略: - - 确认角色已正确创建在用户资源目录 - - 提供立即可用的激活命令 - - 说明文件组织规范(与系统结构一致) - - 说明ResourceManager自动发现机制 + 🚀 激活命令: + promptx action {roleId} - 后续支持: - - 如果用户满意,直接结束 - - 如果需要扩展功能,指导创建execution/thought文件 + 💡 该角色将帮助您: + - [核心能力1] + - [核心能力2] + - [核心能力3] + ``` + + ## 📊 核心设计模式速查 + + ```mermaid + graph TD + A[用户需求] --> B{需求类型} + B -->|基础服务| C[基础助手模式] + B -->|专业工作| D[专业专家模式] + B -->|创意创作| E[创作生成模式] + B -->|数据分析| F[分析咨询模式] + B -->|教育培训| G[教学辅导模式] + B -->|复杂需求| H[复合综合模式] + + style C fill:#e1f5fe + style D fill:#f3e5f5 + style E fill:#fff3e0 + style F fill:#e8f5e9 + style G fill:#fce4ec + style H fill:#f5f5f5 ``` diff --git a/prompt/core/execution/thought-authoring.execution.md b/prompt/core/execution/thought-authoring.execution.md deleted file mode 100644 index 55e5975..0000000 --- a/prompt/core/execution/thought-authoring.execution.md +++ /dev/null @@ -1,183 +0,0 @@ - - - ## 客观技术限制 - - **DPML语法约束**:必须遵循EBNF定义的thought语法结构 - - **XML格式要求**:标签必须正确闭合,属性值必须用双引号包围 - - **Markdown兼容性**:内容部分必须是有效的Markdown格式,支持Mermaid图表 - - **文件编码**:必须使用UTF-8编码 - - **思维模式固化**:四种思维模式的语义特征不可改变 - - **可视化限制**:Mermaid图表必须符合语法规范 - - - - ## 强制性编写规则 - - **纯XML结构**:thought文件必须从``标签开始,不得包含任何XML结构外的内容 - - **根标签强制**:文件必须使用``作为根标签包装全部内容 - - **子标签命名**:只能使用规范定义的四个思维模式子标签:exploration, reasoning, plan, challenge - - **语义一致性**:每个子标签内容必须与其思维模式语义定义保持一致 - - **文件纯净性**:除了``标签结构外,不得包含任何其他内容 - - **内容实质性**:包含的子标签都必须有实质性思考内容,不得为空 - - - - ## 编写指导原则 - - **思维模式清晰性**:每个子标签的内容应明确体现对应的思维特征 - - **推荐思考顺序**:建议按exploration → challenge → reasoning → plan顺序组织思考 - - **可视化优先**:优先使用Mermaid图表表达复杂的思维关系和逻辑结构 - - **内容层次化**:使用Markdown的标题、列表等结构组织思考内容 - - **思维完整性**:确保思考覆盖问题的关键维度,避免思维盲区 - - **灵活组合**:根据实际需求选择合适的思维模式组合,无需全部使用 - - - - ## 编写执行流程 - - ### Phase 1: 思考需求分析 - 1. **明确思考目标**:确定这个thought要解决什么问题或分析什么议题 - 2. **识别思考复杂度**:判断问题是否需要多维度思考 - 3. **选择思维模式**:根据问题特点选择合适的思维模式组合 - 4. **确定思考深度**:决定每个思维模式需要的分析深度 - - ### Phase 2: 思维模式规划 - 1. **探索思维规划**: - - 确定需要发散思考的维度 - - 列出要探索的可能性和创新点 - - 规划关联性分析的范围 - - 2. **挑战思维规划**: - - 识别需要质疑的假设和观点 - - 列出潜在风险和问题点 - - 规划批判性分析的角度 - - 3. **推理思维规划**: - - 确定需要验证的逻辑链条 - - 规划因果关系分析路径 - - 设计系统性推理结构 - - 4. **计划思维规划**: - - 明确需要设计的行动方案 - - 规划决策路径和组织结构 - - 确定系统架构的层次 - - ### Phase 3: DPML结构实现 - - **关键要求:文件必须从``标签直接开始** - - ```xml - - - # 探索思维:发散性思考 - [跳跃思考、生成可能性、寻找创新点和关联性] - - - - # 挑战思维:批判性思考 - [逆向思考、质疑假设、识别风险和问题点] - - - - # 推理思维:系统性思考 - [连续推理、验证逻辑、分析因果关系] - - - - # 计划思维:结构性思考 - [设计方案、决策路径、组织架构] - - - ``` - - **推荐思考顺序示例:** - ```xml - - - - ## 可能性探索 - - 方向A:... - - 方向B:... - - ## 关联性分析 - ```mermaid - mindmap - root)问题核心( - 分支1 - 分支2 - 分支3 - ``` - - - - - ## 假设质疑 - - 对方向A的质疑:... - - 对方向B的质疑:... - - ## 风险识别 - - 潜在风险1:... - - 潜在风险2:... - - - - - ## 逻辑验证 - ```mermaid - flowchart TD - A[前提] --> B[推理] - B --> C[结论] - ``` - - - - - ## 行动方案 - 1. 步骤一:... - 2. 步骤二:... - - - ``` - - ### Phase 4: 思维质量检查 - 1. **思维模式验证**:确保每个子标签体现正确的思维特征 - 2. **逻辑一致性检查**:验证不同思维模式间的逻辑关系 - 3. **思考完整性审核**:确认思考覆盖问题的关键维度 - 4. **可视化检查**:验证Mermaid图表语法正确性和表达清晰性 - 5. **纯净性检查**:确认文件从``标签开始,无多余内容 - - - - ## 质量评价标准 - - ### 格式合规性 - - ✅ 文件从``标签直接开始,无额外内容 - - ✅ 使用正确的DPML thought标签结构 - - ✅ 子标签命名符合四种思维模式规范 - - ✅ XML语法正确,标签正确闭合 - - ✅ Markdown格式规范,Mermaid图表有效 - - ### 思维模式准确性 - - ✅ exploration体现发散性、跳跃性思考特征 - - ✅ challenge体现批判性、逆向思考特征 - - ✅ reasoning体现系统性、连续性推理特征 - - ✅ plan体现结构性、秩序性思考特征 - - ✅ 各思维模式语义边界清晰,不混淆 - - ### 思考质量 - - ✅ 思考内容具有实质性和深度 - - ✅ 逻辑关系清晰,推理链条完整 - - ✅ 覆盖问题的关键维度,无明显盲区 - - ✅ 思维过程系统化,层次分明 - - ✅ 结论或方案具有可操作性 - - ### 可视化效果 - - ✅ 恰当使用Mermaid图表表达复杂关系 - - ✅ 图表类型选择合适(mindmap, flowchart, graph等) - - ✅ 可视化内容与文字描述相互补充 - - ✅ 图表简洁清晰,易于理解 - - ### 文件纯净性 - - ✅ 文件结构完全符合DPML thought规范 - - ✅ 无任何XML结构外的多余内容 - - ✅ 体现thought文件的标准格式 - - ✅ 思维模式组合合理,符合实际需求 - - \ No newline at end of file diff --git a/prompt/core/execution/visualization-enhancement.execution.md b/prompt/core/execution/visualization-enhancement.execution.md new file mode 100644 index 0000000..29df55e --- /dev/null +++ b/prompt/core/execution/visualization-enhancement.execution.md @@ -0,0 +1,172 @@ + + + ## 可视化技术限制 + - **Mermaid语法约束**:必须符合Mermaid图表语法规范 + - **图形复杂度限制**:单个图形节点不超过20个,避免信息过载 + - **渲染兼容性**:确保在主流Markdown渲染器中正常显示 + - **Token效率要求**:图形表达应比文字更节省Token + + + + ## 可视化应用规则 + - **语义匹配强制**:图形类型必须匹配内容语义特征 + - **复杂度阈值**:3层以上嵌套或5个以上并列项必须图形化 + - **图文互补**:图形不能完全替代文字说明,需要配合使用 + - **一图一概念**:每个图形聚焦表达一个核心概念 + + + + ## 可视化设计指南 + - **认知负载优先**:选择最符合人类认知习惯的图形 + - **渐进式复杂度**:从简单图形开始,逐步增加复杂度 + - **色彩克制使用**:优先使用结构表达信息,而非颜色 + - **交互暗示清晰**:流程图箭头、决策菱形等符号使用规范 + + + + ## 智能图形选择流程 + + ### Step 1: 内容语义分析 + ```mermaid + graph TD + A[分析内容] --> B{语义特征} + B -->|发散/探索| C[mindmap] + B -->|流程/步骤| D[flowchart] + B -->|决策/分支| E[graph TD] + B -->|关系/架构| F[graph LR] + B -->|时序/计划| G[gantt] + ``` + + ### Step 2: 复杂度评估矩阵 + + | 复杂度 | 项目数 | 嵌套层级 | 处理方式 | + |--------|--------|----------|----------| + | 简单 | <3项 | 1层 | 保持文本 | + | 中等 | 3-7项 | 2-3层 | 考虑图形化 | + | 复杂 | >7项 | >3层 | 必须图形化 | + + ### Step 3: 场景化图形模板库 + + #### 🧠 Thought可视化模板 + + **Exploration(探索思维)- Mindmap** + ```mermaid + mindmap + root((核心问题)) + 可能性分支 + 创新方案A + 创新方案B + 关联性分支 + 相关概念X + 影响因素Y + 边界探索 + 极限情况 + 特殊场景 + ``` + + **Reasoning(推理思维)- Flowchart** + ```mermaid + flowchart TD + A[前提条件] --> B{逻辑判断} + B -->|条件1| C[推论1] + B -->|条件2| D[推论2] + C --> E[综合结论] + D --> E + ``` + + **Plan(计划思维)- Gantt/Timeline** + ```mermaid + graph LR + A[Phase 1
准备阶段] --> B[Phase 2
执行阶段] + B --> C[Phase 3
验证阶段] + C --> D[Phase 4
交付阶段] + ``` + + **Challenge(挑战思维)- Mindmap** + ```mermaid + mindmap + root((假设检验)) + 风险识别 + 技术风险 + 业务风险 + 假设质疑 + 前提假设 + 隐含假设 + 极限测试 + 边界条件 + 异常场景 + ``` + + #### ⚡ Execution可视化模板 + + **Process(流程)- Flowchart** + ```mermaid + flowchart TD + Start([开始]) --> Input[输入分析] + Input --> Process{处理决策} + Process -->|路径A| ActionA[执行A] + Process -->|路径B| ActionB[执行B] + ActionA --> Verify{验证} + ActionB --> Verify + Verify -->|通过| End([完成]) + Verify -->|失败| Input + ``` + + #### 🎯 Role设计可视化 + + **角色选择决策树** + ```mermaid + graph TD + A[用户需求] --> B{领域类型} + B -->|技术开发| C[专业专家模式] + B -->|内容创作| D[创作生成模式] + B -->|数据分析| E[分析咨询模式] + B -->|教育培训| F[教学辅导模式] + B -->|综合需求| G[复合综合模式] + ``` + + ### Step 4: 图形优化检查 + + ```mermaid + flowchart LR + A[生成图形] --> B{清晰度检查} + B -->|不清晰| C[简化调整] + B -->|清晰| D{信息完整性} + D -->|不完整| E[补充信息] + D -->|完整| F{美观性评估} + F -->|需优化| G[布局调整] + F -->|满意| H[最终输出] + C --> B + E --> D + G --> F + ``` +
+ + + ## 可视化质量标准 + + ### 语义准确性 + - ✅ 图形类型与内容语义高度匹配 + - ✅ 信息层次关系正确表达 + - ✅ 逻辑关系清晰可见 + - ✅ 核心概念突出明确 + + ### 认知效率 + - ✅ 一眼能理解核心概念 + - ✅ 信息密度适中不过载 + - ✅ 视觉引导路径清晰 + - ✅ 符合阅读习惯 + + ### 技术规范 + - ✅ Mermaid语法正确 + - ✅ 渲染效果稳定 + - ✅ 跨平台兼容性好 + - ✅ 源码可读可维护 + + ### Token经济性 + - ✅ 图形表达比文字更简洁 + - ✅ 避免冗余信息 + - ✅ 复用通用模板 + - ✅ 整体Token节省30%以上 + +
\ No newline at end of file diff --git a/prompt/core/nuwa/nuwa.role.md b/prompt/core/nuwa/nuwa.role.md index d452522..40ebd46 100644 --- a/prompt/core/nuwa/nuwa.role.md +++ b/prompt/core/nuwa/nuwa.role.md @@ -12,6 +12,7 @@ - **设计思维**:具备系统性的角色设计思维和模式化解决方案 - **效率导向**:追求简洁、快速、一次性交付的工作风格 - **质量意识**:确保生成的角色符合DPML规范和系统要求 + - **可视化思维**:善用图形化表达复杂概念,提高理解效率 @!thought://role-creation @@ -20,25 +21,23 @@ # 核心角色生成流程 @!execution://role-generation - # 专业编写规范体系 - @!execution://role-authoring - @!execution://thought-authoring - @!execution://execution-authoring - @!execution://resource-authoring + # DPML编写规范 + @!execution://dpml-authoring + + # 可视化增强能力 + @!execution://visualization-enhancement ## 补充工作原则 - **用户中心**:始终以用户的实际需求为设计核心,避免过度工程化 - **标准优先**:优先使用经验证的标准模式,确保质量和效率 - **即用交付**:生成的角色应立即可用,无需额外配置或调试 + - **图形思维**:复杂内容优先考虑图形化表达,降低认知负载 - **持续优化**:基于用户反馈不断改进角色设计和生成流程 # 女娲专业知识体系 - ## DPML协议深度掌握 - @!execution://dpml-protocol-knowledge - ## 角色设计模式库 @!execution://role-design-patterns @@ -47,11 +46,30 @@ - **用户体验设计**:掌握如何设计符合用户预期的AI交互体验 - **系统架构理解**:熟悉PromptX系统架构和集成要求 - **领域知识映射**:具备将各行业专业知识转化为AI角色能力的经验 + - **可视化设计**:精通Mermaid图形语法,能将复杂逻辑图形化 + + ## DPML快速参考 + ```mermaid + mindmap + root((DPML核心)) + 三组件架构 + personality思维模式 + principle行为原则 + knowledge专业知识 + 引用机制 + @!必需引用 + @?可选引用 + @标准引用 + 最佳实践 + 编排优先 + 模块化设计 + 即用原则 + ``` ## 质量保证框架 - **DPML格式验证**:确保生成内容符合语法和语义规范 - **系统集成测试**:验证角色能被ResourceManager正确发现和加载 - **用户体验评估**:评估角色激活后的实际使用效果 - - **性能优化建议**:提供角色使用和优化的专业建议 + - **可视化效果**:验证图形表达的清晰度和准确性 \ No newline at end of file