更新DPML记忆模式提示词框架文档,删除模板文件以清理不再使用的内容,提升代码库的可维护性。
This commit is contained in:
6
bootstrap.md
Normal file
6
bootstrap.md
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
## PromptX Agent 角色启动
|
||||||
|
|
||||||
|
1. 使用命令 `node PromptX/promptx.js` 获取所有协议内容
|
||||||
|
2. 阅读并理解 PromptX 提示词系统
|
||||||
|
3. 你需要代入的角色是 @file://PromptX/domain/test/test.role.md
|
||||||
|
4. Action!!
|
||||||
194
promptx.js
Normal file
194
promptx.js
Normal file
@ -0,0 +1,194 @@
|
|||||||
|
#!/usr/bin/env node
|
||||||
|
|
||||||
|
const fs = require('fs');
|
||||||
|
const path = require('path');
|
||||||
|
|
||||||
|
// 简单的命令行参数处理
|
||||||
|
const args = process.argv.slice(2);
|
||||||
|
const command = args[0] || 'protocols'; // 默认执行protocols命令,而不是help
|
||||||
|
const param = args[1]; // role命令时的角色文件路径
|
||||||
|
|
||||||
|
// 获取脚本所在目录和PromptX根目录
|
||||||
|
const scriptDir = __dirname;
|
||||||
|
const promptxDir = scriptDir; // 脚本现在就在PromptX目录内
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 打印所有协议内容
|
||||||
|
*/
|
||||||
|
function printProtocols() {
|
||||||
|
// 定义目录优先级顺序
|
||||||
|
const directories = [
|
||||||
|
{ path: path.join(promptxDir, 'protocol'), name: 'protocol' },
|
||||||
|
{ path: path.join(promptxDir, 'core'), name: 'core' },
|
||||||
|
{ path: path.join(promptxDir, 'resource'), name: 'resource' }
|
||||||
|
];
|
||||||
|
|
||||||
|
let allFiles = [];
|
||||||
|
|
||||||
|
// 递归查找文件函数
|
||||||
|
function collectMarkdownFiles(dir) {
|
||||||
|
if (!fs.existsSync(dir)) {
|
||||||
|
console.warn(`警告: 目录不存在 ${dir}`);
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
|
let files = [];
|
||||||
|
const entries = fs.readdirSync(dir, { withFileTypes: true });
|
||||||
|
|
||||||
|
for (const entry of entries) {
|
||||||
|
const fullPath = path.join(dir, entry.name);
|
||||||
|
|
||||||
|
if (entry.isDirectory()) {
|
||||||
|
files = files.concat(collectMarkdownFiles(fullPath));
|
||||||
|
} else if (entry.isFile() && entry.name.endsWith('.md')) {
|
||||||
|
files.push(fullPath);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return files;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 按目录优先级收集文件
|
||||||
|
for (const dir of directories) {
|
||||||
|
const dirFiles = collectMarkdownFiles(dir.path);
|
||||||
|
|
||||||
|
// 每个目录内的文件按字母顺序排序
|
||||||
|
dirFiles.sort();
|
||||||
|
|
||||||
|
// 合并到总文件列表
|
||||||
|
allFiles = allFiles.concat(dirFiles);
|
||||||
|
|
||||||
|
console.log(`从 ${dir.name} 目录收集了 ${dirFiles.length} 个文件`);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 没有文件时的提示
|
||||||
|
if (allFiles.length === 0) {
|
||||||
|
console.log("未找到任何协议文件。请确认PromptX目录结构是否正确。");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 打印每个文件
|
||||||
|
for (const file of allFiles) {
|
||||||
|
const relativePath = path.relative(promptxDir, file);
|
||||||
|
const separator = "=".repeat(80);
|
||||||
|
console.log(`\n${separator}\n### 文件: ${relativePath}\n${separator}\n`);
|
||||||
|
|
||||||
|
try {
|
||||||
|
const content = fs.readFileSync(file, 'utf8');
|
||||||
|
console.log(content);
|
||||||
|
} catch (err) {
|
||||||
|
console.error(`读取文件错误: ${file}`, err);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log(`\n总计读取了 ${allFiles.length} 个协议文件。`);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 打印指定角色内容
|
||||||
|
*/
|
||||||
|
function printRole(rolePath) {
|
||||||
|
// 如果传入的是相对路径,则基于PromptX目录解析
|
||||||
|
let fullPath;
|
||||||
|
if (path.isAbsolute(rolePath)) {
|
||||||
|
fullPath = rolePath;
|
||||||
|
} else {
|
||||||
|
fullPath = path.join(promptxDir, rolePath);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!fs.existsSync(fullPath)) {
|
||||||
|
console.error(`错误: 角色文件不存在: ${fullPath}`);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
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(content);
|
||||||
|
} catch (err) {
|
||||||
|
console.error(`读取角色文件错误: ${fullPath}`, err);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 打印指定路径的文件内容
|
||||||
|
*/
|
||||||
|
function printFile(filePath) {
|
||||||
|
// 如果传入的是相对路径,则基于PromptX目录解析
|
||||||
|
let fullPath;
|
||||||
|
if (path.isAbsolute(filePath)) {
|
||||||
|
fullPath = filePath;
|
||||||
|
} else {
|
||||||
|
fullPath = path.join(promptxDir, filePath);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!fs.existsSync(fullPath)) {
|
||||||
|
console.error(`错误: 文件不存在: ${fullPath}`);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
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(content);
|
||||||
|
} catch (err) {
|
||||||
|
console.error(`读取文件错误: ${fullPath}`, err);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 打印帮助信息
|
||||||
|
*/
|
||||||
|
function printHelp() {
|
||||||
|
console.log(`
|
||||||
|
PromptX 工具 - 协议和角色内容查看器
|
||||||
|
|
||||||
|
使用方法:
|
||||||
|
node promptx.js - 打印所有协议内容 (按protocol、core、resource顺序)
|
||||||
|
node promptx.js protocols - 同上,打印所有协议内容
|
||||||
|
node promptx.js role <路径> - 打印指定角色文件内容
|
||||||
|
node promptx.js file <路径> - 打印指定文件内容
|
||||||
|
node promptx.js help - 显示此帮助信息
|
||||||
|
|
||||||
|
路径说明:
|
||||||
|
- 对于'role'和'file'命令,路径应该是相对于PromptX目录的路径
|
||||||
|
- 也支持绝对路径
|
||||||
|
|
||||||
|
示例:
|
||||||
|
node promptx.js
|
||||||
|
node promptx.js role domain/prompt/prompt-developer.role.md
|
||||||
|
node promptx.js file protocol/tag/thought.tag.md
|
||||||
|
`);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 根据命令执行相应功能
|
||||||
|
switch (command) {
|
||||||
|
case 'protocols':
|
||||||
|
printProtocols();
|
||||||
|
break;
|
||||||
|
case 'role':
|
||||||
|
if (!param) {
|
||||||
|
console.error('错误: 缺少角色文件路径');
|
||||||
|
printHelp();
|
||||||
|
} else {
|
||||||
|
printRole(param);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 'file':
|
||||||
|
if (!param) {
|
||||||
|
console.error('错误: 缺少文件路径');
|
||||||
|
printHelp();
|
||||||
|
} else {
|
||||||
|
printFile(param);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 'help':
|
||||||
|
printHelp();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
console.error(`错误: 未知命令 "${command}"`);
|
||||||
|
printHelp();
|
||||||
|
break;
|
||||||
|
}
|
||||||
@ -12,9 +12,7 @@ DPML记忆模式提示词框架为AI系统提供完整的记忆能力提示词
|
|||||||
## 🔍 基本信息
|
## 🔍 基本信息
|
||||||
|
|
||||||
**框架名称:** `<memory>` (DPML记忆模式提示词框架)
|
**框架名称:** `<memory>` (DPML记忆模式提示词框架)
|
||||||
**版本:** 1.2.0
|
|
||||||
**类别:** 记忆类提示词
|
|
||||||
**状态:** 草稿
|
|
||||||
|
|
||||||
## 📝 语法定义
|
## 📝 语法定义
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user