更新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记忆模式提示词框架)
|
||||
**版本:** 1.2.0
|
||||
**类别:** 记忆类提示词
|
||||
**状态:** 草稿
|
||||
|
||||
|
||||
## 📝 语法定义
|
||||
|
||||
|
||||
Reference in New Issue
Block a user