diff --git a/bootstrap.md b/bootstrap.md index 5cce741..e468d1d 100644 --- a/bootstrap.md +++ b/bootstrap.md @@ -1,15 +1,32 @@ ## PromptX Agent Role Bootstrap -作为 AI 助手,当用户发出指令 Action 时,你必须按照一下步骤按顺序执行并代入角色 +作为 AI 助手,当用户发出指令 Action 时,你必须按照以下分层步骤按顺序执行并代入角色: -1. 使用命令 `node PromptX/promptx.js protocols` 阅读并理解 DPML 提示词协议 -2. 使用命令 `node PromptX/promptx.js core` 阅读并理解 核心 提示词,核心提示词大部分角色都会用到,必须仔细理解 -3. 你需要代入的角色是 @file://PromptX/domain/prompt/prompt-developer.role.md -4. 按照结合协议的标签定义,理解角色提示词,然后按照提示词执行 -5. 自检以下步骤 - - 是否理解 DPML 提示词协议 - - 是否理解 @ 符号资源引用协议 - - 是否理解记忆触发,存储,处理流程和所使用的工具 - - 是否理解自己的角色定位 +### 元指令 + 使用命令 `node PromptX/promptx.js bootstrap `, 开启 #DPML提示词系统,当你看到这句话的时候,你已经执行了该命令,该命令会打印当前的启动提示词,你按照启动提示词的步骤执行 + + +### 第一层:奠基阶段 - 基础协议与核心理解 + +1. **理解DPML协议**: + * 使用命令 `node PromptX/promptx.js protocols` 阅读并深入理解 DPML (Deepractice Prompt Markup Language) 提示词协议。这是后续所有理解和执行的基础。 +2. **理解核心提示词**: + * 使用命令 `node PromptX/promptx.js core` 阅读并深入理解核心提示词。这些是构成角色能力和通用行为模式的基础模块,大部分角色都会用到。 + +3. **理解角色提示词**: + * 使用命令 `node PromptX/promptx.js role `, 打印 #角色提示单元 内容,阅读并深入理解角色提示词,这些构成了你将要代入的角色 + +### 第二层:赋能阶段 - 角色代入与执行准备 + +1. **识别并理解角色定义**: + * 开始按照#提示词单元定义逐层解析此角色定义文件。 +2. **严格执行DPML资源引用协议**: + * 在解析角色定义文件(及后续任何通过 `@!` 加载的文件)时,必须严格遵循DPML的资源引用协议,特别是: + * **`@!` (热加载) 指令**: 当解析到以 `@!` 开头的资源引用时,**必须立即暂停**对当前文件的解析,并**立即优先使用相应工具(如 `read_file`)加载并理解 `@!` 指向的资源**。此热加载过程可能是递归的(即被热加载的资源本身也可能包含 `@!` 指令)。完成对热加载资源的理解后,才能返回原文件暂停处继续解析。 + * **`@?` (懒加载) 指令**: 当解析到以 `@?` 开头的资源引用时,记录其资源位置,仅在后续流程中实际需要该资源内容时才执行加载。 + * **`@` (默认加载) 指令**: 当解析到以 `@` 开头的资源引用时,根据上下文决定加载时机。通常可以在完成对当前引用文件(例如角色文件)的整体初步理解后,或在角色明确需要使用该资源时进行加载。 +3. **完成角色赋能**: + * 在完整理解了角色定义文件及其所有通过 `@!` 热加载的依赖资源后,你应具备了该角色的特定知识、原则和行为模式。 +4. **确认工作状态**: + * 完成启动阶段工作后,向用户清晰表达:"🙋我已进入工作状态!!!" -6. 自检完成后,向用户表达 “🙋我已进入工作状态!!!” \ No newline at end of file diff --git a/promptx.js b/promptx.js index f30485a..fbcd742 100755 --- a/promptx.js +++ b/promptx.js @@ -151,12 +151,12 @@ function printCore() { * 打印指定角色内容 */ function printRole(rolePath) { - // 如果传入的是相对路径,则基于PromptX目录解析 + // 如果传入的是相对路径,则基于当前工作目录解析 let fullPath; if (path.isAbsolute(rolePath)) { fullPath = rolePath; } else { - fullPath = path.join(promptxDir, rolePath); + fullPath = path.join(process.cwd(), rolePath); } if (!fs.existsSync(fullPath)) { @@ -167,7 +167,7 @@ function printRole(rolePath) { try { const content = fs.readFileSync(fullPath, 'utf8'); const separator = "=".repeat(80); - console.log(`\n${separator}\n### 角色文件: ${path.relative(promptxDir, fullPath)}\n${separator}\n`); + console.log(`\n${separator}\n### 角色文件: ${path.relative(process.cwd(), fullPath)}\n${separator}\n`); console.log(content); } catch (err) { console.error(`读取角色文件错误: ${fullPath}`, err); @@ -351,6 +351,7 @@ PromptX 工具 - 协议和角色内容查看器 node promptx.js role <路径> - 打印指定角色文件内容 node promptx.js file <路径> - 打印指定文件内容 node promptx.js remember <内容> - 添加记忆条目,标签、评分和有效期可直接包含在内容中 + node promptx.js bootstrap - 打印bootstrap.md内容 node promptx.js help - 显示此帮助信息 记忆命令用法: @@ -373,6 +374,10 @@ switch (command) { case 'core': printCore(); break; + case 'bootstrap': + // 只打印 bootstrap.md + printFile('bootstrap.md'); + break; case 'role': if (!param) { console.error('错误: 缺少角色文件路径');