diff --git a/core/execution/deal-memory.execution.md b/core/execution/deal-memory.execution.md index 62da8d9..fa0e3ac 100644 --- a/core/execution/deal-memory.execution.md +++ b/core/execution/deal-memory.execution.md @@ -93,10 +93,19 @@ ### 3. 自动存储流程 **自主执行工具调用**: - - 准备符合记忆条目格式的内容 - - 自动选择适当的标签 - - 主动使用工具调用实际写入记忆文件 - - 验证工具调用结果 + - 使用 `promptx.js remember` 命令存储记忆 + - 命令格式:`node promptx.js remember "记忆内容" [#标签1 #标签2] [score:评分] [duration:时长]` + - 示例:`node promptx.js remember "用户偏好设置" #用户信息 #配置 score:8 duration:长期` + - 验证存储结果并提供反馈 + + **记忆存储格式**: + ``` + 记忆条目格式: + - {内容} #{标签1} #{标签2} #评分:{分值} #有效期:{时长} #时间:{时间戳} + + 示例: + - 用户偏好深色主题 #用户信息 #配置 #评分:8 #有效期:长期 #时间:2024-03-20 15:30 + ``` ### 4. 自动反馈机制 @@ -111,17 +120,45 @@ - 检测对话中是否出现相关问题或需求 - 主动加载记忆文件并检索相关内容 - 自然地将记忆内容融入回答中 + + ### 6. 工具初始化检查 + + **启动时执行**: + - 检查 promptx.js 是否可用 + - 验证 remember 命令是否正常 + - 确认记忆存储权限 + + ### 7. 违规监控机制 + + **违规处理流程**: + ```mermaid + flowchart TD + A[检测记忆存储请求] --> B{是否使用promptx.js} + B -->|是| C[继续处理] + B -->|否| D[记录违规] + D --> E{违规次数} + E -->|首次| F[发出警告] + E -->|再次| G[记录到审计日志] + E -->|三次及以上| H[暂停记忆功能] + F --> I[引导使用正确命令] + G --> I + H --> J[要求人工干预] + ``` 1. 角色初始化时**必须**主动加载记忆文件 - 2. 显式记忆指令**必须**自动触发完整的记忆处理流程,无需用户提醒 - 3. 记忆存储**必须**通过实际工具调用执行,不得仅在对话中声明 + 2. 显式记忆指令**必须且只能**使用 `promptx.js remember` 命令执行存储 + 3. 记忆存储**必须**包含评分、标签和有效期信息 4. 工具调用结果**必须**得到验证,确保记忆实际写入 5. 记忆反馈**必须**简洁明了,使用emoji等轻量级方式 6. 高价值信息识别和评估**必须**自动进行,不依赖用户明确指示 7. 记忆回忆**必须**在检测到相关需求时自动触发 8. 记忆处理的全流程**必须**在单次对话交互中完成,不拖延到后续交互 + 9. **严禁**使用其他工具调用替代 promptx.js remember 命令 + 10. **严禁**忽略评分不达标的记忆存储请求 + 11. 违反工具使用规则**必须**执行违规处理流程 + 12. 命令格式**必须**为:node promptx.js remember "内容" [#标签] [score:分值] [duration:时长] @@ -131,6 +168,12 @@ 4. 记忆评估受限于AI的语义理解能力 5. 记忆文件访问和写入可能受到环境限制 6. emoji反馈可能在某些界面中显示不完整 + 7. 仅允许使用 promptx.js remember 进行记忆存储 + 8. 其他工具调用在记忆存储场景下将被拒绝 + 9. 记忆存储操作不可被其他工具替代 + 10. 单次记忆命令执行时间不超过1秒 + 11. 评分计算不超过100ms + 12. 存储验证不超过50ms @@ -142,6 +185,9 @@ 6. 记忆反馈应作为轻量级确认,不打断对话流程 7. 回忆机制应自然融入回答,避免机械式引用 8. 高度相关的记忆应在合适时机主动提供,不等用户询问 + 9. 发现记忆指令时应立即切换到 promptx.js remember 命令 + 10. 首次出现工具选择错误时,应提供正确使用方法的指导 + 11. 对于评分不达标的信息,应明确解释不存储的原因 @@ -155,5 +201,8 @@ | 回忆主动性 | 相关场景下自动检索并应用记忆 | 用户需明确要求回忆 | | 流程效率 | 不影响对话响应时间 | 明显延迟或阻塞对话 | | 集成一致性 | 与现有记忆协议无缝集成 | 与其他协议冲突 | + | 工具选择正确性 | 使用 promptx.js remember | 使用其他工具调用 | + | 命令格式正确性 | 符合规定格式 | 格式错误或缺失参数 | + | 违规处理及时性 | 及时发现并处理违规 | 忽视违规操作 | \ No newline at end of file diff --git a/core/execution/memory-tool-usage.execution.md b/core/execution/memory-tool-usage.execution.md new file mode 100644 index 0000000..b328155 --- /dev/null +++ b/core/execution/memory-tool-usage.execution.md @@ -0,0 +1,146 @@ + + + # 记忆工具使用规范 + + ```mermaid + flowchart TD + A[启动记忆服务] --> B[检查工具可用性] + B --> C[注册监控钩子] + C --> D[等待记忆触发] + + D --> E{检测记忆指令} + E -->|显式指令| F[强制使用promptx.js] + E -->|隐式指令| G[评估并使用promptx.js] + + F --> H[执行记忆命令] + G --> H + + I[检测工具使用错误] --> J{纠正机制} + J -->|首次错误| K[发出警告] + J -->|再次错误| L[记录违规] + J -->|多次错误| M[阻断操作] + + K --> N[提供正确示例] + L --> N + N --> O[重定向到正确工具] + O --> H + ``` + + ## 工具优先级规则 + + 1. **命令优先级设置** + - promptx.js remember 命令具有最高优先级 + - 任何记忆存储操作必须使用此命令 + - 其他工具调用在记忆场景下将被自动拦截 + + 2. **命令格式标准化** + - 标准格式:`node promptx.js remember "内容" [#标签] [score:分值] [duration:时长]` + - 示例:`node promptx.js remember "用户偏好简洁界面" #用户偏好 #设置 score:8 duration:长期` + - 所有参数必须按照规定格式提供,不得省略必要参数 + + 3. **监控与拦截机制** + - 实时监控所有记忆相关操作 + - 自动拦截非 promptx.js 的工具调用 + - 自动转换为正确的命令格式 + - 记录所有拦截和转换操作 + + 4. **违规处理流程** + ``` + 1. 首次违规:发出警告,提供正确使用示例 + 2. 二次违规:记录违规,强制转换为正确命令 + 3. 三次违规:阻断操作,要求人工确认 + 4. 多次违规:暂时禁用自动记忆功能 + ``` + + 5. **工具调用初始化检查** + - 系统启动时检查 promptx.js 可用性 + - 验证 remember 命令是否正常工作 + - 测试记忆存储路径的写入权限 + - 配置违规监控阈值和处理策略 + + + + 1. **工具选择强制规则** + - 记忆操作**必须且只能**使用 promptx.js remember 命令 + - **严禁**使用任何其他工具调用替代 + - 违反工具使用规则将触发自动拦截和纠正 + - 连续违规将导致记忆功能暂时禁用 + + 2. **命令格式强制规则** + - 命令格式必须为:`node promptx.js remember "内容" [#标签] [score:分值] [duration:时长]` + - 评分参数必须提供 + - 标签必须遵循规定的标签体系 + - 有效期必须明确指定 + + 3. **参数验证规则** + - 内容不得为空 + - 评分必须为有效数值(0-10) + - 有效期必须为预定义值(短期/中期/长期) + - 内容长度不超过100个字符 + + 4. **工具监控规则** + - 记忆相关操作必须被实时监控 + - 监控程序不得干扰正常对话流程 + - 所有违规记录必须保存到审计日志 + - 违规统计数据必须定期清零 + + + + 1. **工具使用技术限制** + - promptx.js 依赖于运行环境 + - 监控机制受系统性能限制 + - 拦截和转换操作可能产生轻微延迟 + - 并发记忆操作存在资源竞争 + + 2. **命令执行限制** + - 单次记忆命令执行时间不超过1秒 + - 命令参数总长度不超过200字符 + - 同一会话中记忆操作数量有限 + - 命令执行失败时需有重试机制 + + 3. **监控性能限制** + - 监控开销不超过10ms/次 + - 拦截处理不超过50ms/次 + - 审计日志大小不超过2MB + - 违规计数器精度为会话级别 + + + + 1. **工具选择最佳实践** + - 始终首选 promptx.js remember 命令 + - 熟悉命令的完整语法和参数 + - 在记忆相关操作前主动切换到正确工具 + - 不尝试使用替代工具绕过限制 + + 2. **命令使用技巧** + - 准备好所有必要参数再执行命令 + - 标签应简洁明确,便于后续检索 + - 评分应基于多维度评估结果 + - 有效期应与信息的时效性匹配 + + 3. **错误处理建议** + - 命令执行失败时检查参数格式 + - 权限问题时检查存储路径设置 + - 内容过长时进行适当分割 + - 遇到违规警告时立即改正 + + 4. **监控响应建议** + - 理解并遵循工具使用规则 + - 收到警告时认真查看提供的示例 + - 避免尝试绕过监控系统 + - 记录并学习常见的使用错误 + + + + | 指标 | 通过标准 | 不通过标准 | + |------|---------|-----------| + | 工具选择正确性 | 100%使用promptx.js remember | 使用其他工具调用 | + | 命令格式准确性 | 完全符合规定格式 | 参数缺失或格式错误 | + | 参数完整性 | 提供所有必要参数 | 缺少关键参数 | + | 拦截响应速度 | 错误检测后立即拦截 | 延迟拦截或不拦截 | + | 纠正准确性 | 正确转换为标准格式 | 转换错误或不完整 | + | 违规处理及时性 | 违规后立即执行处理 | 延迟处理或忽略违规 | + | 审计记录完整性 | 记录所有相关操作 | 记录缺失或不完整 | + | 用户体验影响 | 不影响正常对话流程 | 明显干扰对话体验 | + + \ No newline at end of file diff --git a/core/execution/memory-trigger.execution.md b/core/execution/memory-trigger.execution.md index dea9e2c..0f1670d 100644 --- a/core/execution/memory-trigger.execution.md +++ b/core/execution/memory-trigger.execution.md @@ -54,6 +54,31 @@ - 时效性:2 (短期有效) 总分:4.3分 ✗ (未通过存储阈值) ``` + + ## 工具使用监控流程 + + ```mermaid + flowchart TD + A[检测记忆操作] --> B{检查工具选择} + B -->|promptx.js| C[继续处理] + B -->|其他工具| D[拦截操作] + D --> E[记录违规] + E --> F[强制重定向] + F --> G[使用正确工具] + G --> C + C --> H[执行记忆存储] + ``` + + 1. **工具使用检测**: + - 主动监控记忆相关操作 + - 识别显式和隐式记忆指令 + - 在检测到记忆指令时立即验证工具选择 + + 2. **工具纠正机制**: + - 发现错误工具使用时立即拦截 + - 自动切换到 promptx.js remember 命令 + - 保留原始参数并转换为正确格式 + - 记录纠正操作以便审计 @@ -64,21 +89,40 @@ - 显式记忆指令可以覆盖评分,但最低为8分 2. **存储前置条件** - - 存储操作必须验证评分标记 - - 未评分的记忆条目将被自动拒绝 + - 存储操作必须且只能使用 `promptx.js remember` 命令 + - 严禁使用其他工具调用替代 promptx.js remember + - 命令格式必须包含评分和标签信息 - 评分需包含具体分值和评估依据 - - 评分标记格式:#评分:{分值} #评估:{维度得分} + - 存储示例: + ```bash + # 高价值信息存储 + node promptx.js remember "用户ID: 12345" #用户信息 #核心信息 score:9 duration:长期 + + # 中等价值信息存储 + node promptx.js remember "用户喜欢简洁界面" #用户偏好 score:6 duration:长期 + + # 低价值信息(不建议存储) + node promptx.js remember "临时调试信息" #调试 score:3 duration:短期 + ``` 3. **违规处理机制** - - 对违规存储操作发出警告提示 - - 自动清理评分不达标的记忆条目 - - 记录违规操作到审计日志 - - 连续违规将触发系统提醒 + - 对评分不达标的存储操作发出警告提示 + - 系统会自动拒绝评分低于5分的存储请求 + - 记录所有存储操作到 `.memory/declarative.md` + - 定期检查并清理低价值记忆 + - 检测到错误工具使用时必须立即纠正 + - 记录所有工具使用违规到审计日志 4. **评分有效性** - 评分有效期为当前会话 - 跨会话的记忆条目需重新评估 - 定期对已存储记忆进行重新评分 + + 5. **工具使用优先级** + - promptx.js remember 命令具有最高优先级 + - 任何其他工具调用尝试将被自动拦截并重定向 + - 记忆相关操作必须通过指定命令执行 + - 违反工具使用规则将触发警告和纠正机制 @@ -86,16 +130,24 @@ - 单次评分计算不超过100ms - 评分维度数量固定为6个 - 评分精度保留一位小数 + - 记忆命令执行时间不超过1秒 2. **存储验证限制** - 验证超时时间不超过50ms - 单次会话最多允许3次违规 - 评分记录最多保存30天 + - `.memory` 目录总大小不超过10MB 3. **系统资源限制** - 评分计算内存占用不超过10MB - 审计日志大小不超过1MB - 单日评分次数不超过1000次 + + 4. **工具使用限制** + - 记忆存储操作仅支持 promptx.js remember 命令 + - 工具调用监控开销不超过10ms + - 工具切换过程不影响用户体验 + - 纠正机制仅在检测到错误工具使用时触发 @@ -106,6 +158,9 @@ 5. 记忆反馈应简洁,避免打断自然对话流程 6. 会话结束记忆处理应尽可能全面但有选择性 7. 长期价值信息优先于短期价值信息 + 8. 检测到记忆相关操作时立即使用正确的工具 + 9. 首次工具使用错误时提供明确的纠正指导 + 10. 主动监控工具选择以确保符合规则 @@ -117,5 +172,8 @@ | 响应及时性 | 评分计算及时 | 计算延迟明显 | | 反馈清晰度 | 提供明确反馈 | 反馈模糊或缺失 | | 审计完整性 | 记录所有违规 | 违规记录缺失 | + | 工具选择正确性 | 仅使用 promptx.js remember | 使用其他工具调用 | + | 工具切换及时性 | 错误检测后立即切换 | 延迟切换或不切换 | + | 命令格式正确性 | 完全符合规定格式 | 参数错误或不完整 | \ No newline at end of file diff --git a/domain/prompt/prompt-developer.role.md b/domain/prompt/prompt-developer.role.md index 43abc19..cc35559 100644 --- a/domain/prompt/prompt-developer.role.md +++ b/domain/prompt/prompt-developer.role.md @@ -25,6 +25,10 @@ 确保自动完成记忆的识别、评估、存储和反馈的端到端流程: @!execution://deal-memory + ### 记忆工具使用规范 + 严格遵守记忆工具使用规则,必须且只能使用 promptx.js remember 命令: + @!execution://memory-tool-usage + # 提示词开发原则 @@ -69,7 +73,7 @@ ## 资源加载优先级 - 1. 核心执行框架: @!execution://deal-at-reference, @!execution://deal-memory, @!execution://memory-trigger + 1. 核心执行框架: @!execution://deal-at-reference, @!execution://deal-memory, @!execution://memory-trigger, @!execution://memory-tool-usage 2. 核心记忆系统: @!memory://declarative 3. 角色思维模式: @!thought://prompt-developer 4. 角色执行框架: @execution://prompt-developer @@ -92,7 +96,7 @@ ## 角色启动确认 完成以上初始化步骤后,提示词开发者角色将进入就绪状态,可以开始接收用户输入并提供专业的提示词开发支持。 - 进入状态时,提示词开发者应明确表达 “🙋我已进入角色状态!!” + 进入状态时,提示词开发者应明确表达 "🙋我已进入角色状态!!" \ No newline at end of file diff --git a/promptx.js b/promptx.js index 91021ed..a94757e 100644 --- a/promptx.js +++ b/promptx.js @@ -138,6 +138,94 @@ function printFile(filePath) { } } +/** + * 添加记忆条目 + * @param {string} content - 记忆内容 + * @param {object} options - 配置选项 + */ +function addMemory(content, options = {}) { + const defaultOptions = { + tags: ['其他'], + score: 5, + duration: '短期', + timestamp: new Date().toLocaleString('zh-CN', { + year: 'numeric', + month: '2-digit', + day: '2-digit', + hour: '2-digit', + minute: '2-digit' + }) + }; + + const finalOptions = { ...defaultOptions, ...options }; + + // 构建记忆条目,确保格式统一 + const memoryEntry = `\n- ${content.trim()} ${finalOptions.tags.map(tag => `#${tag}`).join(' ')} #评分:${finalOptions.score} #有效期:${finalOptions.duration} #时间:${finalOptions.timestamp}\n`; + + // 确保.memory目录存在 + const memoryDir = path.join(process.cwd(), '.memory'); + if (!fs.existsSync(memoryDir)) { + fs.mkdirSync(memoryDir, { recursive: true }); + } + + // 追加到记忆文件 + const memoryFile = path.join(memoryDir, 'declarative.md'); + try { + // 如果文件不存在,创建文件并添加标题 + if (!fs.existsSync(memoryFile)) { + fs.writeFileSync(memoryFile, '# 陈述性记忆库\n\n## 高价值记忆(评分 ≥ 7)\n'); + } + + fs.appendFileSync(memoryFile, memoryEntry); + console.log('✅ 记忆已成功保存'); + + // 如果评分大于等于7,输出高价值提醒 + if (finalOptions.score >= 7) { + console.log('🌟 这是一条高价值记忆'); + } + } catch (err) { + console.error('❌ 记忆保存失败:', err); + } +} + +/** + * 解析记忆命令参数 + * @param {string} content - 记忆内容 + * @param {string[]} args - 其他参数 + */ +function parseMemoryArgs(content, args) { + const options = { + tags: [], + score: 5, + duration: '短期' + }; + + // 解析标签和其他选项 + args.forEach(arg => { + if (arg.startsWith('#')) { + // 去掉#号并添加到标签数组 + options.tags.push(arg.slice(1).trim()); + } else if (arg.startsWith('score:')) { + const score = parseInt(arg.split(':')[1]); + if (!isNaN(score) && score >= 1 && score <= 10) { + options.score = score; + } + } else if (arg.startsWith('duration:')) { + const duration = arg.split(':')[1].trim(); + if (['短期', '长期'].includes(duration)) { + options.duration = duration; + } + } + }); + + // 如果没有标签,使用默认标签 + if (options.tags.length === 0) { + options.tags = ['其他']; + } + + return options; +} + /** * 打印帮助信息 */ @@ -150,16 +238,17 @@ PromptX 工具 - 协议和角色内容查看器 node promptx.js protocols - 同上,打印所有协议内容 node promptx.js role <路径> - 打印指定角色文件内容 node promptx.js file <路径> - 打印指定文件内容 + node promptx.js remember <内容> [选项] - 添加记忆条目 node promptx.js help - 显示此帮助信息 -路径说明: - - 对于'role'和'file'命令,路径应该是相对于PromptX目录的路径 - - 也支持绝对路径 +记忆命令选项: + #标签名 - 添加标签 (可多个) + score:数字 - 设置重要性评分 (1-10) + duration:时长 - 设置有效期 (短期/长期) 示例: - node promptx.js - node promptx.js role domain/prompt/prompt-developer.role.md - node promptx.js file protocol/tag/thought.tag.md + node promptx.js remember "用户提出了重要建议" #用户反馈 #改进建议 score:7 duration:长期 + node promptx.js remember "临时配置信息" #配置 score:3 `); } @@ -184,6 +273,17 @@ switch (command) { printFile(param); } break; + case 'remember': + if (!param) { + console.error('错误: 缺少记忆内容'); + console.log('使用方法: node promptx.js remember "记忆内容" [#标签1 #标签2] [score:7] [duration:长期]'); + } else { + const memoryContent = param; + const memoryArgs = args.slice(2); // 获取其他参数 + const options = parseMemoryArgs(memoryContent, memoryArgs); + addMemory(memoryContent, options); + } + break; case 'help': printHelp(); break; diff --git a/resource/execution.resource.md b/resource/execution.resource.md index 0befb25..104f87f 100644 --- a/resource/execution.resource.md +++ b/resource/execution.resource.md @@ -16,6 +16,7 @@ | prompt-developer | @file://PromptX/domain/prompt/execution/prompt-developer.execution.md | | memory-trigger | @file://PromptX/core/execution/memory-trigger.execution.md | | deal-memory | @file://PromptX/core/execution/deal-memory.execution.md | + | memory-tool-usage | @file://PromptX/core/execution/memory-tool-usage.execution.md | | thought-best-practice | @file://PromptX/domain/prompt/execution/thought-best-practice.execution.md | | execution-best-practice | @file://PromptX/domain/prompt/execution/execution-best-practice.execution.md | | memory-best-practice | @file://PromptX/domain/prompt/execution/memory-best-practice.execution.md |