czon 0.7.8 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/process/summary.js +134 -95
- package/dist/services/opencode.js +1 -1
- package/dist/ssg/style.js +6 -0
- package/package.json +1 -1
- package/prompts/summary-artistic.md +131 -0
- package/prompts/summary-base.md +107 -0
- package/prompts/summary-critical.md +149 -0
- package/prompts/summary-historical.md +167 -0
- package/prompts/summary-objective.md +143 -0
- package/prompts/summary-philosophical.md +145 -0
- package/prompts/summary-popular.md +130 -0
- package/prompts/summary-positive.md +128 -0
- package/prompts/summary-psychological.md +174 -0
package/dist/process/summary.js
CHANGED
|
@@ -1,103 +1,142 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.processSummary = void 0;
|
|
4
|
+
const promises_1 = require("fs/promises");
|
|
5
|
+
const fs_1 = require("fs");
|
|
6
|
+
const path_1 = require("path");
|
|
4
7
|
const opencode_1 = require("../services/opencode");
|
|
8
|
+
// Prompt 模板目录路径(在项目根目录的 prompts/ 文件夹中)
|
|
9
|
+
const PROMPTS_DIR = (0, path_1.join)(__dirname, '../../prompts');
|
|
10
|
+
// 风格配置
|
|
11
|
+
const SUMMARY_STYLES = [
|
|
12
|
+
{ skill: 'summary-objective', output: '1-objective.md', name: '客观中立' },
|
|
13
|
+
{ skill: 'summary-critical', output: '2-critical.md', name: '客观批判' },
|
|
14
|
+
{ skill: 'summary-positive', output: '3-positive.md', name: '赞扬鼓励' },
|
|
15
|
+
{ skill: 'summary-popular', output: '4-popular.md', name: '科普介绍' },
|
|
16
|
+
{ skill: 'summary-artistic', output: '5-artistic.md', name: '文艺感性' },
|
|
17
|
+
{ skill: 'summary-philosophical', output: '6-philosophical.md', name: '哲学思辨' },
|
|
18
|
+
{ skill: 'summary-psychological', output: '7-psychological.md', name: '心理分析' },
|
|
19
|
+
{ skill: 'summary-historical', output: '8-history.md', name: '历史时间跨度' },
|
|
20
|
+
];
|
|
21
|
+
/**
|
|
22
|
+
* 读取 Prompt 模板文件内容
|
|
23
|
+
*/
|
|
24
|
+
const loadPromptTemplate = async (templateName) => {
|
|
25
|
+
const templatePath = (0, path_1.join)(PROMPTS_DIR, `${templateName}.md`);
|
|
26
|
+
return (0, promises_1.readFile)(templatePath, 'utf-8');
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* 验证文件是否存在
|
|
30
|
+
*/
|
|
31
|
+
const verifyFileExists = (filePath) => {
|
|
32
|
+
return (0, fs_1.existsSync)(filePath);
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* 生成单个风格的报告
|
|
36
|
+
*/
|
|
37
|
+
const generateStyleReport = async (model, baseContent, styleConfig, cwd) => {
|
|
38
|
+
try {
|
|
39
|
+
const styleContent = await loadPromptTemplate(styleConfig.skill);
|
|
40
|
+
const prompt = `
|
|
41
|
+
${baseContent}
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
${styleContent}
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
# 执行任务
|
|
50
|
+
|
|
51
|
+
请严格按照上述指南,生成「${styleConfig.name}」风格的分析报告。
|
|
52
|
+
|
|
53
|
+
输出文件:SUMMARY/${styleConfig.output}
|
|
54
|
+
|
|
55
|
+
注意:
|
|
56
|
+
1. 必须生成完整的报告文件
|
|
57
|
+
2. 文件必须保存到 SUMMARY/${styleConfig.output}
|
|
58
|
+
3. 确保所有链接使用 ../ 开头的相对路径
|
|
59
|
+
`.trim();
|
|
60
|
+
await (0, opencode_1.runOpenCode)(prompt, { model, cwd });
|
|
61
|
+
// 验证文件是否生成
|
|
62
|
+
const outputPath = (0, path_1.join)(cwd, 'SUMMARY', styleConfig.output);
|
|
63
|
+
if (!verifyFileExists(outputPath)) {
|
|
64
|
+
return {
|
|
65
|
+
success: false,
|
|
66
|
+
error: `文件未生成: ${outputPath}`,
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
return { success: true };
|
|
70
|
+
}
|
|
71
|
+
catch (error) {
|
|
72
|
+
return {
|
|
73
|
+
success: false,
|
|
74
|
+
error: error instanceof Error ? error.message : String(error),
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
};
|
|
78
|
+
/**
|
|
79
|
+
* 主函数:生成所有风格的摘要报告
|
|
80
|
+
*/
|
|
5
81
|
const processSummary = async (model) => {
|
|
6
|
-
const
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
基于逻辑推理和哲学理论,提出有深度的问题和观点,促进读者的思辨能力。
|
|
66
|
-
|
|
67
|
-
7. 心理分析风格 (7-psychological.md)
|
|
68
|
-
|
|
69
|
-
进行深度的心理分析,探讨内容背后的心理动机和行为模式。
|
|
70
|
-
|
|
71
|
-
基于内容,进行 MBTI 分析,分析内容创作者的性格倾向和行为特征,必须给出每个倾向维度的证据。
|
|
72
|
-
|
|
73
|
-
基于内容,进行施瓦茨价值观分析,探讨内容所反映的核心价值观和信念体系,给出价值观的排序和具体例子。
|
|
74
|
-
|
|
75
|
-
基于内容,进行精神分析 (包括心理防御机制、潜意识动机等),必须为每个评价标签给出置信度,给出具体例子,解释其作用和影响。
|
|
76
|
-
|
|
77
|
-
基于内容,分析与作者相关的真实人物关系,探讨内容中不同人物之间的互动和关系动态,揭示其背后的心理机制。
|
|
78
|
-
|
|
79
|
-
8. 历史时间跨度风格 (8-history.md)
|
|
80
|
-
|
|
81
|
-
梳理时间线,以历史发展的视角看待内容的变化。
|
|
82
|
-
|
|
83
|
-
基于时间顺序,分析内容在不同时间点上的演变和发展,揭示其背后的历史脉络和趋势。
|
|
84
|
-
|
|
85
|
-
目的是为了帮助读者理解内容的历史背景和发展过程,提供更全面的视角。
|
|
86
|
-
|
|
87
|
-
基于现有内容,合理推测未来的发展方向和趋势,提供前瞻性的见解。
|
|
88
|
-
|
|
89
|
-
请遵循如下规则:
|
|
90
|
-
1. 切记,以事实内容为依据,不得出现脱离事实的情况。
|
|
91
|
-
2. 内容生成到 SUMMARY 目录中,生成不同的 markdown 文件。
|
|
92
|
-
3. 引用原文链接时,保证链接有效,不要链接一个目录,永远链接到一个具体的 Markdown 文件。并且链接的文本应当是对应的标题,而不是文件名。注意,由于生成到 SUMMARY 目录,引用 Markdown 文件时注意 .. 开头才是项目根目录(相对文件所在的位置)。
|
|
93
|
-
4. 在开头添加 AI 分析的时间日期。注明是 AI 生成,内容仅供参考。
|
|
94
|
-
5. 考虑时间跨度,给予最近的文章更高的权重。
|
|
95
|
-
|
|
96
|
-
`,
|
|
97
|
-
]
|
|
98
|
-
.join('\n')
|
|
99
|
-
.trim();
|
|
100
|
-
await (0, opencode_1.runOpenCode)(prompt, { model });
|
|
82
|
+
const cwd = process.cwd();
|
|
83
|
+
// 加载基础规则
|
|
84
|
+
console.info('📖 加载基础规则...');
|
|
85
|
+
const baseContent = await loadPromptTemplate('summary-base');
|
|
86
|
+
// Phase 0: 清空 SUMMARY 目录
|
|
87
|
+
console.info('🗑️ 清空 SUMMARY 目录...');
|
|
88
|
+
await (0, opencode_1.runOpenCode)('rm -rf SUMMARY && mkdir -p SUMMARY', { model, cwd });
|
|
89
|
+
// Phase 1: 串行生成 8 种风格报告
|
|
90
|
+
console.info(`\n📊 开始生成 ${SUMMARY_STYLES.length} 种风格的分析报告...\n`);
|
|
91
|
+
const results = [];
|
|
92
|
+
for (let i = 0; i < SUMMARY_STYLES.length; i++) {
|
|
93
|
+
const style = SUMMARY_STYLES[i];
|
|
94
|
+
console.info(`[${i + 1}/${SUMMARY_STYLES.length}] 正在生成「${style.name}」风格报告...`);
|
|
95
|
+
const result = await generateStyleReport(model, baseContent, style, cwd);
|
|
96
|
+
results.push({
|
|
97
|
+
name: style.name,
|
|
98
|
+
output: style.output,
|
|
99
|
+
...result,
|
|
100
|
+
});
|
|
101
|
+
if (result.success) {
|
|
102
|
+
console.info(`✅ 「${style.name}」风格报告生成成功\n`);
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
console.error(`❌ 「${style.name}」风格报告生成失败: ${result.error}\n`);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
// Phase 2: 硬性验证
|
|
109
|
+
console.info('\n🔍 验证生成结果...\n');
|
|
110
|
+
const successCount = results.filter(r => r.success).length;
|
|
111
|
+
const failedResults = results.filter(r => !r.success);
|
|
112
|
+
console.info(`📈 生成统计: ${successCount}/${SUMMARY_STYLES.length} 成功\n`);
|
|
113
|
+
if (failedResults.length > 0) {
|
|
114
|
+
console.info('❌ 失败的报告:');
|
|
115
|
+
for (const failed of failedResults) {
|
|
116
|
+
console.info(` - ${failed.name} (${failed.output}): ${failed.error}`);
|
|
117
|
+
}
|
|
118
|
+
console.info('');
|
|
119
|
+
}
|
|
120
|
+
// 验证所有必需文件
|
|
121
|
+
console.info('📁 验证文件存在性:');
|
|
122
|
+
let allFilesExist = true;
|
|
123
|
+
for (const style of SUMMARY_STYLES) {
|
|
124
|
+
const filePath = (0, path_1.join)(cwd, 'SUMMARY', style.output);
|
|
125
|
+
const exists = verifyFileExists(filePath);
|
|
126
|
+
const status = exists ? '✅' : '❌';
|
|
127
|
+
console.info(` ${status} SUMMARY/${style.output}`);
|
|
128
|
+
if (!exists) {
|
|
129
|
+
allFilesExist = false;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
console.info('');
|
|
133
|
+
if (allFilesExist) {
|
|
134
|
+
console.info('🎉 所有分析报告生成完成!');
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
const missingCount = SUMMARY_STYLES.length - successCount;
|
|
138
|
+
throw new Error(`生成不完整: ${missingCount} 个报告未能成功生成。请检查上述错误信息并重试。`);
|
|
139
|
+
}
|
|
101
140
|
};
|
|
102
141
|
exports.processSummary = processSummary;
|
|
103
142
|
//# sourceMappingURL=summary.js.map
|
|
@@ -33,7 +33,7 @@ const runOpenCode = (prompt, options) => {
|
|
|
33
33
|
const signal = options?.signal;
|
|
34
34
|
const cwd = options?.cwd || process.cwd();
|
|
35
35
|
const agent = options?.agent;
|
|
36
|
-
console.info(`🛠️ Running OpenCode with model: ${model}, agent: ${agent || 'none'}
|
|
36
|
+
console.info(`🛠️ Running OpenCode with model: ${model}, agent: ${agent || 'none'}`);
|
|
37
37
|
return new Promise(async (resolve, reject) => {
|
|
38
38
|
const agentInfo = agent ? ` with agent ${agent}` : '';
|
|
39
39
|
console.info(`🚀 Running OpenCode with model ${model}${agentInfo}`);
|
package/dist/ssg/style.js
CHANGED
|
@@ -18,6 +18,7 @@ exports.style = `
|
|
|
18
18
|
--shadow-color: rgba(0, 0, 0, 0.1);
|
|
19
19
|
--primary-color: #007bff;
|
|
20
20
|
--text-on-primary: #ffffff;
|
|
21
|
+
--text-strong: #ff5722;
|
|
21
22
|
}
|
|
22
23
|
|
|
23
24
|
html.dark {
|
|
@@ -34,6 +35,7 @@ html.dark {
|
|
|
34
35
|
--shadow-color: rgba(0, 0, 0, 0.5);
|
|
35
36
|
--primary-color: #3b82f6;
|
|
36
37
|
--text-on-primary: #ffffff;
|
|
38
|
+
--text-strong: #ff8a65;
|
|
37
39
|
}
|
|
38
40
|
|
|
39
41
|
html, body {
|
|
@@ -204,6 +206,10 @@ html:not(.dark) body {
|
|
|
204
206
|
margin: 0.5rem 0;
|
|
205
207
|
}
|
|
206
208
|
|
|
209
|
+
.content-body strong {
|
|
210
|
+
color: var(--text-strong);
|
|
211
|
+
}
|
|
212
|
+
|
|
207
213
|
.content-body blockquote {
|
|
208
214
|
border-left: 4px solid var(--link-color);
|
|
209
215
|
padding: 0.5rem 1rem;
|
package/package.json
CHANGED
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
# 文艺感性风格分析报告
|
|
2
|
+
|
|
3
|
+
## 阅读关注点
|
|
4
|
+
|
|
5
|
+
阅读每个文件时,重点提取:
|
|
6
|
+
|
|
7
|
+
- 文件路径和标题
|
|
8
|
+
- 情感表达和情绪波动
|
|
9
|
+
- 富有画面感的描述
|
|
10
|
+
- 有感染力的句子(可引用)
|
|
11
|
+
- 人物形象和性格特征
|
|
12
|
+
- 故事性元素(起承转合)
|
|
13
|
+
- 意象和比喻
|
|
14
|
+
|
|
15
|
+
**特别关注**:第一人称叙述、情感词汇、生动描写、人生感悟
|
|
16
|
+
|
|
17
|
+
## 知识库结构
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
### 文件索引
|
|
21
|
+
| 文件路径 | 标题 | 情感基调 | 文学价值 |
|
|
22
|
+
|----------|------|----------|----------|
|
|
23
|
+
|
|
24
|
+
### 金句索引(可引用)
|
|
25
|
+
| 原文 | 情感 | 来源文件 |
|
|
26
|
+
|------|------|----------|
|
|
27
|
+
|
|
28
|
+
### 意象索引
|
|
29
|
+
| 意象 | 含义 | 来源文件 |
|
|
30
|
+
|------|------|----------|
|
|
31
|
+
|
|
32
|
+
### 人物素描素材
|
|
33
|
+
| 人物 | 特征描写 | 来源文件 |
|
|
34
|
+
|------|----------|----------|
|
|
35
|
+
|
|
36
|
+
### 故事线索
|
|
37
|
+
| 主题 | 起 | 承 | 转 | 合 | 相关文件 |
|
|
38
|
+
|------|---|---|---|---|----------|
|
|
39
|
+
|
|
40
|
+
### 情感脉络
|
|
41
|
+
| 时间段 | 主导情感 | 关键事件 | 来源文件 |
|
|
42
|
+
|--------|----------|----------|----------|
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## 压缩策略
|
|
46
|
+
|
|
47
|
+
当需要压缩知识库时:
|
|
48
|
+
|
|
49
|
+
1. **必须保留**:文件索引、金句索引、情感脉络
|
|
50
|
+
2. **可以精简**:意象索引(保留核心意象)、人物素描(保留主要人物)
|
|
51
|
+
3. **可以丢弃**:次要的情感细节
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## 风格定位
|
|
56
|
+
|
|
57
|
+
通过细腻的描写和情感表达,营造身临其境的感觉,让读者感受内容中的情感和氛围。
|
|
58
|
+
|
|
59
|
+
**目标读者**:喜欢文学性表达的读者、寻求情感共鸣的读者
|
|
60
|
+
**写作语气**:诗意、感性、富有画面感
|
|
61
|
+
**目的**:激发共鸣和情感反应,让内容更有感染力
|
|
62
|
+
|
|
63
|
+
## 核心原则
|
|
64
|
+
|
|
65
|
+
- ✅ 使用生动的语言和形象的比喻
|
|
66
|
+
- ✅ 创造画面感和意境
|
|
67
|
+
- ✅ 讲述故事,引导读者进入情境
|
|
68
|
+
- ✅ 表达情感,但基于内容事实
|
|
69
|
+
- ❌ 不脱离原文内容虚构
|
|
70
|
+
|
|
71
|
+
## 必需章节结构
|
|
72
|
+
|
|
73
|
+
### 引言(诗意开场)
|
|
74
|
+
|
|
75
|
+
用富有意境的语言开场,设定情感基调
|
|
76
|
+
|
|
77
|
+
```markdown
|
|
78
|
+
在代码与文字交织的数字森林里,有一位旅人正在记录他的足迹...
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
### 主题篇章
|
|
82
|
+
|
|
83
|
+
每个主题用叙事性段落展开:
|
|
84
|
+
|
|
85
|
+
```markdown
|
|
86
|
+
## [诗意的章节标题]
|
|
87
|
+
|
|
88
|
+
[用故事化的方式描述主题内容,融入情感和意象]
|
|
89
|
+
|
|
90
|
+
当 [人物] 写下 [内容] 时,仿佛能看到 [意象描写]...
|
|
91
|
+
|
|
92
|
+
> "[引用原文中有感染力的句子]"
|
|
93
|
+
> —— [来源](../path/to/file.md)
|
|
94
|
+
|
|
95
|
+
[继续叙事,连接到下一个要点]
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
### 人物素描
|
|
99
|
+
|
|
100
|
+
用文学性语言描绘人物形象
|
|
101
|
+
|
|
102
|
+
### 时间的河流
|
|
103
|
+
|
|
104
|
+
用叙事方式描述时间线上的变化
|
|
105
|
+
|
|
106
|
+
### 结语(情感升华)
|
|
107
|
+
|
|
108
|
+
总结性的诗意结尾,留下回味
|
|
109
|
+
|
|
110
|
+
```markdown
|
|
111
|
+
这不仅仅是一个代码仓库,更是一个思想者在数字时代留下的足迹...
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
## 写作技巧
|
|
115
|
+
|
|
116
|
+
- 使用比喻:将抽象概念具象化
|
|
117
|
+
- 使用意象:创造视觉画面
|
|
118
|
+
- 使用节奏:长短句交替,创造韵律感
|
|
119
|
+
- 引用原文:选择有感染力的句子
|
|
120
|
+
|
|
121
|
+
## 输出文件
|
|
122
|
+
|
|
123
|
+
`SUMMARY/5-artistic.md`
|
|
124
|
+
|
|
125
|
+
## 质量检查清单
|
|
126
|
+
|
|
127
|
+
- [ ] 语言富有画面感
|
|
128
|
+
- [ ] 情感表达真挚
|
|
129
|
+
- [ ] 引用原文恰当
|
|
130
|
+
- [ ] 叙事连贯流畅
|
|
131
|
+
- [ ] 所有链接有效
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
# AI 分析报告生成 - 基础规则
|
|
2
|
+
|
|
3
|
+
## 文档阅读流程(必须严格遵循)
|
|
4
|
+
|
|
5
|
+
### 核心原则
|
|
6
|
+
|
|
7
|
+
本仓库可能包含成百上千个 Markdown 文件。你必须**逐一阅读每个文件**,不得跳过。
|
|
8
|
+
为了处理大量文件,采用**渐进式阅读与摘要**策略。
|
|
9
|
+
|
|
10
|
+
### 阶段 1:获取完整文件列表
|
|
11
|
+
|
|
12
|
+
1. 执行 `npx czon@latest ls-files` 获取所有 Markdown 文件
|
|
13
|
+
2. 记录文件总数 N
|
|
14
|
+
3. 将文件列表保存为待阅读队列
|
|
15
|
+
|
|
16
|
+
### 阶段 2:分批阅读与摘要
|
|
17
|
+
|
|
18
|
+
将文件分批处理。建议每批 10-20 个文件,但你可以根据文件大小和复杂度自行调整。
|
|
19
|
+
|
|
20
|
+
**对于每一批:**
|
|
21
|
+
|
|
22
|
+
1. **阅读**:使用 Read 工具逐一读取该批次的每个文件完整内容
|
|
23
|
+
2. **提取**:根据**当前风格的关注点**(见下方风格指南),提取相关信息
|
|
24
|
+
3. **批次摘要**:将该批次的提取信息整理为结构化摘要
|
|
25
|
+
4. **累积**:将批次摘要合并到「知识库」中(知识库结构见下方风格指南)
|
|
26
|
+
|
|
27
|
+
### 阶段 3:上下文管理
|
|
28
|
+
|
|
29
|
+
当上下文接近限制时:
|
|
30
|
+
|
|
31
|
+
1. **压缩知识库**:根据**当前风格的压缩策略**(见下方风格指南)压缩知识库
|
|
32
|
+
2. **保留索引**:无论如何压缩,必须保留所有文件的路径和标题索引
|
|
33
|
+
3. **继续阅读**:使用压缩后的知识库继续处理剩余文件
|
|
34
|
+
|
|
35
|
+
### 阶段 4:完整性验证
|
|
36
|
+
|
|
37
|
+
在生成报告前,必须确认:
|
|
38
|
+
|
|
39
|
+
1. 文件列表中的所有 N 个文件都已处理
|
|
40
|
+
2. 知识库包含每个文件的基本信息(至少有路径和标题)
|
|
41
|
+
|
|
42
|
+
**如果发现遗漏**:返回阶段 2 处理遗漏的文件。
|
|
43
|
+
|
|
44
|
+
### 阶段 5:生成报告
|
|
45
|
+
|
|
46
|
+
只有在完成以上所有阶段后,才能开始生成报告。
|
|
47
|
+
|
|
48
|
+
### 禁止行为
|
|
49
|
+
|
|
50
|
+
- ❌ 不得在阅读完所有文件前开始生成报告
|
|
51
|
+
- ❌ 不得跳过任何文件,无论文件数量多少
|
|
52
|
+
- ❌ 不得仅阅读部分文件就声称"已了解全貌"
|
|
53
|
+
- ❌ 不得在知识库中虚构不存在的文件或内容
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## 通用规则
|
|
58
|
+
|
|
59
|
+
### 1. 事实依据原则
|
|
60
|
+
|
|
61
|
+
- 切记以事实内容为依据,不得出现脱离事实的情况
|
|
62
|
+
- 所有观点必须有原文支撑
|
|
63
|
+
- 不得虚构不存在的内容
|
|
64
|
+
|
|
65
|
+
### 2. 引用链接规范
|
|
66
|
+
|
|
67
|
+
- 引用原文链接时,保证链接有效
|
|
68
|
+
- **永远链接到具体的 Markdown 文件**,不要链接目录
|
|
69
|
+
- **链接文本应当是对应的标题**,而不是文件名
|
|
70
|
+
- 由于生成到 SUMMARY 目录,引用时使用 `../` 开头的相对路径
|
|
71
|
+
|
|
72
|
+
**正确示例**:
|
|
73
|
+
|
|
74
|
+
```markdown
|
|
75
|
+
[资本持久战:个人投资者跨越阶级的战略](../INSIGHTS/6.md)
|
|
76
|
+
[从创作到分发——构建AI-Native内容引擎](../INSIGHTS/4.md)
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
**错误示例**:
|
|
80
|
+
|
|
81
|
+
```markdown
|
|
82
|
+
[INSIGHTS/6.md](../INSIGHTS/6.md) ← 使用了文件名而非标题
|
|
83
|
+
[资本持久战](../INSIGHTS/) ← 链接到了目录
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### 3. 头部格式
|
|
87
|
+
|
|
88
|
+
每个报告必须以以下格式开头:
|
|
89
|
+
|
|
90
|
+
```markdown
|
|
91
|
+
# [报告标题]
|
|
92
|
+
|
|
93
|
+
**AI 分析时间**:YYYY年MM月DD日
|
|
94
|
+
**注**:本报告由 AI 生成,内容仅供参考。
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
### 4. 时间权重
|
|
100
|
+
|
|
101
|
+
- 考虑时间跨度,给予最近的文章更高的权重
|
|
102
|
+
- 但不要忽略较早的重要内容
|
|
103
|
+
|
|
104
|
+
### 5. 输出位置
|
|
105
|
+
|
|
106
|
+
- 所有报告生成到 `SUMMARY/` 目录中
|
|
107
|
+
- 文件名按指定格式命名
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
# 客观批判风格分析报告
|
|
2
|
+
|
|
3
|
+
## 阅读关注点
|
|
4
|
+
|
|
5
|
+
阅读每个文件时,重点提取:
|
|
6
|
+
|
|
7
|
+
- 文件路径和标题
|
|
8
|
+
- 提出的观点、主张、方案
|
|
9
|
+
- 论证过程和依据
|
|
10
|
+
- 假设条件和前提
|
|
11
|
+
- 潜在的逻辑漏洞或矛盾
|
|
12
|
+
- 实践验证情况
|
|
13
|
+
- 与其他文件的一致性/矛盾
|
|
14
|
+
|
|
15
|
+
**特别关注**:断言性语句、因果推理、数据引用、假设前提
|
|
16
|
+
|
|
17
|
+
## 知识库结构
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
### 文件索引
|
|
21
|
+
| 文件路径 | 标题 | 主要主张 |
|
|
22
|
+
|----------|------|----------|
|
|
23
|
+
|
|
24
|
+
### 主张与论证索引
|
|
25
|
+
| 主张 | 论证依据 | 强度评估 | 来源文件 |
|
|
26
|
+
|------|----------|----------|----------|
|
|
27
|
+
|
|
28
|
+
### 假设条件索引
|
|
29
|
+
| 假设 | 合理性 | 相关主张 | 来源文件 |
|
|
30
|
+
|------|--------|----------|----------|
|
|
31
|
+
|
|
32
|
+
### 潜在问题索引
|
|
33
|
+
| 问题类型 | 描述 | 影响范围 | 来源文件 |
|
|
34
|
+
|----------|------|----------|----------|
|
|
35
|
+
|
|
36
|
+
### 优势证据索引
|
|
37
|
+
| 优势点 | 证据 | 来源文件 |
|
|
38
|
+
|--------|------|----------|
|
|
39
|
+
|
|
40
|
+
### 矛盾/不一致记录
|
|
41
|
+
| 内容A | 内容B | 矛盾描述 | 来源文件 |
|
|
42
|
+
|-------|-------|----------|----------|
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## 压缩策略
|
|
46
|
+
|
|
47
|
+
当需要压缩知识库时:
|
|
48
|
+
|
|
49
|
+
1. **必须保留**:文件索引、主张与论证索引、潜在问题索引
|
|
50
|
+
2. **可以精简**:假设条件索引(保留关键假设)、优势证据(保留典型案例)
|
|
51
|
+
3. **可以丢弃**:次要问题的详细描述
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## 风格定位
|
|
56
|
+
|
|
57
|
+
基于事实,对内容进行客观的批判性分析,指出其优点和缺点。
|
|
58
|
+
|
|
59
|
+
**目标读者**:希望深入评估内容价值的读者、潜在合作者、内容创作者本人
|
|
60
|
+
**写作语气**:专业、建设性、有理有据
|
|
61
|
+
**目的**:帮助读者更全面地理解内容,识别优缺点,促进改进
|
|
62
|
+
|
|
63
|
+
## 核心原则
|
|
64
|
+
|
|
65
|
+
- ✅ 批判基于事实证据,不是主观臆断
|
|
66
|
+
- ✅ 批判是建设性的,提出改进建议
|
|
67
|
+
- ✅ 承认优点的同时指出不足
|
|
68
|
+
- ❌ 不是否定或贬低
|
|
69
|
+
- ❌ 不进行人身攻击
|
|
70
|
+
|
|
71
|
+
## 必需章节结构
|
|
72
|
+
|
|
73
|
+
### 概述
|
|
74
|
+
|
|
75
|
+
简要介绍分析对象和分析范围
|
|
76
|
+
|
|
77
|
+
### 架构设计评估
|
|
78
|
+
|
|
79
|
+
- 可行性分析
|
|
80
|
+
- 验证充分性
|
|
81
|
+
- 实践落地情况
|
|
82
|
+
- **改进建议**
|
|
83
|
+
|
|
84
|
+
### 投资/策略分析
|
|
85
|
+
|
|
86
|
+
- 逻辑一致性检验
|
|
87
|
+
- 假设条件审视
|
|
88
|
+
- 风险识别
|
|
89
|
+
- **改进建议**
|
|
90
|
+
|
|
91
|
+
### 技术实践评估
|
|
92
|
+
|
|
93
|
+
- 技术选型合理性
|
|
94
|
+
- 实现质量
|
|
95
|
+
- 可维护性
|
|
96
|
+
- **改进建议**
|
|
97
|
+
|
|
98
|
+
### 理论体系评估
|
|
99
|
+
|
|
100
|
+
- 方法论严谨性
|
|
101
|
+
- 适用范围
|
|
102
|
+
- 局限性
|
|
103
|
+
- **改进建议**
|
|
104
|
+
|
|
105
|
+
### 综合建设性建议
|
|
106
|
+
|
|
107
|
+
按优先级列出改进建议:
|
|
108
|
+
|
|
109
|
+
1. 高优先级建议
|
|
110
|
+
2. 中优先级建议
|
|
111
|
+
3. 长期建议
|
|
112
|
+
|
|
113
|
+
## 批判框架模板
|
|
114
|
+
|
|
115
|
+
```markdown
|
|
116
|
+
### [评估领域]
|
|
117
|
+
|
|
118
|
+
**现状描述**:
|
|
119
|
+
[客观描述当前状态,引用具体文件]
|
|
120
|
+
|
|
121
|
+
**优势**:
|
|
122
|
+
|
|
123
|
+
- 优势点 1(证据:[链接])
|
|
124
|
+
- 优势点 2(证据:[链接])
|
|
125
|
+
|
|
126
|
+
**不足**:
|
|
127
|
+
|
|
128
|
+
- 不足点 1(证据:[链接])
|
|
129
|
+
- 具体问题描述
|
|
130
|
+
- 潜在影响
|
|
131
|
+
- 不足点 2(证据:[链接])
|
|
132
|
+
|
|
133
|
+
**改进建议**:
|
|
134
|
+
|
|
135
|
+
1. 建议 1:具体可操作的改进方案
|
|
136
|
+
2. 建议 2:具体可操作的改进方案
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
## 输出文件
|
|
140
|
+
|
|
141
|
+
`SUMMARY/2-critical.md`
|
|
142
|
+
|
|
143
|
+
## 质量检查清单
|
|
144
|
+
|
|
145
|
+
- [ ] 每个批评点都有事实依据
|
|
146
|
+
- [ ] 每个批评点都有改进建议
|
|
147
|
+
- [ ] 语气专业,无人身攻击
|
|
148
|
+
- [ ] 优缺点分析平衡
|
|
149
|
+
- [ ] 所有链接有效
|