小白龙 Bailongma - 初始提交

自主操作员与思考搭档系统。
包含 orchestrator-v2 多Agent编排层、后台意识引擎、记忆系统、ACUI 组件。
This commit is contained in:
chengjiaxi
2026-05-22 19:22:06 +08:00
commit 664ffb3834
64 changed files with 111533 additions and 0 deletions

View File

@@ -0,0 +1,255 @@
const fs = require('fs');
const path = require('path');
const API_KEY = process.env.LLM_API_KEY || 'sk-101284b1159f41f68bc1e565972d89e8';
const BASE_URL = process.env.LLM_BASE_URL || 'https://api.deepseek.com/v1';
const MODEL = process.env.LLM_MODEL || 'deepseek-chat';
// Product context given to every module
const PRODUCT_CONTEXT = `
产品名称小白龙BaiLongma
产品定位本地私有化部署的AI Agent框架面向开发者和技术团队
核心能力:
- 多Agent并行编排236个角色模板28个分类
- 5层持久化引擎SQLite会话+Memory Provider+Background Review+Curator+Context Compressor
- 自进化闭环:从经验创建技能→使用中改进技能→主动持久化知识→跨会话构建深度理解
- 48个内置工具+9个已安装工具可扩展
- ACUI可视化卡片推送WeatherCard等Web Components
- 全平台消息接入本地TUI/微信/Discord/飞书/企业微信)
- 隐私优先所有数据存储在本地LLM调用可选DeepSeek/其他)
- 已解除安全沙箱限制
产品形态:
- 底层AI Agent框架Node.js
- 编排层orchestrator-v2 v3.0
- 交互层ACUI Web组件
- 部署方式本地安装npm/手动)
目标用户:
- 个人开发者(技术极客)
- 中小企业技术团队
- AI初创公司
- 企业内部工具团队
差异化优势:
- 真正本地私有部署(数据不出域)
- 开箱即用的多Agent编排
- 自进化能力(记忆→技能→提升)
- 多平台消息统一接入
`;
const modules = [
{
id: 'module_1_market',
name: '市场调研与竞争格局分析师',
prompt: `你是资深AI行业市场分析师。请基于以下产品信息撰写一份完整的市场调研与竞争格局分析报告。
${PRODUCT_CONTEXT}
请覆盖以下内容:
1. **AI Agent市场规模**全球及中国AI Agent市场规模当前估值+2026-2028年CAGR预测细分赛道规模
2. **竞争格局地图**列出主要竞品AutoGPT、Dify、Coze、LangChain、CrewAI等并按以下维度对比开源/闭源、本地部署能力、多Agent支持、易用性、生态成熟度、定价模式
3. **SWOT分析**小白龙的优势Strengths、劣势Weaknesses、机会Opportunities、威胁Threats
4. **市场空白定位**:哪些细分市场目前无人占据,小白龙最有可能切入的蓝海位置
5. **目标市场规模TAM/SAM/SOM**:估算可寻址市场总量
用数据说话给出具体数字和来源引用格式即使是大致估算也要有逻辑推导过程。每个部分不少于300字。`
},
{
id: 'module_2_customer',
name: '目标客户与定价策略分析师',
prompt: `你是资深SaaS商业化顾问。请基于以下产品信息撰写一份完整的目标客户分析与定价策略报告。
${PRODUCT_CONTEXT}
请覆盖以下内容:
1. **ICP理想客户画像**定义3-5个细分客户群体的画像包括公司规模、行业、技术成熟度、痛点、预算范围、决策链
2. **客户需求层次分析**:每个群体的核心需求→期望需求→兴奋需求
3. **定价策略建议**
- 三层产品漏斗设计(引流层/付费层/企业层)
- 每个层的功能边界和定价建议(具体数字)
- 价值锚定策略(对比竞品定价逻辑)
4. **客户生命周期价值估算**CAC、LTV、LTV/CAC ratio付费转化率假设
5. **获客优先级**:按"市场吸引力×可进入性"矩阵排序各客户群
每个部分不少于300字。给出具体数字和逻辑推导。`
},
{
id: 'module_3_marketing',
name: '市场宣传与获客渠道分析师',
prompt: `你是AI产品增长黑客。请基于以下产品信息撰写一份完整的市场宣传与获客渠道策略报告。
${PRODUCT_CONTEXT}
请覆盖以下内容:
1. **价值主张提炼**一句话定位Elevator Pitch、3个核心卖点、品牌调性建议
2. **内容营销策略**
- 博客/技术文章选题策略SEO关键词规划
- 视频/Demo内容B站/YouTube
- 开源社区运营GitHub Star增长策略
- 技术大会/Meetup演讲策略
3. **渠道策略**
- 国内渠道知乎、掘金、B站、公众号、开源中国、CSDN
- 海外渠道Hacker News、Reddit、Dev.to、Twitter/X
- 每个渠道的预期效果(曝光量/转化率)
4. **冷启动计划**前90天具体行动计划每周关键动作
5. **预算分配**假设月预算2万元按渠道分配建议
6. **关键指标KPIs**:定义北极星指标和过程指标
每个部分不少于250字。`
},
{
id: 'module_4_financial',
name: '财务模型分析师',
prompt: `你是AI初创公司财务分析师。请基于以下产品信息撰写一份完整的3年财务模型报告。
${PRODUCT_CONTEXT}
请覆盖以下内容:
1. **收入模型**
- 三层产品线的收入假设(免费用户数→付费转化率→客单价)
- 月/年收入预测36个月
- 收入结构比例(免费引流占比/付费占比/企业占比)
2. **成本结构**
- 开发成本假设1人全栈开发
- 服务器/基础设施成本
- 营销成本
- API调用成本LLM调用费用
- 其他运营成本
3. **盈利预测**
- 月度损益表前36个月
- 盈亏平衡点预测(第几个月)
- 毛利率变化趋势
4. **关键假设与敏感度分析**
- 最乐观/基准/最悲观三种场景
- 哪个变量最敏感(付费转化率/客单价/流失率)
5. **融资建议**
- 何时需要融资、融多少
- 估值逻辑(对比可比公司)
所有数字基于合理假设标注出假设依据。每个部分不少于300字。`
},
{
id: 'module_5_risk',
name: '风险分析与进入路径策略师',
prompt: `你是AI领域风险顾问。请基于以下产品信息撰写一份完整的风险分析与进入路径策略报告。
${PRODUCT_CONTEXT}
请覆盖以下内容:
1. **市场风险**大厂进入竞争字节Coze/百度)、开源替代品威胁、市场教育成本
2. **技术风险**LLM依赖风险API成本/模型更换/隐私)、技术债累积、架构扩展性瓶颈
3. **商业风险**:付费意愿低、盈利模式不确定、差异化被抹平
4. **运营风险**:个人/小团队瓶颈、支持成本、社区运营负担
5. **风险矩阵**:按可能性×影响程度排序,标出每个风险的缓解策略
6. **进入路径建议**
- 阶段一0-3个月MVP验证期关键里程碑
- 阶段二3-6个月早期用户期关键里程碑
- 阶段三6-12个月增长期关键里程碑
- 阶段四12-24个月规模化期关键里程碑
7. **退出策略**:如果失败,资产如何变现/转型方向
每个部分不少于250字。`
}
];
async function callLLM(messages, temperature = 0.7) {
const url = `${BASE_URL}/chat/completions`;
const resp = await fetch(url, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${API_KEY}`
},
body: JSON.stringify({
model: MODEL,
messages,
temperature,
max_tokens: 4096
})
});
if (!resp.ok) {
const err = await resp.text();
throw new Error(`LLM API error ${resp.status}: ${err}`);
}
const data = await resp.json();
return data.choices[0].message.content;
}
async function runModule(mod) {
console.log(`[${new Date().toLocaleTimeString()}] 开始执行: ${mod.name}`);
const start = Date.now();
try {
const content = await callLLM([
{ role: 'system', content: `你是${mod.name}。请输出结构化Markdown报告。` },
{ role: 'user', content: mod.prompt }
]);
const elapsed = ((Date.now() - start) / 1000).toFixed(1);
console.log(`[${new Date().toLocaleTimeString()}] ${mod.name} 完成 (${elapsed}s, ${content.length} chars)`);
return { id: mod.id, name: mod.name, content, ok: true };
} catch (err) {
const elapsed = ((Date.now() - start) / 1000).toFixed(1);
console.error(`[${new Date().toLocaleTimeString()}] ${mod.name} 失败 (${elapsed}s): ${err.message}`);
return { id: mod.id, name: mod.name, error: err.message, ok: false };
}
}
async function main() {
console.log('=== BaiLongma 商业化全维度分析报告 ===');
console.log(`模型: ${MODEL}, 时间: ${new Date().toISOString()}`);
console.log(`产品: 小白龙 (BaiLongma) orchestrator-v2 v3.0`);
console.log(`模块数: ${modules.length}\n`);
// Run all 5 modules in parallel
const results = await Promise.all(modules.map(m => runModule(m)));
// Check results
const successes = results.filter(r => r.ok);
const failures = results.filter(r => !r.ok);
console.log(`\n完成: ${successes.length}/${modules.length}, 失败: ${failures.length}`);
if (failures.length > 0) {
console.log('失败模块:', failures.map(f => `[${f.id}] ${f.name}: ${f.error}`).join('\\n'));
}
// Build combined prompt for summarizer
const combined = successes.map(r =>
`===== ${r.name} =====\n${r.content}`
).join('\n\n');
console.log('\n===== 汇总Agent开始整合报告 =====');
const finalReport = await callLLM([
{
role: 'system',
content: '你是顶级商业策略分析师。你要将5个专业领域分析报告整合成一份完整、连贯、可执行的商业化报告。'
},
{
role: 'user',
content: `以下是对"小白龙BaiLongma"AI Agent框架的5个维度分析结果。请将它们整合成一份完整商业化报告。
要求:
1. **结构**完整报告结构加入执行摘要Executive Summary放在最前面
2. **去重整合**5份报告中重叠的内容合并矛盾的观点做权衡判断
3. **可执行性**:每部分结尾给出"核心建议"Action Item
4. **格式**Markdown格式加目录适合直接阅读
5. **标题**:用中文,加英文副标题
以下是5个模块的原始输出
${combined}`
}
], 0.5);
console.log(`\n汇总报告完成: ${finalReport.length} chars`);
// Write to file
const outputPath = path.join(__dirname, 'report.md');
fs.writeFileSync(outputPath, finalReport, 'utf8');
console.log(`\n报告已写入: ${outputPath}`);
console.log(`文件大小: ${fs.statSync(outputPath).size} bytes`);
}
main().catch(err => {
console.error('Fatal:', err);
process.exit(1);
});