Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
89f817c
fix: 审阅建页写入溯源信息并在卡片上展示可点击来源
hugo2046 Jul 2, 2026
2e69e51
docs: 修正四语版 README 的源码构建说明
hugo2046 Jul 2, 2026
c15835f
fix: 修复评审发现的溯源写入缺陷并支持多来源并集
hugo2046 Jul 2, 2026
a9c3165
feat: 审阅卡片展示来源并集并为预览面板添加返回导航
hugo2046 Jul 2, 2026
e9d2060
fix: PAGES 引用写入时确定性解析 + 身份比较 NFC 加固
hugo2046 Jul 2, 2026
79c51f6
feat: 审阅卡片解释不可追溯原因、标记网络研究来源,deep-research 注入时效约束
hugo2046 Jul 2, 2026
e52d7e5
feat: 金融研究模板与导入来源文件名规范化
hugo2046 Jul 2, 2026
affaeab
fix: 修复第二轮评审的 10 项发现
hugo2046 Jul 2, 2026
d516d05
docs: 新增金融来源命名规范化使用指南
hugo2046 Jul 2, 2026
ec1abcb
docs: 补充金融命名指南文档文件(上游 .gitignore 忽略 docs/,需显式跟踪)
hugo2046 Jul 2, 2026
8190af5
feat: 金融命名支持港股基础表 hk_basic.csv
hugo2046 Jul 2, 2026
4d2c9fd
feat: 个股表支持全局共享目录并提示数据时效
hugo2046 Jul 2, 2026
9a86918
feat: 文件夹导入同样规范化金融文件名(保留目录结构)
hugo2046 Jul 2, 2026
134640d
fix: A/B 后缀基名命中优先,解决 A+H 前缀撞车误判歧义
hugo2046 Jul 3, 2026
49c845b
fix: 个股匹配剥除全量市场标记并做编码/大小写归一
hugo2046 Jul 3, 2026
8096169
fix: 市场标记后缀改为枚举集剥除,-AI/-ESG 类缩写不再被误吞
hugo2046 Jul 4, 2026
a307f2b
fix: 修复第三轮自查发现的静默退化与文档一致性问题
hugo2046 Jul 4, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -49,3 +49,8 @@ pnpm-debug.log*
# Brainstorm assets (not tracked in source control)
.superpowers/
.claude/

# Local code-analysis caches
.codegraph/
.understand-anything/
.remember/
5 changes: 4 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@
- **Vector Semantic Search** — optional embedding-based retrieval via LanceDB, supports any OpenAI-compatible endpoint
- **Persistent Ingest Queue** — serial processing with crash recovery, cancel, retry, and progress visualization
- **Folder Import** — recursive folder import preserving directory structure, folder context as LLM classification hint
- **Finance Source Naming** — Finance template normalizes imported meeting notes to `yyyymmdd-ticker-name-title` using a `stock_basic.csv` lookup ([docs](docs/finance-source-naming.md))
- **Source Folder Auto-Watch** — detects external changes in `raw/sources/` and keeps ingest/delete cleanup in sync
- **Deep Research** — LLM-optimized search topics, multi-query web search via Tavily, SerpApi, or SearXNG, auto-ingest results into wiki
- **Async Review System** — LLM flags items for human judgment, predefined actions, pre-generated search queries
Expand Down Expand Up @@ -383,10 +384,12 @@ Download from [Releases](https://github.com/nashsu/llm_wiki/releases):
### Build from Source

```bash
# Prerequisites: Node.js 20+, Rust 1.70+
# Prerequisites: Node.js 20+, Rust 1.70+, protobuf (macOS: brew install protobuf / Windows: choco install protoc)
# If Rust was just installed via rustup, open a new terminal (or run `source ~/.cargo/env`) first
git clone https://github.com/nashsu/llm_wiki.git
cd llm_wiki
npm install
npm --prefix mcp-server ci && npm run mcp:build # Build the bundled MCP server (required by the Tauri bundle)
npm run tauri dev # Development
npm run tauri build # Production build
```
Expand Down
5 changes: 4 additions & 1 deletion README_CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@
- **向量语义搜索** — 可选的 embedding 检索,基于 LanceDB,支持任意 OpenAI 兼容端点
- **持久化摄入队列** — 串行处理,崩溃恢复,取消/重试,进度可视化
- **文件夹导入** — 递归导入保留目录结构,文件夹路径作为 LLM 分类上下文
- **金融来源命名规范化** — 金融研究模板导入纪要时自动规范为 `yyyymmdd-代码-简称-标题`,基于 `stock_basic.csv` 匹配个股([使用指南](docs/finance-source-naming.md))
- **Source 文件夹自动监听** — 检测 `raw/sources/` 的外部变更,并同步触发摄入或删除清理
- **深度研究** — LLM 智能生成搜索主题,通过 Tavily、SerpApi 或 SearXNG 进行多查询网络搜索,研究结果自动摄入 Wiki
- **异步审核系统** — LLM 在摄入时标记需人工判断的项,预定义操作,预生成搜索查询
Expand Down Expand Up @@ -383,10 +384,12 @@ LLM Wiki 是一个跨平台桌面应用,能将你的文档自动转化为有
### 从源码构建

```bash
# 前置条件:Node.js 20+, Rust 1.70+
# 前置条件:Node.js 20+, Rust 1.70+, protobuf(macOS: brew install protobuf / Windows: choco install protoc)
# 若刚通过 rustup 安装 Rust,请先重开终端(或执行 `source ~/.cargo/env`)使 cargo 生效
git clone https://github.com/nashsu/llm_wiki.git
cd llm_wiki
npm install
npm --prefix mcp-server ci && npm run mcp:build # 构建内置 MCP server(Tauri 打包资源依赖)
npm run tauri dev # 开发模式
npm run tauri build # 生产构建
```
Expand Down
5 changes: 4 additions & 1 deletion README_JA.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@
- **ベクトル意味検索** — LanceDB ベースの任意 OpenAI 互換エンドポイントによる埋め込み検索(オプション)
- **永続インジェストキュー** — 直列処理、クラッシュ復旧、キャンセル、リトライ、進捗の可視化に対応
- **フォルダインポート** — ディレクトリ構造を保持した再帰インポート。フォルダパスを LLM の分類ヒントとして利用
- **金融ソース命名の正規化** — 金融リサーチテンプレートでは、インポートした会議メモを `stock_basic.csv` の照合により `yyyymmdd-銘柄コード-銘柄名-タイトル` 形式へ自動正規化([ドキュメント](docs/finance-source-naming.md))
- **ソースフォルダの自動監視** — `raw/sources/` の外部変更を検出し、インジェスト・削除クリーンアップを同期
- **Deep Research** — LLM が検索トピックを最適化生成し、Tavily / SerpApi / SearXNG によるマルチクエリ Web 検索結果を自動で Wiki 化
- **非同期レビューシステム** — LLM が人間の判断を要する項目を作成し、定義済みアクションと事前生成された検索クエリを付与
Expand Down Expand Up @@ -392,10 +393,12 @@ LLM Wiki は、手元の文書を整理された相互リンク付きの知識
### ソースからビルド

```bash
# 前提条件: Node.js 20+, Rust 1.70+
# 前提条件: Node.js 20+, Rust 1.70+, protobuf(macOS: brew install protobuf / Windows: choco install protoc)
# rustup で Rust をインストールした直後は、新しいターミナルを開く(または `source ~/.cargo/env` を実行)
git clone https://github.com/nashsu/llm_wiki.git
cd llm_wiki
npm install
npm --prefix mcp-server ci && npm run mcp:build # 同梱 MCP server のビルド(Tauri バンドルに必須)
npm run tauri dev # 開発モード
npm run tauri build # 本番ビルド
```
Expand Down
5 changes: 4 additions & 1 deletion README_KO.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@
- **벡터 의미 검색** — LanceDB 기반의 선택적 임베딩 검색으로, OpenAI 호환 엔드포인트를 지원합니다
- **영속 인제스트 큐** — 직렬 처리, 충돌 복구, 취소, 재시도, 진행 상황 시각화를 지원합니다
- **폴더 가져오기** — 디렉터리 구조를 유지하며 재귀적으로 가져오고, 폴더 컨텍스트를 LLM 분류 힌트로 사용합니다
- **금융 소스 이름 정규화** — 금융 리서치 템플릿은 가져온 미팅 노트를 `stock_basic.csv` 조회를 통해 `yyyymmdd-종목코드-종목명-제목` 형식으로 자동 정규화합니다 ([문서](docs/finance-source-naming.md))
- **소스 폴더 자동 감시** — `raw/sources/`의 외부 변경을 감지하고 인제스트/삭제 정리 흐름과 동기화합니다
- **Deep Research** — LLM에 최적화된 검색 주제와 Tavily, SerpApi, SearXNG 기반 다중 쿼리 웹 검색을 사용하고, 결과를 자동으로 Wiki에 인제스트합니다
- **비동기 리뷰 시스템** — LLM이 사람의 판단이 필요한 항목을 표시하고, 사전 정의된 작업과 미리 생성된 검색 쿼리를 제공합니다
Expand Down Expand Up @@ -392,10 +393,12 @@ LLM Wiki는 문서를 자동으로 정리되고 서로 연결된 지식 베이
### 소스에서 빌드

```bash
# Prerequisites: Node.js 20+, Rust 1.70+
# Prerequisites: Node.js 20+, Rust 1.70+, protobuf (macOS: brew install protobuf / Windows: choco install protoc)
# rustup으로 Rust를 방금 설치했다면 새 터미널을 열거나 `source ~/.cargo/env`를 먼저 실행하세요
git clone https://github.com/nashsu/llm_wiki.git
cd llm_wiki
npm install
npm --prefix mcp-server ci && npm run mcp:build # 번들 MCP server 빌드 (Tauri 번들 필수 리소스)
npm run tauri dev # Development
npm run tauri build # Production build
```
Expand Down
134 changes: 134 additions & 0 deletions docs/finance-source-naming.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,134 @@
# 金融来源文件名规范化使用指南

选择 **金融研究(Finance Research)** 模板的项目可以在导入纪要时自动把文件名规范化为:

```
yyyymmdd-<股票代码|NA>-<简称>-<标题>.<扩展名>
```

例如 `悦安电感材料专家交流260701.docx` 导入后变成
`20260701-688786.SH-悦安新材-电感材料专家交流.docx`。日期与标的从此进入来源身份,
摘要页标题、检索结果、LLM 上下文里都能看到,deep-research 与矛盾判定也就有了时间锚点。

## 快速开始

1. 新建项目时选择 **金融研究** 模板,保持"导入来源时规范化文件名"复选框勾选(默认开启)
2. 把 `stock_basic.csv`(见下节)放到两处**任一**位置:

**推荐:应用数据目录(全局,放一次所有金融项目共享)**

| 系统 | 路径 |
|------|------|
| macOS | `~/Library/Application Support/com.llmwiki.app/` |
| Windows | `%APPDATA%\com.llmwiki.app\` |
| Linux | `~/.local/share/com.llmwiki.app/` |

**或:项目根目录(仅该项目生效,且会覆盖全局同名表)**

```
我的金融库/
├── stock_basic.csv ← 项目级覆盖放这里
├── purpose.md
├── raw/
└── wiki/
```

3. 正常拖拽/导入纪要文件即可,改名自动完成

两处都没有表也能用:只做日期规范化,个股段一律为 `NA`。

> ⚠️ **数据时效**:成分股随上市/退市/改名持续变化,应用不会自动更新这两张表——
> 建议定期(如每季度)重新从 tushare 导出覆盖全局目录中的文件。

## stock_basic.csv 的结构

按**表头**识别列,列顺序无所谓,多余的列会被忽略(pandas `to_csv` 未加
`index=False` 时产生的首列无名索引也没关系)。必需与可选列:

| 列名 | 必需 | 说明 | 示例 |
|------|------|------|------|
| `ts_code` | ✅ | 带交易所后缀的代码,将写入文件名 | `688786.SH` |
| `name` | ✅ | 股票简称,用于匹配文件名中的标的 | `悦安新材` |
| `cnspell` | 可选 | 拼音缩写(当前保留字段) | `yaxc` |

最小可用示例:

```csv
ts_code,name,cnspell
688786.SH,悦安新材,yaxc
002738.SZ,中矿资源,zkzy
600519.SH,贵州茅台,gzmt
```

用 [tushare](https://tushare.pro) 一次导出全部 A 股:

```python
import tushare as ts

pro = ts.pro_api("你的token")
df = pro.stock_basic(exchange="", list_status="L",
fields="ts_code,symbol,name,area,industry,cnspell,market")
df.to_csv("stock_basic.csv", index=False)
```

### 港股:hk_basic.csv(可选)

港股不在 `stock_basic` 表内。把 tushare `hk_basic` 导出为**单独的**
`hk_basic.csv`,同样放在项目根目录即可(不要与 A 股表合并成一个文件——
两表列顺序不同且拼音列名不同,`hk_basic` 是 `cn_spell`,两种列名都能识别):

```python
df = pro.hk_basic(list_status="L",
fields="ts_code,name,fullname,enname,cn_spell,market")
df.to_csv("hk_basic.csv", index=False)
```

A+H 两地上市的公司(如中芯国际)在两张表中同名,匹配时**A 股代码优先**;
若某篇纪要明确谈的是港股主体,可在导入后按审计表手工核对。
美股暂无约定文件,相关纪要落 `NA` 格式。

## 命名规则细节

**日期提取**(按优先级,均校验月/日合法性):

1. 8 位 `yyyymmdd`(如 `20260630`),任意位置
2. 6 位 `yymmdd`(如 `260607` → `20260607`),年份限 2020–2039 窗口——
所以裸股票代码(如 `600519`)不会被误判成日期
3. 4 位 `mmdd`(如 `0701`),**仅当位于文件名主干结尾**——避免 `1206` 这类型号/规格被误判
4. 都提取不到 → 使用文件的修改时间,并在审计表里标注 `dateSource: "fallback"`

只有被实际采用的那段日期会从标题中移除,`2028年产能`、`1600V` 这类数字原样保留。

**个股匹配**:先找简称全称,找不到再按前缀递减(最短两个字,`悦安` 能命中 `悦安新材`),
取最长的唯一命中。同一强度命中多只个股(歧义)或零命中时**不猜**,落 `NA` 格式。

## 改名审计与排错

每次实际发生的改名都会追加记录到 `<项目>/.llm-wiki/rename-map.json`:

```json
{
"original": "悦安电感材料专家交流260701.docx",
"renamed": "20260701-688786.SH-悦安新材-电感材料专家交流.docx",
"date": "20260701",
"dateSource": "filename",
"tsCode": "688786.SH",
"stockName": "悦安新材",
"matchedBy": "name-prefix",
"importedAt": 1782971234567
}
```

- `renamed` 是**实际落盘**的文件名(重名时追加 `-导入当日日期` 后缀,仍冲突则再加 `-2`、`-3` 序号)
- `dateSource: "fallback"` 表示文件名里提不出日期,用了文件修改时间——值得人工复核
- `matchedBy: null` 且你预期应命中个股时,检查 CSV 里该股的 `name` 与文件名写法是否对得上
- 该文件仅供排错,应用运行不依赖它,删除不影响功能

## 范围与限制

- **文件导入**与**文件夹导入**均改名(文件夹导入只规范叶子文件名,目录结构原样保留);
定时导入、网页剪藏暂保留原名
- 已有项目想启用:在项目下手动创建 `.llm-wiki/source-naming.json`,内容为
`{"mode": "finance"}`,重启应用后生效
- **不要**对已被摄取过的存量文件在文件系统里手工改名——来源文件名是全库引用的身份主键,
改名会打断既有 wiki 页面的溯源链
Loading