@optima-chat/optima-agent 0.9.12 → 0.9.14
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/.claude/skills/.kb-skills-managed.json +9 -9
- package/.claude/skills/ads/SKILL.md +244 -244
- package/.claude/skills/ads/template/campaign/CREATIVES.md +18 -18
- package/.claude/skills/ads/template/campaign/NOTES.md +10 -10
- package/.claude/skills/ads/template/campaign/STRATEGY.md +29 -29
- package/.claude/skills/ads/template/user/ADS.md +29 -29
- package/.claude/skills/ads/template/user/LEARNINGS.md +15 -15
- package/.claude/skills/ads/template/user/PROGRESS.md +20 -20
- package/.claude/skills/ads/template/user/README.md +25 -25
- package/.claude/skills/ads/template/user/assets/.gitignore +2 -2
- package/.claude/skills/bi/SKILL.md +131 -131
- package/.claude/skills/browser/SKILL.md +201 -201
- package/.claude/skills/channels/SKILL.md +188 -188
- package/.claude/skills/collection/SKILL.md +88 -88
- package/.claude/skills/douyin/SKILL.md +408 -408
- package/.claude/skills/ffmpeg/SKILL.md +164 -164
- package/.claude/skills/gen/SKILL.md +279 -279
- package/.claude/skills/growth/SKILL.md +90 -90
- package/.claude/skills/growth/template/ACCOUNTS.md +14 -14
- package/.claude/skills/growth/template/CALENDAR.md +7 -7
- package/.claude/skills/growth/template/COMMENTS.md +7 -7
- package/.claude/skills/growth/template/GROWTH.md +37 -37
- package/.claude/skills/growth/template/PROGRESS.md +4 -4
- package/.claude/skills/growth/template/README.md +20 -20
- package/.claude/skills/growth/template/TOPICS.md +7 -7
- package/.claude/skills/homepage/SKILL.md +177 -177
- package/.claude/skills/i18n/SKILL.md +517 -517
- package/.claude/skills/ingesting-sources/SKILL.md +94 -94
- package/.claude/skills/initializing-kb/SKILL.md +117 -117
- package/.claude/skills/instagram/SKILL.md +321 -321
- package/.claude/skills/inventory/SKILL.md +328 -328
- package/.claude/skills/kol-outreach/SKILL.md +232 -232
- package/.claude/skills/kol-outreach/template/campaign/CONFIG.md +60 -60
- package/.claude/skills/kol-outreach/template/campaign/KOLS.md +6 -6
- package/.claude/skills/kol-outreach/template/campaign/PROGRESS.md +3 -3
- package/.claude/skills/kol-outreach/template/campaign/TEMPLATES.md +88 -88
- package/.claude/skills/kol-outreach/template/merchant/BRAND.md +36 -36
- package/.claude/skills/kol-outreach/template/merchant/CAMPAIGNS.md +6 -6
- package/.claude/skills/kol-outreach/template/merchant/MERCHANT_LIMITS.md +16 -16
- package/.claude/skills/kol-outreach/template/merchant/PROGRESS.md +4 -4
- package/.claude/skills/kol-outreach/template/merchant/README.md +20 -20
- package/.claude/skills/linting-the-wiki/SKILL.md +68 -68
- package/.claude/skills/logistics/SKILL.md +180 -180
- package/.claude/skills/markdown-pdf/SKILL.md +72 -72
- package/.claude/skills/merchant/SKILL.md +110 -110
- package/.claude/skills/multigrid-poster/SKILL.md +192 -192
- package/.claude/skills/multigrid-poster/layouts/2x2.json +34 -34
- package/.claude/skills/multigrid-poster/layouts/3x3.json +43 -43
- package/.claude/skills/multigrid-poster/scripts/compose.py +116 -116
- package/.claude/skills/order/SKILL.md +452 -452
- package/.claude/skills/product/SKILL.md +379 -379
- package/.claude/skills/product-page/SKILL.md +106 -106
- package/.claude/skills/querying-the-wiki/SKILL.md +59 -59
- package/.claude/skills/reddit/SKILL.md +277 -277
- package/.claude/skills/review/SKILL.md +321 -321
- package/.claude/skills/scout/SKILL.md +575 -575
- package/.claude/skills/sentinel/SKILL.md +281 -281
- package/.claude/skills/shein/SKILL.md +246 -246
- package/.claude/skills/shipping/SKILL.md +200 -200
- package/.claude/skills/shop-content/SKILL.md +101 -101
- package/.claude/skills/shopify/SKILL.md +282 -282
- package/.claude/skills/skillify/SKILL.md +114 -114
- package/.claude/skills/taobao/SKILL.md +238 -238
- package/.claude/skills/tiktok/SKILL.md +381 -381
- package/.claude/skills/twitter/SKILL.md +302 -302
- package/.claude/skills/updating-related-pages/SKILL.md +65 -65
- package/.claude/skills/video-edit/SKILL.md +123 -138
- package/.claude/skills/video-gen/SKILL.md +720 -630
- package/.claude/skills/video-gen/templates/INDEX.md +78 -78
- package/.claude/skills/video-gen/templates/before-after-beauty.md +183 -183
- package/.claude/skills/video-gen/templates/drama-fmcg.md +183 -183
- package/.claude/skills/video-gen/templates/kol-reaction-food.md +193 -193
- package/.claude/skills/video-gen/templates/multi-point-apparel.md +185 -185
- package/.claude/skills/video-gen/templates/pain-solution-home.md +184 -184
- package/.claude/skills/video-gen/templates/pdp-360-showcase.md +189 -189
- package/.claude/skills/video-gen/templates/pdp-feature-highlight.md +182 -182
- package/.claude/skills/video-gen/templates/scene-digital.md +183 -183
- package/.claude/skills/wechat/SKILL.md +174 -174
- package/.claude/skills/xhs/SKILL.md +170 -170
- package/README.md +276 -276
- package/dist/bin/optima.js +26 -26
- package/dist/bin/serve.js +23 -23
- package/dist/src/agent.d.ts +1 -1
- package/dist/src/agent.js +4 -4
- package/dist/src/system-prompt.js +175 -175
- package/dist/src/tools/memory.js +10 -10
- package/dist/src/ui/headless.js +7 -7
- package/package.json +79 -79
- package/dist/bin/video-edit.d.ts +0 -3
- package/dist/bin/video-edit.d.ts.map +0 -1
- package/dist/bin/video-edit.js +0 -153
- package/dist/bin/video-edit.js.map +0 -1
|
@@ -1,94 +1,94 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: ingesting-sources
|
|
3
|
-
description: "将新素材收录到知识库。当用户说'收录这篇文章'、'把这个加到知识库'时使用。"
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Ingesting Sources
|
|
7
|
-
|
|
8
|
-
把原始材料做第一次落库,进入持续维护的 wiki 结构。产物不只是摘要,而是一页来源页,以及一份"还有哪些页面需要随之更新"的映射。
|
|
9
|
-
|
|
10
|
-
## 启动 SOP
|
|
11
|
-
|
|
12
|
-
1. `ls ~/kb/REGISTRY.md`
|
|
13
|
-
- 不存在 → 告诉用户"还没有知识库,需要先创建一个",引导使用 initializing-kb
|
|
14
|
-
2. 读 `~/kb/REGISTRY.md` — 获取所有 active 的 KB 列表
|
|
15
|
-
3. 确定目标 KB:
|
|
16
|
-
- 用户明确指定了 KB slug 或主题 → 直接用
|
|
17
|
-
- 只有一个 active KB → 用它
|
|
18
|
-
- 多个 active → 根据用户问题匹配 `主题` + `说明` 字段;无法判断时列出让用户选
|
|
19
|
-
4. 读 `~/kb/<slug>/AGENTS.md` 了解该 KB 的契约
|
|
20
|
-
|
|
21
|
-
## 获取素材到 raw/
|
|
22
|
-
|
|
23
|
-
用户可能通过以下方式提供素材:
|
|
24
|
-
|
|
25
|
-
- 本地文件路径 → `cp <path> ~/kb/<slug>/raw/<命名后的文件名>`
|
|
26
|
-
- URL → 下载到 `~/kb/<slug>/raw/`(用 WebFetch 或 curl)
|
|
27
|
-
- 直接贴图/附件 → 保存到 `~/kb/<slug>/raw/`
|
|
28
|
-
|
|
29
|
-
文件命名规则:`YYYY-MM-DD-short-description.{ext}`,保留原始扩展名。
|
|
30
|
-
|
|
31
|
-
## 按类型读取素材
|
|
32
|
-
|
|
33
|
-
| 类型 | 扩展名 | 读取方式 |
|
|
34
|
-
|------|--------|----------|
|
|
35
|
-
| 文本 | `.md` `.txt` | 直接读取 |
|
|
36
|
-
| PDF | `.pdf` | 直接读取(Claude 原生支持) |
|
|
37
|
-
| 图片 | `.png` `.jpg` `.webp` `.gif` | 用 Read 工具查看图片,生成文本描述 |
|
|
38
|
-
| 音频 | `.mp3` `.wav` `.m4a` | 加载 gen skill,调 ASR 转文字 |
|
|
39
|
-
| 视频 | `.mp4` `.mov` `.webm` | 加载 ffmpeg skill 提取音频 → ASR 转文字;提取关键帧 → 查看描述 |
|
|
40
|
-
|
|
41
|
-
如果素材类型不在上表中,尝试直接读取;读不了就告诉用户不支持该格式。
|
|
42
|
-
|
|
43
|
-
## Ingest 流程
|
|
44
|
-
|
|
45
|
-
1. 确认素材已在 `~/kb/<slug>/raw/` 中(如不在,先执行上方"获取素材"步骤)
|
|
46
|
-
2. 按上方类型表读取素材内容
|
|
47
|
-
3. 提取主要论点、证据、实体和开放问题
|
|
48
|
-
4. 在 `~/kb/<slug>/wiki/sources/` 中创建或更新对应页面
|
|
49
|
-
4. 列出哪些 entity、overview 和 analysis 页面受到影响
|
|
50
|
-
5. 如果任务范围包含来源页之外的更新,交给 updating-related-pages 处理,或执行一次有边界的相关页更新
|
|
51
|
-
6. 如果这个来源是首次进入 wiki,更新 `~/kb/<slug>/index.md` 和 `~/kb/<slug>/log.md`
|
|
52
|
-
7. 追加 `~/kb/PROGRESS.md`
|
|
53
|
-
8. `cd ~/kb && git add -A && git commit -m "[<slug>] ingest: <来源名>"`
|
|
54
|
-
|
|
55
|
-
## 来源页内容
|
|
56
|
-
|
|
57
|
-
来源页应至少包含:
|
|
58
|
-
|
|
59
|
-
- 来源标题
|
|
60
|
-
- 来源类型(文本 / 图片 / 音频 / 视频 / PDF)
|
|
61
|
-
- 原始文件路径(`raw/` 下的相对路径)
|
|
62
|
-
- 简短摘要
|
|
63
|
-
- 关键论点
|
|
64
|
-
- 关键证据或观察
|
|
65
|
-
- 相关实体、主题或概念
|
|
66
|
-
- 对既有理解产生的冲突、修正或压力
|
|
67
|
-
- 指向受影响页面的链接
|
|
68
|
-
|
|
69
|
-
对于多媒体来源,描述就是 source page 的核心内容。如果描述不够准确,直接编辑 source page 或重新 ingest 即可——source page 是可变的,raw/ 里的原始文件才是不可变的。
|
|
70
|
-
|
|
71
|
-
## 抽取规则
|
|
72
|
-
|
|
73
|
-
- 将来源明确表达的内容与综合推断区分开
|
|
74
|
-
- 不要把大段原文直接复制进 wiki
|
|
75
|
-
- 优先写成简洁、可链接、之后可更新的陈述
|
|
76
|
-
- 当来源含混或不完整时,显式记录不确定性
|
|
77
|
-
- 遇到冲突要记录,不要静默抹平
|
|
78
|
-
|
|
79
|
-
## 何时创建相关页面
|
|
80
|
-
|
|
81
|
-
出现下列情况时应建议新建页面:
|
|
82
|
-
|
|
83
|
-
- 某个人、组织、产品或概念很重要,但还没有稳定页面
|
|
84
|
-
- 来源引入了一个新的 recurring topic
|
|
85
|
-
- 来源实质性改变了某个既有 overview
|
|
86
|
-
- 形成的综合结果已经明显值得进入 `wiki/analyses/`
|
|
87
|
-
|
|
88
|
-
## 最小交付标准
|
|
89
|
-
|
|
90
|
-
一次成功的 ingest 至少应留下:
|
|
91
|
-
|
|
92
|
-
- 一页可用的 `wiki/sources/` 页面
|
|
93
|
-
- 一份清晰的受影响页面列表
|
|
94
|
-
- 足够明确的结构,使下一步 update 很自然
|
|
1
|
+
---
|
|
2
|
+
name: ingesting-sources
|
|
3
|
+
description: "将新素材收录到知识库。当用户说'收录这篇文章'、'把这个加到知识库'时使用。"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Ingesting Sources
|
|
7
|
+
|
|
8
|
+
把原始材料做第一次落库,进入持续维护的 wiki 结构。产物不只是摘要,而是一页来源页,以及一份"还有哪些页面需要随之更新"的映射。
|
|
9
|
+
|
|
10
|
+
## 启动 SOP
|
|
11
|
+
|
|
12
|
+
1. `ls ~/kb/REGISTRY.md`
|
|
13
|
+
- 不存在 → 告诉用户"还没有知识库,需要先创建一个",引导使用 initializing-kb
|
|
14
|
+
2. 读 `~/kb/REGISTRY.md` — 获取所有 active 的 KB 列表
|
|
15
|
+
3. 确定目标 KB:
|
|
16
|
+
- 用户明确指定了 KB slug 或主题 → 直接用
|
|
17
|
+
- 只有一个 active KB → 用它
|
|
18
|
+
- 多个 active → 根据用户问题匹配 `主题` + `说明` 字段;无法判断时列出让用户选
|
|
19
|
+
4. 读 `~/kb/<slug>/AGENTS.md` 了解该 KB 的契约
|
|
20
|
+
|
|
21
|
+
## 获取素材到 raw/
|
|
22
|
+
|
|
23
|
+
用户可能通过以下方式提供素材:
|
|
24
|
+
|
|
25
|
+
- 本地文件路径 → `cp <path> ~/kb/<slug>/raw/<命名后的文件名>`
|
|
26
|
+
- URL → 下载到 `~/kb/<slug>/raw/`(用 WebFetch 或 curl)
|
|
27
|
+
- 直接贴图/附件 → 保存到 `~/kb/<slug>/raw/`
|
|
28
|
+
|
|
29
|
+
文件命名规则:`YYYY-MM-DD-short-description.{ext}`,保留原始扩展名。
|
|
30
|
+
|
|
31
|
+
## 按类型读取素材
|
|
32
|
+
|
|
33
|
+
| 类型 | 扩展名 | 读取方式 |
|
|
34
|
+
|------|--------|----------|
|
|
35
|
+
| 文本 | `.md` `.txt` | 直接读取 |
|
|
36
|
+
| PDF | `.pdf` | 直接读取(Claude 原生支持) |
|
|
37
|
+
| 图片 | `.png` `.jpg` `.webp` `.gif` | 用 Read 工具查看图片,生成文本描述 |
|
|
38
|
+
| 音频 | `.mp3` `.wav` `.m4a` | 加载 gen skill,调 ASR 转文字 |
|
|
39
|
+
| 视频 | `.mp4` `.mov` `.webm` | 加载 ffmpeg skill 提取音频 → ASR 转文字;提取关键帧 → 查看描述 |
|
|
40
|
+
|
|
41
|
+
如果素材类型不在上表中,尝试直接读取;读不了就告诉用户不支持该格式。
|
|
42
|
+
|
|
43
|
+
## Ingest 流程
|
|
44
|
+
|
|
45
|
+
1. 确认素材已在 `~/kb/<slug>/raw/` 中(如不在,先执行上方"获取素材"步骤)
|
|
46
|
+
2. 按上方类型表读取素材内容
|
|
47
|
+
3. 提取主要论点、证据、实体和开放问题
|
|
48
|
+
4. 在 `~/kb/<slug>/wiki/sources/` 中创建或更新对应页面
|
|
49
|
+
4. 列出哪些 entity、overview 和 analysis 页面受到影响
|
|
50
|
+
5. 如果任务范围包含来源页之外的更新,交给 updating-related-pages 处理,或执行一次有边界的相关页更新
|
|
51
|
+
6. 如果这个来源是首次进入 wiki,更新 `~/kb/<slug>/index.md` 和 `~/kb/<slug>/log.md`
|
|
52
|
+
7. 追加 `~/kb/PROGRESS.md`
|
|
53
|
+
8. `cd ~/kb && git add -A && git commit -m "[<slug>] ingest: <来源名>"`
|
|
54
|
+
|
|
55
|
+
## 来源页内容
|
|
56
|
+
|
|
57
|
+
来源页应至少包含:
|
|
58
|
+
|
|
59
|
+
- 来源标题
|
|
60
|
+
- 来源类型(文本 / 图片 / 音频 / 视频 / PDF)
|
|
61
|
+
- 原始文件路径(`raw/` 下的相对路径)
|
|
62
|
+
- 简短摘要
|
|
63
|
+
- 关键论点
|
|
64
|
+
- 关键证据或观察
|
|
65
|
+
- 相关实体、主题或概念
|
|
66
|
+
- 对既有理解产生的冲突、修正或压力
|
|
67
|
+
- 指向受影响页面的链接
|
|
68
|
+
|
|
69
|
+
对于多媒体来源,描述就是 source page 的核心内容。如果描述不够准确,直接编辑 source page 或重新 ingest 即可——source page 是可变的,raw/ 里的原始文件才是不可变的。
|
|
70
|
+
|
|
71
|
+
## 抽取规则
|
|
72
|
+
|
|
73
|
+
- 将来源明确表达的内容与综合推断区分开
|
|
74
|
+
- 不要把大段原文直接复制进 wiki
|
|
75
|
+
- 优先写成简洁、可链接、之后可更新的陈述
|
|
76
|
+
- 当来源含混或不完整时,显式记录不确定性
|
|
77
|
+
- 遇到冲突要记录,不要静默抹平
|
|
78
|
+
|
|
79
|
+
## 何时创建相关页面
|
|
80
|
+
|
|
81
|
+
出现下列情况时应建议新建页面:
|
|
82
|
+
|
|
83
|
+
- 某个人、组织、产品或概念很重要,但还没有稳定页面
|
|
84
|
+
- 来源引入了一个新的 recurring topic
|
|
85
|
+
- 来源实质性改变了某个既有 overview
|
|
86
|
+
- 形成的综合结果已经明显值得进入 `wiki/analyses/`
|
|
87
|
+
|
|
88
|
+
## 最小交付标准
|
|
89
|
+
|
|
90
|
+
一次成功的 ingest 至少应留下:
|
|
91
|
+
|
|
92
|
+
- 一页可用的 `wiki/sources/` 页面
|
|
93
|
+
- 一份清晰的受影响页面列表
|
|
94
|
+
- 足够明确的结构,使下一步 update 很自然
|
|
@@ -1,117 +1,117 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: initializing-kb
|
|
3
|
-
description: "创建新知识库或初始化 ~/kb/ 工作空间。当用户说'建个知识库'、'我想整理XX的知识'时使用。"
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Initializing KB
|
|
7
|
-
|
|
8
|
-
创建一个基于 Markdown 的知识库。主要产物是 `~/kb/<slug>/` 目录和其中的 `AGENTS.md`。
|
|
9
|
-
|
|
10
|
-
## 核心:~/kb/ 工作目录
|
|
11
|
-
|
|
12
|
-
所有知识库都在 `~/kb/` 下,每个知识库一个子目录。
|
|
13
|
-
|
|
14
|
-
```text
|
|
15
|
-
~/kb/
|
|
16
|
-
├── REGISTRY.md
|
|
17
|
-
├── PROGRESS.md
|
|
18
|
-
├── <slug>/
|
|
19
|
-
│ ├── AGENTS.md
|
|
20
|
-
│ ├── index.md
|
|
21
|
-
│ ├── log.md
|
|
22
|
-
│ ├── raw/
|
|
23
|
-
│ └── wiki/
|
|
24
|
-
│ ├── overview/
|
|
25
|
-
│ ├── entities/
|
|
26
|
-
│ ├── sources/
|
|
27
|
-
│ └── analyses/
|
|
28
|
-
└── .git/
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
## 启动 SOP
|
|
32
|
-
|
|
33
|
-
1. `ls ~/kb/REGISTRY.md`
|
|
34
|
-
- 不存在 → 初始化根目录(见下方"首次初始化")
|
|
35
|
-
- 存在 → 读 `REGISTRY.md`,了解已有的知识库
|
|
36
|
-
2. 询问用户要创建什么主题的知识库
|
|
37
|
-
|
|
38
|
-
## 首次初始化
|
|
39
|
-
|
|
40
|
-
如果 `~/kb/` 不存在:
|
|
41
|
-
|
|
42
|
-
1. `mkdir -p ~/kb`
|
|
43
|
-
2. 创建 `~/kb/REGISTRY.md`:
|
|
44
|
-
|
|
45
|
-
```markdown
|
|
46
|
-
# 知识库注册表
|
|
47
|
-
|
|
48
|
-
| slug | 主题 | 状态 | 创建日期 | 说明 |
|
|
49
|
-
|------|------|------|----------|------|
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
3. 创建 `~/kb/PROGRESS.md`:
|
|
53
|
-
|
|
54
|
-
```markdown
|
|
55
|
-
# 知识库工作日志
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
4. `cd ~/kb && git init && git add -A && git commit -m "init kb workspace"`
|
|
59
|
-
|
|
60
|
-
## 创建知识库
|
|
61
|
-
|
|
62
|
-
1. 询问用户知识库主题
|
|
63
|
-
2. 从主题生成 kebab-case slug 建议(不带 `-kb` 后缀)
|
|
64
|
-
3. 校验 slug:
|
|
65
|
-
- 匹配 `^[a-z0-9][a-z0-9-]{0,29}$`
|
|
66
|
-
- 不与 `REGISTRY.md` 已有 slug 重复
|
|
67
|
-
- 让用户确认或修改
|
|
68
|
-
4. `mkdir -p ~/kb/<slug>`
|
|
69
|
-
5. 检查当前素材(如果用户指定了已有目录或文件)
|
|
70
|
-
6. 确定所需的最小页面类型集合
|
|
71
|
-
7. 创建 `AGENTS.md`(见下方"AGENTS.md 内容")
|
|
72
|
-
8. 创建 `index.md`、`log.md`、`raw/`、`wiki/overview/`、`wiki/entities/`、`wiki/sources/`、`wiki/analyses/`
|
|
73
|
-
9. 追加 `~/kb/REGISTRY.md` 新行
|
|
74
|
-
10. `cd ~/kb && git add -A && git commit -m "[<slug>] init: <主题>"`
|
|
75
|
-
|
|
76
|
-
## AGENTS.md 内容
|
|
77
|
-
|
|
78
|
-
至少应包含:
|
|
79
|
-
|
|
80
|
-
- 仓库目标
|
|
81
|
-
- `raw/` 的 source-of-truth 规则
|
|
82
|
-
- 页面类型及其职责
|
|
83
|
-
- ingest 工作流
|
|
84
|
-
- query 工作流
|
|
85
|
-
- lint 工作流
|
|
86
|
-
- 编辑规则
|
|
87
|
-
- 命名约定
|
|
88
|
-
- 何时应新建页面,而不是继续扩写旧页
|
|
89
|
-
- agent 修改后的输出要求
|
|
90
|
-
|
|
91
|
-
## 页面模型
|
|
92
|
-
|
|
93
|
-
默认页面职责:
|
|
94
|
-
|
|
95
|
-
- `wiki/sources/`:每个来源一页
|
|
96
|
-
- `wiki/entities/`:每个跨多个来源反复出现的稳定实体或概念一页
|
|
97
|
-
- `wiki/overview/`:每个主题或认知领域一页
|
|
98
|
-
- `wiki/analyses/`:长期有效的答案、比较、综合或决策记录
|
|
99
|
-
|
|
100
|
-
避免混淆这些角色。
|
|
101
|
-
|
|
102
|
-
## 命名规则
|
|
103
|
-
|
|
104
|
-
- 来源页:`YYYY-MM-DD-short-source-name.md`
|
|
105
|
-
- 分析页:`YYYY-MM-DD-short-analysis-name.md`
|
|
106
|
-
- 实体页:`kebab-case-entity-name.md`
|
|
107
|
-
- 综述页:`kebab-case-topic-name.md`
|
|
108
|
-
|
|
109
|
-
## 好的结果
|
|
110
|
-
|
|
111
|
-
一个好的 schema 应该让这些决策变得容易:
|
|
112
|
-
|
|
113
|
-
- 新来源应该落到哪里
|
|
114
|
-
- 一个概念什么时候值得拥有独立实体页
|
|
115
|
-
- 一个高价值答案应该写回哪里
|
|
116
|
-
- 冲突信息应如何呈现
|
|
117
|
-
- 之后如何再次找到这些页面
|
|
1
|
+
---
|
|
2
|
+
name: initializing-kb
|
|
3
|
+
description: "创建新知识库或初始化 ~/kb/ 工作空间。当用户说'建个知识库'、'我想整理XX的知识'时使用。"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Initializing KB
|
|
7
|
+
|
|
8
|
+
创建一个基于 Markdown 的知识库。主要产物是 `~/kb/<slug>/` 目录和其中的 `AGENTS.md`。
|
|
9
|
+
|
|
10
|
+
## 核心:~/kb/ 工作目录
|
|
11
|
+
|
|
12
|
+
所有知识库都在 `~/kb/` 下,每个知识库一个子目录。
|
|
13
|
+
|
|
14
|
+
```text
|
|
15
|
+
~/kb/
|
|
16
|
+
├── REGISTRY.md
|
|
17
|
+
├── PROGRESS.md
|
|
18
|
+
├── <slug>/
|
|
19
|
+
│ ├── AGENTS.md
|
|
20
|
+
│ ├── index.md
|
|
21
|
+
│ ├── log.md
|
|
22
|
+
│ ├── raw/
|
|
23
|
+
│ └── wiki/
|
|
24
|
+
│ ├── overview/
|
|
25
|
+
│ ├── entities/
|
|
26
|
+
│ ├── sources/
|
|
27
|
+
│ └── analyses/
|
|
28
|
+
└── .git/
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## 启动 SOP
|
|
32
|
+
|
|
33
|
+
1. `ls ~/kb/REGISTRY.md`
|
|
34
|
+
- 不存在 → 初始化根目录(见下方"首次初始化")
|
|
35
|
+
- 存在 → 读 `REGISTRY.md`,了解已有的知识库
|
|
36
|
+
2. 询问用户要创建什么主题的知识库
|
|
37
|
+
|
|
38
|
+
## 首次初始化
|
|
39
|
+
|
|
40
|
+
如果 `~/kb/` 不存在:
|
|
41
|
+
|
|
42
|
+
1. `mkdir -p ~/kb`
|
|
43
|
+
2. 创建 `~/kb/REGISTRY.md`:
|
|
44
|
+
|
|
45
|
+
```markdown
|
|
46
|
+
# 知识库注册表
|
|
47
|
+
|
|
48
|
+
| slug | 主题 | 状态 | 创建日期 | 说明 |
|
|
49
|
+
|------|------|------|----------|------|
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
3. 创建 `~/kb/PROGRESS.md`:
|
|
53
|
+
|
|
54
|
+
```markdown
|
|
55
|
+
# 知识库工作日志
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
4. `cd ~/kb && git init && git add -A && git commit -m "init kb workspace"`
|
|
59
|
+
|
|
60
|
+
## 创建知识库
|
|
61
|
+
|
|
62
|
+
1. 询问用户知识库主题
|
|
63
|
+
2. 从主题生成 kebab-case slug 建议(不带 `-kb` 后缀)
|
|
64
|
+
3. 校验 slug:
|
|
65
|
+
- 匹配 `^[a-z0-9][a-z0-9-]{0,29}$`
|
|
66
|
+
- 不与 `REGISTRY.md` 已有 slug 重复
|
|
67
|
+
- 让用户确认或修改
|
|
68
|
+
4. `mkdir -p ~/kb/<slug>`
|
|
69
|
+
5. 检查当前素材(如果用户指定了已有目录或文件)
|
|
70
|
+
6. 确定所需的最小页面类型集合
|
|
71
|
+
7. 创建 `AGENTS.md`(见下方"AGENTS.md 内容")
|
|
72
|
+
8. 创建 `index.md`、`log.md`、`raw/`、`wiki/overview/`、`wiki/entities/`、`wiki/sources/`、`wiki/analyses/`
|
|
73
|
+
9. 追加 `~/kb/REGISTRY.md` 新行
|
|
74
|
+
10. `cd ~/kb && git add -A && git commit -m "[<slug>] init: <主题>"`
|
|
75
|
+
|
|
76
|
+
## AGENTS.md 内容
|
|
77
|
+
|
|
78
|
+
至少应包含:
|
|
79
|
+
|
|
80
|
+
- 仓库目标
|
|
81
|
+
- `raw/` 的 source-of-truth 规则
|
|
82
|
+
- 页面类型及其职责
|
|
83
|
+
- ingest 工作流
|
|
84
|
+
- query 工作流
|
|
85
|
+
- lint 工作流
|
|
86
|
+
- 编辑规则
|
|
87
|
+
- 命名约定
|
|
88
|
+
- 何时应新建页面,而不是继续扩写旧页
|
|
89
|
+
- agent 修改后的输出要求
|
|
90
|
+
|
|
91
|
+
## 页面模型
|
|
92
|
+
|
|
93
|
+
默认页面职责:
|
|
94
|
+
|
|
95
|
+
- `wiki/sources/`:每个来源一页
|
|
96
|
+
- `wiki/entities/`:每个跨多个来源反复出现的稳定实体或概念一页
|
|
97
|
+
- `wiki/overview/`:每个主题或认知领域一页
|
|
98
|
+
- `wiki/analyses/`:长期有效的答案、比较、综合或决策记录
|
|
99
|
+
|
|
100
|
+
避免混淆这些角色。
|
|
101
|
+
|
|
102
|
+
## 命名规则
|
|
103
|
+
|
|
104
|
+
- 来源页:`YYYY-MM-DD-short-source-name.md`
|
|
105
|
+
- 分析页:`YYYY-MM-DD-short-analysis-name.md`
|
|
106
|
+
- 实体页:`kebab-case-entity-name.md`
|
|
107
|
+
- 综述页:`kebab-case-topic-name.md`
|
|
108
|
+
|
|
109
|
+
## 好的结果
|
|
110
|
+
|
|
111
|
+
一个好的 schema 应该让这些决策变得容易:
|
|
112
|
+
|
|
113
|
+
- 新来源应该落到哪里
|
|
114
|
+
- 一个概念什么时候值得拥有独立实体页
|
|
115
|
+
- 一个高价值答案应该写回哪里
|
|
116
|
+
- 冲突信息应如何呈现
|
|
117
|
+
- 之后如何再次找到这些页面
|