fix: 统一命令格式为 npx dpml-prompt@snapshot
This commit is contained in:
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "dpml-prompt",
|
"name": "dpml-prompt",
|
||||||
"version": "0.0.2-snapshot.3",
|
"version": "0.0.2-snapshot.4",
|
||||||
"description": "DPML-powered AI prompt framework - Revolutionary AI-First CLI system based on Deepractice Prompt Markup Language. Build sophisticated AI agents with structured prompts, memory systems, and execution frameworks.",
|
"description": "DPML-powered AI prompt framework - Revolutionary AI-First CLI system based on Deepractice Prompt Markup Language. Build sophisticated AI agents with structured prompts, memory systems, and execution frameworks.",
|
||||||
"main": "src/lib/index.js",
|
"main": "src/lib/index.js",
|
||||||
"bin": {
|
"bin": {
|
||||||
|
|||||||
@ -53,10 +53,10 @@ program
|
|||||||
})
|
})
|
||||||
|
|
||||||
program
|
program
|
||||||
.command('remember <key> [value...]')
|
.command('remember [content...]')
|
||||||
.description('🧠 remember锦囊 - AI主动内化知识和经验到记忆体系')
|
.description('🧠 remember锦囊 - AI主动内化知识和经验到记忆体系')
|
||||||
.action(async (key, value, options) => {
|
.action(async (content, options) => {
|
||||||
const args = [key, ...(value || [])]
|
const args = content || []
|
||||||
await cli.execute('remember', args)
|
await cli.execute('remember', args)
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -99,8 +99,8 @@ ${chalk.cyan('示例:')}
|
|||||||
promptx recall
|
promptx recall
|
||||||
|
|
||||||
${chalk.gray('# 6️⃣ AI内化专业知识')}
|
${chalk.gray('# 6️⃣ AI内化专业知识')}
|
||||||
promptx remember "scrum-tips" "每日站会控制在15分钟内"
|
promptx remember "每日站会控制在15分钟内"
|
||||||
promptx remember "deploy-flow" "测试→预发布→生产"
|
promptx remember "测试→预发布→生产"
|
||||||
|
|
||||||
${chalk.cyan('🔄 PATEOAS状态机:')}
|
${chalk.cyan('🔄 PATEOAS状态机:')}
|
||||||
每个锦囊输出都包含 PATEOAS 导航,引导 AI 发现下一步操作
|
每个锦囊输出都包含 PATEOAS 导航,引导 AI 发现下一步操作
|
||||||
|
|||||||
@ -22,7 +22,7 @@ export const buildCommand = {
|
|||||||
action: (roleId) => `${COMMAND_PREFIX} action ${roleId}`,
|
action: (roleId) => `${COMMAND_PREFIX} action ${roleId}`,
|
||||||
learn: (resource) => `${COMMAND_PREFIX} learn ${resource}`,
|
learn: (resource) => `${COMMAND_PREFIX} learn ${resource}`,
|
||||||
recall: (query = '') => `${COMMAND_PREFIX} recall${query ? ' ' + query : ''}`,
|
recall: (query = '') => `${COMMAND_PREFIX} recall${query ? ' ' + query : ''}`,
|
||||||
remember: (key, content = '<content>') => `${COMMAND_PREFIX} remember ${key}${content !== '<content>' ? ' "' + content + '"' : ' <content>'}`
|
remember: (content = '<content>') => `${COMMAND_PREFIX} remember${content !== '<content>' ? ' "' + content + '"' : ' <content>'}`
|
||||||
}
|
}
|
||||||
|
|
||||||
// 系统路径配置
|
// 系统路径配置
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
const PouchStateMachine = require('./state/PouchStateMachine')
|
const PouchStateMachine = require('./state/PouchStateMachine')
|
||||||
const PouchRegistry = require('./PouchRegistry')
|
const PouchRegistry = require('./PouchRegistry')
|
||||||
const commands = require('./commands')
|
const commands = require('./commands')
|
||||||
|
const { COMMANDS } = require('../../../constants')
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 锦囊CLI主入口
|
* 锦囊CLI主入口
|
||||||
@ -57,7 +58,7 @@ class PouchCLI {
|
|||||||
|
|
||||||
// 验证命令是否存在
|
// 验证命令是否存在
|
||||||
if (!this.registry.validate(commandName)) {
|
if (!this.registry.validate(commandName)) {
|
||||||
throw new Error(`未知命令: ${commandName}\n使用 'npx promptx help' 查看可用命令`)
|
throw new Error(`未知命令: ${commandName}\n使用 '${COMMANDS.HELP}' 查看可用命令`)
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@ -104,11 +105,11 @@ class PouchCLI {
|
|||||||
help += `
|
help += `
|
||||||
|
|
||||||
💡 使用示例:
|
💡 使用示例:
|
||||||
npx promptx init # 初始化工作环境
|
${COMMANDS.INIT} # 初始化工作环境
|
||||||
npx promptx hello # 发现可用角色
|
${COMMANDS.HELLO} # 发现可用角色
|
||||||
npx promptx action copywriter # 激活文案专家
|
${COMMANDS.ACTION} copywriter # 激活文案专家
|
||||||
npx promptx learn scrum # 学习敏捷知识
|
${COMMANDS.LEARN} scrum # 学习敏捷知识
|
||||||
npx promptx recall frontend # 检索前端记忆
|
${COMMANDS.RECALL} frontend # 检索前端记忆
|
||||||
|
|
||||||
🔄 PATEOAS 导航:
|
🔄 PATEOAS 导航:
|
||||||
每个命令执行后都会提供下一步的建议操作,
|
每个命令执行后都会提供下一步的建议操作,
|
||||||
|
|||||||
@ -88,7 +88,7 @@ class HelloCommand extends BasePouchCommand {
|
|||||||
content += `### ${index + 1}. ${role.name}
|
content += `### ${index + 1}. ${role.name}
|
||||||
**角色ID**: \`${role.id}\`
|
**角色ID**: \`${role.id}\`
|
||||||
**专业能力**: ${role.description}
|
**专业能力**: ${role.description}
|
||||||
**激活命令**: \`npx promptx action ${role.id}\`
|
**激活命令**: \`${buildCommand.action(role.id)}\`
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@ -101,12 +101,12 @@ class HelloCommand extends BasePouchCommand {
|
|||||||
### 🔧 激活步骤
|
### 🔧 激活步骤
|
||||||
1. **选择角色**: 从上述列表中选择需要的专业角色
|
1. **选择角色**: 从上述列表中选择需要的专业角色
|
||||||
2. **使用角色ID**: 复制对应的角色ID(如:\`${allRoles[0]?.id || 'assistant'}\`)
|
2. **使用角色ID**: 复制对应的角色ID(如:\`${allRoles[0]?.id || 'assistant'}\`)
|
||||||
3. **执行命令**: 运行 \`npx promptx action <角色ID>\`
|
3. **执行命令**: 运行 \`${buildCommand.action('<角色ID>')}\`
|
||||||
|
|
||||||
### 📝 激活示例
|
### 📝 激活示例
|
||||||
\`\`\`bash
|
\`\`\`bash
|
||||||
# 激活智能助手角色
|
# 激活智能助手角色
|
||||||
npx promptx action ${allRoles[0]?.id || 'assistant'}
|
${buildCommand.action(allRoles[0]?.id || 'assistant')}
|
||||||
\`\`\`
|
\`\`\`
|
||||||
|
|
||||||
### ⚡ 激活后效果
|
### ⚡ 激活后效果
|
||||||
@ -118,7 +118,7 @@ npx promptx action ${allRoles[0]?.id || 'assistant'}
|
|||||||
|
|
||||||
⚠️ **AI执行指令**:
|
⚠️ **AI执行指令**:
|
||||||
📢 **向主人汇报角色选项,明确说明使用方法:"请选择角色ID,然后我将执行对应的action命令"**
|
📢 **向主人汇报角色选项,明确说明使用方法:"请选择角色ID,然后我将执行对应的action命令"**
|
||||||
🎯 **等待主人指定具体的角色ID后,立即执行 \`npx promptx action <角色ID>\`**
|
🎯 **等待主人指定具体的角色ID后,立即执行 \`${buildCommand.action('<角色ID>')}\`**
|
||||||
💡 **强调:action命令需要具体的角色ID,不是角色名称**
|
💡 **强调:action命令需要具体的角色ID,不是角色名称**
|
||||||
`
|
`
|
||||||
|
|
||||||
|
|||||||
@ -135,20 +135,18 @@ ${formattedMemories}
|
|||||||
* 解析记忆行(紧凑格式)
|
* 解析记忆行(紧凑格式)
|
||||||
*/
|
*/
|
||||||
parseMemoryLine (line) {
|
parseMemoryLine (line) {
|
||||||
// 格式:- 2025/05/31 14:30 内容 #key #tag1 #tag2 #评分:8 #有效期:长期
|
// 格式:- 2025/05/31 14:30 内容 #tag1 #tag2 #评分:8 #有效期:长期
|
||||||
const match = line.match(/^- (\d{4}\/\d{2}\/\d{2} \d{2}:\d{2}) (.*?) (#\w+.*?)$/)
|
const match = line.match(/^- (\d{4}\/\d{2}\/\d{2} \d{2}:\d{2}) (.*?) (#.*?)$/)
|
||||||
if (!match) return null
|
if (!match) return null
|
||||||
|
|
||||||
const [, timestamp, content, tagsStr] = match
|
const [, timestamp, content, tagsStr] = match
|
||||||
const tags = tagsStr.split(' ').filter(t => t.startsWith('#'))
|
const tags = tagsStr.split(' ').filter(t => t.startsWith('#'))
|
||||||
const keyTag = tags.find(t => !t.includes(':') && !['#敏捷开发', '#测试', '#部署', '#前端开发', '#后端开发', '#AI', '#最佳实践', '#流程管理', '#工具使用', '#其他'].includes(t))
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
timestamp,
|
timestamp,
|
||||||
content,
|
content,
|
||||||
key: keyTag ? keyTag.substring(1) : 'unknown',
|
|
||||||
tags,
|
tags,
|
||||||
source: keyTag ? keyTag.substring(1) : 'unknown'
|
source: 'memory'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -158,7 +156,6 @@ ${formattedMemories}
|
|||||||
matchesMemory (memory, query) {
|
matchesMemory (memory, query) {
|
||||||
const lowerQuery = query.toLowerCase()
|
const lowerQuery = query.toLowerCase()
|
||||||
return memory.content.toLowerCase().includes(lowerQuery) ||
|
return memory.content.toLowerCase().includes(lowerQuery) ||
|
||||||
memory.key.toLowerCase().includes(lowerQuery) ||
|
|
||||||
memory.tags.some(tag => tag.toLowerCase().includes(lowerQuery))
|
memory.tags.some(tag => tag.toLowerCase().includes(lowerQuery))
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -179,7 +176,7 @@ ${formattedMemories}
|
|||||||
? memory.content.substring(0, 120) + '...'
|
? memory.content.substring(0, 120) + '...'
|
||||||
: memory.content
|
: memory.content
|
||||||
|
|
||||||
return `📝 ${index + 1}. **${memory.key}** (${memory.timestamp})
|
return `📝 ${index + 1}. **记忆** (${memory.timestamp})
|
||||||
|
|
||||||
${content}
|
${content}
|
||||||
|
|
||||||
|
|||||||
@ -17,51 +17,35 @@ class RememberCommand extends BasePouchCommand {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async getContent (args) {
|
async getContent (args) {
|
||||||
const [key, ...valueParts] = args
|
const content = args.join(' ')
|
||||||
const value = valueParts.join(' ')
|
|
||||||
|
|
||||||
if (!key) {
|
if (!content) {
|
||||||
return this.getUsageHelp()
|
return this.getUsageHelp()
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!value) {
|
|
||||||
return `❌ 请提供要内化的知识内容
|
|
||||||
|
|
||||||
🔍 使用方法:
|
|
||||||
\`\`\`bash
|
|
||||||
${buildCommand.remember('<记忆标识>', '<知识内容>')}
|
|
||||||
\`\`\`
|
|
||||||
|
|
||||||
📝 示例:
|
|
||||||
\`\`\`bash
|
|
||||||
${buildCommand.remember('copywriter-tips', '"视频文案要有强烈的画面感和节奏感"')}
|
|
||||||
${buildCommand.remember('scrum-daily', '"每日站会应该控制在15分钟内,关注昨天、今天、阻碍"')}
|
|
||||||
\`\`\``
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const memoryEntry = await this.saveMemory(key, value)
|
const memoryEntry = await this.saveMemory(content)
|
||||||
|
|
||||||
return this.formatSaveResponse(key, value, memoryEntry)
|
return this.formatSaveResponse(content, memoryEntry)
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
return `❌ 记忆内化失败:${error.message}
|
return `❌ 记忆内化失败:${error.message}
|
||||||
|
|
||||||
💡 可能的原因:
|
💡 可能的原因:
|
||||||
- AI记忆体系目录权限不足
|
- AI记忆体系目录权限不足
|
||||||
- 磁盘空间不够
|
- 磁盘空间不够
|
||||||
- 记忆标识格式不正确
|
- 记忆内容格式问题
|
||||||
|
|
||||||
🔧 解决方案:
|
🔧 解决方案:
|
||||||
1. 检查 .promptx 目录权限
|
1. 检查 .promptx 目录权限
|
||||||
2. 确保磁盘空间充足
|
2. 确保磁盘空间充足
|
||||||
3. 使用简洁的记忆标识(字母、数字、连字符)`
|
3. 检查记忆内容是否包含特殊字符`
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 将知识内化到AI记忆体系(紧凑格式)
|
* 将知识内化到AI记忆体系(紧凑格式)
|
||||||
*/
|
*/
|
||||||
async saveMemory (key, value) {
|
async saveMemory (value) {
|
||||||
// 1. 确保AI记忆体系目录存在
|
// 1. 确保AI记忆体系目录存在
|
||||||
const memoryDir = await this.ensureMemoryDirectory()
|
const memoryDir = await this.ensureMemoryDirectory()
|
||||||
|
|
||||||
@ -69,13 +53,12 @@ ${buildCommand.remember('scrum-daily', '"每日站会应该控制在15分钟内
|
|||||||
const memoryFile = path.join(memoryDir, 'declarative.md')
|
const memoryFile = path.join(memoryDir, 'declarative.md')
|
||||||
|
|
||||||
// 3. 格式化为一行记忆
|
// 3. 格式化为一行记忆
|
||||||
const memoryLine = this.formatMemoryLine(key, value)
|
const memoryLine = this.formatMemoryLine(value)
|
||||||
|
|
||||||
// 4. 追加到记忆文件
|
// 4. 追加到记忆文件
|
||||||
const action = await this.appendToMemoryFile(memoryFile, key, memoryLine)
|
const action = await this.appendToMemoryFile(memoryFile, memoryLine)
|
||||||
|
|
||||||
return {
|
return {
|
||||||
key,
|
|
||||||
value,
|
value,
|
||||||
filePath: memoryFile,
|
filePath: memoryFile,
|
||||||
action,
|
action,
|
||||||
@ -98,32 +81,23 @@ ${buildCommand.remember('scrum-daily', '"每日站会应该控制在15分钟内
|
|||||||
/**
|
/**
|
||||||
* 格式化为一行记忆(紧凑格式)
|
* 格式化为一行记忆(紧凑格式)
|
||||||
*/
|
*/
|
||||||
formatMemoryLine (key, value) {
|
formatMemoryLine (value) {
|
||||||
const now = new Date()
|
const now = new Date()
|
||||||
const timestamp = `${now.getFullYear()}/${String(now.getMonth() + 1).padStart(2, '0')}/${String(now.getDate()).padStart(2, '0')} ${String(now.getHours()).padStart(2, '0')}:${String(now.getMinutes()).padStart(2, '0')}`
|
const timestamp = `${now.getFullYear()}/${String(now.getMonth() + 1).padStart(2, '0')}/${String(now.getDate()).padStart(2, '0')} ${String(now.getHours()).padStart(2, '0')}:${String(now.getMinutes()).padStart(2, '0')}`
|
||||||
|
|
||||||
// 自动生成标签
|
// 自动生成标签
|
||||||
const tags = this.generateTags(key, value)
|
const tags = this.generateTags(value)
|
||||||
|
|
||||||
return `- ${timestamp} ${value} #${key} ${tags} #评分:8 #有效期:长期`
|
return `- ${timestamp} ${value} #${tags} #评分:8 #有效期:长期`
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 自动生成标签
|
* 自动生成标签
|
||||||
*/
|
*/
|
||||||
generateTags (key, value) {
|
generateTags (value) {
|
||||||
const tags = []
|
const tags = []
|
||||||
const lowerKey = key.toLowerCase()
|
|
||||||
const lowerValue = value.toLowerCase()
|
const lowerValue = value.toLowerCase()
|
||||||
|
|
||||||
// 基于key生成标签
|
|
||||||
if (lowerKey.includes('scrum') || lowerKey.includes('agile')) tags.push('#敏捷开发')
|
|
||||||
if (lowerKey.includes('test') || lowerKey.includes('qa')) tags.push('#测试')
|
|
||||||
if (lowerKey.includes('deploy') || lowerKey.includes('发布')) tags.push('#部署')
|
|
||||||
if (lowerKey.includes('react') || lowerKey.includes('前端')) tags.push('#前端开发')
|
|
||||||
if (lowerKey.includes('api') || lowerKey.includes('后端')) tags.push('#后端开发')
|
|
||||||
if (lowerKey.includes('prompt') || lowerKey.includes('ai')) tags.push('#AI')
|
|
||||||
|
|
||||||
// 基于value生成标签
|
// 基于value生成标签
|
||||||
if (lowerValue.includes('最佳实践') || lowerValue.includes('规则')) tags.push('#最佳实践')
|
if (lowerValue.includes('最佳实践') || lowerValue.includes('规则')) tags.push('#最佳实践')
|
||||||
if (lowerValue.includes('流程') || lowerValue.includes('步骤')) tags.push('#流程管理')
|
if (lowerValue.includes('流程') || lowerValue.includes('步骤')) tags.push('#流程管理')
|
||||||
@ -135,7 +109,7 @@ ${buildCommand.remember('scrum-daily', '"每日站会应该控制在15分钟内
|
|||||||
/**
|
/**
|
||||||
* 追加到记忆文件
|
* 追加到记忆文件
|
||||||
*/
|
*/
|
||||||
async appendToMemoryFile (memoryFile, key, memoryLine) {
|
async appendToMemoryFile (memoryFile, memoryLine) {
|
||||||
// 初始化文件(如果不存在)
|
// 初始化文件(如果不存在)
|
||||||
if (!await fs.pathExists(memoryFile)) {
|
if (!await fs.pathExists(memoryFile)) {
|
||||||
await fs.writeFile(memoryFile, `# 陈述性记忆
|
await fs.writeFile(memoryFile, `# 陈述性记忆
|
||||||
@ -151,37 +125,25 @@ ${memoryLine}
|
|||||||
// 读取现有内容
|
// 读取现有内容
|
||||||
const content = await fs.readFile(memoryFile, 'utf-8')
|
const content = await fs.readFile(memoryFile, 'utf-8')
|
||||||
|
|
||||||
// 检查是否已存在相同key的记忆
|
// 追加新记忆(在高价值记忆部分)
|
||||||
const keyPattern = new RegExp(`^- .*#${key}\\b`, 'm')
|
const updatedContent = content + '\n\n' + memoryLine
|
||||||
if (keyPattern.test(content)) {
|
await fs.writeFile(memoryFile, updatedContent)
|
||||||
// 替换现有记忆
|
return 'created'
|
||||||
const updatedContent = content.replace(keyPattern, memoryLine)
|
|
||||||
await fs.writeFile(memoryFile, updatedContent)
|
|
||||||
return 'updated'
|
|
||||||
} else {
|
|
||||||
// 追加新记忆(在高价值记忆部分)
|
|
||||||
const insertPosition = content.indexOf('\n\n') + 2
|
|
||||||
const updatedContent = content.slice(0, insertPosition) + memoryLine + '\n\n' + content.slice(insertPosition)
|
|
||||||
await fs.writeFile(memoryFile, updatedContent)
|
|
||||||
return 'created'
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 格式化保存响应(简化版本)
|
* 格式化保存响应(简化版本)
|
||||||
*/
|
*/
|
||||||
formatSaveResponse (key, value, memoryEntry) {
|
formatSaveResponse (value, memoryEntry) {
|
||||||
const { action, timestamp } = memoryEntry
|
const { action, timestamp } = memoryEntry
|
||||||
|
|
||||||
const actionLabels = {
|
const actionLabels = {
|
||||||
created: '✅ AI已内化新记忆',
|
created: '✅ AI已内化新记忆'
|
||||||
updated: '🔄 AI已更新记忆'
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return `${actionLabels[action]}:${key}
|
return `${actionLabels[action]}:${value}
|
||||||
|
|
||||||
## 📋 记忆详情
|
## 📋 记忆详情
|
||||||
- **记忆标识**: \`${key}\`
|
|
||||||
- **内化时间**: ${timestamp.split('T')[0]}
|
- **内化时间**: ${timestamp.split('T')[0]}
|
||||||
- **知识内容**: ${value.length > 100 ? value.substring(0, 100) + '...' : value}
|
- **知识内容**: ${value.length > 100 ? value.substring(0, 100) + '...' : value}
|
||||||
|
|
||||||
@ -192,7 +154,7 @@ ${memoryLine}
|
|||||||
|
|
||||||
## 🔄 下一步行动:
|
## 🔄 下一步行动:
|
||||||
- 记忆检索: 验证知识内化效果
|
- 记忆检索: 验证知识内化效果
|
||||||
命令: \`${buildCommand.recall(key)}\`
|
命令: \`${buildCommand.recall(value)}\`
|
||||||
- 能力强化: 学习相关知识增强记忆
|
- 能力强化: 学习相关知识增强记忆
|
||||||
命令: \`${buildCommand.learn('<protocol>://<resource-id>')}\`
|
命令: \`${buildCommand.learn('<protocol>://<resource-id>')}\`
|
||||||
- 应用实践: 在实际场景中运用记忆
|
- 应用实践: 在实际场景中运用记忆
|
||||||
@ -209,7 +171,7 @@ ${memoryLine}
|
|||||||
|
|
||||||
## 📖 基本用法
|
## 📖 基本用法
|
||||||
\`\`\`bash
|
\`\`\`bash
|
||||||
${buildCommand.remember('<记忆标识>', '<知识内容>')}
|
${buildCommand.remember('<知识内容>')}
|
||||||
\`\`\`
|
\`\`\`
|
||||||
|
|
||||||
## 💡 记忆内化示例
|
## 💡 记忆内化示例
|
||||||
@ -217,17 +179,12 @@ ${buildCommand.remember('<记忆标识>', '<知识内容>')}
|
|||||||
### 📝 AI记忆内化
|
### 📝 AI记忆内化
|
||||||
AI学习和内化各种专业知识
|
AI学习和内化各种专业知识
|
||||||
\`\`\`bash
|
\`\`\`bash
|
||||||
${buildCommand.remember('"deploy-process"', '"1.构建代码 2.运行测试 3.部署到staging 4.验证功能 5.发布生产"')}
|
${buildCommand.remember('"构建代码 → 运行测试 → 部署到staging → 验证功能 → 发布生产"')}
|
||||||
${buildCommand.remember('"debug-case-001"', '"用户反馈视频加载慢,排查发现是CDN配置问题,修改后加载速度提升60%"')}
|
${buildCommand.remember('"用户反馈视频加载慢,排查发现是CDN配置问题,修改后加载速度提升60%"')}
|
||||||
${buildCommand.remember('"react-hooks"', '"React Hooks允许在函数组件中使用state和其他React特性"')}
|
${buildCommand.remember('"React Hooks允许在函数组件中使用state和其他React特性"')}
|
||||||
${buildCommand.remember('"code-review-rules"', '"每个PR至少需要2个人review,必须包含测试用例"')}
|
${buildCommand.remember('"每个PR至少需要2个人review,必须包含测试用例"')}
|
||||||
\`\`\`
|
\`\`\`
|
||||||
|
|
||||||
## 💡 记忆标识规范
|
|
||||||
- 使用简洁的英文标识
|
|
||||||
- 支持连字符分隔
|
|
||||||
- 例如:\`copywriter-tips\`、\`scrum-daily\`、\`react-best-practice\`
|
|
||||||
|
|
||||||
## 🔍 记忆检索与应用
|
## 🔍 记忆检索与应用
|
||||||
\`\`\`bash
|
\`\`\`bash
|
||||||
${buildCommand.recall('<关键词>')} # AI主动检索记忆
|
${buildCommand.recall('<关键词>')} # AI主动检索记忆
|
||||||
@ -236,7 +193,7 @@ ${buildCommand.action('<role-id>')} # AI运用记忆激活角色
|
|||||||
|
|
||||||
🔄 下一步行动:
|
🔄 下一步行动:
|
||||||
- 开始记忆: 内化第一条知识
|
- 开始记忆: 内化第一条知识
|
||||||
命令: ${buildCommand.remember('<key>', '<content>')}
|
命令: ${buildCommand.remember('<content>')}
|
||||||
- 学习资源: 学习新知识再内化
|
- 学习资源: 学习新知识再内化
|
||||||
命令: ${buildCommand.learn('<protocol>://<resource>')}`
|
命令: ${buildCommand.learn('<protocol>://<resource>')}`
|
||||||
}
|
}
|
||||||
@ -245,10 +202,9 @@ ${buildCommand.action('<role-id>')} # AI运用记忆激活角色
|
|||||||
* 获取PATEOAS导航信息
|
* 获取PATEOAS导航信息
|
||||||
*/
|
*/
|
||||||
getPATEOAS (args) {
|
getPATEOAS (args) {
|
||||||
const [key, ...valueParts] = args
|
const content = args.join(' ')
|
||||||
const value = valueParts.join(' ')
|
|
||||||
|
|
||||||
if (!key) {
|
if (!content) {
|
||||||
return {
|
return {
|
||||||
currentState: 'remember_awaiting_input',
|
currentState: 'remember_awaiting_input',
|
||||||
availableTransitions: ['hello', 'learn', 'recall'],
|
availableTransitions: ['hello', 'learn', 'recall'],
|
||||||
@ -269,21 +225,6 @@ ${buildCommand.action('<role-id>')} # AI运用记忆激活角色
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!value) {
|
|
||||||
return {
|
|
||||||
currentState: 'remember_awaiting_content',
|
|
||||||
availableTransitions: ['remember', 'recall'],
|
|
||||||
nextActions: [
|
|
||||||
{
|
|
||||||
name: '重新输入',
|
|
||||||
description: '提供完整的记忆内容',
|
|
||||||
command: buildCommand.remember(key, '<content>'),
|
|
||||||
priority: 'high'
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
currentState: 'memory_saved',
|
currentState: 'memory_saved',
|
||||||
availableTransitions: ['recall', 'learn', 'action', 'remember'],
|
availableTransitions: ['recall', 'learn', 'action', 'remember'],
|
||||||
@ -291,7 +232,7 @@ ${buildCommand.action('<role-id>')} # AI运用记忆激活角色
|
|||||||
{
|
{
|
||||||
name: '检索记忆',
|
name: '检索记忆',
|
||||||
description: '测试记忆是否可检索',
|
description: '测试记忆是否可检索',
|
||||||
command: buildCommand.recall(key),
|
command: buildCommand.recall('<关键词>'),
|
||||||
priority: 'high'
|
priority: 'high'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -309,13 +250,13 @@ ${buildCommand.action('<role-id>')} # AI运用记忆激活角色
|
|||||||
{
|
{
|
||||||
name: '继续内化',
|
name: '继续内化',
|
||||||
description: 'AI继续内化更多知识',
|
description: 'AI继续内化更多知识',
|
||||||
command: buildCommand.remember('<key>', '<content>'),
|
command: buildCommand.remember('<content>'),
|
||||||
priority: 'low'
|
priority: 'low'
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
metadata: {
|
metadata: {
|
||||||
savedMemory: key,
|
savedMemory: content.substring(0, 50) + (content.length > 50 ? '...' : ''),
|
||||||
memoryLength: value.length,
|
memoryLength: content.length,
|
||||||
timestamp: new Date().toISOString(),
|
timestamp: new Date().toISOString(),
|
||||||
systemVersion: '锦囊串联状态机 v1.0'
|
systemVersion: '锦囊串联状态机 v1.0'
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user