feat: 添加DACP邮件发送功能,支持真实发送与Demo模式,增强邮件发送的配置管理和错误提示,优化用户体验。
This commit is contained in:
156
prompt/core/dacp-email-sending.execution.md
Normal file
156
prompt/core/dacp-email-sending.execution.md
Normal file
@ -0,0 +1,156 @@
|
|||||||
|
<execution>
|
||||||
|
<constraint>
|
||||||
|
## 技术和环境限制
|
||||||
|
- **配置依赖性**:真实发送需要用户在~/.promptx/dacp/send_email.json配置邮箱信息
|
||||||
|
- **服务可用性**:需要DACP服务运行在localhost:3002或指定端口
|
||||||
|
- **网络连接要求**:发送真实邮件需要稳定的网络连接和SMTP服务可达性
|
||||||
|
- **邮件服务商限制**:不同服务商有发送频率和内容限制
|
||||||
|
- **协议格式约束**:必须符合DACP协议标准的请求格式
|
||||||
|
</constraint>
|
||||||
|
|
||||||
|
<rule>
|
||||||
|
## 强制执行规则
|
||||||
|
- **服务ID固定**:必须使用"dacp-promptx-service"作为service_id
|
||||||
|
- **action名称固定**:必须使用"send_email"作为action
|
||||||
|
- **必需参数验证**:user_request是必需参数,不能为空
|
||||||
|
- **配置错误处理**:配置缺失或无效时必须向用户说明具体解决方案
|
||||||
|
- **安全信息保护**:不得在日志或响应中暴露用户的邮箱密码
|
||||||
|
</rule>
|
||||||
|
|
||||||
|
<guideline>
|
||||||
|
## 使用指导原则
|
||||||
|
- **智能需求解析**:从用户自然语言中提取收件人、主题、内容等信息
|
||||||
|
- **上下文感知**:根据urgency、recipient_type等上下文调整邮件语气
|
||||||
|
- **友好降级**:无配置时自动使用Demo模式,同时提供配置指导
|
||||||
|
- **错误信息友好化**:将技术错误转化为用户可理解的解决建议
|
||||||
|
</guideline>
|
||||||
|
|
||||||
|
<process>
|
||||||
|
## 邮件发送执行流程
|
||||||
|
|
||||||
|
### Step 1: 需求分析和参数准备
|
||||||
|
```
|
||||||
|
1. 解析用户输入,提取邮件要素(收件人、主题、内容)
|
||||||
|
2. 确定邮件类型和紧急程度
|
||||||
|
3. 构造user_request自然语言描述
|
||||||
|
4. 准备context上下文信息
|
||||||
|
5. 验证所有必需参数完整性
|
||||||
|
```
|
||||||
|
|
||||||
|
### Step 2: DACP服务调用
|
||||||
|
```json
|
||||||
|
// 标准DACP邮件请求格式
|
||||||
|
{
|
||||||
|
"service_id": "dacp-promptx-service",
|
||||||
|
"action": "send_email",
|
||||||
|
"parameters": {
|
||||||
|
"user_request": "用户的自然语言邮件描述",
|
||||||
|
"context": {
|
||||||
|
"urgency": "high|medium|low",
|
||||||
|
"recipient_type": "colleague|superior|client"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Step 3: 配置文件格式要求
|
||||||
|
```json
|
||||||
|
// ~/.promptx/dacp/send_email.json 配置文件格式
|
||||||
|
{
|
||||||
|
"provider": "gmail|outlook|qq|163|126",
|
||||||
|
"smtp": {
|
||||||
|
"user": "your-email@gmail.com",
|
||||||
|
"password": "your-app-password"
|
||||||
|
},
|
||||||
|
"sender": {
|
||||||
|
"name": "Your Name",
|
||||||
|
"email": "your-email@gmail.com"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Step 4: 结果处理和用户反馈
|
||||||
|
```
|
||||||
|
1. 检查响应状态和demo_mode字段
|
||||||
|
2. Demo模式:提供配置指导和创建配置文件的详细说明
|
||||||
|
3. 真实发送:确认发送成功并显示message_id
|
||||||
|
4. 错误处理:解析错误原因并提供具体解决方案
|
||||||
|
5. 向用户反馈执行结果和后续建议
|
||||||
|
```
|
||||||
|
|
||||||
|
### 配置错误处理流程
|
||||||
|
```
|
||||||
|
配置缺失 → 显示配置文件路径和格式 → 指导创建配置
|
||||||
|
配置无效 → 指出具体错误字段 → 提供修复建议
|
||||||
|
认证失败 → 检查密码和服务器设置 → 应用专用密码指导
|
||||||
|
发送失败 → 网络和SMTP检查 → 故障排除建议
|
||||||
|
```
|
||||||
|
|
||||||
|
### 邮件服务商配置指导
|
||||||
|
```
|
||||||
|
Gmail: 需要启用两步验证并生成应用专用密码
|
||||||
|
Outlook: 使用账户密码,确保SMTP已启用
|
||||||
|
QQ/163/126: 需要开启SMTP服务并使用授权码
|
||||||
|
```
|
||||||
|
|
||||||
|
### 配置指导详细说明
|
||||||
|
```
|
||||||
|
📧 DACP邮件服务配置说明
|
||||||
|
|
||||||
|
📍 配置文件位置:~/.promptx/dacp/send_email.json
|
||||||
|
|
||||||
|
📝 完整配置示例:
|
||||||
|
{
|
||||||
|
"provider": "gmail",
|
||||||
|
"smtp": {
|
||||||
|
"user": "your-email@gmail.com",
|
||||||
|
"password": "your-app-password"
|
||||||
|
},
|
||||||
|
"sender": {
|
||||||
|
"name": "Your Name",
|
||||||
|
"email": "your-email@gmail.com"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
💡 支持的邮件服务商:gmail, outlook, qq, 163, 126
|
||||||
|
|
||||||
|
🔐 Gmail用户专用设置:
|
||||||
|
1. 进入 Google 账户设置
|
||||||
|
2. 启用两步验证
|
||||||
|
3. 生成应用专用密码
|
||||||
|
4. 使用生成的密码替换 "your-app-password"
|
||||||
|
|
||||||
|
📞 其他服务商设置:
|
||||||
|
- Outlook: 直接使用账户密码
|
||||||
|
- QQ/163/126: 需要开启SMTP服务并使用授权码
|
||||||
|
```
|
||||||
|
</process>
|
||||||
|
|
||||||
|
<criteria>
|
||||||
|
## 邮件发送质量评价标准
|
||||||
|
|
||||||
|
### 功能完整性
|
||||||
|
- ✅ 正确调用DACP邮件服务
|
||||||
|
- ✅ 准确解析用户邮件需求
|
||||||
|
- ✅ 妥善处理配置和发送异常
|
||||||
|
- ✅ 提供完整的配置指导
|
||||||
|
|
||||||
|
### 用户体验质量
|
||||||
|
- ✅ 自然语言交互流畅
|
||||||
|
- ✅ 错误提示友好明确
|
||||||
|
- ✅ 配置指导详细实用
|
||||||
|
- ✅ Demo模式平滑降级
|
||||||
|
|
||||||
|
### 安全合规性
|
||||||
|
- ✅ 不暴露敏感配置信息
|
||||||
|
- ✅ 遵循邮件发送最佳实践
|
||||||
|
- ✅ 用户级配置安全存储
|
||||||
|
- ✅ 符合反垃圾邮件规范
|
||||||
|
|
||||||
|
### 系统稳定性
|
||||||
|
- ✅ 配置缺失时不影响系统运行
|
||||||
|
- ✅ 合理的错误处理和重试机制
|
||||||
|
- ✅ 完整的执行反馈和日志记录
|
||||||
|
- ✅ 多邮件服务商兼容支持
|
||||||
|
</criteria>
|
||||||
|
</execution>
|
||||||
@ -9,5 +9,6 @@
|
|||||||
<principle>
|
<principle>
|
||||||
@!execution://assistant
|
@!execution://assistant
|
||||||
@!execution://dacp-service-calling
|
@!execution://dacp-service-calling
|
||||||
|
@!execution://dacp-email-sending
|
||||||
</principle>
|
</principle>
|
||||||
</role>
|
</role>
|
||||||
@ -1,8 +1,11 @@
|
|||||||
/**
|
/**
|
||||||
* Email Action Module for DACP PromptX Service
|
* Email Action Module for DACP PromptX Service
|
||||||
* 提供邮件发送功能
|
* 提供邮件发送功能 - 支持Demo模式和真实发送
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
const nodemailer = require('nodemailer')
|
||||||
|
const DACPConfigManager = require('../../../lib/utils/DACPConfigManager')
|
||||||
|
|
||||||
// Email action handler
|
// Email action handler
|
||||||
async function send_email(parameters) {
|
async function send_email(parameters) {
|
||||||
const { user_request, context = {} } = parameters;
|
const { user_request, context = {} } = parameters;
|
||||||
@ -124,7 +127,39 @@ function validateEmailData(emailData) {
|
|||||||
|
|
||||||
// 执行邮件发送
|
// 执行邮件发送
|
||||||
async function executeSendEmail(emailData, context) {
|
async function executeSendEmail(emailData, context) {
|
||||||
// Demo模式:模拟发送
|
const configManager = new DACPConfigManager()
|
||||||
|
|
||||||
|
// 检查是否有用户配置
|
||||||
|
const hasConfig = await configManager.hasActionConfig('send_email')
|
||||||
|
|
||||||
|
if (!hasConfig) {
|
||||||
|
// 无配置,回退到Demo模式
|
||||||
|
return await executeDemoSendEmail(emailData, context)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 读取配置
|
||||||
|
const config = await configManager.readActionConfig('send_email')
|
||||||
|
|
||||||
|
// 验证配置
|
||||||
|
const validation = configManager.validateEmailConfig(config)
|
||||||
|
if (!validation.valid) {
|
||||||
|
// 配置无效,抛出友好错误
|
||||||
|
const errorMessage = configManager.generateConfigErrorMessage('send_email', validation)
|
||||||
|
throw new Error(errorMessage)
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
// 真实邮件发送
|
||||||
|
return await executeRealSendEmail(emailData, config, context)
|
||||||
|
} catch (error) {
|
||||||
|
// 发送失败,提供友好提示
|
||||||
|
console.error('邮件发送失败:', error.message)
|
||||||
|
throw new Error(`\n📧 邮件发送失败\n\n❌ 错误信息: ${error.message}\n\n💡 可能的解决方案:\n • 检查邮箱密码是否正确\n • 确认已启用SMTP服务\n • 验证网络连接状态\n • Gmail用户确保使用应用专用密码\n`)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Demo模式发送
|
||||||
|
async function executeDemoSendEmail(emailData, context) {
|
||||||
console.log('📧 [DACP Demo] Simulating email send:');
|
console.log('📧 [DACP Demo] Simulating email send:');
|
||||||
console.log(` To: ${emailData.to}`);
|
console.log(` To: ${emailData.to}`);
|
||||||
console.log(` Subject: ${emailData.subject}`);
|
console.log(` Subject: ${emailData.subject}`);
|
||||||
@ -133,15 +168,19 @@ async function executeSendEmail(emailData, context) {
|
|||||||
// 模拟网络延迟
|
// 模拟网络延迟
|
||||||
await new Promise(resolve => setTimeout(resolve, 100));
|
await new Promise(resolve => setTimeout(resolve, 100));
|
||||||
|
|
||||||
|
const configManager = new DACPConfigManager()
|
||||||
|
const configHint = configManager.generateConfigErrorMessage('send_email')
|
||||||
|
|
||||||
return {
|
return {
|
||||||
message_id: `msg_${Date.now()}`,
|
message_id: `demo_msg_${Date.now()}`,
|
||||||
status: 'sent',
|
status: 'demo_sent',
|
||||||
recipient: emailData.to,
|
recipient: emailData.to,
|
||||||
subject: emailData.subject,
|
subject: emailData.subject,
|
||||||
body: emailData.body,
|
body: emailData.body,
|
||||||
sent_at: emailData.timestamp,
|
sent_at: emailData.timestamp,
|
||||||
urgency: emailData.urgency,
|
urgency: emailData.urgency,
|
||||||
demo_mode: true,
|
demo_mode: true,
|
||||||
|
config_hint: configHint,
|
||||||
execution_metrics: {
|
execution_metrics: {
|
||||||
parsing_time: '10ms',
|
parsing_time: '10ms',
|
||||||
validation_time: '5ms',
|
validation_time: '5ms',
|
||||||
@ -150,6 +189,61 @@ async function executeSendEmail(emailData, context) {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 真实邮件发送
|
||||||
|
async function executeRealSendEmail(emailData, config, context) {
|
||||||
|
const startTime = Date.now()
|
||||||
|
|
||||||
|
// 获取提供商配置
|
||||||
|
const configManager = new DACPConfigManager()
|
||||||
|
const providerConfig = configManager.getProviderConfig(config.provider)
|
||||||
|
|
||||||
|
if (!providerConfig) {
|
||||||
|
throw new Error(`不支持的邮件服务提供商: ${config.provider}`)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 创建邮件传输器
|
||||||
|
const transporter = nodemailer.createTransport({
|
||||||
|
host: providerConfig.smtp,
|
||||||
|
port: providerConfig.port,
|
||||||
|
secure: providerConfig.secure,
|
||||||
|
auth: {
|
||||||
|
user: config.smtp.user,
|
||||||
|
pass: config.smtp.password
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
// 构建邮件选项
|
||||||
|
const mailOptions = {
|
||||||
|
from: `"${config.sender.name}" <${config.sender.email}>`,
|
||||||
|
to: emailData.to,
|
||||||
|
subject: emailData.subject,
|
||||||
|
html: emailData.body.replace(/\n/g, '<br>'),
|
||||||
|
text: emailData.body
|
||||||
|
}
|
||||||
|
|
||||||
|
// 发送邮件
|
||||||
|
const info = await transporter.sendMail(mailOptions)
|
||||||
|
const endTime = Date.now()
|
||||||
|
|
||||||
|
return {
|
||||||
|
message_id: info.messageId,
|
||||||
|
status: 'sent',
|
||||||
|
recipient: emailData.to,
|
||||||
|
subject: emailData.subject,
|
||||||
|
body: emailData.body,
|
||||||
|
sent_at: new Date().toISOString(),
|
||||||
|
urgency: emailData.urgency,
|
||||||
|
demo_mode: false,
|
||||||
|
provider: config.provider,
|
||||||
|
smtp_response: info.response,
|
||||||
|
execution_metrics: {
|
||||||
|
parsing_time: '10ms',
|
||||||
|
validation_time: '5ms',
|
||||||
|
sending_time: `${endTime - startTime}ms`
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// 导出所有email相关的actions
|
// 导出所有email相关的actions
|
||||||
module.exports = {
|
module.exports = {
|
||||||
send_email
|
send_email
|
||||||
|
|||||||
@ -9,13 +9,14 @@
|
|||||||
"test": "jest"
|
"test": "jest"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"express": "^4.18.2",
|
|
||||||
"body-parser": "^1.20.2",
|
"body-parser": "^1.20.2",
|
||||||
"cors": "^2.8.5",
|
"cors": "^2.8.5",
|
||||||
"joi": "^17.11.0"
|
"express": "^4.18.2",
|
||||||
|
"joi": "^17.11.0",
|
||||||
|
"nodemailer": "^7.0.3"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"jest": "^29.7.0",
|
"jest": "^29.7.0",
|
||||||
"supertest": "^6.3.3"
|
"supertest": "^6.3.3"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
207
src/lib/utils/DACPConfigManager.js
Normal file
207
src/lib/utils/DACPConfigManager.js
Normal file
@ -0,0 +1,207 @@
|
|||||||
|
const fs = require('fs-extra')
|
||||||
|
const path = require('path')
|
||||||
|
const os = require('os')
|
||||||
|
|
||||||
|
/**
|
||||||
|
* DACP用户级配置管理器
|
||||||
|
* 管理 ~/.promptx/dacp/ 下的配置文件
|
||||||
|
*/
|
||||||
|
class DACPConfigManager {
|
||||||
|
constructor() {
|
||||||
|
this.userHome = os.homedir()
|
||||||
|
this.dacpConfigDir = path.join(this.userHome, '.promptx', 'dacp')
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 确保DACP配置目录存在
|
||||||
|
*/
|
||||||
|
async ensureConfigDir() {
|
||||||
|
await fs.ensureDir(this.dacpConfigDir)
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取指定action的配置文件路径
|
||||||
|
* @param {string} action - action名称,如 'send_email'
|
||||||
|
* @returns {string} 配置文件完整路径
|
||||||
|
*/
|
||||||
|
getConfigPath(action) {
|
||||||
|
return path.join(this.dacpConfigDir, `${action}.json`)
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 读取action配置
|
||||||
|
* @param {string} action - action名称
|
||||||
|
* @returns {Promise<Object|null>} 配置对象或null
|
||||||
|
*/
|
||||||
|
async readActionConfig(action) {
|
||||||
|
const configPath = this.getConfigPath(action)
|
||||||
|
|
||||||
|
try {
|
||||||
|
if (await fs.pathExists(configPath)) {
|
||||||
|
return await fs.readJson(configPath)
|
||||||
|
}
|
||||||
|
return null
|
||||||
|
} catch (error) {
|
||||||
|
console.warn(`读取DACP配置失败 ${action}:`, error.message)
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 写入action配置
|
||||||
|
* @param {string} action - action名称
|
||||||
|
* @param {Object} config - 配置对象
|
||||||
|
*/
|
||||||
|
async writeActionConfig(action, config) {
|
||||||
|
await this.ensureConfigDir()
|
||||||
|
const configPath = this.getConfigPath(action)
|
||||||
|
await fs.writeJson(configPath, config, { spaces: 2 })
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 检查action配置是否存在
|
||||||
|
* @param {string} action - action名称
|
||||||
|
* @returns {Promise<boolean>}
|
||||||
|
*/
|
||||||
|
async hasActionConfig(action) {
|
||||||
|
const configPath = this.getConfigPath(action)
|
||||||
|
return await fs.pathExists(configPath)
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 验证邮件配置
|
||||||
|
* @param {Object} config - 邮件配置对象
|
||||||
|
* @returns {Object} 验证结果 {valid: boolean, errors: string[]}
|
||||||
|
*/
|
||||||
|
validateEmailConfig(config) {
|
||||||
|
const errors = []
|
||||||
|
|
||||||
|
if (!config) {
|
||||||
|
errors.push('配置对象不能为空')
|
||||||
|
return { valid: false, errors }
|
||||||
|
}
|
||||||
|
|
||||||
|
// 验证provider
|
||||||
|
if (!config.provider) {
|
||||||
|
errors.push('缺少邮件服务提供商(provider)配置')
|
||||||
|
}
|
||||||
|
|
||||||
|
// 验证SMTP配置
|
||||||
|
if (!config.smtp) {
|
||||||
|
errors.push('缺少SMTP配置')
|
||||||
|
} else {
|
||||||
|
if (!config.smtp.user) {
|
||||||
|
errors.push('缺少SMTP用户名(smtp.user)')
|
||||||
|
}
|
||||||
|
if (!config.smtp.password) {
|
||||||
|
errors.push('缺少SMTP密码(smtp.password)')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 验证发件人配置
|
||||||
|
if (!config.sender) {
|
||||||
|
errors.push('缺少发件人配置(sender)')
|
||||||
|
} else {
|
||||||
|
if (!config.sender.email) {
|
||||||
|
errors.push('缺少发件人邮箱(sender.email)')
|
||||||
|
}
|
||||||
|
if (!config.sender.name) {
|
||||||
|
errors.push('缺少发件人姓名(sender.name)')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
valid: errors.length === 0,
|
||||||
|
errors
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取邮件服务提供商配置
|
||||||
|
* @param {string} provider - 提供商名称
|
||||||
|
* @returns {Object} 提供商配置
|
||||||
|
*/
|
||||||
|
getProviderConfig(provider) {
|
||||||
|
const providers = {
|
||||||
|
gmail: {
|
||||||
|
smtp: 'smtp.gmail.com',
|
||||||
|
port: 587,
|
||||||
|
secure: false,
|
||||||
|
requireAuth: true
|
||||||
|
},
|
||||||
|
outlook: {
|
||||||
|
smtp: 'smtp-mail.outlook.com',
|
||||||
|
port: 587,
|
||||||
|
secure: false,
|
||||||
|
requireAuth: true
|
||||||
|
},
|
||||||
|
qq: {
|
||||||
|
smtp: 'smtp.qq.com',
|
||||||
|
port: 465,
|
||||||
|
secure: true,
|
||||||
|
requireAuth: true
|
||||||
|
},
|
||||||
|
'163': {
|
||||||
|
smtp: 'smtp.163.com',
|
||||||
|
port: 465,
|
||||||
|
secure: true,
|
||||||
|
requireAuth: true
|
||||||
|
},
|
||||||
|
'126': {
|
||||||
|
smtp: 'smtp.126.com',
|
||||||
|
port: 465,
|
||||||
|
secure: true,
|
||||||
|
requireAuth: true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return providers[provider] || null
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 生成配置错误提示信息
|
||||||
|
* @param {string} action - action名称
|
||||||
|
* @param {Object} validation - 验证结果
|
||||||
|
* @returns {string} 错误提示信息
|
||||||
|
*/
|
||||||
|
generateConfigErrorMessage(action, validation = null) {
|
||||||
|
const configPath = this.getConfigPath(action)
|
||||||
|
|
||||||
|
let message = `\n📧 DACP邮件服务配置缺失\n\n`
|
||||||
|
|
||||||
|
if (!validation) {
|
||||||
|
// 配置文件不存在
|
||||||
|
message += `❌ 配置文件不存在: ${configPath}\n\n`
|
||||||
|
message += `📝 请创建配置文件,内容如下:\n\n`
|
||||||
|
message += `{\n`
|
||||||
|
message += ` "provider": "gmail",\n`
|
||||||
|
message += ` "smtp": {\n`
|
||||||
|
message += ` "user": "your-email@gmail.com",\n`
|
||||||
|
message += ` "password": "your-app-password"\n`
|
||||||
|
message += ` },\n`
|
||||||
|
message += ` "sender": {\n`
|
||||||
|
message += ` "name": "Your Name",\n`
|
||||||
|
message += ` "email": "your-email@gmail.com"\n`
|
||||||
|
message += ` }\n`
|
||||||
|
message += `}\n\n`
|
||||||
|
message += `💡 支持的邮件服务商: gmail, outlook, qq, 163, 126\n\n`
|
||||||
|
message += `🔐 Gmail用户需要使用应用专用密码:\n`
|
||||||
|
message += ` 1. 进入 Google 账户设置\n`
|
||||||
|
message += ` 2. 启用两步验证\n`
|
||||||
|
message += ` 3. 生成应用专用密码\n`
|
||||||
|
message += ` 4. 使用生成的密码替换上面的 "your-app-password"\n`
|
||||||
|
} else {
|
||||||
|
// 配置不完整
|
||||||
|
message += `❌ 配置文件存在但不完整: ${configPath}\n\n`
|
||||||
|
message += `缺少以下配置项:\n`
|
||||||
|
validation.errors.forEach(error => {
|
||||||
|
message += ` • ${error}\n`
|
||||||
|
})
|
||||||
|
message += `\n请检查并完善配置文件。\n`
|
||||||
|
}
|
||||||
|
|
||||||
|
return message
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = DACPConfigManager
|
||||||
@ -4,9 +4,9 @@
|
|||||||
"metadata": {
|
"metadata": {
|
||||||
"version": "2.0.0",
|
"version": "2.0.0",
|
||||||
"description": "package 级资源注册表",
|
"description": "package 级资源注册表",
|
||||||
"createdAt": "2025-06-18T09:27:19.817Z",
|
"createdAt": "2025-06-18T10:00:59.258Z",
|
||||||
"updatedAt": "2025-06-18T09:27:19.821Z",
|
"updatedAt": "2025-06-18T10:00:59.263Z",
|
||||||
"resourceCount": 46
|
"resourceCount": 47
|
||||||
},
|
},
|
||||||
"resources": [
|
"resources": [
|
||||||
{
|
{
|
||||||
@ -17,9 +17,9 @@
|
|||||||
"description": "专业角色,提供特定领域的专业能力",
|
"description": "专业角色,提供特定领域的专业能力",
|
||||||
"reference": "@package://prompt/domain/assistant/assistant.role.md",
|
"reference": "@package://prompt/domain/assistant/assistant.role.md",
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"createdAt": "2025-06-18T09:27:19.818Z",
|
"createdAt": "2025-06-18T10:00:59.259Z",
|
||||||
"updatedAt": "2025-06-18T09:27:19.818Z",
|
"updatedAt": "2025-06-18T10:00:59.259Z",
|
||||||
"scannedAt": "2025-06-18T09:27:19.818Z"
|
"scannedAt": "2025-06-18T10:00:59.259Z"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -30,9 +30,9 @@
|
|||||||
"description": "思维模式,指导AI的思考方式",
|
"description": "思维模式,指导AI的思考方式",
|
||||||
"reference": "@package://prompt/domain/assistant/thought/assistant.thought.md",
|
"reference": "@package://prompt/domain/assistant/thought/assistant.thought.md",
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"createdAt": "2025-06-18T09:27:19.819Z",
|
"createdAt": "2025-06-18T10:00:59.260Z",
|
||||||
"updatedAt": "2025-06-18T09:27:19.819Z",
|
"updatedAt": "2025-06-18T10:00:59.260Z",
|
||||||
"scannedAt": "2025-06-18T09:27:19.819Z"
|
"scannedAt": "2025-06-18T10:00:59.260Z"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -43,9 +43,9 @@
|
|||||||
"description": "执行模式,定义具体的行为模式",
|
"description": "执行模式,定义具体的行为模式",
|
||||||
"reference": "@package://prompt/domain/assistant/execution/assistant.execution.md",
|
"reference": "@package://prompt/domain/assistant/execution/assistant.execution.md",
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"createdAt": "2025-06-18T09:27:19.819Z",
|
"createdAt": "2025-06-18T10:00:59.260Z",
|
||||||
"updatedAt": "2025-06-18T09:27:19.819Z",
|
"updatedAt": "2025-06-18T10:00:59.260Z",
|
||||||
"scannedAt": "2025-06-18T09:27:19.819Z"
|
"scannedAt": "2025-06-18T10:00:59.260Z"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -56,9 +56,9 @@
|
|||||||
"description": "专业角色,提供特定领域的专业能力",
|
"description": "专业角色,提供特定领域的专业能力",
|
||||||
"reference": "@package://prompt/domain/frontend-developer/frontend-developer.role.md",
|
"reference": "@package://prompt/domain/frontend-developer/frontend-developer.role.md",
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"createdAt": "2025-06-18T09:27:19.819Z",
|
"createdAt": "2025-06-18T10:00:59.260Z",
|
||||||
"updatedAt": "2025-06-18T09:27:19.819Z",
|
"updatedAt": "2025-06-18T10:00:59.260Z",
|
||||||
"scannedAt": "2025-06-18T09:27:19.819Z"
|
"scannedAt": "2025-06-18T10:00:59.260Z"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -69,9 +69,9 @@
|
|||||||
"description": "思维模式,指导AI的思考方式",
|
"description": "思维模式,指导AI的思考方式",
|
||||||
"reference": "@package://prompt/domain/frontend-developer/thought/frontend-developer.thought.md",
|
"reference": "@package://prompt/domain/frontend-developer/thought/frontend-developer.thought.md",
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"createdAt": "2025-06-18T09:27:19.819Z",
|
"createdAt": "2025-06-18T10:00:59.260Z",
|
||||||
"updatedAt": "2025-06-18T09:27:19.819Z",
|
"updatedAt": "2025-06-18T10:00:59.260Z",
|
||||||
"scannedAt": "2025-06-18T09:27:19.819Z"
|
"scannedAt": "2025-06-18T10:00:59.260Z"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -82,9 +82,9 @@
|
|||||||
"description": "执行模式,定义具体的行为模式",
|
"description": "执行模式,定义具体的行为模式",
|
||||||
"reference": "@package://prompt/domain/java-backend-developer/execution/code-quality.execution.md",
|
"reference": "@package://prompt/domain/java-backend-developer/execution/code-quality.execution.md",
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"createdAt": "2025-06-18T09:27:19.819Z",
|
"createdAt": "2025-06-18T10:00:59.260Z",
|
||||||
"updatedAt": "2025-06-18T09:27:19.819Z",
|
"updatedAt": "2025-06-18T10:00:59.260Z",
|
||||||
"scannedAt": "2025-06-18T09:27:19.819Z"
|
"scannedAt": "2025-06-18T10:00:59.260Z"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -95,9 +95,9 @@
|
|||||||
"description": "执行模式,定义具体的行为模式",
|
"description": "执行模式,定义具体的行为模式",
|
||||||
"reference": "@package://prompt/domain/frontend-developer/execution/frontend-developer.execution.md",
|
"reference": "@package://prompt/domain/frontend-developer/execution/frontend-developer.execution.md",
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"createdAt": "2025-06-18T09:27:19.819Z",
|
"createdAt": "2025-06-18T10:00:59.260Z",
|
||||||
"updatedAt": "2025-06-18T09:27:19.819Z",
|
"updatedAt": "2025-06-18T10:00:59.260Z",
|
||||||
"scannedAt": "2025-06-18T09:27:19.819Z"
|
"scannedAt": "2025-06-18T10:00:59.260Z"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -108,9 +108,9 @@
|
|||||||
"description": "执行模式,定义具体的行为模式",
|
"description": "执行模式,定义具体的行为模式",
|
||||||
"reference": "@package://prompt/domain/frontend-developer/execution/technical-architecture.execution.md",
|
"reference": "@package://prompt/domain/frontend-developer/execution/technical-architecture.execution.md",
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"createdAt": "2025-06-18T09:27:19.819Z",
|
"createdAt": "2025-06-18T10:00:59.260Z",
|
||||||
"updatedAt": "2025-06-18T09:27:19.819Z",
|
"updatedAt": "2025-06-18T10:00:59.260Z",
|
||||||
"scannedAt": "2025-06-18T09:27:19.819Z"
|
"scannedAt": "2025-06-18T10:00:59.260Z"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -121,9 +121,9 @@
|
|||||||
"description": "执行模式,定义具体的行为模式",
|
"description": "执行模式,定义具体的行为模式",
|
||||||
"reference": "@package://prompt/domain/frontend-developer/execution/user-experience.execution.md",
|
"reference": "@package://prompt/domain/frontend-developer/execution/user-experience.execution.md",
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"createdAt": "2025-06-18T09:27:19.819Z",
|
"createdAt": "2025-06-18T10:00:59.260Z",
|
||||||
"updatedAt": "2025-06-18T09:27:19.819Z",
|
"updatedAt": "2025-06-18T10:00:59.260Z",
|
||||||
"scannedAt": "2025-06-18T09:27:19.819Z"
|
"scannedAt": "2025-06-18T10:00:59.260Z"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -134,9 +134,9 @@
|
|||||||
"description": "执行模式,定义具体的行为模式",
|
"description": "执行模式,定义具体的行为模式",
|
||||||
"reference": "@package://prompt/domain/frontend-developer/execution/wechat-miniprogram-development.execution.md",
|
"reference": "@package://prompt/domain/frontend-developer/execution/wechat-miniprogram-development.execution.md",
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"createdAt": "2025-06-18T09:27:19.819Z",
|
"createdAt": "2025-06-18T10:00:59.260Z",
|
||||||
"updatedAt": "2025-06-18T09:27:19.819Z",
|
"updatedAt": "2025-06-18T10:00:59.260Z",
|
||||||
"scannedAt": "2025-06-18T09:27:19.819Z"
|
"scannedAt": "2025-06-18T10:00:59.260Z"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -147,9 +147,9 @@
|
|||||||
"description": "专业角色,提供特定领域的专业能力",
|
"description": "专业角色,提供特定领域的专业能力",
|
||||||
"reference": "@package://prompt/domain/java-backend-developer/java-backend-developer.role.md",
|
"reference": "@package://prompt/domain/java-backend-developer/java-backend-developer.role.md",
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"createdAt": "2025-06-18T09:27:19.819Z",
|
"createdAt": "2025-06-18T10:00:59.260Z",
|
||||||
"updatedAt": "2025-06-18T09:27:19.819Z",
|
"updatedAt": "2025-06-18T10:00:59.260Z",
|
||||||
"scannedAt": "2025-06-18T09:27:19.819Z"
|
"scannedAt": "2025-06-18T10:00:59.260Z"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -160,9 +160,9 @@
|
|||||||
"description": "思维模式,指导AI的思考方式",
|
"description": "思维模式,指导AI的思考方式",
|
||||||
"reference": "@package://prompt/domain/java-backend-developer/thought/java-backend-developer.thought.md",
|
"reference": "@package://prompt/domain/java-backend-developer/thought/java-backend-developer.thought.md",
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"createdAt": "2025-06-18T09:27:19.819Z",
|
"createdAt": "2025-06-18T10:00:59.260Z",
|
||||||
"updatedAt": "2025-06-18T09:27:19.819Z",
|
"updatedAt": "2025-06-18T10:00:59.260Z",
|
||||||
"scannedAt": "2025-06-18T09:27:19.819Z"
|
"scannedAt": "2025-06-18T10:00:59.260Z"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -173,9 +173,9 @@
|
|||||||
"description": "执行模式,定义具体的行为模式",
|
"description": "执行模式,定义具体的行为模式",
|
||||||
"reference": "@package://prompt/domain/java-backend-developer/execution/database-design.execution.md",
|
"reference": "@package://prompt/domain/java-backend-developer/execution/database-design.execution.md",
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"createdAt": "2025-06-18T09:27:19.819Z",
|
"createdAt": "2025-06-18T10:00:59.260Z",
|
||||||
"updatedAt": "2025-06-18T09:27:19.819Z",
|
"updatedAt": "2025-06-18T10:00:59.260Z",
|
||||||
"scannedAt": "2025-06-18T09:27:19.819Z"
|
"scannedAt": "2025-06-18T10:00:59.260Z"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -186,9 +186,9 @@
|
|||||||
"description": "执行模式,定义具体的行为模式",
|
"description": "执行模式,定义具体的行为模式",
|
||||||
"reference": "@package://prompt/domain/java-backend-developer/execution/java-backend-developer.execution.md",
|
"reference": "@package://prompt/domain/java-backend-developer/execution/java-backend-developer.execution.md",
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"createdAt": "2025-06-18T09:27:19.819Z",
|
"createdAt": "2025-06-18T10:00:59.260Z",
|
||||||
"updatedAt": "2025-06-18T09:27:19.819Z",
|
"updatedAt": "2025-06-18T10:00:59.260Z",
|
||||||
"scannedAt": "2025-06-18T09:27:19.819Z"
|
"scannedAt": "2025-06-18T10:00:59.260Z"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -199,9 +199,9 @@
|
|||||||
"description": "执行模式,定义具体的行为模式",
|
"description": "执行模式,定义具体的行为模式",
|
||||||
"reference": "@package://prompt/domain/java-backend-developer/execution/spring-ecosystem.execution.md",
|
"reference": "@package://prompt/domain/java-backend-developer/execution/spring-ecosystem.execution.md",
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"createdAt": "2025-06-18T09:27:19.819Z",
|
"createdAt": "2025-06-18T10:00:59.260Z",
|
||||||
"updatedAt": "2025-06-18T09:27:19.819Z",
|
"updatedAt": "2025-06-18T10:00:59.260Z",
|
||||||
"scannedAt": "2025-06-18T09:27:19.819Z"
|
"scannedAt": "2025-06-18T10:00:59.260Z"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -212,9 +212,9 @@
|
|||||||
"description": "执行模式,定义具体的行为模式",
|
"description": "执行模式,定义具体的行为模式",
|
||||||
"reference": "@package://prompt/domain/java-backend-developer/execution/system-architecture.execution.md",
|
"reference": "@package://prompt/domain/java-backend-developer/execution/system-architecture.execution.md",
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"createdAt": "2025-06-18T09:27:19.819Z",
|
"createdAt": "2025-06-18T10:00:59.260Z",
|
||||||
"updatedAt": "2025-06-18T09:27:19.819Z",
|
"updatedAt": "2025-06-18T10:00:59.260Z",
|
||||||
"scannedAt": "2025-06-18T09:27:19.819Z"
|
"scannedAt": "2025-06-18T10:00:59.260Z"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -225,9 +225,9 @@
|
|||||||
"description": "专业角色,提供特定领域的专业能力",
|
"description": "专业角色,提供特定领域的专业能力",
|
||||||
"reference": "@package://prompt/domain/nuwa/nuwa.role.md",
|
"reference": "@package://prompt/domain/nuwa/nuwa.role.md",
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"createdAt": "2025-06-18T09:27:19.820Z",
|
"createdAt": "2025-06-18T10:00:59.261Z",
|
||||||
"updatedAt": "2025-06-18T09:27:19.820Z",
|
"updatedAt": "2025-06-18T10:00:59.261Z",
|
||||||
"scannedAt": "2025-06-18T09:27:19.820Z"
|
"scannedAt": "2025-06-18T10:00:59.261Z"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -238,9 +238,9 @@
|
|||||||
"description": "思维模式,指导AI的思考方式",
|
"description": "思维模式,指导AI的思考方式",
|
||||||
"reference": "@package://prompt/domain/nuwa/thought/role-creation.thought.md",
|
"reference": "@package://prompt/domain/nuwa/thought/role-creation.thought.md",
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"createdAt": "2025-06-18T09:27:19.820Z",
|
"createdAt": "2025-06-18T10:00:59.261Z",
|
||||||
"updatedAt": "2025-06-18T09:27:19.820Z",
|
"updatedAt": "2025-06-18T10:00:59.261Z",
|
||||||
"scannedAt": "2025-06-18T09:27:19.820Z"
|
"scannedAt": "2025-06-18T10:00:59.261Z"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -251,9 +251,9 @@
|
|||||||
"description": "执行模式,定义具体的行为模式",
|
"description": "执行模式,定义具体的行为模式",
|
||||||
"reference": "@package://prompt/domain/nuwa/execution/dpml-authoring.execution.md",
|
"reference": "@package://prompt/domain/nuwa/execution/dpml-authoring.execution.md",
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"createdAt": "2025-06-18T09:27:19.820Z",
|
"createdAt": "2025-06-18T10:00:59.261Z",
|
||||||
"updatedAt": "2025-06-18T09:27:19.820Z",
|
"updatedAt": "2025-06-18T10:00:59.261Z",
|
||||||
"scannedAt": "2025-06-18T09:27:19.820Z"
|
"scannedAt": "2025-06-18T10:00:59.261Z"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -264,9 +264,9 @@
|
|||||||
"description": "执行模式,定义具体的行为模式",
|
"description": "执行模式,定义具体的行为模式",
|
||||||
"reference": "@package://prompt/domain/nuwa/execution/role-design-patterns.execution.md",
|
"reference": "@package://prompt/domain/nuwa/execution/role-design-patterns.execution.md",
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"createdAt": "2025-06-18T09:27:19.820Z",
|
"createdAt": "2025-06-18T10:00:59.261Z",
|
||||||
"updatedAt": "2025-06-18T09:27:19.820Z",
|
"updatedAt": "2025-06-18T10:00:59.261Z",
|
||||||
"scannedAt": "2025-06-18T09:27:19.820Z"
|
"scannedAt": "2025-06-18T10:00:59.261Z"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -277,9 +277,9 @@
|
|||||||
"description": "执行模式,定义具体的行为模式",
|
"description": "执行模式,定义具体的行为模式",
|
||||||
"reference": "@package://prompt/domain/nuwa/execution/role-generation.execution.md",
|
"reference": "@package://prompt/domain/nuwa/execution/role-generation.execution.md",
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"createdAt": "2025-06-18T09:27:19.820Z",
|
"createdAt": "2025-06-18T10:00:59.261Z",
|
||||||
"updatedAt": "2025-06-18T09:27:19.820Z",
|
"updatedAt": "2025-06-18T10:00:59.261Z",
|
||||||
"scannedAt": "2025-06-18T09:27:19.820Z"
|
"scannedAt": "2025-06-18T10:00:59.261Z"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -290,9 +290,9 @@
|
|||||||
"description": "执行模式,定义具体的行为模式",
|
"description": "执行模式,定义具体的行为模式",
|
||||||
"reference": "@package://prompt/domain/nuwa/execution/visualization-enhancement.execution.md",
|
"reference": "@package://prompt/domain/nuwa/execution/visualization-enhancement.execution.md",
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"createdAt": "2025-06-18T09:27:19.820Z",
|
"createdAt": "2025-06-18T10:00:59.261Z",
|
||||||
"updatedAt": "2025-06-18T09:27:19.820Z",
|
"updatedAt": "2025-06-18T10:00:59.261Z",
|
||||||
"scannedAt": "2025-06-18T09:27:19.820Z"
|
"scannedAt": "2025-06-18T10:00:59.261Z"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -303,9 +303,9 @@
|
|||||||
"description": "专业角色,提供特定领域的专业能力",
|
"description": "专业角色,提供特定领域的专业能力",
|
||||||
"reference": "@package://prompt/domain/product-manager/product-manager.role.md",
|
"reference": "@package://prompt/domain/product-manager/product-manager.role.md",
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"createdAt": "2025-06-18T09:27:19.820Z",
|
"createdAt": "2025-06-18T10:00:59.261Z",
|
||||||
"updatedAt": "2025-06-18T09:27:19.820Z",
|
"updatedAt": "2025-06-18T10:00:59.261Z",
|
||||||
"scannedAt": "2025-06-18T09:27:19.820Z"
|
"scannedAt": "2025-06-18T10:00:59.261Z"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -316,9 +316,9 @@
|
|||||||
"description": "思维模式,指导AI的思考方式",
|
"description": "思维模式,指导AI的思考方式",
|
||||||
"reference": "@package://prompt/domain/product-manager/thought/product-manager.thought.md",
|
"reference": "@package://prompt/domain/product-manager/thought/product-manager.thought.md",
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"createdAt": "2025-06-18T09:27:19.820Z",
|
"createdAt": "2025-06-18T10:00:59.262Z",
|
||||||
"updatedAt": "2025-06-18T09:27:19.820Z",
|
"updatedAt": "2025-06-18T10:00:59.262Z",
|
||||||
"scannedAt": "2025-06-18T09:27:19.820Z"
|
"scannedAt": "2025-06-18T10:00:59.262Z"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -329,9 +329,9 @@
|
|||||||
"description": "执行模式,定义具体的行为模式",
|
"description": "执行模式,定义具体的行为模式",
|
||||||
"reference": "@package://prompt/domain/product-manager/execution/market-analysis.execution.md",
|
"reference": "@package://prompt/domain/product-manager/execution/market-analysis.execution.md",
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"createdAt": "2025-06-18T09:27:19.820Z",
|
"createdAt": "2025-06-18T10:00:59.262Z",
|
||||||
"updatedAt": "2025-06-18T09:27:19.820Z",
|
"updatedAt": "2025-06-18T10:00:59.262Z",
|
||||||
"scannedAt": "2025-06-18T09:27:19.820Z"
|
"scannedAt": "2025-06-18T10:00:59.262Z"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -342,9 +342,9 @@
|
|||||||
"description": "执行模式,定义具体的行为模式",
|
"description": "执行模式,定义具体的行为模式",
|
||||||
"reference": "@package://prompt/domain/product-manager/execution/product-manager.execution.md",
|
"reference": "@package://prompt/domain/product-manager/execution/product-manager.execution.md",
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"createdAt": "2025-06-18T09:27:19.820Z",
|
"createdAt": "2025-06-18T10:00:59.262Z",
|
||||||
"updatedAt": "2025-06-18T09:27:19.820Z",
|
"updatedAt": "2025-06-18T10:00:59.262Z",
|
||||||
"scannedAt": "2025-06-18T09:27:19.820Z"
|
"scannedAt": "2025-06-18T10:00:59.262Z"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -355,9 +355,9 @@
|
|||||||
"description": "执行模式,定义具体的行为模式",
|
"description": "执行模式,定义具体的行为模式",
|
||||||
"reference": "@package://prompt/domain/product-manager/execution/user-research.execution.md",
|
"reference": "@package://prompt/domain/product-manager/execution/user-research.execution.md",
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"createdAt": "2025-06-18T09:27:19.820Z",
|
"createdAt": "2025-06-18T10:00:59.262Z",
|
||||||
"updatedAt": "2025-06-18T09:27:19.820Z",
|
"updatedAt": "2025-06-18T10:00:59.262Z",
|
||||||
"scannedAt": "2025-06-18T09:27:19.820Z"
|
"scannedAt": "2025-06-18T10:00:59.262Z"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -368,9 +368,9 @@
|
|||||||
"description": "专业角色,提供特定领域的专业能力",
|
"description": "专业角色,提供特定领域的专业能力",
|
||||||
"reference": "@package://prompt/domain/sean/sean.role.md",
|
"reference": "@package://prompt/domain/sean/sean.role.md",
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"createdAt": "2025-06-18T09:27:19.820Z",
|
"createdAt": "2025-06-18T10:00:59.262Z",
|
||||||
"updatedAt": "2025-06-18T09:27:19.820Z",
|
"updatedAt": "2025-06-18T10:00:59.262Z",
|
||||||
"scannedAt": "2025-06-18T09:27:19.820Z"
|
"scannedAt": "2025-06-18T10:00:59.262Z"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -381,9 +381,9 @@
|
|||||||
"description": "思维模式,指导AI的思考方式",
|
"description": "思维模式,指导AI的思考方式",
|
||||||
"reference": "@package://prompt/domain/sean/thought/sean.thought.md",
|
"reference": "@package://prompt/domain/sean/thought/sean.thought.md",
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"createdAt": "2025-06-18T09:27:19.820Z",
|
"createdAt": "2025-06-18T10:00:59.262Z",
|
||||||
"updatedAt": "2025-06-18T09:27:19.820Z",
|
"updatedAt": "2025-06-18T10:00:59.262Z",
|
||||||
"scannedAt": "2025-06-18T09:27:19.820Z"
|
"scannedAt": "2025-06-18T10:00:59.262Z"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -394,9 +394,9 @@
|
|||||||
"description": "执行模式,定义具体的行为模式",
|
"description": "执行模式,定义具体的行为模式",
|
||||||
"reference": "@package://prompt/domain/sean/execution/sean-decision-framework.execution.md",
|
"reference": "@package://prompt/domain/sean/execution/sean-decision-framework.execution.md",
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"createdAt": "2025-06-18T09:27:19.820Z",
|
"createdAt": "2025-06-18T10:00:59.262Z",
|
||||||
"updatedAt": "2025-06-18T09:27:19.820Z",
|
"updatedAt": "2025-06-18T10:00:59.262Z",
|
||||||
"scannedAt": "2025-06-18T09:27:19.820Z"
|
"scannedAt": "2025-06-18T10:00:59.262Z"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -407,9 +407,9 @@
|
|||||||
"description": "专业角色,提供特定领域的专业能力",
|
"description": "专业角色,提供特定领域的专业能力",
|
||||||
"reference": "@package://prompt/domain/xiaohongshu-marketer/xiaohongshu-marketer.role.md",
|
"reference": "@package://prompt/domain/xiaohongshu-marketer/xiaohongshu-marketer.role.md",
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"createdAt": "2025-06-18T09:27:19.820Z",
|
"createdAt": "2025-06-18T10:00:59.262Z",
|
||||||
"updatedAt": "2025-06-18T09:27:19.820Z",
|
"updatedAt": "2025-06-18T10:00:59.262Z",
|
||||||
"scannedAt": "2025-06-18T09:27:19.820Z"
|
"scannedAt": "2025-06-18T10:00:59.262Z"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -420,9 +420,9 @@
|
|||||||
"description": "思维模式,指导AI的思考方式",
|
"description": "思维模式,指导AI的思考方式",
|
||||||
"reference": "@package://prompt/domain/xiaohongshu-marketer/thought/xiaohongshu-marketer.thought.md",
|
"reference": "@package://prompt/domain/xiaohongshu-marketer/thought/xiaohongshu-marketer.thought.md",
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"createdAt": "2025-06-18T09:27:19.820Z",
|
"createdAt": "2025-06-18T10:00:59.262Z",
|
||||||
"updatedAt": "2025-06-18T09:27:19.820Z",
|
"updatedAt": "2025-06-18T10:00:59.262Z",
|
||||||
"scannedAt": "2025-06-18T09:27:19.820Z"
|
"scannedAt": "2025-06-18T10:00:59.262Z"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -433,9 +433,9 @@
|
|||||||
"description": "执行模式,定义具体的行为模式",
|
"description": "执行模式,定义具体的行为模式",
|
||||||
"reference": "@package://prompt/domain/xiaohongshu-marketer/execution/brand-marketing.execution.md",
|
"reference": "@package://prompt/domain/xiaohongshu-marketer/execution/brand-marketing.execution.md",
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"createdAt": "2025-06-18T09:27:19.820Z",
|
"createdAt": "2025-06-18T10:00:59.262Z",
|
||||||
"updatedAt": "2025-06-18T09:27:19.820Z",
|
"updatedAt": "2025-06-18T10:00:59.262Z",
|
||||||
"scannedAt": "2025-06-18T09:27:19.820Z"
|
"scannedAt": "2025-06-18T10:00:59.262Z"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -446,9 +446,9 @@
|
|||||||
"description": "执行模式,定义具体的行为模式",
|
"description": "执行模式,定义具体的行为模式",
|
||||||
"reference": "@package://prompt/domain/xiaohongshu-marketer/execution/community-building.execution.md",
|
"reference": "@package://prompt/domain/xiaohongshu-marketer/execution/community-building.execution.md",
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"createdAt": "2025-06-18T09:27:19.820Z",
|
"createdAt": "2025-06-18T10:00:59.262Z",
|
||||||
"updatedAt": "2025-06-18T09:27:19.820Z",
|
"updatedAt": "2025-06-18T10:00:59.262Z",
|
||||||
"scannedAt": "2025-06-18T09:27:19.820Z"
|
"scannedAt": "2025-06-18T10:00:59.262Z"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -459,9 +459,9 @@
|
|||||||
"description": "执行模式,定义具体的行为模式",
|
"description": "执行模式,定义具体的行为模式",
|
||||||
"reference": "@package://prompt/domain/xiaohongshu-marketer/execution/content-creation.execution.md",
|
"reference": "@package://prompt/domain/xiaohongshu-marketer/execution/content-creation.execution.md",
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"createdAt": "2025-06-18T09:27:19.820Z",
|
"createdAt": "2025-06-18T10:00:59.262Z",
|
||||||
"updatedAt": "2025-06-18T09:27:19.820Z",
|
"updatedAt": "2025-06-18T10:00:59.262Z",
|
||||||
"scannedAt": "2025-06-18T09:27:19.820Z"
|
"scannedAt": "2025-06-18T10:00:59.262Z"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -472,9 +472,9 @@
|
|||||||
"description": "执行模式,定义具体的行为模式",
|
"description": "执行模式,定义具体的行为模式",
|
||||||
"reference": "@package://prompt/domain/xiaohongshu-marketer/execution/content-optimization.execution.md",
|
"reference": "@package://prompt/domain/xiaohongshu-marketer/execution/content-optimization.execution.md",
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"createdAt": "2025-06-18T09:27:19.820Z",
|
"createdAt": "2025-06-18T10:00:59.262Z",
|
||||||
"updatedAt": "2025-06-18T09:27:19.820Z",
|
"updatedAt": "2025-06-18T10:00:59.262Z",
|
||||||
"scannedAt": "2025-06-18T09:27:19.820Z"
|
"scannedAt": "2025-06-18T10:00:59.262Z"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -485,9 +485,9 @@
|
|||||||
"description": "执行模式,定义具体的行为模式",
|
"description": "执行模式,定义具体的行为模式",
|
||||||
"reference": "@package://prompt/domain/xiaohongshu-marketer/execution/data-analytics.execution.md",
|
"reference": "@package://prompt/domain/xiaohongshu-marketer/execution/data-analytics.execution.md",
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"createdAt": "2025-06-18T09:27:19.820Z",
|
"createdAt": "2025-06-18T10:00:59.262Z",
|
||||||
"updatedAt": "2025-06-18T09:27:19.820Z",
|
"updatedAt": "2025-06-18T10:00:59.262Z",
|
||||||
"scannedAt": "2025-06-18T09:27:19.820Z"
|
"scannedAt": "2025-06-18T10:00:59.262Z"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -498,9 +498,9 @@
|
|||||||
"description": "执行模式,定义具体的行为模式",
|
"description": "执行模式,定义具体的行为模式",
|
||||||
"reference": "@package://prompt/domain/xiaohongshu-marketer/execution/ecommerce-conversion.execution.md",
|
"reference": "@package://prompt/domain/xiaohongshu-marketer/execution/ecommerce-conversion.execution.md",
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"createdAt": "2025-06-18T09:27:19.820Z",
|
"createdAt": "2025-06-18T10:00:59.262Z",
|
||||||
"updatedAt": "2025-06-18T09:27:19.820Z",
|
"updatedAt": "2025-06-18T10:00:59.262Z",
|
||||||
"scannedAt": "2025-06-18T09:27:19.820Z"
|
"scannedAt": "2025-06-18T10:00:59.262Z"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -511,9 +511,9 @@
|
|||||||
"description": "执行模式,定义具体的行为模式",
|
"description": "执行模式,定义具体的行为模式",
|
||||||
"reference": "@package://prompt/domain/xiaohongshu-marketer/execution/performance-optimization.execution.md",
|
"reference": "@package://prompt/domain/xiaohongshu-marketer/execution/performance-optimization.execution.md",
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"createdAt": "2025-06-18T09:27:19.820Z",
|
"createdAt": "2025-06-18T10:00:59.262Z",
|
||||||
"updatedAt": "2025-06-18T09:27:19.820Z",
|
"updatedAt": "2025-06-18T10:00:59.262Z",
|
||||||
"scannedAt": "2025-06-18T09:27:19.820Z"
|
"scannedAt": "2025-06-18T10:00:59.262Z"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -524,9 +524,9 @@
|
|||||||
"description": "执行模式,定义具体的行为模式",
|
"description": "执行模式,定义具体的行为模式",
|
||||||
"reference": "@package://prompt/domain/xiaohongshu-marketer/execution/platform-compliance.execution.md",
|
"reference": "@package://prompt/domain/xiaohongshu-marketer/execution/platform-compliance.execution.md",
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"createdAt": "2025-06-18T09:27:19.820Z",
|
"createdAt": "2025-06-18T10:00:59.262Z",
|
||||||
"updatedAt": "2025-06-18T09:27:19.820Z",
|
"updatedAt": "2025-06-18T10:00:59.262Z",
|
||||||
"scannedAt": "2025-06-18T09:27:19.820Z"
|
"scannedAt": "2025-06-18T10:00:59.262Z"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -537,9 +537,9 @@
|
|||||||
"description": "执行模式,定义具体的行为模式",
|
"description": "执行模式,定义具体的行为模式",
|
||||||
"reference": "@package://prompt/domain/xiaohongshu-marketer/execution/team-collaboration.execution.md",
|
"reference": "@package://prompt/domain/xiaohongshu-marketer/execution/team-collaboration.execution.md",
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"createdAt": "2025-06-18T09:27:19.820Z",
|
"createdAt": "2025-06-18T10:00:59.262Z",
|
||||||
"updatedAt": "2025-06-18T09:27:19.820Z",
|
"updatedAt": "2025-06-18T10:00:59.262Z",
|
||||||
"scannedAt": "2025-06-18T09:27:19.820Z"
|
"scannedAt": "2025-06-18T10:00:59.262Z"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -550,9 +550,9 @@
|
|||||||
"description": "执行模式,定义具体的行为模式",
|
"description": "执行模式,定义具体的行为模式",
|
||||||
"reference": "@package://prompt/domain/xiaohongshu-marketer/execution/user-operation.execution.md",
|
"reference": "@package://prompt/domain/xiaohongshu-marketer/execution/user-operation.execution.md",
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"createdAt": "2025-06-18T09:27:19.821Z",
|
"createdAt": "2025-06-18T10:00:59.262Z",
|
||||||
"updatedAt": "2025-06-18T09:27:19.821Z",
|
"updatedAt": "2025-06-18T10:00:59.262Z",
|
||||||
"scannedAt": "2025-06-18T09:27:19.821Z"
|
"scannedAt": "2025-06-18T10:00:59.262Z"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -563,9 +563,22 @@
|
|||||||
"description": "执行模式,定义具体的行为模式",
|
"description": "执行模式,定义具体的行为模式",
|
||||||
"reference": "@package://prompt/domain/xiaohongshu-marketer/execution/xiaohongshu-marketer.execution.md",
|
"reference": "@package://prompt/domain/xiaohongshu-marketer/execution/xiaohongshu-marketer.execution.md",
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"createdAt": "2025-06-18T09:27:19.821Z",
|
"createdAt": "2025-06-18T10:00:59.262Z",
|
||||||
"updatedAt": "2025-06-18T09:27:19.821Z",
|
"updatedAt": "2025-06-18T10:00:59.262Z",
|
||||||
"scannedAt": "2025-06-18T09:27:19.821Z"
|
"scannedAt": "2025-06-18T10:00:59.262Z"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "dacp-email-sending",
|
||||||
|
"source": "package",
|
||||||
|
"protocol": "execution",
|
||||||
|
"name": "Dacp Email Sending 执行模式",
|
||||||
|
"description": "执行模式,定义具体的行为模式",
|
||||||
|
"reference": "@package://prompt/core/dacp-email-sending.execution.md",
|
||||||
|
"metadata": {
|
||||||
|
"createdAt": "2025-06-18T10:00:59.263Z",
|
||||||
|
"updatedAt": "2025-06-18T10:00:59.263Z",
|
||||||
|
"scannedAt": "2025-06-18T10:00:59.263Z"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -576,9 +589,9 @@
|
|||||||
"description": "执行模式,定义具体的行为模式",
|
"description": "执行模式,定义具体的行为模式",
|
||||||
"reference": "@package://prompt/core/dacp-service-calling.execution.md",
|
"reference": "@package://prompt/core/dacp-service-calling.execution.md",
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"createdAt": "2025-06-18T09:27:19.821Z",
|
"createdAt": "2025-06-18T10:00:59.263Z",
|
||||||
"updatedAt": "2025-06-18T09:27:19.821Z",
|
"updatedAt": "2025-06-18T10:00:59.263Z",
|
||||||
"scannedAt": "2025-06-18T09:27:19.821Z"
|
"scannedAt": "2025-06-18T10:00:59.263Z"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -589,9 +602,9 @@
|
|||||||
"description": "思维模式,指导AI的思考方式",
|
"description": "思维模式,指导AI的思考方式",
|
||||||
"reference": "@package://prompt/core/recall.thought.md",
|
"reference": "@package://prompt/core/recall.thought.md",
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"createdAt": "2025-06-18T09:27:19.821Z",
|
"createdAt": "2025-06-18T10:00:59.263Z",
|
||||||
"updatedAt": "2025-06-18T09:27:19.821Z",
|
"updatedAt": "2025-06-18T10:00:59.263Z",
|
||||||
"scannedAt": "2025-06-18T09:27:19.821Z"
|
"scannedAt": "2025-06-18T10:00:59.263Z"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -602,21 +615,21 @@
|
|||||||
"description": "思维模式,指导AI的思考方式",
|
"description": "思维模式,指导AI的思考方式",
|
||||||
"reference": "@package://prompt/core/remember.thought.md",
|
"reference": "@package://prompt/core/remember.thought.md",
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"createdAt": "2025-06-18T09:27:19.821Z",
|
"createdAt": "2025-06-18T10:00:59.263Z",
|
||||||
"updatedAt": "2025-06-18T09:27:19.821Z",
|
"updatedAt": "2025-06-18T10:00:59.263Z",
|
||||||
"scannedAt": "2025-06-18T09:27:19.821Z"
|
"scannedAt": "2025-06-18T10:00:59.263Z"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"stats": {
|
"stats": {
|
||||||
"totalResources": 46,
|
"totalResources": 47,
|
||||||
"byProtocol": {
|
"byProtocol": {
|
||||||
"role": 7,
|
"role": 7,
|
||||||
"thought": 9,
|
"thought": 9,
|
||||||
"execution": 30
|
"execution": 31
|
||||||
},
|
},
|
||||||
"bySource": {
|
"bySource": {
|
||||||
"package": 46
|
"package": 47
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user