solo-doc 0.2.4 → 0.2.6
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/README.md +3 -2
- package/dist/bin/solo-doc.js +1 -2
- package/dist/src/commands/VSCommand.js +12 -6
- package/package.json +3 -2
- package/solo-doc-prompt.md +33 -0
package/README.md
CHANGED
|
@@ -109,13 +109,15 @@ solo-doc vs \
|
|
|
109
109
|
"https://docs.alauda.io/container_platform/4.2/developer/building_application/index.html"
|
|
110
110
|
|
|
111
111
|
# 临时覆盖使用的模型
|
|
112
|
-
solo-doc vs <url1> <url2>
|
|
112
|
+
solo-doc vs <url1> <url2>
|
|
113
113
|
```
|
|
114
114
|
|
|
115
115
|
此命令将按顺序执行:
|
|
116
116
|
1. **自动爬取**: 分别爬取两个 URL 并保存为 Markdown 文件(如果已存在则跳过)。
|
|
117
117
|
2. **提取目录**: 提取两个文档的目录树结构。
|
|
118
118
|
3. **AI 分析**: 调用配置的 AI 模型,根据 `solo-doc-prompt.md` 定义的提示词进行两步分析:
|
|
119
|
+
> **提示**: `solo-doc` 会优先使用当前执行目录下的 `solo-doc-prompt.md` 文件。你可以复制默认模板到当前目录进行自定义修改。若当前目录不存在该文件,则使用内置默认模板。
|
|
120
|
+
|
|
119
121
|
- 生成 `vs-result.md`: 详细的内容与结构差异分析。
|
|
120
122
|
- 生成 `vs-tree.md`: 包含差异标注的合并目录树。
|
|
121
123
|
|
|
@@ -123,7 +125,6 @@ solo-doc vs <url1> <url2> --model gpt-4
|
|
|
123
125
|
|
|
124
126
|
| 选项 | 描述 | 默认值 |
|
|
125
127
|
|--------|-------------|---------|
|
|
126
|
-
| `--model <name>` | 临时覆盖配置文件中的模型名称。 | Config中的 `MODEL_NAME` |
|
|
127
128
|
| `-f, --force` | 强制重新爬取文档,即使文件已存在。 | false |
|
|
128
129
|
|
|
129
130
|
## ✅ 环境要求
|
package/dist/bin/solo-doc.js
CHANGED
|
@@ -43,10 +43,9 @@ program
|
|
|
43
43
|
.description('Compare two documentation sites using AI (Beta)')
|
|
44
44
|
.argument('<baseline>', 'Baseline documentation URL')
|
|
45
45
|
.argument('<target>', 'Target documentation URL')
|
|
46
|
-
.option('--model <model>', 'AI Model name (overrides .solodocrc.yml)')
|
|
47
46
|
.action(async (baseline, target, options) => {
|
|
48
47
|
try {
|
|
49
|
-
console.log(chalk_1.default.yellow('⚠️ [Beta Feature] This feature requires AI configuration in .solodocrc.yml
|
|
48
|
+
console.log(chalk_1.default.yellow('⚠️ [Beta Feature] This feature requires AI configuration in .solodocrc.yml'));
|
|
50
49
|
await VSCommand_1.VSCommand.run(baseline, target, options);
|
|
51
50
|
}
|
|
52
51
|
catch (error) {
|
|
@@ -43,17 +43,23 @@ class VSCommand {
|
|
|
43
43
|
promptContent = fs_1.default.readFileSync(promptPath, 'utf-8');
|
|
44
44
|
}
|
|
45
45
|
else {
|
|
46
|
-
// Try
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
46
|
+
// Fallback 1: Try finding in package root (Development mode: src/commands/ -> ../../)
|
|
47
|
+
const devPath = path_1.default.resolve(__dirname, '../../solo-doc-prompt.md');
|
|
48
|
+
// Fallback 2: Try finding in package root (Production mode: dist/src/commands/ -> ../../../)
|
|
49
|
+
const prodPath = path_1.default.resolve(__dirname, '../../../solo-doc-prompt.md');
|
|
50
|
+
if (fs_1.default.existsSync(devPath)) {
|
|
51
|
+
console.log(chalk_1.default.gray(`[VS Mode] Using prompt from project root (dev): ${devPath}`));
|
|
52
|
+
promptContent = fs_1.default.readFileSync(devPath, 'utf-8');
|
|
53
|
+
}
|
|
54
|
+
else if (fs_1.default.existsSync(prodPath)) {
|
|
55
|
+
console.log(chalk_1.default.gray(`[VS Mode] Using prompt from project root (prod): ${prodPath}`));
|
|
56
|
+
promptContent = fs_1.default.readFileSync(prodPath, 'utf-8');
|
|
51
57
|
}
|
|
52
58
|
else {
|
|
53
59
|
console.warn(chalk_1.default.yellow('[VS Mode] Warning: solo-doc-prompt.md not found. Using default internal prompts.'));
|
|
54
60
|
// Define fallback prompts here if needed, or throw
|
|
55
61
|
// For now, let's throw to ensure user provides the file as requested
|
|
56
|
-
throw new Error('Could not find solo-doc-prompt.md in current directory.');
|
|
62
|
+
throw new Error('Could not find solo-doc-prompt.md in current directory or project root.');
|
|
57
63
|
}
|
|
58
64
|
}
|
|
59
65
|
const prompts = VSCommand.parsePrompts(promptContent);
|
package/package.json
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "solo-doc",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.6",
|
|
4
4
|
"main": "dist/bin/solo-doc.js",
|
|
5
5
|
"bin": {
|
|
6
6
|
"solo-doc": "dist/bin/solo-doc.js"
|
|
7
7
|
},
|
|
8
8
|
"files": [
|
|
9
9
|
"dist/**/*",
|
|
10
|
-
"README.md"
|
|
10
|
+
"README.md",
|
|
11
|
+
"solo-doc-prompt.md"
|
|
11
12
|
],
|
|
12
13
|
"scripts": {
|
|
13
14
|
"clean": "rm -rf dist",
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# 第一步:独立对比两个文档
|
|
2
|
+
**目的**:生成详细对比,按维度分类;强调补充建议。
|
|
3
|
+
**Prompt模板**:
|
|
4
|
+
```
|
|
5
|
+
基于以下OpenShift文档(基准)的目录树:[看附件ocp的文档目录树],和Alauda文档的目录树:[看附件alauda的文档目录树]。
|
|
6
|
+
|
|
7
|
+
以OpenShift为基准,对比Alauda,按以下维度详细总结对比,分别按照以下几个维护使用表格展示对比差异,包括具体差异如功能点、示例、CLI命令:
|
|
8
|
+
|
|
9
|
+
1. OpenShift有,但是Alauda没有的章节/功能(列出缺失点,并建议如何补充Alauda以对标,如添加类似章节、功能实现)。
|
|
10
|
+
2. OpenShift没有,但是Alauda有的章节/功能(分析独有价值,并建议OpenShift是否借鉴)。
|
|
11
|
+
3. 两者都有的章节,差异在哪?谁写的更好(比较全面性、深度、实用性、示例数量;建议Alauda如何改进以对标OpenShift,如增加CLI示例、故障诊断)。
|
|
12
|
+
|
|
13
|
+
总结用中文描述,保持章节标题英文。提供证据,补充对应文档中的链接,如具体子章节差异。
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
# 第二步 整合对比到OpenShift的文档树
|
|
17
|
+
**目的**:嵌入详细对比到树中,确保链接完整。
|
|
18
|
+
**Prompt模板**:
|
|
19
|
+
```
|
|
20
|
+
基于OpenShift文档的目录树,和上面的详细对比总结。
|
|
21
|
+
将对比结果整合到OpenShift的Markdown树中:在每个章节或子章节(不超过3 级)后先补充上[相关链接]:
|
|
22
|
+
- **Comparison with Alauda**: [详细对比描述,用中文,200-300字,内容包括差异、谁更好、Alauda补充建议]。
|
|
23
|
+
- **Alauda Link**: [相关链接或No relevant links,确保无空白]。
|
|
24
|
+
|
|
25
|
+
最终输出使用1-3级Markdown标题整理(## Chapter X, ### Subchapter 等)。确保所有概要和对比用中文(专业术语、标题、链接保持英文)。
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
# 第三步 检查补全
|
|
29
|
+
**目的**:整体检查,确保无漏/简陋
|
|
30
|
+
**Prompt模板**:
|
|
31
|
+
```
|
|
32
|
+
对照附件 ocp 的文档树,有章节缺失,检查一下并补全
|
|
33
|
+
```
|