lumina-wiki 1.0.0 → 1.2.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/CHANGELOG.md +86 -1
- package/README.md +32 -12
- package/README.vi.md +33 -13
- package/README.zh.md +35 -13
- package/bin/lumina.js +7 -1
- package/package.json +12 -3
- package/src/installer/banner.js +3 -0
- package/src/installer/commands.js +234 -61
- package/src/installer/locales/en.mjs +97 -0
- package/src/installer/locales/vi.mjs +96 -0
- package/src/installer/locales/zh.mjs +102 -0
- package/src/installer/locales.js +67 -0
- package/src/installer/manifest.js +5 -1
- package/src/installer/prompts.js +152 -44
- package/src/scripts/build-source.mjs +31 -0
- package/src/scripts/external-ids.mjs +217 -0
- package/src/scripts/lint.mjs +151 -8
- package/src/scripts/merge-ids.mjs +77 -0
- package/src/scripts/parse-ids.mjs +33 -0
- package/src/scripts/schemas.mjs +13 -1
- package/src/scripts/wiki.mjs +83 -20
- package/src/skills/core/ingest/references/step-01-draft.md +19 -1
- package/src/skills/core/migrate-legacy/SKILL.md +20 -3
- package/src/skills/core/migrate-legacy/references/backfill-ids.md +81 -0
- package/src/skills/packs/research/discover/SKILL.md +10 -6
- package/src/skills/packs/research/topic/SKILL.md +191 -0
- package/src/templates/README.md +2 -2
- package/src/templates/README.vi.md +232 -0
- package/src/templates/README.zh.md +233 -0
- package/src/templates/_lumina/schema/page-templates.md +2 -0
- package/src/tools/_cache.py +314 -0
- package/src/tools/fetch_arxiv.py +21 -1
- package/src/tools/fetch_deepxiv.py +3 -1
- package/src/tools/fetch_pdf.py +4 -0
- package/src/tools/fetch_s2.py +56 -6
- package/src/tools/fetch_wikipedia.py +7 -2
- package/src/tools/id_utils.py +262 -0
- package/src/tools/init_discovery.py +89 -18
package/CHANGELOG.md
CHANGED
|
@@ -3,7 +3,92 @@
|
|
|
3
3
|
All notable changes to Lumina-Wiki are documented here.
|
|
4
4
|
Format follows [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
|
|
5
5
|
|
|
6
|
-
## [
|
|
6
|
+
## [1.2.0] - 2026-05-07
|
|
7
|
+
|
|
8
|
+
### Added
|
|
9
|
+
|
|
10
|
+
- **Multilingual installer (PR #7).** Interactive installer prompts and
|
|
11
|
+
rendered banners now ship in English, Vietnamese, and Simplified Chinese.
|
|
12
|
+
Language is selected at install time and persisted; upgrades read the
|
|
13
|
+
prior choice from manifest config. Localization covers prompts, summary
|
|
14
|
+
output, and post-install banner — workspace template content is unchanged.
|
|
15
|
+
- **Persistent HTTP GET cache for fetchers (PR #5).** New
|
|
16
|
+
`_lumina/tools/http_cache.py` provides a content-addressed, file-backed
|
|
17
|
+
cache layer for arxiv / DOI / Semantic Scholar / web GET requests, shared
|
|
18
|
+
across `discover` and `ingest` runs. TTL is configurable via env
|
|
19
|
+
(validated at load time) and a cache schema version pins the on-disk
|
|
20
|
+
format so future shape changes self-invalidate. List-of-tuples query
|
|
21
|
+
params bypass caching by design.
|
|
22
|
+
- **Bun smoke job in CI (PR #3).** GitHub Actions now runs a Bun
|
|
23
|
+
compatibility job alongside Node, catching runtime divergences early
|
|
24
|
+
(path resolution, module loading, child-process spawn) without making
|
|
25
|
+
Bun a supported runtime contract.
|
|
26
|
+
- **Claude Code GitHub Actions workflows (PR #8).** Two opt-in workflows —
|
|
27
|
+
Claude PR Assistant (mention-triggered) and Claude Code Review (auto on
|
|
28
|
+
PR open/sync) — are shipped under `.github/workflows/`. Both are
|
|
29
|
+
restricted to repository maintainers on this public repo to prevent
|
|
30
|
+
unsolicited token usage from forks.
|
|
31
|
+
- Source pages gain an optional `external_ids` frontmatter object holding
|
|
32
|
+
validated cross-source identifiers across four namespaces: `doi`, `arxiv`,
|
|
33
|
+
`s2`, and `url` (canonical form). The namespace registry is locked to
|
|
34
|
+
these four — `openalex`, `isbn`, and `s2_corpus` are reserved but not yet
|
|
35
|
+
implemented.
|
|
36
|
+
- New module `_lumina/scripts/external-ids.mjs` and its Python mirror
|
|
37
|
+
`_lumina/tools/id_utils.py` provide pure helpers (`normalizeExternalId`,
|
|
38
|
+
`parseUrlToExternalIds`, `canonicalizeUrl`, `externalIdMatchKey`,
|
|
39
|
+
`expandExternalIds`, `safeIdToken`, `sanitizeExternalIdsObject`). Parity is
|
|
40
|
+
gated by a shared JSON fixture.
|
|
41
|
+
- New CLI wrapper `_lumina/scripts/parse-ids.mjs` reads a URL from `argv` and
|
|
42
|
+
emits a validated `external_ids` JSON map. Skill prompts call this instead
|
|
43
|
+
of inline `node -e` interpolation, eliminating shell-injection risk.
|
|
44
|
+
- Producers (`/lumi-ingest`, `/lumi-discover`, all fetchers) populate
|
|
45
|
+
`external_ids` automatically. `init_discovery.py --exclude-keys` filters
|
|
46
|
+
candidates by expanded external_ids set so a DOI excludes its arxiv form.
|
|
47
|
+
- Three new lint checks on source pages: **L13** (warn — namespace coverage
|
|
48
|
+
derivable from `urls[]`), **L14** (error — invalid identifier value),
|
|
49
|
+
**L16** (warn — `urls[]` ↔ `external_ids` mismatch). L13's remediation
|
|
50
|
+
message points users at `/lumi-migrate-legacy --backfill-ids`.
|
|
51
|
+
- Opt-in `/lumi-migrate-legacy --backfill-ids` flag populates `external_ids`
|
|
52
|
+
on legacy source pages from existing `urls[]`. Non-destructive (existing
|
|
53
|
+
keys win) and idempotent. No `--dry-run` — review with `git diff`.
|
|
54
|
+
- Source pages gain an optional `sources` frontmatter array recording fetch
|
|
55
|
+
provenance: `[{provider, fetched_at, url?}]`. Each ingest run appends one
|
|
56
|
+
entry — multi-fetch keeps history rather than replacing.
|
|
57
|
+
- New CLI wrapper `_lumina/scripts/build-source.mjs` (and the underlying
|
|
58
|
+
`buildSourceEntry` / `build_source_entry` helpers in `external-ids.mjs` /
|
|
59
|
+
`id_utils.py`) constructs one validated entry per fetcher run. Provider
|
|
60
|
+
must be a kebab/snake slug (max 32 chars). `/lumi-ingest` Phase 3 calls
|
|
61
|
+
it after writing `external_ids`.
|
|
62
|
+
|
|
63
|
+
### Changed
|
|
64
|
+
|
|
65
|
+
- `init_discovery.py` flag renamed in place: `--exclude-ids` →
|
|
66
|
+
`--exclude-keys`. No deprecation alias (LLM-driven, no human contract).
|
|
67
|
+
- `wiki.mjs` `parseFrontmatter` / `stringifyFrontmatter` now round-trip
|
|
68
|
+
top-level YAML object values (block-mapping form). `set-meta external_ids`
|
|
69
|
+
runs `sanitizeExternalIdsObject` automatically — `__proto__` and unknown
|
|
70
|
+
namespaces are stripped before persisting.
|
|
71
|
+
- `EXTERNAL_ID_NAMESPACES` source of truth moved from `external-ids.mjs` to
|
|
72
|
+
`schemas.mjs` (where pure-data lives). `external-ids.mjs` now imports and
|
|
73
|
+
re-exports it for back-compat with downstream consumers.
|
|
74
|
+
|
|
75
|
+
### Migration
|
|
76
|
+
|
|
77
|
+
- Legacy wikis with no `external_ids` populated will see L13 warnings on
|
|
78
|
+
source pages whose `urls[]` contain an arxiv/doi/s2 URL. Run
|
|
79
|
+
`/lumi-migrate-legacy --backfill-ids` to populate them. The standard
|
|
80
|
+
migration flow (`/lumi-migrate-legacy` without the flag) is unchanged.
|
|
81
|
+
|
|
82
|
+
## [1.1.0] - 2026-05-06
|
|
83
|
+
|
|
84
|
+
### Added
|
|
85
|
+
|
|
86
|
+
- `/lumi-research-topic` skill (research pack) — cluster existing concepts and sources into a thematic topic page under `wiki/topics/`. AI proposes the cluster from the graph; you confirm before anything is written.
|
|
87
|
+
|
|
88
|
+
### Changed
|
|
89
|
+
|
|
90
|
+
- READMEs (en/vi/zh) and section titles drop the `(v0.1)` qualifier; skill count badge is now `Skills-Many` so it does not need bumping per release.
|
|
91
|
+
- User guides (en/vi/zh) align the `/lumi-ingest` "What you get back" section across languages.
|
|
7
92
|
|
|
8
93
|
## [1.0.0] - 2026-05-06
|
|
9
94
|
|
package/README.md
CHANGED
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
<img alt="License" src="https://img.shields.io/badge/License-MIT-blue.svg"/>
|
|
13
13
|
<img alt="Node.js" src="https://img.shields.io/badge/Node.js-%3E%3D20-blue.svg"/>
|
|
14
14
|
<img alt="Python" src="https://img.shields.io/badge/Python-3.9+-yellow.svg"/>
|
|
15
|
-
<img alt="Skills" src="https://img.shields.io/badge/Skills-
|
|
15
|
+
<img alt="Skills" src="https://img.shields.io/badge/Skills-Many-purple.svg"/>
|
|
16
16
|
<br>
|
|
17
17
|
<img alt="Powered by" src="https://img.shields.io/badge/Powered%20by-grey?style=flat"/>
|
|
18
18
|
<img alt="Claude" src="https://img.shields.io/badge/-Claude%20Code-orange?style=flat"/>
|
|
@@ -56,6 +56,10 @@ Lumina-Wiki works from one simple principle: keep your raw materials separate fr
|
|
|
56
56
|
+-------------------------+ +---------------------------+
|
|
57
57
|
```
|
|
58
58
|
|
|
59
|
+
<p align="center">
|
|
60
|
+
<img src="assets/lumina-architecture-en.png" alt="Lumina-Wiki Architecture" width="720">
|
|
61
|
+
</p>
|
|
62
|
+
|
|
59
63
|
1. **You Provide:** Place your documents (PDFs, notes) in the `raw/` directory.
|
|
60
64
|
2. **The Agent Builds:** Use commands in your AI chat, such as `/lumi-ingest`, to make the agent read from `raw/` and build a structured, interlinked wiki in `wiki/`.
|
|
61
65
|
3. **You Query:** Ask questions with `/lumi-ask` against the agent's "brain" in `wiki/` for faster, more context-aware answers.
|
|
@@ -121,6 +125,10 @@ Interact with your wiki using these commands in your AI chat interface, such as
|
|
|
121
125
|
|
|
122
126
|
Lumina creates a workspace where each folder has a clear purpose.
|
|
123
127
|
|
|
128
|
+
<p align="center">
|
|
129
|
+
<img src="assets/lumina-env-en.png" alt="Lumina-Wiki Workspace Environment" width="720">
|
|
130
|
+
</p>
|
|
131
|
+
|
|
124
132
|
| Path | Purpose | Managed By |
|
|
125
133
|
| :--- | :--- | :--- |
|
|
126
134
|
| **`raw/`** | **Your immutable input library.** The agent **only reads** from here. | **You** |
|
|
@@ -152,9 +160,11 @@ As your wiki grows, you can use [qmd](https://github.com/tobi/qmd) for faster lo
|
|
|
152
160
|
npx skills add https://github.com/tobi/qmd --skill qmd
|
|
153
161
|
```
|
|
154
162
|
|
|
163
|
+
See the [Advanced Guide](docs/user-guide/advanced-qmd.en.md) for detailed installation and configuration.
|
|
164
|
+
|
|
155
165
|
---
|
|
156
166
|
|
|
157
|
-
## 5. Available Skills
|
|
167
|
+
## 5. Available Skills
|
|
158
168
|
|
|
159
169
|
These are the commands you can use when chatting with your AI agent.
|
|
160
170
|
|
|
@@ -171,6 +181,7 @@ These are the commands you can use when chatting with your AI agent.
|
|
|
171
181
|
| | `/lumi-research-watchlist` | Choose research topics for scheduled discovery with AI help. |
|
|
172
182
|
| | `/lumi-research-survey` | Create a survey or summary from existing knowledge. |
|
|
173
183
|
| | `/lumi-research-prefill` | Seed foundational concepts to avoid duplicates. |
|
|
184
|
+
| | `/lumi-research-topic` | Create a topic page at `wiki/topics/<slug>.md` by gathering related concepts and sources already in your wiki. The AI proposes what to include and you confirm before anything is written. Use this after several `/lumi-ingest` runs when you want to give a theme its own page. |
|
|
174
185
|
| | `/lumi-research-setup` | Help configure API keys for research tools. |
|
|
175
186
|
| **Reading** | `/lumi-reading-chapter-ingest` | Ingest a book chapter by chapter. |
|
|
176
187
|
| | `/lumi-reading-character-track` | Track characters and their relationships in a story. |
|
|
@@ -183,19 +194,28 @@ The scripts behind these skills live in `_lumina/scripts/` and `_lumina/tools/`;
|
|
|
183
194
|
|
|
184
195
|
## 6. What's Coming Next
|
|
185
196
|
|
|
186
|
-
|
|
197
|
+
Lumina-Wiki is evolving rapidly. Here is our user-facing roadmap:
|
|
187
198
|
|
|
188
|
-
**
|
|
189
|
-
-
|
|
190
|
-
-
|
|
191
|
-
-
|
|
192
|
-
-
|
|
199
|
+
**Near-term (Stability & New Ingestion)**
|
|
200
|
+
- [ ] **`/lumi-help` Skill:** A smart assistant to help you learn and use Lumina-Wiki instantly.
|
|
201
|
+
- [x] **Multilingual setup:** Choose English, Vietnamese, or Chinese as your primary language during install. *(shipped in v1.2)*
|
|
202
|
+
- [ ] **Native DOCX & Image OCR:** Ingest Word files and screenshots directly into your wiki.
|
|
203
|
+
- [ ] **Advanced Paper Ranking:** See influence scores and quality signals for your research papers.
|
|
204
|
+
- [x] **Improved CI/CD:** Native support for Bun and Node 22 environments. *(shipped in v1.2)*
|
|
193
205
|
|
|
194
|
-
**
|
|
195
|
-
- **
|
|
196
|
-
-
|
|
206
|
+
**Long-term (Deep Research & Integration)**
|
|
207
|
+
- [ ] **Global Source Expansion:** Direct integration with OpenAlex, CORE, and Unpaywall.
|
|
208
|
+
- [ ] **RSS & Blog Monitoring:** Automatically identify new papers from your favorite lab blogs.
|
|
209
|
+
- [ ] **Google Workspace:** Ingest Google Docs and Sheets directly into your graph.
|
|
210
|
+
- [ ] **Multimedia Support:** Process YouTube videos and Audio recordings via transcripts.
|
|
211
|
+
- [ ] **Knowledge Graph Auditing:** Automated checks for contradictions and structural drift.
|
|
197
212
|
|
|
198
|
-
**
|
|
213
|
+
**Proposed**
|
|
214
|
+
- [ ] **Desktop Application:** A dedicated visual environment for easier wiki management.
|
|
215
|
+
- [ ] **Specialized Science Packs:** Deep integration for bio-medical and physics researchers.
|
|
216
|
+
|
|
217
|
+
---
|
|
218
|
+
*Full technical details are available in [`ROADMAP.md`](./ROADMAP.md). Want to contribute? Join us on GitHub!*
|
|
199
219
|
|
|
200
220
|
---
|
|
201
221
|
|
package/README.vi.md
CHANGED
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
<img alt="License" src="https://img.shields.io/badge/License-MIT-blue.svg"/>
|
|
13
13
|
<img alt="Node.js" src="https://img.shields.io/badge/Node.js-%3E%3D20-blue.svg"/>
|
|
14
14
|
<img alt="Python" src="https://img.shields.io/badge/Python-3.9+-yellow.svg"/>
|
|
15
|
-
<img alt="Skills" src="https://img.shields.io/badge/Skills-
|
|
15
|
+
<img alt="Skills" src="https://img.shields.io/badge/Skills-Many-purple.svg"/>
|
|
16
16
|
<br>
|
|
17
17
|
<img alt="Powered by" src="https://img.shields.io/badge/Powered%20by-grey?style=flat"/>
|
|
18
18
|
<img alt="Claude" src="https://img.shields.io/badge/-Claude%20Code-orange?style=flat"/>
|
|
@@ -56,6 +56,10 @@ Lumina-Wiki hoạt động dựa trên một nguyên tắc đơn giản: tách b
|
|
|
56
56
|
+-------------------------+ +---------------------------+
|
|
57
57
|
```
|
|
58
58
|
|
|
59
|
+
<p align="center">
|
|
60
|
+
<img src="assets/lumina-architecture-vi.png" alt="Kiến trúc Lumina-Wiki" width="720">
|
|
61
|
+
</p>
|
|
62
|
+
|
|
59
63
|
1. **Bạn Cung cấp:** Đặt các tài liệu (PDF, ghi chú) của bạn vào thư mục `raw/`.
|
|
60
64
|
2. **Agent Xây dựng:** Sử dụng các lệnh trong cuộc hội thoại với AI (như `/lumi-ingest`) để yêu cầu agent đọc từ `raw/` và xây dựng một wiki có cấu trúc, liên kết chặt chẽ trong thư mục `wiki/`.
|
|
61
65
|
3. **Bạn Khai thác:** Đặt câu hỏi (sử dụng `/lumi-ask`) trực tiếp vào "bộ não" của agent trong `wiki/` để nhận được câu trả lời nhanh và phù hợp với ngữ cảnh hơn.
|
|
@@ -121,6 +125,10 @@ Tương tác với wiki của bạn bằng cách sử dụng các lệnh này tr
|
|
|
121
125
|
|
|
122
126
|
Lumina tạo ra một không gian làm việc với mục đích rõ ràng cho từng thư mục.
|
|
123
127
|
|
|
128
|
+
<p align="center">
|
|
129
|
+
<img src="assets/lumina-env-vi.png" alt="Môi trường làm việc Lumina-Wiki" width="720">
|
|
130
|
+
</p>
|
|
131
|
+
|
|
124
132
|
| Đường dẫn | Mục đích | Quản lý bởi |
|
|
125
133
|
| :--- | :--- | :--- |
|
|
126
134
|
| **`raw/`** | **Thư viện đầu vào bất biến của bạn.** Agent **chỉ đọc** từ đây. | **Bạn** |
|
|
@@ -152,9 +160,11 @@ Khi wiki lớn dần, bạn có thể dùng [qmd](https://github.com/tobi/qmd)
|
|
|
152
160
|
npx skills add https://github.com/tobi/qmd --skill qmd
|
|
153
161
|
```
|
|
154
162
|
|
|
163
|
+
Xem [Hướng dẫn Nâng cao](docs/user-guide/advanced-qmd.vi.md) để biết chi tiết cài đặt và cấu hình.
|
|
164
|
+
|
|
155
165
|
---
|
|
156
166
|
|
|
157
|
-
## 5. Các kỹ năng có sẵn
|
|
167
|
+
## 5. Các kỹ năng có sẵn
|
|
158
168
|
|
|
159
169
|
Đây là những lệnh bạn có thể sử dụng khi trò chuyện với AI.
|
|
160
170
|
|
|
@@ -171,6 +181,7 @@ npx skills add https://github.com/tobi/qmd --skill qmd
|
|
|
171
181
|
| | `/lumi-research-watchlist` | Giúp bạn chọn các chủ đề nghiên cứu để AI tìm định kỳ. |
|
|
172
182
|
| | `/lumi-research-survey` | Tạo một bài tổng quan/khảo sát từ kiến thức hiện có. |
|
|
173
183
|
| | `/lumi-research-prefill` | Tạo trước các khái niệm nền tảng để tránh trùng lặp. |
|
|
184
|
+
| | `/lumi-research-topic` | Gom các khái niệm và nguồn liên quan trong wiki thành một trang chủ đề tại `wiki/topics/<slug>.md`. AI đề xuất danh sách để bạn xem và xác nhận trước khi trang được tạo. Dùng sau khi đã nạp nhiều tài liệu và muốn tổng hợp một nhóm ý tưởng thành trang riêng. |
|
|
174
185
|
| | `/lumi-research-setup` | Giúp cấu hình API key cho các công cụ nghiên cứu. |
|
|
175
186
|
| **Reading** | `/lumi-reading-chapter-ingest`| Nạp kiến thức sách theo từng chương. |
|
|
176
187
|
| | `/lumi-reading-character-track`| Theo dõi các nhân vật và mối quan hệ của họ trong truyện. |
|
|
@@ -183,25 +194,34 @@ Các script chạy nền nằm trong `_lumina/scripts/` và `_lumina/tools/`; th
|
|
|
183
194
|
|
|
184
195
|
## 6. Lộ trình sắp tới
|
|
185
196
|
|
|
186
|
-
|
|
197
|
+
Lumina-Wiki đang phát triển nhanh chóng. Dưới đây là lộ trình hướng tới người dùng của chúng tôi:
|
|
187
198
|
|
|
188
|
-
**
|
|
189
|
-
-
|
|
190
|
-
-
|
|
191
|
-
-
|
|
192
|
-
-
|
|
199
|
+
**Sắp tới (Ổn định & Mở rộng nạp tài liệu)**
|
|
200
|
+
- [ ] **Kỹ năng `/lumi-help`:** Trợ lý thông minh giúp bạn học và sử dụng Lumina-Wiki tức thì.
|
|
201
|
+
- [x] **Cài đặt đa ngôn ngữ:** Chọn Tiếng Anh, Tiếng Việt hoặc Tiếng Trung làm ngôn ngữ chính khi cài đặt. *(đã phát hành trong v1.2)*
|
|
202
|
+
- [ ] **Ingest DOCX & OCR Ảnh:** Nạp trực tiếp file Word và ảnh chụp màn hình vào wiki.
|
|
203
|
+
- [ ] **Xếp hạng bài báo nâng cao:** Xem điểm số ảnh hưởng và tín hiệu chất lượng cho các nghiên cứu của bạn.
|
|
204
|
+
- [x] **Cải thiện CI/CD:** Hỗ trợ chính thức cho môi trường Bun và Node 22. *(đã phát hành trong v1.2)*
|
|
193
205
|
|
|
194
|
-
**
|
|
195
|
-
-
|
|
196
|
-
-
|
|
206
|
+
**Dài hạn (Nghiên cứu sâu & Tích hợp)**
|
|
207
|
+
- [ ] **Mở rộng nguồn dữ liệu toàn cầu:** Tích hợp trực tiếp với OpenAlex, CORE và Unpaywall.
|
|
208
|
+
- [ ] **Theo dõi RSS & Blog:** Tự động tìm bài báo mới từ các blog phòng thí nghiệm yêu thích.
|
|
209
|
+
- [ ] **Google Workspace:** Nạp trực tiếp Google Docs và Sheets vào đồ thị tri thức.
|
|
210
|
+
- [ ] **Hỗ trợ đa phương tiện:** Xử lý video YouTube và ghi âm Audio thông qua transcript.
|
|
211
|
+
- [ ] **Kiểm định đồ thị tri thức:** Tự động phát hiện mâu thuẫn và sai lệch cấu trúc.
|
|
197
212
|
|
|
198
|
-
**
|
|
213
|
+
**Dự kiến**
|
|
214
|
+
- [ ] **Ứng dụng Desktop:** Môi trường giao diện chuyên dụng để quản lý wiki dễ dàng hơn.
|
|
215
|
+
- [ ] **Gói Khoa học Chuyên dụng:** Tích hợp sâu cho các nhà nghiên cứu sinh học, y tế và vật lý.
|
|
216
|
+
|
|
217
|
+
---
|
|
218
|
+
*Chi tiết kỹ thuật đầy đủ có tại [`ROADMAP.md`](./ROADMAP.md). Bạn muốn đóng góp? Hãy tham gia cùng chúng tôi trên GitHub!*
|
|
199
219
|
|
|
200
220
|
---
|
|
201
221
|
|
|
202
222
|
## 7. Đóng góp & Giấy phép
|
|
203
223
|
|
|
204
|
-
###
|
|
224
|
+
### Phát triển cục bộ (dành cho người đóng góp)
|
|
205
225
|
|
|
206
226
|
Nếu bạn muốn đóng góp cho trình cài đặt `lumina-wiki`:
|
|
207
227
|
```bash
|
package/README.zh.md
CHANGED
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
<img alt="License" src="https://img.shields.io/badge/License-MIT-blue.svg"/>
|
|
13
13
|
<img alt="Node.js" src="https://img.shields.io/badge/Node.js-%3E%3D20-blue.svg"/>
|
|
14
14
|
<img alt="Python" src="https://img.shields.io/badge/Python-3.9+-yellow.svg"/>
|
|
15
|
-
<img alt="Skills" src="https://img.shields.io/badge/Skills-
|
|
15
|
+
<img alt="Skills" src="https://img.shields.io/badge/Skills-Many-purple.svg"/>
|
|
16
16
|
<br>
|
|
17
17
|
<img alt="Powered by" src="https://img.shields.io/badge/Powered%20by-grey?style=flat"/>
|
|
18
18
|
<img alt="Claude" src="https://img.shields.io/badge/-Claude%20Code-orange?style=flat"/>
|
|
@@ -56,6 +56,10 @@ Lumina-Wiki 遵循一个简单原则:将您的原始资料与 AI 的结构化
|
|
|
56
56
|
+-------------------------+ +---------------------------+
|
|
57
57
|
```
|
|
58
58
|
|
|
59
|
+
<p align="center">
|
|
60
|
+
<img src="assets/lumina-architecture-en.png" alt="Lumina-Wiki 架构" width="720">
|
|
61
|
+
</p>
|
|
62
|
+
|
|
59
63
|
1. **您提供:** 将文档(PDF、笔记)放入 `raw/` 目录。
|
|
60
64
|
2. **Agent 构建:** 在 AI 对话中使用指令(如 `/lumi-ingest`),让 Agent 从 `raw/` 读取内容,并在 `wiki/` 中构建结构化、互相关联的维基。
|
|
61
65
|
3. **您使用:** 通过 `/lumi-ask` 直接向 `wiki/` 中的 Agent“大脑”提问,获得更快、更贴合上下文的回答。
|
|
@@ -121,6 +125,10 @@ node _lumina/scripts/wiki.mjs migrate --add-defaults
|
|
|
121
125
|
|
|
122
126
|
Lumina 会创建一个工作区,每个目录都有明确用途。
|
|
123
127
|
|
|
128
|
+
<p align="center">
|
|
129
|
+
<img src="assets/lumina-env-en.png" alt="Lumina-Wiki 工作区环境" width="720">
|
|
130
|
+
</p>
|
|
131
|
+
|
|
124
132
|
| 路径 | 用途 | 管理方 |
|
|
125
133
|
| :--- | :--- | :--- |
|
|
126
134
|
| **`raw/`** | **您的不可变输入库。** Agent **只从这里读取**。 | **您** |
|
|
@@ -146,15 +154,18 @@ Lumina 会创建一个工作区,每个目录都有明确用途。
|
|
|
146
154
|
|
|
147
155
|
### **使用 qmd 进行本地搜索(高级,可选)**
|
|
148
156
|
|
|
149
|
-
|
|
157
|
+
随着 Wiki 的增长,您可以使用 [qmd](https://github.com/tobi/qmd) 实现更快的本地 Markdown 搜索。如果您的 IDE 支持 Skill 格式,请安装官方 qmd skill:
|
|
150
158
|
|
|
151
159
|
```bash
|
|
152
160
|
npx skills add https://github.com/tobi/qmd --skill qmd
|
|
153
161
|
```
|
|
154
162
|
|
|
163
|
+
有关详细的安装和配置,请参阅[高级指南](docs/user-guide/advanced-qmd.zh.md)。
|
|
164
|
+
|
|
165
|
+
|
|
155
166
|
---
|
|
156
167
|
|
|
157
|
-
## 5.
|
|
168
|
+
## 5. 可用技能
|
|
158
169
|
|
|
159
170
|
这些是您在与 AI 对话时可以使用的指令。
|
|
160
171
|
|
|
@@ -171,6 +182,7 @@ npx skills add https://github.com/tobi/qmd --skill qmd
|
|
|
171
182
|
| | `/lumi-research-watchlist` | 帮你选择要定期查找的研究主题。 |
|
|
172
183
|
| | `/lumi-research-survey` | 从现有知识创建综述/调研。 |
|
|
173
184
|
| | `/lumi-research-prefill` | 预先生成基础概念,避免重复。 |
|
|
185
|
+
| | `/lumi-research-topic` | 把 wiki 中已有的相关概念和来源汇聚成一个主题页,保存在 `wiki/topics/<slug>.md`。AI 会提议收录哪些内容,由你确认后再生成页面。多次 `/lumi-ingest` 之后,用它把一组相关想法整理成独立的主题页。 |
|
|
174
186
|
| | `/lumi-research-setup` | 帮助配置研究工具的 API key。 |
|
|
175
187
|
| **Reading** | `/lumi-reading-chapter-ingest`| 按章节导入书籍知识。 |
|
|
176
188
|
| | `/lumi-reading-character-track`| 追踪故事中的角色及其关系。 |
|
|
@@ -183,19 +195,29 @@ npx skills add https://github.com/tobi/qmd --skill qmd
|
|
|
183
195
|
|
|
184
196
|
## 6. 未来规划
|
|
185
197
|
|
|
186
|
-
|
|
198
|
+
Lumina-Wiki 正在快速演进。这是我们的用户路线图:
|
|
199
|
+
|
|
200
|
+
**近期计划(稳定性与新导入支持)**
|
|
201
|
+
- [ ] **`/lumi-help` 技能:** 智能助手,帮您即时学习和使用 Lumina-Wiki。
|
|
202
|
+
- [x] **多语言安装:** 安装时可选英文、越南文或中文作为主语言。*(v1.2 已发布)*
|
|
203
|
+
- [ ] **原生 DOCX 与图片 OCR:** 直接将 Word 文件和截图导入您的维基。
|
|
204
|
+
- [ ] **高级论文排名:** 查看研究论文的影响力评分和质量信号。
|
|
205
|
+
- [x] **改进的 CI/CD:** 正式支持 Bun 和 Node 22 环境。*(v1.2 已发布)*
|
|
187
206
|
|
|
188
|
-
|
|
189
|
-
-
|
|
190
|
-
-
|
|
191
|
-
-
|
|
192
|
-
-
|
|
207
|
+
**长期计划(深度研究与集成)**
|
|
208
|
+
- [ ] **全球数据源扩展:** 直接集成 OpenAlex、CORE 和 Unpaywall。
|
|
209
|
+
- [ ] **RSS 与博客监控:** 自动从您喜爱的实验室博客中发现新论文。
|
|
210
|
+
- [ ] **Google Workspace:** 直接将 Google Docs 和 Sheets 导入知识图谱。
|
|
211
|
+
- [ ] **多媒体支持:** 通过转录处理 YouTube 视频和音频录音。
|
|
212
|
+
- [ ] **知识图谱审计:** 自动检测矛盾和结构偏移。
|
|
193
213
|
|
|
194
|
-
|
|
195
|
-
-
|
|
196
|
-
-
|
|
214
|
+
**计划中**
|
|
215
|
+
- [ ] **桌面端应用:** 专用的图形界面环境,方便管理维基。
|
|
216
|
+
- [ ] **专业科学包:** 为生物医学和物理研究人员提供深度集成。
|
|
217
|
+
|
|
218
|
+
---
|
|
219
|
+
*完整的技术细节请见 [`ROADMAP.md`](./ROADMAP.md)。想要贡献?欢迎在 GitHub 上加入我们!*
|
|
197
220
|
|
|
198
|
-
**想贡献?** 选择 `ROADMAP.md` 中任何未勾选的项目,开 issue 认领,然后提交 PR。所有论文来源 fetcher 都遵循 `src/tools/` 中相同模式(CLI + JSON、no async、退出码 `0/2/3`),很适合作为第一次贡献。请参考下面的本地开发步骤。
|
|
199
221
|
|
|
200
222
|
---
|
|
201
223
|
|
package/bin/lumina.js
CHANGED
|
@@ -95,7 +95,7 @@ Flags applicable to all commands:
|
|
|
95
95
|
--packs <list> install packs: core,research,reading
|
|
96
96
|
--ide-targets <list> target CLIs: claude_code,codex,gemini_cli,qwen,iflow,cursor,generic
|
|
97
97
|
codex covers all AGENTS.md-compatible CLIs
|
|
98
|
-
(
|
|
98
|
+
(OpenAI CodexApp (ChatGPT), Amp, Crush, Goose, Auggie, OpenCode, etc.)
|
|
99
99
|
|
|
100
100
|
Examples:
|
|
101
101
|
npx lumina-wiki install
|
|
@@ -140,6 +140,8 @@ program
|
|
|
140
140
|
.addOption(new Option('--project-name <name>', 'override auto-derived project name').hideHelp())
|
|
141
141
|
.option('--communication-language <language>', 'language agents use when talking to the user')
|
|
142
142
|
.option('--document-output-language <language>', 'language used for wiki documents')
|
|
143
|
+
.option('--lang <code>', 'installer UI locale: en, vi, zh')
|
|
144
|
+
.option('--force-locale-switch', 'allow switching installer locale during upgrade')
|
|
143
145
|
.action(async (cmdOpts) => {
|
|
144
146
|
const globalOpts = program.opts();
|
|
145
147
|
const mergedDir = cmdOpts.directory ?? cmdOpts.cwd ?? globalOpts.directory ?? globalOpts.cwd ?? process.cwd();
|
|
@@ -161,8 +163,12 @@ program
|
|
|
161
163
|
projectName: cmdOpts.projectName,
|
|
162
164
|
communicationLang: cmdOpts.communicationLanguage,
|
|
163
165
|
documentOutputLang: cmdOpts.documentOutputLanguage,
|
|
166
|
+
lang: cmdOpts.lang,
|
|
167
|
+
forceLocaleSwitch: Boolean(cmdOpts.forceLocaleSwitch),
|
|
164
168
|
});
|
|
165
169
|
} catch (err) {
|
|
170
|
+
// Top-level catch: locale may not be resolved yet (pre-loadLocale path).
|
|
171
|
+
// Error strings kept as EN literals — machine-readable, intentionally exempt.
|
|
166
172
|
const isPermError = err.code === 'EACCES' || err.code === 'EPERM';
|
|
167
173
|
const isRangeError = err instanceof RangeError;
|
|
168
174
|
console.error(`[error] ${err.message}`);
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json.schemastore.org/package.json",
|
|
3
3
|
"name": "lumina-wiki",
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.2.0",
|
|
5
5
|
"description": "Domain-agnostic, multi-IDE wiki scaffolder — Karpathy's LLM-Wiki vision, cross-platform and pack-based.",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"llm-wiki",
|
|
@@ -35,6 +35,8 @@
|
|
|
35
35
|
"src/installer/banner.js",
|
|
36
36
|
"src/installer/commands.js",
|
|
37
37
|
"src/installer/fs.js",
|
|
38
|
+
"src/installer/locales.js",
|
|
39
|
+
"src/installer/locales/*.mjs",
|
|
38
40
|
"src/installer/manifest.js",
|
|
39
41
|
"src/installer/prompts.js",
|
|
40
42
|
"src/installer/template-engine.js",
|
|
@@ -45,8 +47,13 @@
|
|
|
45
47
|
"src/scripts/reset.mjs",
|
|
46
48
|
"src/scripts/schemas.mjs",
|
|
47
49
|
"src/scripts/discover-runner.mjs",
|
|
50
|
+
"src/scripts/external-ids.mjs",
|
|
51
|
+
"src/scripts/parse-ids.mjs",
|
|
52
|
+
"src/scripts/merge-ids.mjs",
|
|
53
|
+
"src/scripts/build-source.mjs",
|
|
48
54
|
"src/scripts/lib/*.mjs",
|
|
49
55
|
"src/skills/**/*.md",
|
|
56
|
+
"src/tools/_cache.py",
|
|
50
57
|
"src/tools/_env.py",
|
|
51
58
|
"src/tools/extract_pdf.py",
|
|
52
59
|
"src/tools/discover.py",
|
|
@@ -57,6 +64,7 @@
|
|
|
57
64
|
"src/tools/fetch_wikipedia.py",
|
|
58
65
|
"src/tools/fetch_s2.py",
|
|
59
66
|
"src/tools/fetch_deepxiv.py",
|
|
67
|
+
"src/tools/id_utils.py",
|
|
60
68
|
"src/tools/requirements.txt",
|
|
61
69
|
"CHANGELOG.md",
|
|
62
70
|
"README.md",
|
|
@@ -75,8 +83,8 @@
|
|
|
75
83
|
"devDependencies": {},
|
|
76
84
|
"scripts": {
|
|
77
85
|
"test": "npm run test:installer",
|
|
78
|
-
"test:installer": "node --test src/installer/commands.test.js src/installer/fs.test.js src/installer/manifest.test.js src/installer/template-engine.test.js src/installer/update-check.test.js",
|
|
79
|
-
"test:scripts": "node --test src/scripts/lint.test.mjs src/scripts/reset.test.mjs src/scripts/wiki.test.mjs src/scripts/discover-runner.test.mjs",
|
|
86
|
+
"test:installer": "node --test src/installer/commands.test.js src/installer/fs.test.js src/installer/locales.test.js src/installer/manifest.test.js src/installer/prompts.test.js src/installer/readme-templates.test.js src/installer/template-engine.test.js src/installer/update-check.test.js",
|
|
87
|
+
"test:scripts": "node --test src/scripts/lint.test.mjs src/scripts/reset.test.mjs src/scripts/wiki.test.mjs src/scripts/discover-runner.test.mjs src/scripts/external-ids.test.mjs src/scripts/parse-ids.test.mjs src/scripts/merge-ids.test.mjs src/scripts/build-source.test.mjs src/scripts/wiki-yaml-object.test.mjs",
|
|
80
88
|
"test:python": "python3 -m pytest src/tools/tests -q",
|
|
81
89
|
"test:all": "npm run test:installer && npm run test:scripts && npm run test:python",
|
|
82
90
|
"test:fs": "node --test src/installer/fs.test.js",
|
|
@@ -84,6 +92,7 @@
|
|
|
84
92
|
"test:template": "node --test src/installer/template-engine.test.js",
|
|
85
93
|
"test:update": "node --test src/installer/update-check.test.js",
|
|
86
94
|
"ci:idempotency": "node scripts/ci-idempotency.mjs",
|
|
95
|
+
"ci:cold-start": "node scripts/measure-cold-start.mjs",
|
|
87
96
|
"ci:package": "node scripts/ci-package.mjs",
|
|
88
97
|
"pack:check": "npm run ci:package",
|
|
89
98
|
"dev:install": "node bin/lumina.js install",
|
package/src/installer/banner.js
CHANGED
|
@@ -7,6 +7,9 @@
|
|
|
7
7
|
* subshells. Respects NO_COLOR by emitting plain text.
|
|
8
8
|
*
|
|
9
9
|
* Narrow terminals (<80 cols) get a compact fallback so lines do not wrap.
|
|
10
|
+
*
|
|
11
|
+
* Banner runs before locale selection; literal EN by design.
|
|
12
|
+
* ASCII art is locale-agnostic; only tagline+footer use hardcoded EN strings.
|
|
10
13
|
*/
|
|
11
14
|
|
|
12
15
|
const NO_COLOR = Boolean(process.env.NO_COLOR);
|