@geminilight/mindos 0.5.2 → 0.5.3

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.
@@ -615,8 +615,7 @@ function RestartBlock({ s, newPort }: { s: ReturnType<typeof useLocale>['t']['se
615
615
  attempts++;
616
616
  try {
617
617
  const r = await fetch(`http://localhost:${newPort}/api/health`);
618
- const d = await r.json();
619
- if (d.service === 'mindos') { clearInterval(poll); redirect(); return; }
618
+ if (r.status < 500) { clearInterval(poll); redirect(); return; }
620
619
  } catch { /* not ready yet */ }
621
620
  if (attempts >= 10) { clearInterval(poll); redirect(); }
622
621
  }, 800);
package/bin/cli.js CHANGED
@@ -550,7 +550,9 @@ ${dim('Shortcut: mindos start --daemon → install + start in one step')}
550
550
  await runGatewayCommand('stop');
551
551
  await runGatewayCommand('install');
552
552
  await runGatewayCommand('start');
553
- const webPort = process.env.MINDOS_WEB_PORT || '3000';
553
+ const webPort = (() => {
554
+ try { return JSON.parse(readFileSync(CONFIG_PATH, 'utf-8')).port ?? 3000; } catch { return 3000; }
555
+ })();
554
556
  console.log(dim(' (Waiting for Web UI to come back up...)'));
555
557
  const ready = await waitForHttp(Number(webPort), { retries: 120, intervalMs: 2000, label: 'Web UI' });
556
558
  if (ready) {
@@ -31,7 +31,7 @@ export async function waitForHttp(port, { retries = 120, intervalMs = 2000, labe
31
31
  try {
32
32
  const { request } = await import('node:http');
33
33
  const ok = await new Promise((resolve) => {
34
- const req = request({ hostname: '127.0.0.1', port, path: '/', method: 'HEAD', timeout: 1500 },
34
+ const req = request({ hostname: '127.0.0.1', port, path: '/api/health', method: 'GET', timeout: 1500 },
35
35
  (res) => { res.resume(); resolve(res.statusCode < 500); });
36
36
  req.on('error', () => resolve(false));
37
37
  req.on('timeout', () => { req.destroy(); resolve(false); });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@geminilight/mindos",
3
- "version": "0.5.2",
3
+ "version": "0.5.3",
4
4
  "description": "MindOS — Human-Agent Collaborative Mind System. Local-first knowledge base that syncs your mind to all AI Agents via MCP.",
5
5
  "keywords": [
6
6
  "mindos",
@@ -1,143 +0,0 @@
1
- ---
2
- name: human-insights
3
- description: "捕捉、记录和提炼人机协作过程中产生的隐性知识,存入项目 human-insights/ 目录。当用户说「记录下这个发现」「这个方法很有效,存一下」「回顾下我们的协作」「总结下 SOP」「这个 AI 总是犯这个错」「把这个变成规则」「整理下 insights」「提炼下规律」「升华到 CLAUDE.md」时使用此 Skill。对话中出现值得沉淀的协作模式、认知升级、反模式时也应触发。"
4
- ---
5
-
6
- # Human Insights Skill
7
-
8
- 捕捉人机协作中产生的隐性知识,让它不随对话消失,并定期提炼为可复用的 SOP。
9
-
10
- 核心设计原则:**零摩擦**。记录的成本越低,记录的频率越高,积累的价值越大。所有让用户需要思考"怎么配合"的设计都是反模式。
11
-
12
- ---
13
-
14
- ## 核心理念
15
-
16
- insights 不是终点,是 CLAUDE.md 的原材料。生命周期:
17
-
18
- ```
19
- 对话碎片 → 捕捉 → human-insights/ → 定期回顾提炼 → CLAUDE.md / Skill
20
- ```
21
-
22
- 已升华进 CLAUDE.md 的 insight 标记为 `[已采纳]`,避免重复处理。
23
-
24
- ---
25
-
26
- ## 三种模式
27
-
28
- ### 模式一:捕捉(用户主动触发)
29
-
30
- 用户说"记录下这个"、"这个很有用"时触发。
31
-
32
- 1. 理解内容 — 读懂要记录什么,必要时追问一句
33
- 2. **AI 判断分类**,用户不需要选(见下方分类体系)
34
- 3. 检查目标文件,避免重复记录
35
- 4. 写入,自动填写时间,来源一句话
36
- 5. 告知用户记录到了哪里
37
-
38
- ### 模式二:主动提议(AI 识别信号)
39
-
40
- 对话中出现以下信号时,AI 在回答完后顺带问一句"这个发现值得记进 human-insights,要我记一下吗?"
41
-
42
- **值得提议的信号(需同时满足:有新意 + 可复用):**
43
- - 用户明确纠正了 AI 的错误认知或行为模式
44
- - 用户发现某个做法比之前的方式明显更高效,且说清楚了为什么
45
- - 对话中归纳出了一条可以跨场景复用的规律或原则
46
-
47
- **不需要提议的情况:**
48
- - 只是某个任务执行得顺利(不代表有可复用的模式)
49
- - 用户已经在说"记一下"(模式一已覆盖)
50
- - 同一对话中已经提议过一次(避免反复打断)
51
-
52
- 用户说"好"/"记一下"即执行,说"不用"则跳过。不打断主流程,轻量提议。
53
-
54
- ### 模式三:回顾提炼(定期整理)
55
-
56
- 用户说"回顾下协作"、"总结 SOP"、"升华到 CLAUDE.md" 时触发。
57
-
58
- 1. 读取 `human-insights/` 下所有文件,统计各类别条目数和"待提炼"数量
59
- 2. 识别模式 — 找出:① 反复出现的主题 ② 相互印证的发现 ③ 已有足够证据支撑的规律
60
- 3. 起草提炼结果,每条产出明确其形态:
61
- - **规则**:适合写进 CLAUDE.md 的行为约束("做 X 之前先做 Y")
62
- - **流程**:可复用的步骤序列(适合写成 Skill 或 CLAUDE.md 流程节)
63
- - **Prompt 模板**:可直接复用的指令结构
64
- 4. 展示给用户确认,用户可修改或拒绝某条
65
- 5. 写入 CLAUDE.md 对应章节,原 insight 标记 `[已采纳 → CLAUDE.md #章节名]`
66
- 6. 更新 `README.md` 各文件摘要
67
-
68
- ---
69
-
70
- ## 分类体系(AI 判断,用户无感)
71
-
72
- | 类别 | 文件 | 记录什么 |
73
- |------|------|---------|
74
- | Prompt 模式 | `prompt-patterns.md` | 有效的提问方式、指令结构、上下文给法 |
75
- | 工作流发现 | `workflow.md` | 有效的协作流程、任务拆分方式、节奏把握 |
76
- | AI 行为规律 | `ai-behavior.md` | AI 在特定场景下的规律性表现、容易犯的错 |
77
- | 认知升级 | `mindset.md` | 对某个概念/方法的新理解,之前认知被纠正 |
78
- | 反模式 | `anti-patterns.md` | 踩过的坑、低效做法、应该避免的模式 |
79
-
80
- 一条 insight 可以属于多个类别时,以最主要的类别为准写入一个文件,不重复写入。
81
-
82
- ---
83
-
84
- ## 记录格式
85
-
86
- 轻量为主,自动填时间,来源一句话够了:
87
-
88
- ```markdown
89
- ## <标题>
90
-
91
- **时间:** YYYY-MM-DD **来源:** <一句话场景,如"MindOS CLAUDE.md 整理中">
92
-
93
- <发现了什么、为什么有价值、怎么用。1-3 句话。>
94
-
95
- **状态:** 待提炼 / [已采纳 → CLAUDE.md #章节名]
96
- ```
97
-
98
- ---
99
-
100
- ## 目录结构
101
-
102
- ```
103
- human-insights/
104
- ├── README.md # 索引 + 各文件一句话摘要(只列已创建的文件)
105
- ├── prompt-patterns.md
106
- ├── workflow.md
107
- ├── ai-behavior.md
108
- ├── mindset.md
109
- └── anti-patterns.md
110
- ```
111
-
112
- 首次使用时只创建 `README.md` 和当前需要写入的文件,其余按需创建。
113
-
114
- ---
115
-
116
- ## 初始化
117
-
118
- `human-insights/` 不存在时自动创建目录和 `README.md`:
119
-
120
- ```markdown
121
- # Human Insights
122
-
123
- 记录人机协作过程中产生的隐性知识,定期提炼为可复用的 SOP。
124
-
125
- ## 文件索引
126
-
127
- (按需添加,创建新文件时同步更新此表)
128
-
129
- | 文件 | 摘要 |
130
- |------|------|
131
-
132
- ## 升华路径
133
-
134
- 积累 → 回顾提炼 → 写入 CLAUDE.md → 标记 [已采纳]
135
- ```
136
-
137
- ---
138
-
139
- ## 边界说明
140
-
141
- - vs `wiki/80-known-pitfalls.md`:pitfalls 记客观技术坑(别人也会踩),insights 记主观协作发现(你个人的认知)
142
- - vs `wiki/06-conventions.md`:conventions 是已确定的规范,insights 是还在验证中的发现
143
- - vs `CLAUDE.md`:CLAUDE.md 是已固化的规则,insights 是原材料