lifeos 1.1.1 → 1.1.2
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.en.md +208 -0
- package/README.md +113 -114
- package/assets/lifeos-rules.en.md +1 -1
- package/assets/lifeos-rules.zh.md +1 -1
- package/assets/skills/archive/SKILL.en.md +1 -1
- package/assets/skills/archive/SKILL.zh.md +1 -1
- package/assets/skills/ask/SKILL.en.md +1 -1
- package/assets/skills/ask/SKILL.zh.md +1 -1
- package/assets/skills/brainstorm/SKILL.en.md +1 -1
- package/assets/skills/brainstorm/SKILL.zh.md +1 -1
- package/assets/skills/digest/SKILL.en.md +1 -1
- package/assets/skills/digest/SKILL.zh.md +1 -1
- package/assets/skills/digest/references/__pycache__/rss-arxiv-script.cpython-312.pyc +0 -0
- package/assets/skills/knowledge/SKILL.en.md +1 -1
- package/assets/skills/knowledge/SKILL.zh.md +1 -1
- package/assets/skills/project/SKILL.en.md +1 -1
- package/assets/skills/project/SKILL.zh.md +1 -1
- package/assets/skills/read-pdf/SKILL.en.md +1 -1
- package/assets/skills/read-pdf/SKILL.zh.md +1 -1
- package/assets/skills/research/SKILL.en.md +1 -1
- package/assets/skills/research/SKILL.zh.md +1 -1
- package/assets/skills/revise/SKILL.en.md +1 -1
- package/assets/skills/revise/SKILL.zh.md +1 -1
- package/assets/skills/today/SKILL.en.md +1 -1
- package/assets/skills/today/SKILL.zh.md +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/server.js +1 -1
- package/dist/services/startup.js +3 -1
- package/dist/services/startup.js.map +1 -1
- package/dist/types.d.ts +1 -0
- package/dist/utils/vault-indexer.d.ts +1 -0
- package/dist/utils/vault-indexer.js +54 -1
- package/dist/utils/vault-indexer.js.map +1 -1
- package/package.json +1 -1
- package/README.zh.md +0 -207
package/README.en.md
ADDED
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
# LifeOS
|
|
2
|
+

|
|
3
|
+
[中文](./README.md) | [English](./README.en.md)
|
|
4
|
+
|
|
5
|
+
LifeOS helps you grow scattered ideas into structured knowledge and truly master it, from quick captures, to brainstorming and deep research, to systematic project planning and knowledge notes, to spaced review and mastery tracking. The goal is not just building a knowledge base, but helping you understand, internalize, and command complex knowledge.
|
|
6
|
+
|
|
7
|
+
## Why Build LifeOS?
|
|
8
|
+
|
|
9
|
+
LifeOS started from a simple goal: package learning workflows, skills, templates, prompts, and a memory system into one complete setup you can use immediately. Instead of assembling your own toolchain from scratch or jumping between disconnected tools, you can initialize once, start working right away, and keep accumulating knowledge, process, and preferences as you go.
|
|
10
|
+
|
|
11
|
+
## Core Features
|
|
12
|
+
|
|
13
|
+
### Memory System
|
|
14
|
+
|
|
15
|
+
> The memory system is LifeOS's core capability. It works in a directory-scoped, skill-bound way, continuously preserving the context, preferences, and decisions that emerge during learning so long-term learning becomes more continuous, more traceable, and easier to build on.
|
|
16
|
+
|
|
17
|
+
#### Cross-session continuity
|
|
18
|
+
|
|
19
|
+
Session bridges and active-document context persist, so agents do not depend only on the current conversation.
|
|
20
|
+
|
|
21
|
+
#### Project-scoped and skill-bound
|
|
22
|
+
|
|
23
|
+
The memory system runs around the current LifeOS project in the vault, activates only inside workflows such as `today`, `project`, `research`, `knowledge`, `revise`, `digest`, and `archive`, and keeps accumulating preferences, decisions, and context.
|
|
24
|
+
|
|
25
|
+
#### More controllable than global memory
|
|
26
|
+
|
|
27
|
+
Compared with a memory model that mixes cross-directory content and global conversations together, a project-scoped, skill-bound memory system reduces irrelevant noise and keeps retrieval and follow-up decisions closer to the current LifeOS workflow.
|
|
28
|
+
|
|
29
|
+
### Directory Customization
|
|
30
|
+
|
|
31
|
+
LifeOS does not lock you into fixed directory names. Run `lifeos rename [path]` and the CLI will interactively list the directories that can be adjusted in the current vault, then guide you through choosing one and entering a new name.
|
|
32
|
+
|
|
33
|
+
It updates `lifeos.yaml`, renames the actual directory, and batch-replaces all related wikilinks across the vault. That lets you adapt directory names to your own workflow, language preference, and project structure while keeping configuration and links consistent.
|
|
34
|
+
|
|
35
|
+
### Learning Workflows
|
|
36
|
+
|
|
37
|
+
LifeOS provides a set of Agent skills designed around the learning process, connecting "input -> understanding -> output -> reinforcement" into a continuous workflow:
|
|
38
|
+
|
|
39
|
+
- `/today`, `/brainstorm`, `/ask`: organize the day's focus, clarify questions, and quickly expand ideas
|
|
40
|
+
- `/project`, `/research`, `/knowledge`: turn a topic into a project, a research report, and structured knowledge notes
|
|
41
|
+
- `/digest`: subscribe to topic updates and generate structured weekly digests from paper sources, RSS, and web search
|
|
42
|
+
- `/read-pdf`, `/revise`, `/archive`: move from source extraction, to review and reinforcement, to periodic archiving
|
|
43
|
+
|
|
44
|
+
## Core Components
|
|
45
|
+
|
|
46
|
+
- **Memory system** — Project-scoped and skill-bound, providing vault indexing, session memory, and context assembly for AI agents
|
|
47
|
+
- **CLI scaffold** — install globally, then use `lifeos init` to bootstrap a complete workspace
|
|
48
|
+
- **Skill system** — 10 Agent skills covering daily planning, projects, research, weekly digests, knowledge curation, review, and more
|
|
49
|
+
- **Templates + Schema** — 8 structured templates + Frontmatter schema for consistent notes
|
|
50
|
+
|
|
51
|
+
## Quick Start
|
|
52
|
+
|
|
53
|
+
LifeOS has been verified to work properly with Claude Code TUI / Codex TUI / OpenCode TUI on macOS, and with OpenCode GUI on Windows. Other desktop GUI apps or platform/client combinations have not been validated yet and may require additional testing.
|
|
54
|
+
|
|
55
|
+
### Prerequisites
|
|
56
|
+
|
|
57
|
+
Before starting, make sure Obsidian and at least one of Claude Code TUI / Codex TUI / OpenCode TUI / OpenCode GUI are installed locally.
|
|
58
|
+
|
|
59
|
+
| Dependency | Required | Purpose |
|
|
60
|
+
|---|---|---|
|
|
61
|
+
| **Node.js 24.14.1+ (LTS)** | Required | Runtime for MCP server and CLI |
|
|
62
|
+
| **Python 3** | Required | PDF extraction (`/read-pdf`) and digest fetch helpers (`/digest`) |
|
|
63
|
+
|
|
64
|
+
`lifeos init` checks all prerequisites before creating the workspace.
|
|
65
|
+
|
|
66
|
+
### Installation and Initialization
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
# Step 1: install the CLI globally
|
|
70
|
+
npm install -g lifeos
|
|
71
|
+
|
|
72
|
+
# Step 2: create a new LifeOS workspace (auto-detects language from system locale)
|
|
73
|
+
lifeos init ./my-vault
|
|
74
|
+
|
|
75
|
+
# Or specify language explicitly
|
|
76
|
+
lifeos init ./my-vault --lang zh # Chinese
|
|
77
|
+
lifeos init ./my-vault --lang en # English
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
After init, MCP server configs are automatically registered for:
|
|
81
|
+
|
|
82
|
+
| Tool | Config file |
|
|
83
|
+
|---|---|
|
|
84
|
+
| **Claude Code** | `.mcp.json` |
|
|
85
|
+
| **Codex** | `.codex/config.toml` |
|
|
86
|
+
| **OpenCode** | `opencode.json` |
|
|
87
|
+
|
|
88
|
+
Launch any of these tools in the vault directory to use all skills.
|
|
89
|
+
|
|
90
|
+
If you want version control for the vault, initialize and manage Git yourself. LifeOS does not create or manage Git metadata for you.
|
|
91
|
+
|
|
92
|
+
## CLI Commands
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
lifeos init [path] [--lang zh|en] [--no-mcp] # Create a new vault
|
|
96
|
+
lifeos upgrade [path] [--lang zh|en] [--override] # Upgrade and restore assets/scaffold
|
|
97
|
+
lifeos doctor [path] # Health check
|
|
98
|
+
lifeos rename [path] # Interactive directory rename
|
|
99
|
+
lifeos --help # Show help
|
|
100
|
+
lifeos --version # Show version
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
### init
|
|
104
|
+
|
|
105
|
+
Creates a complete LifeOS workspace:
|
|
106
|
+
|
|
107
|
+
- 10 top-level directories plus nested subdirectories
|
|
108
|
+
- 8 Markdown templates
|
|
109
|
+
- Frontmatter schema
|
|
110
|
+
- 10 AI skills with language-aware assets
|
|
111
|
+
- `CLAUDE.md` agent behavior spec
|
|
112
|
+
- `lifeos.yaml` config
|
|
113
|
+
- MCP server registration (Claude Code / Codex / OpenCode)
|
|
114
|
+
|
|
115
|
+
### upgrade
|
|
116
|
+
|
|
117
|
+
Upgrades and re-syncs an initialized vault:
|
|
118
|
+
|
|
119
|
+
- **Smart merge**: update unmodified templates, schema files, built-in prompts, and skill files; skip modified ones with a warning
|
|
120
|
+
- **Restore missing scaffold**: bring back missing directories and managed files such as the memory directory, `.claude/skills`, `CLAUDE.md`, `AGENTS.md`, and MCP config entries
|
|
121
|
+
- **Preserve user changes**: built-in files already customized by the user are not force-overwritten
|
|
122
|
+
- **`--override` force-refreshes resources**: overwrite templates, schema, prompts, skills, `CLAUDE.md`, `AGENTS.md`, and MCP config entries without deleting user notes, resources, `memory.db`, memory-system data, or custom directory/memory settings in `lifeos.yaml`
|
|
123
|
+
|
|
124
|
+
By default, `lifeos upgrade` tries to preserve resource files you have already modified, while updating untouched content and restoring anything missing. If you want to explicitly replace those resources with the current built-in templates, skills, schema files, and MCP config entries, use `--override`:
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
lifeos upgrade ./my-vault --override
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
### doctor
|
|
131
|
+
|
|
132
|
+
Checks vault integrity: directory structure, templates, schema, skills, config, Node.js version, and asset version.
|
|
133
|
+
|
|
134
|
+
### rename: Directory Customization
|
|
135
|
+
|
|
136
|
+
No extra flags are required. Run `lifeos rename [path]` and the CLI will show the directories available in the current vault, then guide you step by step to choose one and enter a new name. It updates `lifeos.yaml`, renames the actual directory, and batch-replaces related wikilinks across the vault.
|
|
137
|
+
|
|
138
|
+
This means LifeOS does not lock you into fixed directory names. You can freely adapt directory names to your own workflow, language preference, and project structure while keeping configuration and links consistent.
|
|
139
|
+
|
|
140
|
+
## Skills
|
|
141
|
+
|
|
142
|
+
| Skill | Description |
|
|
143
|
+
|---|---|
|
|
144
|
+
| `/today` | Morning planning: review yesterday, plan today |
|
|
145
|
+
| `/project` | Idea -> structured project |
|
|
146
|
+
| `/research` | Topic -> deep research report |
|
|
147
|
+
| `/digest` | Topic subscription -> structured weekly digest |
|
|
148
|
+
| `/knowledge` | Book/paper -> knowledge note |
|
|
149
|
+
| `/revise` | Generate quizzes, grade, and track mastery |
|
|
150
|
+
| `/read-pdf` | PDF -> structured notes |
|
|
151
|
+
| `/ask` | Quick Q&A |
|
|
152
|
+
| `/brainstorm` | Interactive brainstorming |
|
|
153
|
+
| `/archive` | Archive completed projects, processed drafts, completed plans, and diary entries older than the most recent 7 days |
|
|
154
|
+
|
|
155
|
+
## Custom Expert Prompts
|
|
156
|
+
|
|
157
|
+
The `/research` skill automatically scans the Prompts directory in your vault for expert prompt files. LifeOS ships with built-in expert prompts for AI/LLM, Math, Art, and History, and you can add your own to extend research capabilities to any domain.
|
|
158
|
+
|
|
159
|
+
### How It Works
|
|
160
|
+
|
|
161
|
+
When you invoke `/research`, the Planning Agent:
|
|
162
|
+
|
|
163
|
+
1. Lists all `.md` files in `{system directory}/Prompts/`
|
|
164
|
+
2. Reads each file's frontmatter and **Domain Coverage** section
|
|
165
|
+
3. Matches the research topic to the best-fit expert prompt
|
|
166
|
+
4. Applies the matched prompt's analytical framework and output format to the research report
|
|
167
|
+
|
|
168
|
+
### Adding Custom Expert Prompts
|
|
169
|
+
|
|
170
|
+
Create a `.md` file in your vault's Prompts directory (`{system directory}/Prompts/`). The Planning Agent will pick it up automatically on the next `/research` invocation, with no restart or re-init required. Use the built-in prompts in the same directory as a reference for structure.
|
|
171
|
+
|
|
172
|
+
## Tech Stack
|
|
173
|
+
|
|
174
|
+
- **Runtime:** TypeScript + Node.js 24.14.1+ (LTS)
|
|
175
|
+
- **Database:** SQLite + FTS5 (full-text search)
|
|
176
|
+
- **Segmentation:** @node-rs/jieba (Chinese tokenization)
|
|
177
|
+
- **Protocol:** MCP (Model Context Protocol)
|
|
178
|
+
- **Vault:** Obsidian (plain Markdown + Frontmatter)
|
|
179
|
+
|
|
180
|
+
## Milestones
|
|
181
|
+
|
|
182
|
+
- ✅ LifeOS 1.0 is now basically usable
|
|
183
|
+
- ✅ The CLI supports directory customization
|
|
184
|
+
- ✅ The CLI `upgrade` command supports smart updates
|
|
185
|
+
- ✅ Claude Code TUI / Codex TUI / OpenCode TUI on macOS and OpenCode GUI on Windows have been tested
|
|
186
|
+
- ✅ The `/digest` skill supports multilingual weekly digests with multi-source paper fetching
|
|
187
|
+
- ☐ Improve memory-system precision
|
|
188
|
+
- ☐ Support custom skills
|
|
189
|
+
- ☐ Support custom workflows
|
|
190
|
+
|
|
191
|
+
## Development
|
|
192
|
+
|
|
193
|
+
```bash
|
|
194
|
+
git clone git@github.com:luneth90/lifeos.git
|
|
195
|
+
cd lifeos
|
|
196
|
+
npm install
|
|
197
|
+
npm run build # Compile TypeScript
|
|
198
|
+
npm test # Run tests (431 tests)
|
|
199
|
+
npm run dev # Dev mode (hot reload)
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
## License
|
|
203
|
+
|
|
204
|
+
[MIT](LICENSE)
|
|
205
|
+
|
|
206
|
+
## Acknowledgements
|
|
207
|
+
|
|
208
|
+
This project was inspired by [MarsWang42/OrbitOS](https://github.com/MarsWang42/OrbitOS).
|
package/README.md
CHANGED
|
@@ -1,127 +1,126 @@
|
|
|
1
1
|
# LifeOS
|
|
2
|
-

|
|
3
|
+
[English](./README.en.md) | 中文
|
|
4
4
|
|
|
5
|
-
LifeOS
|
|
5
|
+
LifeOS 帮助你将碎片灵感发展为结构化知识,并真正掌握它,从随手捕获的想法,到头脑风暴与深度研究,到体系化的项目规划与知识笔记,再到间隔复习与掌握度追踪。目标不只是建立知识库,而是帮你理解、内化和驾驭复杂知识。
|
|
6
6
|
|
|
7
|
-
##
|
|
7
|
+
## 为什么开发 LifeOS?
|
|
8
8
|
|
|
9
|
-
LifeOS
|
|
9
|
+
LifeOS 的出发点很直接:把学习工作流、技能、模板、提示词和记忆系统整合成一套可以直接落地的完整方案。你不需要自己从零拼装工具链,也不必在不同工具之间来回切换,初始化后即可开箱即用,并在真实使用中持续沉淀知识、流程与偏好。
|
|
10
10
|
|
|
11
|
-
##
|
|
11
|
+
## 核心功能
|
|
12
12
|
|
|
13
|
-
###
|
|
13
|
+
### 记忆系统
|
|
14
14
|
|
|
15
|
-
>
|
|
15
|
+
> 记忆系统是 LifeOS 的核心能力,它以目录级、技能绑定的方式工作,把学习过程中的上下文、偏好与决策持续沉淀下来,让长期学习更连贯、更可追踪,也更容易形成积累。
|
|
16
16
|
|
|
17
|
-
####
|
|
17
|
+
#### 跨会话连续性
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
会话桥接和活跃文档上下文会持续沉淀,Agent 不只依赖当前对话。
|
|
20
20
|
|
|
21
|
-
####
|
|
21
|
+
#### 项目级、技能绑定
|
|
22
22
|
|
|
23
|
-
|
|
23
|
+
记忆系统围绕当前 Vault 中的 LifeOS 项目运行,只在 `today`、`project`、`research`、`knowledge`、`revise`、`digest`、`archive` 等技能工作流里激活,并持续积累偏好、决策和上下文。
|
|
24
24
|
|
|
25
|
-
####
|
|
25
|
+
#### 比全局记忆更可控
|
|
26
26
|
|
|
27
|
-
|
|
27
|
+
相较于把跨目录内容和全局会话混在一起的记忆方式,项目级、技能绑定的记忆系统能减少无关噪声,让检索结果与后续决策更贴近当前 LifeOS 工作流。
|
|
28
28
|
|
|
29
|
-
###
|
|
29
|
+
### 目录自定义
|
|
30
30
|
|
|
31
|
-
LifeOS
|
|
31
|
+
LifeOS 不把目录命名固定死。执行 `lifeos rename [path]` 后,CLI 会交互式列出当前 Vault 中可调整的目录,引导你选择目录并输入新名称。
|
|
32
32
|
|
|
33
|
-
|
|
33
|
+
它会同步更新 `lifeos.yaml`、重命名实际目录,并批量替换 Vault 中所有相关的 wikilink。你可以根据自己的工作流、语言习惯和项目结构自由调整目录名称,同时保持配置和链接关系一致。
|
|
34
34
|
|
|
35
|
-
###
|
|
35
|
+
### 学习工作流
|
|
36
36
|
|
|
37
|
-
LifeOS
|
|
37
|
+
LifeOS 提供一组围绕学习过程设计的 Agent 技能,把“输入 -> 理解 -> 产出 -> 巩固”串成连续工作流:
|
|
38
38
|
|
|
39
|
-
- `/today
|
|
40
|
-
- `/project
|
|
41
|
-
- `/digest
|
|
42
|
-
- `/read-pdf
|
|
39
|
+
- `/today`、`/brainstorm`、`/ask`:整理当天重点、澄清问题、快速展开想法
|
|
40
|
+
- `/project`、`/research`、`/knowledge`:把主题推进成项目、研究报告和知识笔记
|
|
41
|
+
- `/digest`:按主题订阅论文、RSS 与 Web 更新,自动生成结构化信息周报
|
|
42
|
+
- `/read-pdf`、`/revise`、`/archive`:从资料提取、复习巩固,到定期归档收束
|
|
43
43
|
|
|
44
|
-
##
|
|
44
|
+
## 核心组件
|
|
45
45
|
|
|
46
|
-
-
|
|
47
|
-
- **CLI
|
|
48
|
-
-
|
|
49
|
-
-
|
|
46
|
+
- **记忆系统**:项目级、技能绑定,为 AI Agent 提供 Vault 索引、会话记忆、上下文组装
|
|
47
|
+
- **CLI 脚手架**:全局安装后使用 `lifeos init` 一键创建工作空间
|
|
48
|
+
- **技能系统**:10 个 Agent 技能覆盖日记、项目、研究、信息周报、知识整理、复习等工作流
|
|
49
|
+
- **模板 + 规范**:8 个结构化模板 + Frontmatter 规范,确保笔记一致性
|
|
50
50
|
|
|
51
|
-
##
|
|
51
|
+
## 快速开始
|
|
52
52
|
|
|
53
|
-
|
|
53
|
+
目前已确认 macOS 上的 Claude Code TUI / Codex TUI / OpenCode TUI,以及 Windows 上 OpenCode GUI 可以正常使用。其他 GUI 桌面端或平台/客户端组合尚未完成验证,实际兼容性仍需进一步测试。
|
|
54
54
|
|
|
55
|
-
###
|
|
55
|
+
### 前置要求
|
|
56
56
|
|
|
57
|
-
|
|
57
|
+
开始前,请确保本机已安装 Obsidian,以及 Claude Code TUI / Codex TUI / OpenCode TUI / OpenCode GUI 中至少一种。
|
|
58
58
|
|
|
59
|
-
|
|
|
59
|
+
| 依赖 | 必须 | 用途 |
|
|
60
60
|
|---|---|---|
|
|
61
|
-
| **Node.js 24.14.1+ (LTS)** |
|
|
62
|
-
| **Python 3** |
|
|
61
|
+
| **Node.js 24.14.1+ (LTS)** | 必须 | MCP Server 和 CLI 运行环境 |
|
|
62
|
+
| **Python 3** | 必须 | PDF 提取(`/read-pdf`)和信息周报抓取脚本(`/digest`) |
|
|
63
63
|
|
|
64
|
-
`lifeos init`
|
|
64
|
+
`lifeos init` 会在创建工作空间前自动检查所有前置依赖。
|
|
65
65
|
|
|
66
|
-
###
|
|
66
|
+
### 安装与初始化
|
|
67
67
|
|
|
68
68
|
```bash
|
|
69
|
-
#
|
|
69
|
+
# 第一步:全局安装 CLI
|
|
70
70
|
npm install -g lifeos
|
|
71
71
|
|
|
72
|
-
#
|
|
72
|
+
# 第二步:创建新的 LifeOS 工作空间(根据系统 locale 自动检测语言)
|
|
73
73
|
lifeos init ./my-vault
|
|
74
74
|
|
|
75
|
-
#
|
|
76
|
-
lifeos init ./my-vault --lang zh #
|
|
77
|
-
lifeos init ./my-vault --lang en #
|
|
75
|
+
# 或显式指定语言
|
|
76
|
+
lifeos init ./my-vault --lang zh # 中文
|
|
77
|
+
lifeos init ./my-vault --lang en # 英文
|
|
78
78
|
```
|
|
79
79
|
|
|
80
|
-
|
|
80
|
+
安装完成后,MCP server 配置会自动注册到以下工具:
|
|
81
81
|
|
|
82
|
-
|
|
|
82
|
+
| 工具 | 配置文件 |
|
|
83
83
|
|---|---|
|
|
84
84
|
| **Claude Code** | `.mcp.json` |
|
|
85
85
|
| **Codex** | `.codex/config.toml` |
|
|
86
86
|
| **OpenCode** | `opencode.json` |
|
|
87
87
|
|
|
88
|
-
|
|
88
|
+
在 Vault 目录下启动任一工具即可使用所有技能。
|
|
89
89
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
## CLI Commands
|
|
90
|
+
## CLI 命令
|
|
93
91
|
|
|
94
92
|
```bash
|
|
95
|
-
lifeos init [path] [--lang zh|en] [--no-mcp] #
|
|
96
|
-
lifeos upgrade [path] [--lang zh|en] [--override] #
|
|
97
|
-
lifeos doctor [path] #
|
|
98
|
-
lifeos rename [path] #
|
|
99
|
-
lifeos --help #
|
|
100
|
-
lifeos --version #
|
|
93
|
+
lifeos init [path] [--lang zh|en] [--no-mcp] # 创建新 Vault
|
|
94
|
+
lifeos upgrade [path] [--lang zh|en] [--override] # 升级并补齐资产与脚手架
|
|
95
|
+
lifeos doctor [path] # 健康检查
|
|
96
|
+
lifeos rename [path] # 交互式重命名目录
|
|
97
|
+
lifeos --help # 查看帮助
|
|
98
|
+
lifeos --version # 查看版本
|
|
101
99
|
```
|
|
102
100
|
|
|
103
101
|
### init
|
|
104
102
|
|
|
105
|
-
|
|
103
|
+
创建完整的 LifeOS 工作空间:
|
|
106
104
|
|
|
107
|
-
- 10
|
|
108
|
-
- 8 Markdown
|
|
109
|
-
- Frontmatter
|
|
110
|
-
- 10 AI
|
|
111
|
-
- `CLAUDE.md`
|
|
112
|
-
- `lifeos.yaml`
|
|
113
|
-
-
|
|
105
|
+
- 10 个顶层目录 + 嵌套子目录
|
|
106
|
+
- 8 个 Markdown 模板
|
|
107
|
+
- Frontmatter 规范
|
|
108
|
+
- 10 个 AI 技能(按语言自动切换)
|
|
109
|
+
- `CLAUDE.md` Agent 行为规范
|
|
110
|
+
- `lifeos.yaml` 配置文件
|
|
111
|
+
- Git 初始化 + `.gitignore`
|
|
112
|
+
- MCP Server 注册(Claude Code / Codex / OpenCode)
|
|
114
113
|
|
|
115
114
|
### upgrade
|
|
116
115
|
|
|
117
|
-
|
|
116
|
+
对已初始化的 Vault 执行升级与补全:
|
|
118
117
|
|
|
119
|
-
-
|
|
120
|
-
-
|
|
121
|
-
-
|
|
122
|
-
- **`--override`
|
|
118
|
+
- **智能合并**:模板、规范、内置提示词、技能文件未修改则更新,已修改则跳过并警告
|
|
119
|
+
- **缺失补全**:缺失的目录和脚手架文件会补回,例如记忆目录、`.claude/skills`、`CLAUDE.md`、`AGENTS.md`、`.gitignore`、`.git`、MCP 配置
|
|
120
|
+
- **保留用户修改**:已存在且被用户改过的内置文件不会被强制覆盖
|
|
121
|
+
- **`--override` 强制刷新资源**:覆盖模板、规范、提示词、技能、`CLAUDE.md`、`AGENTS.md` 以及 MCP 配置,但不会删除用户笔记、资源、`memory.db`、记忆系统数据,也不会改写 `lifeos.yaml` 里的目录和记忆配置
|
|
123
122
|
|
|
124
|
-
|
|
123
|
+
默认执行 `lifeos upgrade` 时,会尽量保留你已经改过的资源文件,只更新未修改内容并补齐缺失项。如果你希望直接用当前版本的内置模板、技能、规范和 MCP 配置重新覆盖这些资源,可以显式加上 `--override`:
|
|
125
124
|
|
|
126
125
|
```bash
|
|
127
126
|
lifeos upgrade ./my-vault --override
|
|
@@ -129,80 +128,80 @@ lifeos upgrade ./my-vault --override
|
|
|
129
128
|
|
|
130
129
|
### doctor
|
|
131
130
|
|
|
132
|
-
|
|
131
|
+
检查 Vault 完整性:目录结构、模板、规范、技能、配置文件、Node.js 版本、资产版本。
|
|
133
132
|
|
|
134
|
-
### rename
|
|
133
|
+
### rename:目录可自定义化
|
|
135
134
|
|
|
136
|
-
|
|
135
|
+
无需额外参数,直接执行 `lifeos rename [path]` 后,CLI 会列出当前 Vault 中可调整的目录,并通过交互引导你选择目录和输入新名称。它会同步更新 `lifeos.yaml`、重命名实际目录,并批量替换 Vault 中所有相关的 wikilink。
|
|
137
136
|
|
|
138
|
-
|
|
137
|
+
这意味着 LifeOS 的目录命名不是固定死的。你可以根据自己的工作流、语言习惯和项目结构,自由调整各个目录的名称,同时保持配置和链接关系一致,获得最大的使用自由度。
|
|
139
138
|
|
|
140
|
-
##
|
|
139
|
+
## 技能一览
|
|
141
140
|
|
|
142
|
-
|
|
|
141
|
+
| 技能 | 功能 |
|
|
143
142
|
|---|---|
|
|
144
|
-
| `/today` |
|
|
145
|
-
| `/project` |
|
|
146
|
-
| `/research` |
|
|
147
|
-
| `/digest` |
|
|
148
|
-
| `/knowledge` |
|
|
149
|
-
| `/revise` |
|
|
150
|
-
| `/read-pdf` | PDF
|
|
151
|
-
| `/ask` |
|
|
152
|
-
| `/brainstorm` |
|
|
153
|
-
| `/archive` |
|
|
143
|
+
| `/today` | 晨间规划:回顾昨日、规划今日 |
|
|
144
|
+
| `/project` | 想法 → 结构化项目 |
|
|
145
|
+
| `/research` | 主题 → 深度研究报告 |
|
|
146
|
+
| `/digest` | 主题订阅 → 结构化信息周报 |
|
|
147
|
+
| `/knowledge` | 书籍/论文 → 知识笔记 |
|
|
148
|
+
| `/revise` | 生成复习题、批改、追踪掌握度 |
|
|
149
|
+
| `/read-pdf` | PDF → 结构化笔记 |
|
|
150
|
+
| `/ask` | 快速问答 |
|
|
151
|
+
| `/brainstorm` | 交互式头脑风暴 |
|
|
152
|
+
| `/archive` | 归档已完成的项目、已处理的草稿、已完成的计划,以及超过最近 7 天的日记 |
|
|
154
153
|
|
|
155
|
-
##
|
|
154
|
+
## 自定义专家提示词
|
|
156
155
|
|
|
157
|
-
|
|
156
|
+
`/research` 技能会自动扫描 Vault 中提示词目录下的所有专家人格文件。LifeOS 内置了 AI/LLM、数学、艺术、历史等领域的专家人格,你可以添加自己的提示词来扩展研究能力到任何领域。
|
|
158
157
|
|
|
159
|
-
###
|
|
158
|
+
### 工作原理
|
|
160
159
|
|
|
161
|
-
|
|
160
|
+
调用 `/research` 时,Planning Agent 会:
|
|
162
161
|
|
|
163
|
-
1.
|
|
164
|
-
2.
|
|
165
|
-
3.
|
|
166
|
-
4.
|
|
162
|
+
1. 列出 `{系统目录}/提示词/` 下所有 `.md` 文件
|
|
163
|
+
2. 读取每个文件的 frontmatter 和**领域覆盖**章节
|
|
164
|
+
3. 将研究主题与最匹配的专家提示词进行比对
|
|
165
|
+
4. 将匹配的专家提示词的分析框架和输出格式应用到研究报告中
|
|
167
166
|
|
|
168
|
-
###
|
|
167
|
+
### 添加自定义专家提示词
|
|
169
168
|
|
|
170
|
-
|
|
169
|
+
在 Vault 的提示词目录(`{系统目录}/提示词/`)下创建 `.md` 文件即可。Planning Agent 在下次 `/research` 调用时会自动发现,无需重启或重新初始化。文件结构参照同目录下的预设提示词即可。
|
|
171
170
|
|
|
172
|
-
##
|
|
171
|
+
## 技术栈
|
|
173
172
|
|
|
174
|
-
- **Runtime:** TypeScript + Node.js
|
|
175
|
-
- **Database:** SQLite + FTS5
|
|
176
|
-
- **Segmentation:** @node-rs/jieba
|
|
173
|
+
- **Runtime:** TypeScript + Node.js 18+
|
|
174
|
+
- **Database:** SQLite + FTS5(全文搜索)
|
|
175
|
+
- **Segmentation:** @node-rs/jieba(中文分词)
|
|
177
176
|
- **Protocol:** MCP (Model Context Protocol)
|
|
178
|
-
- **Vault:** Obsidian
|
|
177
|
+
- **Vault:** Obsidian(纯 Markdown + Frontmatter)
|
|
179
178
|
|
|
180
|
-
##
|
|
179
|
+
## 里程碑
|
|
181
180
|
|
|
182
|
-
- ✅ LifeOS 1.0
|
|
183
|
-
- ✅
|
|
184
|
-
- ✅
|
|
185
|
-
- ✅ Claude Code TUI / Codex TUI / OpenCode TUI
|
|
186
|
-
- ✅
|
|
187
|
-
- ☐
|
|
188
|
-
- ☐
|
|
189
|
-
- ☐
|
|
181
|
+
- ✅ LifeOS 1.0 版本已初步可用
|
|
182
|
+
- ✅ CLI 支持目录自定义
|
|
183
|
+
- ✅ CLI upgrade 支持智能更新
|
|
184
|
+
- ✅ 已完成 macOS 上 Claude Code TUI / Codex TUI / OpenCode TUI 与 Windows 上 OpenCode GUI 的验证
|
|
185
|
+
- ✅ `/digest` 技能已支持中英双语信息周报与多来源论文抓取
|
|
186
|
+
- ☐ 强化记忆系统精准性
|
|
187
|
+
- ☐ 支持自定义技能
|
|
188
|
+
- ☐ 支持自定义工作流
|
|
190
189
|
|
|
191
|
-
##
|
|
190
|
+
## 开发
|
|
192
191
|
|
|
193
192
|
```bash
|
|
194
193
|
git clone git@github.com:luneth90/lifeos.git
|
|
195
194
|
cd lifeos
|
|
196
195
|
npm install
|
|
197
|
-
npm run build #
|
|
198
|
-
npm test #
|
|
199
|
-
npm run dev #
|
|
196
|
+
npm run build # 编译 TypeScript
|
|
197
|
+
npm test # 运行测试(431 个)
|
|
198
|
+
npm run dev # 开发模式(热重载)
|
|
200
199
|
```
|
|
201
200
|
|
|
202
201
|
## License
|
|
203
202
|
|
|
204
203
|
[MIT](LICENSE)
|
|
205
204
|
|
|
206
|
-
##
|
|
205
|
+
## 致谢
|
|
207
206
|
|
|
208
|
-
|
|
207
|
+
本项目的灵感来源于 [MarsWang42/OrbitOS](https://github.com/MarsWang42/OrbitOS)。
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
> The default directory names below come from presets; actual names follow the user's `lifeos.yaml` configuration.
|
|
7
7
|
|
|
8
8
|
# Agent Behavior Guidelines — LifeOS
|
|
9
|
-
`v1.1.
|
|
9
|
+
`v1.1.2`
|
|
10
10
|
|
|
11
11
|
You are the user's lifelong learning partner. Through **LifeOS**, help the user develop fragmented inspirations into structured knowledge and truly master it — from casually captured ideas, through brainstorming and deep research, to systematic project planning and knowledge notes, then spaced review and mastery tracking. The goal is not just building a knowledge base, but helping the user understand, internalize, and command complex knowledge.
|
|
12
12
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: archive
|
|
3
3
|
description: "Scan and archive completed projects (status:done), consumed drafts (status:researched/projected/knowledged), completed plans (status: done), and diary entries older than the most recent 7 days, moving them into the unified archive structure and updating frontmatter. Never touches pending drafts, active plans, or the most recent 7 days of diary entries. Use this skill when the user wants to clean up the Vault, archive completed work, tidy up, or says '/archive'."
|
|
4
|
-
version: 1.1.
|
|
4
|
+
version: 1.1.2
|
|
5
5
|
dependencies:
|
|
6
6
|
templates: []
|
|
7
7
|
prompts: []
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: archive
|
|
3
3
|
description: '扫描并归档已完成的项目(status:done)、已消化的草稿(status:researched/projected/knowledged)、已完成的计划(status: done)以及超过最近 7 天的日记,按归档规则移入统一归档目录并更新 frontmatter。不会触碰 pending 草稿、active 计划或最近 7 天的日记。当用户想清理 Vault、归档已完成的工作、整理库、或说"/archive"时使用此技能。'
|
|
4
|
-
version: 1.1.
|
|
4
|
+
version: 1.1.2
|
|
5
5
|
dependencies:
|
|
6
6
|
templates: []
|
|
7
7
|
prompts: []
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: ask
|
|
3
3
|
description: Quickly answer user questions, retrieving existing Vault notes as needed. Suitable for concept explanations, usage queries, Vault content lookups, PDF page-specific questions, and other single-turn Q&A scenarios. Complex questions will suggest upgrading to /brainstorm or /research.
|
|
4
|
-
version: 1.1.
|
|
4
|
+
version: 1.1.2
|
|
5
5
|
dependencies:
|
|
6
6
|
templates:
|
|
7
7
|
- path: "{system directory}/{templates subdirectory}/Draft_Template.md"
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: ask
|
|
3
3
|
description: 快速回答用户问题,按需检索 Vault 已有笔记辅助作答。适用于概念解释、用法查询、Vault 内容检索、PDF 指定页面提问等单轮问答场景。当用户提出任何直接问题或说"/ask"时使用此技能。复杂问题会建议升级到 /brainstorm 或 /research。
|
|
4
|
-
version: 1.1.
|
|
4
|
+
version: 1.1.2
|
|
5
5
|
dependencies:
|
|
6
6
|
templates:
|
|
7
7
|
- path: "{系统目录}/{模板子目录}/Draft_Template.md"
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: brainstorm
|
|
3
3
|
description: Explore and deepen user ideas through multi-turn interactive dialogue, using techniques like 5 Whys, What if, and Devil's Advocate to guide divergent thinking. Upon conclusion, the user can choose to create a project (invoke /project), organize wiki notes, or save as a draft. Suitable when the user wants to discuss an immature idea, needs divergent thinking, or wants to explore the feasibility of a direction.
|
|
4
|
-
version: 1.1.
|
|
4
|
+
version: 1.1.2
|
|
5
5
|
dependencies:
|
|
6
6
|
templates:
|
|
7
7
|
- path: "{system directory}/{templates subdirectory}/Wiki_Template.md"
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: brainstorm
|
|
3
3
|
description: 通过多轮交互式对话探索和深化用户的想法,使用 5 Whys、What if、Devil's Advocate 等思维技巧引导发散。结束后可选择创建项目(调用 /project)、整理为百科笔记、或保存为草稿。当用户想聊一个还不成熟的想法、需要发散思维、探索某个方向的可行性、或说"/brainstorm"时使用此技能。
|
|
4
|
-
version: 1.1.
|
|
4
|
+
version: 1.1.2
|
|
5
5
|
dependencies:
|
|
6
6
|
templates:
|
|
7
7
|
- path: "{系统目录}/{模板子目录}/Wiki_Template.md"
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: digest
|
|
3
3
|
description: "A general weekly digest skill: on first use, guide the user through creating a topic config note (Paper Sources, RSS, Web search, and more), then automatically fetch updates and write a structured weekly digest into the drafts directory. Supports multiple topics with separate configs and separate outputs. Trigger when the user says '/digest', 'digest', or asks for a weekly digest."
|
|
4
|
-
version: 1.1.
|
|
4
|
+
version: 1.1.2
|
|
5
5
|
dependencies:
|
|
6
6
|
templates: []
|
|
7
7
|
prompts: []
|
|
Binary file
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: knowledge
|
|
3
3
|
description: "Distill structured knowledge notes and wiki concepts from book chapters or papers (output to {knowledge directory}/). Requires three inputs: project file (required), source content (required), draft notes (optional fusion). Produces main notes (template-structured) and wiki concepts (Wiki entries), establishing bidirectional Wikilinks. Use this skill when the user wants to organize chapter knowledge, extract wiki concepts, structure source text into notes, or says '/knowledge'. Will prompt to use /project first if no project file exists."
|
|
4
|
-
version: 1.1.
|
|
4
|
+
version: 1.1.2
|
|
5
5
|
dependencies:
|
|
6
6
|
templates:
|
|
7
7
|
- path: "{system directory}/{templates subdirectory}/Knowledge_Template.md"
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: knowledge
|
|
3
3
|
description: 从书籍章节或论文中蒸馏结构化知识笔记和百科概念(产出到 {知识目录}/)。需要三类输入:项目文件(必须)、原文内容(必须)、草稿笔记(可选融合)。产出主笔记(按模板结构化)和百科概念(Wiki 条目),并建立双向 Wikilinks。当用户想整理某章知识点、提取百科概念、把原文结构化为笔记、或说"/knowledge"时使用此技能。若无项目文件会提示先用 /project 创建。
|
|
4
|
-
version: 1.1.
|
|
4
|
+
version: 1.1.2
|
|
5
5
|
dependencies:
|
|
6
6
|
templates:
|
|
7
7
|
- path: "{系统目录}/{模板子目录}/Knowledge_Template.md"
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: project
|
|
3
3
|
description: "Transform ideas, drafts, or learning resources into structured project files (output to {projects directory}/). Uses dual-Agent workflow: the Planning Agent creates a `type: plan, status: active` plan file for review, then the Execution Agent creates the formal project after confirmation and updates the plan to `status: done`. Supports four project types: learning (chapter-based planning), development (single main project + docs directory), creative (milestone-based), general. Use this skill when the user wants to create a project, plan a book's study, formalize a draft idea, or says '/project'."
|
|
4
|
-
version: 1.1.
|
|
4
|
+
version: 1.1.2
|
|
5
5
|
dependencies:
|
|
6
6
|
templates:
|
|
7
7
|
- path: "{system directory}/{templates subdirectory}/Project_Template.md"
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: project
|
|
3
3
|
description: '将想法、草稿或学习资源转化为结构化的项目文件(产出到 {项目目录}/)。使用双 Agent 工作流:规划 Agent 生成 `type: plan, status: active` 的计划文件供用户审核,确认后执行 Agent 创建正式项目并将计划更新为 `status: done`。支持四种项目类型:学习(章节式规划)、开发(单主项目+文档目录)、创作(里程碑式)、通用。当用户想创建项目、规划一本书的学习、把草稿想法正式化、或说"/project"时使用此技能。'
|
|
4
|
-
version: 1.1.
|
|
4
|
+
version: 1.1.2
|
|
5
5
|
dependencies:
|
|
6
6
|
templates:
|
|
7
7
|
- path: "{系统目录}/{模板子目录}/Project_Template.md"
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: read-pdf
|
|
3
3
|
description: "Extract text, charts (Vision analysis), math formulas (to LaTeX), and tables (to Markdown) from PDF files, producing JSON intermediate data for /knowledge, /ask, /revise and other skills to consume. Supports page ranges and chapter name positioning. Use this skill when the user needs to read PDF content, extract specific pages, parse book chapters, or says '/read-pdf'. Also called internally by other skills."
|
|
4
|
-
version: 1.1.
|
|
4
|
+
version: 1.1.2
|
|
5
5
|
dependencies:
|
|
6
6
|
templates: []
|
|
7
7
|
prompts: []
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: read-pdf
|
|
3
3
|
description: 从 PDF 文件中提取文字、图表(Vision 分析)、数学公式(转 LaTeX)和表格(转 Markdown),产出 JSON 中间数据供 /knowledge、/ask、/revise 等技能消费。支持页码范围和章节名定位。当用户需要读取 PDF 内容、提取特定页面、解析书籍章节、或说"/read-pdf"时使用此技能。也会被其他技能内部自动调用。
|
|
4
|
-
version: 1.1.
|
|
4
|
+
version: 1.1.2
|
|
5
5
|
dependencies:
|
|
6
6
|
templates: []
|
|
7
7
|
prompts: []
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: research
|
|
3
3
|
description: "Conduct deep research on a specified topic or draft, producing structured research reports to {research directory}/. Uses dual-Agent workflow: the Planning Agent scans local drafts, matches expert personas, and creates a `type: plan, status: active` research plan; the Execution Agent combines local drafts with WebSearch external sources to write the report and updates the plan to `status: done`. Supports topic mode (direct topic) and file mode (draft as anchor). Use this skill when the user wants to deeply understand a topic, needs systematic research, wants to expand a draft into a full report, or says '/research'."
|
|
4
|
-
version: 1.1.
|
|
4
|
+
version: 1.1.2
|
|
5
5
|
dependencies:
|
|
6
6
|
templates: []
|
|
7
7
|
prompts:
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: research
|
|
3
3
|
description: '对指定主题或草稿进行深度研究,产出结构化研究报告到 {研究目录}/。使用双 Agent 工作流:规划 Agent 扫描本地草稿、匹配专家人格、生成 `type: plan, status: active` 的研究计划;执行 Agent 结合本地草稿与 WebSearch 外部资料撰写报告,并将计划更新为 `status: done`。支持主题模式(直接给主题)和文件模式(以草稿为锚点展开)。当用户想深入了解某个主题、需要系统性调研、想把草稿扩展为完整报告、或说"/research"时使用此技能。'
|
|
4
|
-
version: 1.1.
|
|
4
|
+
version: 1.1.2
|
|
5
5
|
dependencies:
|
|
6
6
|
templates: []
|
|
7
7
|
prompts:
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: revise
|
|
3
3
|
description: "Conduct active recall review of existing knowledge notes. Generates review files (.md) for the user to answer, then triggers grading upon completion, automatically updating note status (draft\u2192review\u2192mastered) and project mastery levels. Supports three modes: quiz mode (application questions), Feynman mode (explain concepts in own words), blind spot scan (self-assess mastery). Use this skill when the user wants to review, test mastery, or says '/revise'. Triggers grading flow when user says 'grade' or 'mark my review'."
|
|
4
|
-
version: 1.1.
|
|
4
|
+
version: 1.1.2
|
|
5
5
|
dependencies:
|
|
6
6
|
templates:
|
|
7
7
|
- path: "{system directory}/{templates subdirectory}/Revise_Template.md"
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: revise
|
|
3
3
|
description: 对已有知识笔记进行主动回忆复习。生成复习文件(.md),用户在文件中作答后触发批改,自动更新笔记 status(draft→revise→mastered)和项目掌握度。支持三种模式:提问模式(应用题)、费曼模式(用自己的话解释概念)、盲点扫描(自评掌握程度)。当用户想复习、测验掌握程度、说"/revise"时使用此技能。用户说"批改"或"改卷"时触发批改流程。
|
|
4
|
-
version: 1.1.
|
|
4
|
+
version: 1.1.2
|
|
5
5
|
dependencies:
|
|
6
6
|
templates:
|
|
7
7
|
- path: "{系统目录}/{模板子目录}/Revise_Template.md"
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: today
|
|
3
3
|
description: "Daily planning entry point: review yesterday's progress and incomplete tasks, scan active projects and notes pending review, collect the user's goals and new ideas for today, and generate today's diary file. Automatically suggests follow-up skills (/review, /research, /project, etc.)."
|
|
4
|
-
version: 1.1.
|
|
4
|
+
version: 1.1.2
|
|
5
5
|
dependencies:
|
|
6
6
|
templates:
|
|
7
7
|
- path: "{system directory}/{templates subdirectory}/Daily_Template.md"
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: today
|
|
3
3
|
description: 每日规划入口:回顾昨日进展和未完成任务、扫描活跃项目与待复习笔记、收集用户今日目标和新想法、生成今日日记文件。当用户开始新的一天、问"今天做什么"、说"早安"、想规划当日任务、或说"/today"时使用此技能。会自动提示后续可用的技能(/revise、/research、/project 等)。
|
|
4
|
-
version: 1.1.
|
|
4
|
+
version: 1.1.2
|
|
5
5
|
dependencies:
|
|
6
6
|
templates:
|
|
7
7
|
- path: "{系统目录}/{模板子目录}/Daily_Template.md"
|
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
package/dist/server.js
CHANGED
|
@@ -41,7 +41,7 @@ coreFn) {
|
|
|
41
41
|
// ─── Server instance ──────────────────────────────────────────────────────────
|
|
42
42
|
const server = new McpServer({
|
|
43
43
|
name: 'lifeos',
|
|
44
|
-
version: '1.1.
|
|
44
|
+
version: '1.1.2',
|
|
45
45
|
});
|
|
46
46
|
// ─── Tool registrations ───────────────────────────────────────────────────────
|
|
47
47
|
// 1. memory_startup
|
package/dist/services/startup.js
CHANGED
|
@@ -71,10 +71,12 @@ export function runStartup(db, vaultRoot, resolvedSessionId, now) {
|
|
|
71
71
|
}
|
|
72
72
|
// 5. Full vault scan — vault-indexer opens its own DB connection via dbPath
|
|
73
73
|
let scanIndexed = 0;
|
|
74
|
+
let scanRemoved = 0;
|
|
74
75
|
try {
|
|
75
76
|
const dbPath = db.name; // better-sqlite3 exposes .name as the db file path
|
|
76
77
|
const scanResult = fullScan(vaultRoot, dbPath);
|
|
77
78
|
scanIndexed = scanResult.indexed;
|
|
79
|
+
scanRemoved = scanResult.removed;
|
|
78
80
|
}
|
|
79
81
|
catch (e) {
|
|
80
82
|
console.warn('[lifeos] vault scan failed:', e);
|
|
@@ -100,7 +102,7 @@ export function runStartup(db, vaultRoot, resolvedSessionId, now) {
|
|
|
100
102
|
const enhanceQueueSize = countRows(db, 'enhance_queue', "status = 'pending'");
|
|
101
103
|
return {
|
|
102
104
|
layer0_summary: buildLayer0Summary(vaultRoot, policy, bridgeText),
|
|
103
|
-
vault_stats: { total_files: totalFiles, updated_since_last: scanIndexed },
|
|
105
|
+
vault_stats: { total_files: totalFiles, updated_since_last: scanIndexed, removed: scanRemoved },
|
|
104
106
|
enhance_queue_size: enhanceQueueSize,
|
|
105
107
|
enhanced_files: enhanceResult.processed,
|
|
106
108
|
last_session_bridge: bridgeText,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"startup.js","sourceRoot":"","sources":["../../src/services/startup.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"startup.js","sourceRoot":"","sources":["../../src/services/startup.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -128,6 +128,43 @@ function upsertIndex(db, filePath, parsed, fileSize, createdAt, modifiedAt) {
|
|
|
128
128
|
function removeIndexEntry(db, filePath) {
|
|
129
129
|
db.prepare('DELETE FROM vault_index WHERE file_path = ?').run(filePath);
|
|
130
130
|
}
|
|
131
|
+
/** Return true only when statSync fails with ENOENT (file confirmed deleted).
|
|
132
|
+
* Any other error (EACCES, EIO, etc.) returns false to avoid purging live rows. */
|
|
133
|
+
function isConfirmedMissing(absPath) {
|
|
134
|
+
try {
|
|
135
|
+
statSync(absPath);
|
|
136
|
+
return false;
|
|
137
|
+
}
|
|
138
|
+
catch (err) {
|
|
139
|
+
return err.code === 'ENOENT';
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
/** Check that the vault looks genuine before allowing pruning.
|
|
143
|
+
* The root must be readable AND at least one configured scan-prefix directory
|
|
144
|
+
* must exist on disk. This prevents mass-deletion when the vault root points
|
|
145
|
+
* at an empty/stale mountpoint that is technically readable but has none of
|
|
146
|
+
* the vault's actual content. */
|
|
147
|
+
function isVaultIntact(vaultRoot, cfg) {
|
|
148
|
+
try {
|
|
149
|
+
readdirSync(vaultRoot);
|
|
150
|
+
}
|
|
151
|
+
catch {
|
|
152
|
+
return false;
|
|
153
|
+
}
|
|
154
|
+
// At least one scan-prefix dir must exist (e.g. "00_草稿/", "20_项目/")
|
|
155
|
+
for (const prefix of cfg.scanPrefixes()) {
|
|
156
|
+
// prefix has trailing slash (e.g. "00_草稿/"), strip it for the dir check
|
|
157
|
+
const dir = join(vaultRoot, prefix.replace(/\/$/, ''));
|
|
158
|
+
try {
|
|
159
|
+
statSync(dir);
|
|
160
|
+
return true;
|
|
161
|
+
}
|
|
162
|
+
catch {
|
|
163
|
+
// try next prefix
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
return false;
|
|
167
|
+
}
|
|
131
168
|
// ─── Recursive file walk ──────────────────────────────────────────────────────
|
|
132
169
|
function* walkMdFiles(dir) {
|
|
133
170
|
let entries;
|
|
@@ -167,8 +204,10 @@ export function fullScan(vaultRoot, dbPath, config) {
|
|
|
167
204
|
try {
|
|
168
205
|
let indexed = 0;
|
|
169
206
|
let skipped = 0;
|
|
207
|
+
const seenPaths = new Set();
|
|
170
208
|
for (const absPath of walkMdFiles(vaultRoot)) {
|
|
171
209
|
const relPath = relative(vaultRoot, absPath).replace(/\\/g, '/');
|
|
210
|
+
seenPaths.add(relPath);
|
|
172
211
|
if (!shouldIndex(relPath, cfg)) {
|
|
173
212
|
skipped++;
|
|
174
213
|
continue;
|
|
@@ -193,7 +232,21 @@ export function fullScan(vaultRoot, dbPath, config) {
|
|
|
193
232
|
upsertIndex(db, relPath, parsed, fileSize, createdAt, modifiedAt);
|
|
194
233
|
indexed++;
|
|
195
234
|
}
|
|
196
|
-
|
|
235
|
+
// Remove stale entries for files confirmed deleted from disk.
|
|
236
|
+
// Safety: only prune when the vault looks genuine — root is readable
|
|
237
|
+
// and at least one scan-prefix directory exists. This prevents
|
|
238
|
+
// mass-deletion on unmounted volumes or empty mountpoints.
|
|
239
|
+
let removed = 0;
|
|
240
|
+
if (isVaultIntact(vaultRoot, cfg)) {
|
|
241
|
+
const rows = db.prepare('SELECT file_path FROM vault_index').all();
|
|
242
|
+
for (const { file_path } of rows) {
|
|
243
|
+
if (!seenPaths.has(file_path) && isConfirmedMissing(join(vaultRoot, file_path))) {
|
|
244
|
+
removeIndexEntry(db, file_path);
|
|
245
|
+
removed++;
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
return { indexed, skipped, removed };
|
|
197
250
|
}
|
|
198
251
|
finally {
|
|
199
252
|
db.close();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vault-indexer.js","sourceRoot":"","sources":["../../src/utils/vault-indexer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC1E,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC9D,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,MAAM,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"vault-indexer.js","sourceRoot":"","sources":["../../src/utils/vault-indexer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC1E,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC9D,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,MAAM,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAiCnD,iFAAiF;AAEjF;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,YAAoB,EAAE,MAAoB;IACrE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAEhD,MAAM,GAAG,GAAG,MAAM,IAAI,cAAc,EAAE,CAAC;IACvC,IAAI,CAAC,GAAG;QAAE,OAAO,KAAK,CAAC;IAEvB,MAAM,QAAQ,GAAG,GAAG,CAAC,gBAAgB,EAAE,CAAC;IACxC,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC;YAAE,OAAO,KAAK,CAAC;IACnD,CAAC;IAED,MAAM,QAAQ,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC;IACpC,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC;YAAE,OAAO,IAAI,CAAC;IAClD,CAAC;IAED,OAAO,KAAK,CAAC;AACd,CAAC;AAED,iFAAiF;AAEjF;;;GAGG;AACH,SAAS,iBAAiB,CAAC,KAAc;IACxC,IAAI,KAAK,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAC7C,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC1D,CAAC;IACD,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACxC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,OAAe,EAAE,QAAgB;IAC9D,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAE5C,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAC3C,IAAI,MAAM,KAAK,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAE/B,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;IACjD,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAE3D,IAAI,EAAW,CAAC;IAChB,IAAI,CAAC;QACJ,EAAE,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;IAC1B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACZ,OAAO,CAAC,IAAI,CAAC,6BAA6B,EAAE,CAAC,CAAC,CAAC;QAC/C,OAAO,IAAI,CAAC;IACb,CAAC;IAED,IAAI,CAAC,EAAE,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QAAE,OAAO,IAAI,CAAC;IACpE,MAAM,WAAW,GAAG,EAA6B,CAAC;IAClD,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAEvD,cAAc;IACd,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;IACvD,MAAM,KAAK,GAAI,WAAW,CAAC,KAA4B,IAAI,QAAQ,CAAC;IACpE,MAAM,IAAI,GAAI,WAAW,CAAC,IAA2B,IAAI,IAAI,CAAC;IAC9D,MAAM,MAAM,GAAI,WAAW,CAAC,MAA6B,IAAI,IAAI,CAAC;IAClE,MAAM,MAAM,GAAI,WAAW,CAAC,MAA6B,IAAI,IAAI,CAAC;IAClE,MAAM,QAAQ,GAAI,WAAW,CAAC,QAA+B,IAAI,IAAI,CAAC;IAEtE,iBAAiB;IACjB,MAAM,IAAI,GAAG,iBAAiB,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACjD,MAAM,OAAO,GAAG,iBAAiB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAEvD,sBAAsB;IACtB,MAAM,eAAe,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACjF,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;IAElD,0BAA0B;IAC1B,MAAM,kBAAkB,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAC3F,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;IAExD,oCAAoC;IACpC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAE1C,oDAAoD;IACpD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAa,CAAC;IAC/C,MAAM,WAAW,GAAG,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IAEzE,eAAe;IACf,MAAM,WAAW,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAE7E,OAAO;QACN,KAAK;QACL,IAAI;QACJ,MAAM;QACN,MAAM;QACN,QAAQ;QACR,IAAI;QACJ,OAAO;QACP,OAAO;QACP,eAAe,EAAE,IAAI;QACrB,WAAW;QACX,SAAS;QACT,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7B,YAAY;QACZ,WAAW;KACX,CAAC;AACH,CAAC;AAED,iFAAiF;AAEjF,SAAS,WAAW,CACnB,EAAqB,EACrB,QAAgB,EAChB,MAAsB,EACtB,QAAgB,EAChB,SAAiB,EACjB,UAAkB;IAElB,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACrC,EAAE,CAAC,OAAO,CAAC;;;;;;GAMT,CAAC,CAAC,GAAG,CACN,QAAQ,EACR,MAAM,CAAC,KAAK,EACZ,MAAM,CAAC,IAAI,EACX,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,QAAQ,EACf,MAAM,CAAC,IAAI,EACX,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,eAAe,EACtB,MAAM,CAAC,WAAW,EAClB,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,YAAY,EACnB,MAAM,CAAC,WAAW,EAClB,QAAQ,EACR,SAAS,EACT,UAAU,EACV,GAAG,CACH,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,EAAqB,EAAE,QAAgB;IAChE,EAAE,CAAC,OAAO,CAAC,6CAA6C,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AACzE,CAAC;AAED;oFACoF;AACpF,SAAS,kBAAkB,CAAC,OAAe;IAC1C,IAAI,CAAC;QACJ,QAAQ,CAAC,OAAO,CAAC,CAAC;QAClB,OAAO,KAAK,CAAC;IACd,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACvB,OAAQ,GAA6B,CAAC,IAAI,KAAK,QAAQ,CAAC;IACzD,CAAC;AACF,CAAC;AAED;;;;kCAIkC;AAClC,SAAS,aAAa,CAAC,SAAiB,EAAE,GAAgB;IACzD,IAAI,CAAC;QACJ,WAAW,CAAC,SAAS,CAAC,CAAC;IACxB,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,KAAK,CAAC;IACd,CAAC;IACD,oEAAoE;IACpE,KAAK,MAAM,MAAM,IAAI,GAAG,CAAC,YAAY,EAAE,EAAE,CAAC;QACzC,wEAAwE;QACxE,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;QACvD,IAAI,CAAC;YACJ,QAAQ,CAAC,GAAG,CAAC,CAAC;YACd,OAAO,IAAI,CAAC;QACb,CAAC;QAAC,MAAM,CAAC;YACR,kBAAkB;QACnB,CAAC;IACF,CAAC;IACD,OAAO,KAAK,CAAC;AACd,CAAC;AAED,iFAAiF;AAEjF,QAAQ,CAAC,CAAC,WAAW,CAAC,GAAW;IAChC,IAAI,OAAiB,CAAC;IACtB,IAAI,CAAC;QACJ,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACR,OAAO;IACR,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAClC,IAAI,IAAiC,CAAC;QACtC,IAAI,CAAC;YACJ,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC3B,CAAC;QAAC,MAAM,CAAC;YACR,SAAS;QACV,CAAC;QACD,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,KAAK,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAC9B,CAAC;aAAM,IAAI,IAAI,CAAC,MAAM,EAAE,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACnD,MAAM,QAAQ,CAAC;QAChB,CAAC;IACF,CAAC;AACF,CAAC;AAED,iFAAiF;AAEjF;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,SAAiB,EAAE,MAAc,EAAE,MAAoB;IAC/E,MAAM,GAAG,GAAG,MAAM,IAAI,cAAc,EAAE,IAAI,IAAI,WAAW,CAAC,SAAS,CAAC,CAAC;IAErE,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;IAChC,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAChC,MAAM,CAAC,EAAE,CAAC,CAAC;IAEX,IAAI,CAAC;QACJ,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;QAEpC,KAAK,MAAM,OAAO,IAAI,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC;YAC9C,MAAM,OAAO,GAAG,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YACjE,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAEvB,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC;gBAChC,OAAO,EAAE,CAAC;gBACV,SAAS;YACV,CAAC;YAED,IAAI,OAAe,CAAC;YACpB,IAAI,CAAC;gBACJ,OAAO,GAAG,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC1C,CAAC;YAAC,MAAM,CAAC;gBACR,OAAO,EAAE,CAAC;gBACV,SAAS;YACV,CAAC;YAED,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;YACzD,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;gBACrB,OAAO,EAAE,CAAC;gBACV,SAAS;YACV,CAAC;YAED,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;YAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;YAC3B,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;YACxD,MAAM,SAAS,GAAG,UAAU,CAAC;YAE7B,WAAW,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;YAClE,OAAO,EAAE,CAAC;QACX,CAAC;QAED,8DAA8D;QAC9D,qEAAqE;QACrE,+DAA+D;QAC/D,2DAA2D;QAC3D,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,IAAI,aAAa,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,mCAAmC,CAAC,CAAC,GAAG,EAE9D,CAAC;YACH,KAAK,MAAM,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC;gBAClC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC;oBACjF,gBAAgB,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;oBAChC,OAAO,EAAE,CAAC;gBACX,CAAC;YACF,CAAC;QACF,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;IACtC,CAAC;YAAS,CAAC;QACV,EAAE,CAAC,KAAK,EAAE,CAAC;IACZ,CAAC;AACF,CAAC;AAED,iFAAiF;AAEjF;;;GAGG;AACH,MAAM,UAAU,eAAe,CAC9B,SAAiB,EACjB,MAAc,EACd,QAAgB,EAChB,MAAoB;IAEpB,MAAM,GAAG,GAAG,MAAM,IAAI,cAAc,EAAE,IAAI,IAAI,WAAW,CAAC,SAAS,CAAC,CAAC;IAErE,6BAA6B;IAC7B,MAAM,OAAO,GAAG,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC;QAC7C,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;QACnD,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAEhC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC;QAChC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,wBAAwB,EAAE,CAAC;IAChE,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAE1C,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3B,uCAAuC;QACvC,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;QAChC,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;QAChC,MAAM,CAAC,EAAE,CAAC,CAAC;QACX,IAAI,CAAC;YACJ,gBAAgB,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QAC/B,CAAC;gBAAS,CAAC;YACV,EAAE,CAAC,KAAK,EAAE,CAAC;QACZ,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IAC9B,CAAC;IAED,IAAI,OAAe,CAAC;IACpB,IAAI,CAAC;QACJ,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC3C,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,qBAAqB,EAAE,CAAC;IAC7D,CAAC;IAED,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC1D,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACrB,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,sBAAsB,EAAE,CAAC;IAC9D,CAAC;IAED,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;IAC3B,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;IACxD,MAAM,SAAS,GAAG,UAAU,CAAC;IAE7B,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;IAChC,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAChC,MAAM,CAAC,EAAE,CAAC,CAAC;IACX,IAAI,CAAC;QACJ,WAAW,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;IACnE,CAAC;YAAS,CAAC;QACV,EAAE,CAAC,KAAK,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;AACjD,CAAC"}
|
package/package.json
CHANGED
package/README.zh.md
DELETED
|
@@ -1,207 +0,0 @@
|
|
|
1
|
-
# LifeOS
|
|
2
|
-

|
|
3
|
-
[English](./README.md) | 中文
|
|
4
|
-
|
|
5
|
-
LifeOS 帮助你将碎片灵感发展为结构化知识,并真正掌握它,从随手捕获的想法,到头脑风暴与深度研究,到体系化的项目规划与知识笔记,再到间隔复习与掌握度追踪。目标不只是建立知识库,而是帮你理解、内化和驾驭复杂知识。
|
|
6
|
-
|
|
7
|
-
## 为什么开发 LifeOS?
|
|
8
|
-
|
|
9
|
-
LifeOS 的出发点很直接:把学习工作流、技能、模板、提示词和记忆系统整合成一套可以直接落地的完整方案。你不需要自己从零拼装工具链,也不必在不同工具之间来回切换,初始化后即可开箱即用,并在真实使用中持续沉淀知识、流程与偏好。
|
|
10
|
-
|
|
11
|
-
## 核心功能
|
|
12
|
-
|
|
13
|
-
### 记忆系统
|
|
14
|
-
|
|
15
|
-
> 记忆系统是 LifeOS 的核心能力,它以目录级、技能绑定的方式工作,把学习过程中的上下文、偏好与决策持续沉淀下来,让长期学习更连贯、更可追踪,也更容易形成积累。
|
|
16
|
-
|
|
17
|
-
#### 跨会话连续性
|
|
18
|
-
|
|
19
|
-
会话桥接和活跃文档上下文会持续沉淀,Agent 不只依赖当前对话。
|
|
20
|
-
|
|
21
|
-
#### 项目级、技能绑定
|
|
22
|
-
|
|
23
|
-
记忆系统围绕当前 Vault 中的 LifeOS 项目运行,只在 `today`、`project`、`research`、`knowledge`、`revise`、`digest`、`archive` 等技能工作流里激活,并持续积累偏好、决策和上下文。
|
|
24
|
-
|
|
25
|
-
#### 比全局记忆更可控
|
|
26
|
-
|
|
27
|
-
相较于把跨目录内容和全局会话混在一起的记忆方式,项目级、技能绑定的记忆系统能减少无关噪声,让检索结果与后续决策更贴近当前 LifeOS 工作流。
|
|
28
|
-
|
|
29
|
-
### 目录自定义
|
|
30
|
-
|
|
31
|
-
LifeOS 不把目录命名固定死。执行 `lifeos rename [path]` 后,CLI 会交互式列出当前 Vault 中可调整的目录,引导你选择目录并输入新名称。
|
|
32
|
-
|
|
33
|
-
它会同步更新 `lifeos.yaml`、重命名实际目录,并批量替换 Vault 中所有相关的 wikilink。你可以根据自己的工作流、语言习惯和项目结构自由调整目录名称,同时保持配置和链接关系一致。
|
|
34
|
-
|
|
35
|
-
### 学习工作流
|
|
36
|
-
|
|
37
|
-
LifeOS 提供一组围绕学习过程设计的 Agent 技能,把“输入 -> 理解 -> 产出 -> 巩固”串成连续工作流:
|
|
38
|
-
|
|
39
|
-
- `/today`、`/brainstorm`、`/ask`:整理当天重点、澄清问题、快速展开想法
|
|
40
|
-
- `/project`、`/research`、`/knowledge`:把主题推进成项目、研究报告和知识笔记
|
|
41
|
-
- `/digest`:按主题订阅论文、RSS 与 Web 更新,自动生成结构化信息周报
|
|
42
|
-
- `/read-pdf`、`/revise`、`/archive`:从资料提取、复习巩固,到定期归档收束
|
|
43
|
-
|
|
44
|
-
## 核心组件
|
|
45
|
-
|
|
46
|
-
- **记忆系统**:项目级、技能绑定,为 AI Agent 提供 Vault 索引、会话记忆、上下文组装
|
|
47
|
-
- **CLI 脚手架**:全局安装后使用 `lifeos init` 一键创建工作空间
|
|
48
|
-
- **技能系统**:10 个 Agent 技能覆盖日记、项目、研究、信息周报、知识整理、复习等工作流
|
|
49
|
-
- **模板 + 规范**:8 个结构化模板 + Frontmatter 规范,确保笔记一致性
|
|
50
|
-
|
|
51
|
-
## 快速开始
|
|
52
|
-
|
|
53
|
-
目前已确认 macOS 上的 Claude Code TUI / Codex TUI / OpenCode TUI,以及 Windows 上 OpenCode GUI 可以正常使用。其他 GUI 桌面端或平台/客户端组合尚未完成验证,实际兼容性仍需进一步测试。
|
|
54
|
-
|
|
55
|
-
### 前置要求
|
|
56
|
-
|
|
57
|
-
开始前,请确保本机已安装 Obsidian,以及 Claude Code TUI / Codex TUI / OpenCode TUI / OpenCode GUI 中至少一种。
|
|
58
|
-
|
|
59
|
-
| 依赖 | 必须 | 用途 |
|
|
60
|
-
|---|---|---|
|
|
61
|
-
| **Node.js 24.14.1+ (LTS)** | 必须 | MCP Server 和 CLI 运行环境 |
|
|
62
|
-
| **Python 3** | 必须 | PDF 提取(`/read-pdf`)和信息周报抓取脚本(`/digest`) |
|
|
63
|
-
|
|
64
|
-
`lifeos init` 会在创建工作空间前自动检查所有前置依赖。
|
|
65
|
-
|
|
66
|
-
### 安装与初始化
|
|
67
|
-
|
|
68
|
-
```bash
|
|
69
|
-
# 第一步:全局安装 CLI
|
|
70
|
-
npm install -g lifeos
|
|
71
|
-
|
|
72
|
-
# 第二步:创建新的 LifeOS 工作空间(根据系统 locale 自动检测语言)
|
|
73
|
-
lifeos init ./my-vault
|
|
74
|
-
|
|
75
|
-
# 或显式指定语言
|
|
76
|
-
lifeos init ./my-vault --lang zh # 中文
|
|
77
|
-
lifeos init ./my-vault --lang en # 英文
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
安装完成后,MCP server 配置会自动注册到以下工具:
|
|
81
|
-
|
|
82
|
-
| 工具 | 配置文件 |
|
|
83
|
-
|---|---|
|
|
84
|
-
| **Claude Code** | `.mcp.json` |
|
|
85
|
-
| **Codex** | `.codex/config.toml` |
|
|
86
|
-
| **OpenCode** | `opencode.json` |
|
|
87
|
-
|
|
88
|
-
在 Vault 目录下启动任一工具即可使用所有技能。
|
|
89
|
-
|
|
90
|
-
## CLI 命令
|
|
91
|
-
|
|
92
|
-
```bash
|
|
93
|
-
lifeos init [path] [--lang zh|en] [--no-mcp] # 创建新 Vault
|
|
94
|
-
lifeos upgrade [path] [--lang zh|en] [--override] # 升级并补齐资产与脚手架
|
|
95
|
-
lifeos doctor [path] # 健康检查
|
|
96
|
-
lifeos rename [path] # 交互式重命名目录
|
|
97
|
-
lifeos --help # 查看帮助
|
|
98
|
-
lifeos --version # 查看版本
|
|
99
|
-
```
|
|
100
|
-
|
|
101
|
-
### init
|
|
102
|
-
|
|
103
|
-
创建完整的 LifeOS 工作空间:
|
|
104
|
-
|
|
105
|
-
- 10 个顶层目录 + 嵌套子目录
|
|
106
|
-
- 8 个 Markdown 模板
|
|
107
|
-
- Frontmatter 规范
|
|
108
|
-
- 10 个 AI 技能(按语言自动切换)
|
|
109
|
-
- `CLAUDE.md` Agent 行为规范
|
|
110
|
-
- `lifeos.yaml` 配置文件
|
|
111
|
-
- Git 初始化 + `.gitignore`
|
|
112
|
-
- MCP Server 注册(Claude Code / Codex / OpenCode)
|
|
113
|
-
|
|
114
|
-
### upgrade
|
|
115
|
-
|
|
116
|
-
对已初始化的 Vault 执行升级与补全:
|
|
117
|
-
|
|
118
|
-
- **智能合并**:模板、规范、内置提示词、技能文件未修改则更新,已修改则跳过并警告
|
|
119
|
-
- **缺失补全**:缺失的目录和脚手架文件会补回,例如记忆目录、`.claude/skills`、`CLAUDE.md`、`AGENTS.md`、`.gitignore`、`.git`、MCP 配置
|
|
120
|
-
- **保留用户修改**:已存在且被用户改过的内置文件不会被强制覆盖
|
|
121
|
-
- **`--override` 强制刷新资源**:覆盖模板、规范、提示词、技能、`CLAUDE.md`、`AGENTS.md` 以及 MCP 配置,但不会删除用户笔记、资源、`memory.db`、记忆系统数据,也不会改写 `lifeos.yaml` 里的目录和记忆配置
|
|
122
|
-
|
|
123
|
-
默认执行 `lifeos upgrade` 时,会尽量保留你已经改过的资源文件,只更新未修改内容并补齐缺失项。如果你希望直接用当前版本的内置模板、技能、规范和 MCP 配置重新覆盖这些资源,可以显式加上 `--override`:
|
|
124
|
-
|
|
125
|
-
```bash
|
|
126
|
-
lifeos upgrade ./my-vault --override
|
|
127
|
-
```
|
|
128
|
-
|
|
129
|
-
### doctor
|
|
130
|
-
|
|
131
|
-
检查 Vault 完整性:目录结构、模板、规范、技能、配置文件、Node.js 版本、资产版本。
|
|
132
|
-
|
|
133
|
-
### rename:目录可自定义化
|
|
134
|
-
|
|
135
|
-
无需额外参数,直接执行 `lifeos rename [path]` 后,CLI 会列出当前 Vault 中可调整的目录,并通过交互引导你选择目录和输入新名称。它会同步更新 `lifeos.yaml`、重命名实际目录,并批量替换 Vault 中所有相关的 wikilink。
|
|
136
|
-
|
|
137
|
-
这意味着 LifeOS 的目录命名不是固定死的。你可以根据自己的工作流、语言习惯和项目结构,自由调整各个目录的名称,同时保持配置和链接关系一致,获得最大的使用自由度。
|
|
138
|
-
|
|
139
|
-
## 技能一览
|
|
140
|
-
|
|
141
|
-
| 技能 | 功能 |
|
|
142
|
-
|---|---|
|
|
143
|
-
| `/today` | 晨间规划:回顾昨日、规划今日 |
|
|
144
|
-
| `/project` | 想法 → 结构化项目 |
|
|
145
|
-
| `/research` | 主题 → 深度研究报告 |
|
|
146
|
-
| `/digest` | 主题订阅 → 结构化信息周报 |
|
|
147
|
-
| `/knowledge` | 书籍/论文 → 知识笔记 |
|
|
148
|
-
| `/revise` | 生成复习题、批改、追踪掌握度 |
|
|
149
|
-
| `/read-pdf` | PDF → 结构化笔记 |
|
|
150
|
-
| `/ask` | 快速问答 |
|
|
151
|
-
| `/brainstorm` | 交互式头脑风暴 |
|
|
152
|
-
| `/archive` | 归档已完成的项目、已处理的草稿、已完成的计划,以及超过最近 7 天的日记 |
|
|
153
|
-
|
|
154
|
-
## 自定义专家提示词
|
|
155
|
-
|
|
156
|
-
`/research` 技能会自动扫描 Vault 中提示词目录下的所有专家人格文件。LifeOS 内置了 AI/LLM、数学、艺术、历史等领域的专家人格,你可以添加自己的提示词来扩展研究能力到任何领域。
|
|
157
|
-
|
|
158
|
-
### 工作原理
|
|
159
|
-
|
|
160
|
-
调用 `/research` 时,Planning Agent 会:
|
|
161
|
-
|
|
162
|
-
1. 列出 `{系统目录}/提示词/` 下所有 `.md` 文件
|
|
163
|
-
2. 读取每个文件的 frontmatter 和**领域覆盖**章节
|
|
164
|
-
3. 将研究主题与最匹配的专家提示词进行比对
|
|
165
|
-
4. 将匹配的专家提示词的分析框架和输出格式应用到研究报告中
|
|
166
|
-
|
|
167
|
-
### 添加自定义专家提示词
|
|
168
|
-
|
|
169
|
-
在 Vault 的提示词目录(`{系统目录}/提示词/`)下创建 `.md` 文件即可。Planning Agent 在下次 `/research` 调用时会自动发现,无需重启或重新初始化。文件结构参照同目录下的预设提示词即可。
|
|
170
|
-
|
|
171
|
-
## 技术栈
|
|
172
|
-
|
|
173
|
-
- **Runtime:** TypeScript + Node.js 18+
|
|
174
|
-
- **Database:** SQLite + FTS5(全文搜索)
|
|
175
|
-
- **Segmentation:** @node-rs/jieba(中文分词)
|
|
176
|
-
- **Protocol:** MCP (Model Context Protocol)
|
|
177
|
-
- **Vault:** Obsidian(纯 Markdown + Frontmatter)
|
|
178
|
-
|
|
179
|
-
## 里程碑
|
|
180
|
-
|
|
181
|
-
- ✅ LifeOS 1.0 版本已初步可用
|
|
182
|
-
- ✅ CLI 支持目录自定义
|
|
183
|
-
- ✅ CLI upgrade 支持智能更新
|
|
184
|
-
- ✅ 已完成 macOS 上 Claude Code TUI / Codex TUI / OpenCode TUI 与 Windows 上 OpenCode GUI 的验证
|
|
185
|
-
- ✅ `/digest` 技能已支持中英双语信息周报与多来源论文抓取
|
|
186
|
-
- ☐ 强化记忆系统精准性
|
|
187
|
-
- ☐ 支持自定义技能
|
|
188
|
-
- ☐ 支持自定义工作流
|
|
189
|
-
|
|
190
|
-
## 开发
|
|
191
|
-
|
|
192
|
-
```bash
|
|
193
|
-
git clone git@github.com:luneth90/lifeos.git
|
|
194
|
-
cd lifeos
|
|
195
|
-
npm install
|
|
196
|
-
npm run build # 编译 TypeScript
|
|
197
|
-
npm test # 运行测试(431 个)
|
|
198
|
-
npm run dev # 开发模式(热重载)
|
|
199
|
-
```
|
|
200
|
-
|
|
201
|
-
## License
|
|
202
|
-
|
|
203
|
-
[MIT](LICENSE)
|
|
204
|
-
|
|
205
|
-
## 致谢
|
|
206
|
-
|
|
207
|
-
本项目的灵感来源于 [MarsWang42/OrbitOS](https://github.com/MarsWang42/OrbitOS)。
|