@pencil-agent/nano-pencil 2.0.0 → 2.0.1

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.
Files changed (195) hide show
  1. package/README.md +267 -267
  2. package/dist/build-meta.json +3 -3
  3. package/dist/core/export-html/AGENT.md +11 -11
  4. package/dist/core/export-html/template.css +971 -971
  5. package/dist/core/export-html/template.html +54 -54
  6. package/dist/core/mcp/mcp-client.d.ts +3 -1
  7. package/dist/core/mcp/mcp-client.js +6 -6
  8. package/dist/core/mcp/mcp-config.d.ts +3 -3
  9. package/dist/core/mcp/mcp-config.js +1 -1
  10. package/dist/core/mcp/mcp-manager.d.ts +5 -1
  11. package/dist/core/mcp/mcp-manager.js +1 -1
  12. package/dist/core/platform/config/resource-loader.d.ts +2 -0
  13. package/dist/core/platform/config/resource-loader.js +2 -2
  14. package/dist/core/runtime/agent-session.d.ts +12 -0
  15. package/dist/core/runtime/agent-session.js +8 -8
  16. package/dist/core/runtime/sdk.d.ts +8 -0
  17. package/dist/core/runtime/sdk.js +1 -1
  18. package/dist/extensions/builtin/AGENT.md +115 -115
  19. package/dist/extensions/builtin/browser/AGENT.md +17 -17
  20. package/dist/extensions/builtin/browser/agent-workspace/agent_helpers.py +12 -12
  21. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/amazon/product-search.md +198 -198
  22. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/archive-org/scraping.md +341 -341
  23. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/arxiv/scraping.md +311 -311
  24. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/arxiv-bulk/scraping.md +333 -333
  25. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/atlas/overview.md +70 -70
  26. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/booking-com/scraping.md +578 -578
  27. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/capterra/scraping.md +440 -440
  28. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/centilebrain/generate-estimates.md +110 -110
  29. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/coingecko/scraping.md +325 -325
  30. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/coinmarketcap/scraping.md +463 -463
  31. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/coursera/scraping.md +360 -360
  32. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/craigslist/scraping.md +390 -390
  33. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/crossref/scraping.md +568 -568
  34. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/dev-to/scraping.md +323 -323
  35. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/duckduckgo/scraping.md +349 -349
  36. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/ebay/scraping.md +435 -435
  37. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/etsy/scraping.md +506 -506
  38. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/eventbrite/scraping.md +363 -363
  39. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/expedia/automation.md +168 -168
  40. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/facebook/groups.md +236 -236
  41. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/facebook/pages.md +295 -295
  42. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/framer/editor.md +108 -108
  43. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/fred/scraping.md +493 -493
  44. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/g2/scraping.md +580 -580
  45. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/genius/scraping.md +511 -511
  46. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/github/repo-actions.md +65 -65
  47. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/github/scraping.md +184 -184
  48. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/glassdoor/scraping.md +543 -543
  49. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/gmail/compose.md +122 -122
  50. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/goodreads/scraping.md +461 -461
  51. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/gutenberg/scraping.md +383 -383
  52. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/hackernews/scraping.md +243 -243
  53. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/howlongtobeat/scraping.md +473 -473
  54. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/imdb/scraping.md +271 -271
  55. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/itch-io/scraping.md +436 -436
  56. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/job-boards/indeed-glassdoor.md +1021 -1021
  57. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/letterboxd/scraping.md +349 -349
  58. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/linkedin/invitation-manager.md +109 -109
  59. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/loom/folder-enumeration.md +170 -170
  60. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/macrotrends/scraping.md +537 -537
  61. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/medium/article-hydration.md +120 -120
  62. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/medium/scraping.md +414 -414
  63. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/metacritic/scraping.md +477 -477
  64. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/musicbrainz/scraping.md +478 -478
  65. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/nasa/scraping.md +339 -339
  66. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/news-aggregation/multi-source.md +205 -205
  67. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/open-library/scraping.md +472 -472
  68. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/openalex/scraping.md +470 -470
  69. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/openstreetmap/scraping.md +490 -490
  70. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/package-registries/npm-pypi.md +478 -478
  71. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/polymarket/scraping.md +234 -234
  72. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/producthunt/scraping.md +307 -307
  73. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/pubmed/scraping.md +421 -421
  74. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/quora/scraping.md +364 -364
  75. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/rawg/scraping.md +352 -352
  76. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/reddit/scraping.md +124 -124
  77. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/rest-countries/scraping.md +233 -233
  78. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/sec-edgar/scraping.md +361 -361
  79. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/shopify-admin/README.md +36 -36
  80. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/shopify-admin/embedded-apps.md +72 -72
  81. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/shopify-admin/knowledge-base.md +109 -109
  82. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/shopify-admin/polaris-inputs.md +137 -137
  83. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/soundcloud/scraping.md +362 -362
  84. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/spotify/scraping.md +339 -339
  85. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/stackoverflow/scraping.md +435 -435
  86. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/steam/scraping.md +575 -575
  87. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/substack/scraping.md +338 -338
  88. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/thetechgeeks/pricing.md +52 -52
  89. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/tiktok/upload.md +107 -107
  90. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/tradingview/scraping.md +309 -309
  91. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/trello/boards-and-lists.md +88 -88
  92. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/trustpilot/scraping.md +375 -375
  93. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/walmart/scraping.md +444 -444
  94. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/wayback-machine/scraping.md +306 -306
  95. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/weather/scraping.md +398 -398
  96. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/wellfound/scraping.md +596 -596
  97. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/world-bank/scraping.md +356 -356
  98. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/xiaohongshu/scraping.md +84 -84
  99. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/youtube/scraping.md +418 -418
  100. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/zillow/scraping.md +433 -433
  101. package/dist/extensions/builtin/browser/browser.md +73 -73
  102. package/dist/extensions/builtin/browser/install.md +142 -142
  103. package/dist/extensions/builtin/browser/interaction-skills/connection.md +48 -48
  104. package/dist/extensions/builtin/browser/interaction-skills/cookies.md +3 -3
  105. package/dist/extensions/builtin/browser/interaction-skills/cross-origin-iframes.md +3 -3
  106. package/dist/extensions/builtin/browser/interaction-skills/dialogs.md +64 -64
  107. package/dist/extensions/builtin/browser/interaction-skills/downloads.md +3 -3
  108. package/dist/extensions/builtin/browser/interaction-skills/drag-and-drop.md +3 -3
  109. package/dist/extensions/builtin/browser/interaction-skills/dropdowns.md +3 -3
  110. package/dist/extensions/builtin/browser/interaction-skills/iframes.md +3 -3
  111. package/dist/extensions/builtin/browser/interaction-skills/network-requests.md +3 -3
  112. package/dist/extensions/builtin/browser/interaction-skills/print-as-pdf.md +3 -3
  113. package/dist/extensions/builtin/browser/interaction-skills/profile-sync.md +90 -90
  114. package/dist/extensions/builtin/browser/interaction-skills/screenshots.md +17 -17
  115. package/dist/extensions/builtin/browser/interaction-skills/scrolling.md +3 -3
  116. package/dist/extensions/builtin/browser/interaction-skills/shadow-dom.md +3 -3
  117. package/dist/extensions/builtin/browser/interaction-skills/tabs.md +69 -69
  118. package/dist/extensions/builtin/browser/interaction-skills/uploads.md +1 -1
  119. package/dist/extensions/builtin/browser/interaction-skills/viewport.md +3 -3
  120. package/dist/extensions/builtin/browser/src/browser_harness/AGENT.md +15 -15
  121. package/dist/extensions/builtin/browser/src/browser_harness/__init__.py +8 -8
  122. package/dist/extensions/builtin/browser/src/browser_harness/_ipc.py +90 -90
  123. package/dist/extensions/builtin/browser/src/browser_harness/admin.py +722 -722
  124. package/dist/extensions/builtin/browser/src/browser_harness/daemon.py +328 -328
  125. package/dist/extensions/builtin/browser/src/browser_harness/helpers.py +396 -396
  126. package/dist/extensions/builtin/browser/src/browser_harness/run.py +103 -103
  127. package/dist/extensions/builtin/discipline/skills/brainstorming/SKILL.md +33 -33
  128. package/dist/extensions/builtin/discipline/skills/executing-plans/SKILL.md +25 -25
  129. package/dist/extensions/builtin/discipline/skills/finishing-development-branch/SKILL.md +25 -25
  130. package/dist/extensions/builtin/discipline/skills/receiving-code-review/SKILL.md +22 -22
  131. package/dist/extensions/builtin/discipline/skills/requesting-code-review/SKILL.md +31 -31
  132. package/dist/extensions/builtin/discipline/skills/systematic-debugging/SKILL.md +28 -28
  133. package/dist/extensions/builtin/discipline/skills/test-driven-development/SKILL.md +32 -32
  134. package/dist/extensions/builtin/discipline/skills/using-git-worktrees/SKILL.md +25 -25
  135. package/dist/extensions/builtin/discipline/skills/verification-before-completion/SKILL.md +27 -27
  136. package/dist/extensions/builtin/discipline/skills/writing-plans/SKILL.md +26 -26
  137. package/dist/extensions/builtin/goal/README.md +67 -67
  138. package/dist/extensions/builtin/grub/README.md +112 -112
  139. package/dist/extensions/builtin/link-world/agent-workspace/README.md +16 -16
  140. package/dist/extensions/builtin/link-world/internet-search/internet-search.md +65 -65
  141. package/dist/extensions/builtin/link-world/link-world-agent.md +82 -82
  142. package/dist/extensions/builtin/link-world/linkworld.md +313 -313
  143. package/dist/extensions/builtin/link-world/network-routing/network-routing.md +67 -67
  144. package/dist/extensions/builtin/loop/README.md +92 -92
  145. package/dist/extensions/builtin/mcp/figma-design.md +68 -68
  146. package/dist/extensions/builtin/mcp/mcp-management.md +85 -85
  147. package/dist/extensions/builtin/recap/AGENT.md +15 -15
  148. package/dist/extensions/builtin/sal/README.md +72 -72
  149. package/dist/extensions/builtin/security-audit/README.md +289 -289
  150. package/dist/extensions/builtin/team/AGENT.md +112 -112
  151. package/dist/extensions/builtin/team/TESTING.md +299 -299
  152. package/dist/extensions/builtin/token-save/README.md +56 -56
  153. package/dist/extensions/optional/AGENT.md +10 -10
  154. package/dist/modes/interactive/interactive-mode.js +36 -36
  155. package/dist/modes/interactive/theme/dark.json +85 -85
  156. package/dist/modes/interactive/theme/light.json +84 -84
  157. package/dist/modes/interactive/theme/theme-schema.json +335 -335
  158. package/dist/modes/interactive/theme/warm.json +81 -81
  159. package/dist/node_modules/@pencil-agent/agent-core/dist/agent-loop.js +3 -2
  160. package/dist/node_modules/@pencil-agent/agent-core/dist/structured-adaptive-agent-loop.js +2 -1
  161. package/dist/node_modules/@pencil-agent/ai/dist/cli.js +0 -0
  162. package/docs/cc-agent-design.md +1297 -0
  163. package/docs/cc-tui-design.md +1333 -0
  164. package/docs/codex-goal-command-impl.md +1055 -1055
  165. package/docs/codex-goal-vs-grub.md +500 -500
  166. package/docs/custom-provider.md +27 -27
  167. package/docs/extensions.md +27 -27
  168. package/docs/keybindings.md +27 -27
  169. package/docs/loop /351/207/215/346/236/204/345/256/214/346/210/220/346/200/273/347/273/223.md" +250 -250
  170. package/docs/loop /351/207/215/346/236/204/345/256/214/346/210/220/346/212/245/345/221/212.md" +122 -122
  171. package/docs/loop /351/207/215/346/236/204/346/226/271/346/241/210.md" +1222 -1222
  172. package/docs/loop /351/207/215/346/236/204/346/226/271/346/241/210/345/256/236/347/216/260/346/212/245/345/221/212.md" +158 -158
  173. package/docs/loop /351/207/215/346/236/204/346/226/271/346/241/210/345/257/271/346/257/224/345/210/206/346/236/220.md" +128 -128
  174. package/docs/loop /351/207/215/346/236/204/350/256/241/345/210/222.md" +320 -320
  175. package/docs/loop-usage-examples.md +214 -214
  176. package/docs/models.md +27 -27
  177. package/docs/nanoPencil-/345/255/246/344/271/240/350/256/241/345/210/222.md +170 -0
  178. package/docs/packages.md +27 -27
  179. package/docs/pi-design-philosophy.md +457 -457
  180. package/docs/planmode.md +1987 -1987
  181. package/docs/prompt-templates.md +27 -27
  182. package/docs/providers.md +27 -27
  183. package/docs/scan-report.md +3820 -0
  184. package/docs/sdk.md +27 -27
  185. package/docs/skills.md +27 -27
  186. package/docs/themes.md +27 -27
  187. package/docs/tui.md +27 -27
  188. package/docs//345/257/271/346/240/207Claude-Code.md +1775 -0
  189. package/docs//351/230/277/351/207/214/345/267/264/345/267/264/350/264/242/346/212/245/345/210/206/346/236/220/344/271/246.md +261 -0
  190. package/package.json +190 -190
  191. package/docs/ACP/345/215/217/350/256/256/351/233/206/346/210/220/345/274/200/345/217/221/346/226/207/346/241/243.md +0 -851
  192. package/docs/SDK-TESTING.md +0 -364
  193. package/docs/mem-core/346/212/200/346/234/257/346/226/207/346/241/243.md +0 -593
  194. package/docs/startup-performance-optimization.md +0 -301
  195. package/docs//350/256/244/347/237/245/345/234/260/345/233/276.md +0 -47
@@ -1,301 +0,0 @@
1
- # nanoPencil 启动性能优化方案
2
-
3
- > 文档版本: 2026-05-02
4
- > 状态: 基础设施已完成,待评审后继续 MCP 延迟初始化
5
-
6
- ---
7
-
8
- ## 一、目标与原则
9
-
10
- ### 目标
11
- 将冷启动时间从 **~1800ms** 降低到 **<1500ms**(减少 15%+)
12
-
13
- ### 原则
14
- 1. **数据驱动** - 用 benchmark 量化效果,不用主观感受
15
- 2. **回归测试** - 任何优化必须通过 benchmark 验证
16
- 3. **快速见效优先** - 先做投入产出比高的优化
17
-
18
- ---
19
-
20
- ## 二、当前启动流程分析
21
-
22
- ### 2.1 启动阶段划分(已有 checkpoint)
23
-
24
- ```
25
- ┌─────────────────────────────────────────────────────────────────────┐
26
- │ main_entry (865ms) │
27
- │ ├── parseArgs() 解析参数 │
28
- │ ├── runMigrations() 迁移 │
29
- │ └── after_migrations │
30
- │ │
31
- │ settings_manager_ready (887ms) │
32
- │ ├── SettingsManager.create() 文件 I/O + 锁 │
33
- │ └── auth_storage_created │
34
- │ │
35
- │ nanopencil_defaults_ensured (889ms) │
36
- │ └── ensureNanopencilDefaultConfig() │
37
- │ │
38
- │ model_registry_created (910ms) │
39
- │ └── ModelRegistry 初始化 (38ms) │
40
- │ │
41
- │ before_resource_loader_create │
42
- │ └── DefaultResourceLoader 构造 │
43
- │ │
44
- │ resource_loader_reload (1748ms) ← 🔥 优化重点 │
45
- │ ├── PackageManager.resolve() npm 包扫描 │
46
- │ ├── loadExtensions() jiti 动态编译扩展 │
47
- │ └── extensions_loaded │
48
- │ │
49
- │ before_args_parse_2 │
50
- │ args_parsed_2 │
51
- │ cwd_resolved │
52
- │ │
53
- │ before_create_agent_session │
54
- │ agent_session_created │
55
- └─────────────────────────────────────────────────────────────────────┘
56
- ```
57
-
58
- ### 2.2 耗时分布(实测数据)
59
-
60
- | 阶段 | 平均耗时 | 占比 | 优化空间 |
61
- |------|---------|------|---------|
62
- | **resource_loader_reload** | ~840ms | **47%** | 🔥 高 |
63
- | model_registry_created | ~40ms | 2% | 中 |
64
- | settings_manager_ready | ~2ms | 0.1% | 低 |
65
- | 其他阶段 | <10ms | <1% | 低 |
66
-
67
- ### 2.3 瓶颈分析
68
-
69
- #### 1. resource_loader_reload (~840ms)
70
- **耗时来源**:
71
- - `PackageManager.resolve()` - npm 包路径解析
72
- - `loadExtensions()` - jiti 动态编译 TypeScript 扩展
73
- - 文件系统 I/O - 读取扩展、主题、提示词模板
74
-
75
- **优化方向**:
76
- - [ ] MCP 延迟初始化(不启动服务器直到需要)
77
- - [ ] 扩展懒加载(非交互模式不需要的扩展延迟)
78
- - [ ] Extension 预编译缓存(jiti 结果缓存)
79
-
80
- #### 2. model_registry_created (~40ms)
81
- **耗时来源**:
82
- - JSON 解析 models.json
83
- - API key 验证
84
-
85
- **优化方向**:
86
- - [ ] 模型信息缓存
87
- - [ ] 延迟验证 API key(首次调用时)
88
-
89
- ---
90
-
91
- ## 三、已完成的改动
92
-
93
- ### 3.1 基础设施(已提交)
94
-
95
- #### A. startup-profiler.ts 增强
96
- ```typescript
97
- // 新增 API
98
- export function getProfileReport(): ProfileReport // 生成结构化报告
99
- export async function exportProfile(filePath) // 导出 JSON
100
- export function compareProfiles(baseline, current) // 检测回归
101
- ```
102
-
103
- #### B. benchmark 脚本
104
- ```bash
105
- npm run benchmark # 运行 5 次,显示结果
106
- npm run benchmark:save # 保存当前为 baseline
107
- npm run benchmark:compare # 与 baseline 对比
108
- ```
109
-
110
- #### C. Checkpoint 标记(main.ts)
111
- 新增 13 个检查点,覆盖完整启动流程
112
-
113
- ### 3.2 改动文件列表
114
-
115
- ```
116
- modified: utils/startup-profiler.ts (+161 行)
117
- new file: scripts/startup-benchmark.cjs (+262 行)
118
- modified: main.ts (+13 行 checkpoint)
119
- modified: package.json (+3 行 scripts)
120
- modified: .gitignore (+2 行 .benchmarks/)
121
- ```
122
-
123
- ---
124
-
125
- ## 四、待实施优化方案
126
-
127
- ### Phase 1: MCP 延迟初始化(预计收益: 200-400ms)
128
-
129
- #### 问题分析
130
- 当前启动时同步初始化所有 MCP 服务器:
131
- ```typescript
132
- // core/runtime/sdk.ts
133
- await currentMcpManager.initialize(); // 同步启动所有
134
- ```
135
-
136
- #### 解决方案
137
- MCP 服务器按需启动,首次调用工具时才初始化:
138
- ```typescript
139
- // 新增 lazy mode
140
- mcpManager.setLazyMode(true);
141
- // 服务器在首次调用工具时才启动
142
- ```
143
-
144
- #### 预期效果
145
- - 跳过不使用的 MCP 服务器初始化
146
- - 减少启动时间 200-400ms(取决于配置了多少服务器)
147
-
148
- #### 改动文件
149
- - `core/mcp/mcp-client.ts` - 添加延迟初始化逻辑
150
- - `core/runtime/sdk.ts` - 默认启用 lazy mode
151
-
152
- ---
153
-
154
- ### Phase 2: 扩展懒加载(预计收益: 100-300ms)
155
-
156
- #### 问题分析
157
- 启动时加载所有扩展,不管是否需要:
158
- ```typescript
159
- // main.ts
160
- await resourceLoader.reload(); // 同步加载所有
161
- ```
162
-
163
- #### 解决方案
164
- 非交互模式不需要的扩展延迟加载:
165
- ```typescript
166
- // 启动时只加载必要扩展
167
- await resourceLoader.reload({
168
- lazy: ['team', 'soul', 'browser'] // 这些延迟到首次使用
169
- });
170
- ```
171
-
172
- #### 预期效果
173
- - 跳过不使用的扩展初始化
174
- - 减少启动时间 100-300ms
175
-
176
- ---
177
-
178
- ### Phase 3: Extension 预编译缓存(预计收益: 200-500ms)
179
-
180
- #### 问题分析
181
- jiti 每次启动都重新编译 TypeScript 扩展
182
-
183
- #### 解决方案
184
- 1. 构建时生成扩展的预编译缓存
185
- 2. 启动时优先加载缓存,fallback 到 jiti
186
-
187
- ```typescript
188
- // core/extensions/loader.ts
189
- const cachePath = getExtensionCachePath(extPath);
190
- if (existsSync(cachePath)) {
191
- return import(cachePath); // 直接加载,~10ms
192
- }
193
- // Fallback to jiti,~200-500ms
194
- return jiti.import(extPath);
195
- ```
196
-
197
- #### 预期效果
198
- - 减少扩展加载时间 200-500ms
199
- - 缓存命中率 > 80% 时收益最大
200
-
201
- ---
202
-
203
- ## 五、验证方法
204
-
205
- ### 5.1 Benchmark 命令
206
-
207
- ```bash
208
- # 1. 建立 baseline
209
- npm run benchmark:save
210
-
211
- # 2. 做优化后运行
212
- npm run benchmark:compare
213
-
214
- # 3. 输出示例
215
- 🚀 Running startup benchmark (5 runs)...
216
- Run 1/5... ✓ 1750ms (checkpoints: 13)
217
- ...
218
-
219
- 📈 Comparison with Baseline
220
- ──────────────────────────────────────────────────
221
- Baseline avg: 1809ms
222
- Current avg: 1750ms
223
- Difference: -59ms (-3.3%)
224
-
225
- ✅ No regressions detected!
226
- ```
227
-
228
- ### 5.2 回归判定
229
-
230
- - 任何阶段耗时增加 > 10% 且 > 10ms → 回归
231
- - 总耗时增加 > 10% → 回归
232
-
233
- ---
234
-
235
- ## 六、实施计划
236
-
237
- ```
238
- Week 1: Phase 1 - MCP 延迟初始化
239
- ├── 评审方案 ← 当前节点
240
- ├── 实现延迟初始化
241
- ├── Benchmark 验证
242
- └── 提交 PR
243
-
244
- Week 2-3: Phase 2 - 扩展懒加载
245
- ├── 设计懒加载策略
246
- ├── 实现 ResourceLoader 懒加载
247
- ├── Benchmark 验证
248
- └── 提交 PR
249
-
250
- Week 4-5: Phase 3 - 预编译缓存(可选)
251
- ├── 设计缓存机制
252
- ├── 实现 Jiti 缓存
253
- ├── Benchmark 验证
254
- └── 提交 PR
255
- ```
256
-
257
- ---
258
-
259
- ## 七、风险与缓解
260
-
261
- | 风险 | 缓解措施 |
262
- |------|---------|
263
- | 延迟加载导致首次使用慢 | 使用预热机制,在空闲时提前加载 |
264
- | 缓存失效导致行为不一致 | 缓存加版本号,版本变化时清除 |
265
- | Benchmark 不稳定 | 运行 5 次取中位数,std_dev < 10% |
266
-
267
- ---
268
-
269
- ## 八、附录
270
-
271
- ### A. Benchmark 输出格式
272
-
273
- ```json
274
- {
275
- "timestamp": "2026-05-02T08:34:09.667Z",
276
- "runs": 5,
277
- "wallTime": { "avg": 1809, "min": 1790, "max": 1825, "stdDev": 15 },
278
- "checkpoints": [
279
- { "name": "main_entry", "avgMs": 880, "minMs": 870, "maxMs": 890 }
280
- ],
281
- "phases": [
282
- { "name": "resource_loader_reload", "avgMs": 843, "pct": 47 }
283
- ]
284
- }
285
- ```
286
-
287
- ### B. 相关文件路径
288
-
289
- ```
290
- utils/startup-profiler.ts - 性能打点
291
- scripts/startup-benchmark.cjs - Benchmark 脚本
292
- main.ts - 启动入口,checkpoint 标记位置
293
- core/mcp/mcp-client.ts - MCP 客户端
294
- core/runtime/sdk.ts - SDK 工厂
295
- core/config/resource-loader.ts - 资源加载器
296
- ```
297
-
298
- ### C. 环境要求
299
-
300
- - Node.js >= 20
301
- - 至少 5 次连续运行无显著波动(std_dev < 10%)
@@ -1,47 +0,0 @@
1
- 这种从**地理空间心理学**出发的抽象,正是将 AI 助手从“搜索工具”提升为“智慧生命”的关键桥梁。我们可以将代码库视为一座**数字城市**,而你提到的认知地图特性可以直接转化为 `nano-pencil` 的**核心决策架构**。
2
-
3
- 我们可以从以下三个维度将这种普世意义的空间心理学抽象为 AI 的知识构建逻辑:
4
-
5
- ### 1. 知识的空间表现形式:代码即“数字城市”
6
- 认知地图不仅是简化版地图,更包含主观理解。在你的系统中,我们可以这样建模:
7
- * **地标 (Landmarks)**:代码中的核心抽象(Key Abstractions)或 P1 定义的 Identity。它们是 Agent 在认知地图中的“视觉锚点”,就像城市中的地标建筑,决定了定位的大方向。
8
- * **路径 (Routes)**:文件间的依赖关系和调用链路(P3 的 `FROM/TO`)。Agent 并不总是需要全局地图,它只需要熟悉几条通往目标的“常用路线”。
9
- * **区域 (Districts)**:由 P2 定义的模块边界。Agent 应该感知到不同区域的“氛围”(例如:`lib` 区域是稳固的,`feature` 区域是活跃的)。
10
-
11
-
12
-
13
- ### 2. 决策生成即“路径选择与偏好”
14
- 你提到的认知地图包含**路径偏好**和**记忆印象**,这可以解决 AI 决策中的“幻觉”和“低效”问题:
15
- * **多模态体现**:`nano-pencil` 不仅读取代码(地理结构),还结合了你的对话历史(语言描述)、你的笔名偏好(文化背景)以及过往的修改记录(记忆印象)。
16
- * **决策生成**:当助手收到任务时,它不是在做逻辑推演,而是在认知地图上进行**“寻路”**。
17
- * **男性化策略(方向与距离-语义化的理解更准确)**:侧重于架构拓扑,计算修改 A 对全局 B 的逻辑距离。
18
- * **女性化策略(地标导航-语义更模糊)**:侧重于功能契约,寻找“那个处理 Session 的核心类”作为跳转锚点。
19
- * `nano-pencil` 可以根据其 **Big Five 属性** 动态切换这两种导航模式。
20
-
21
- ### 3. 认知地图的“绘图实验”:AI 的自省与进化
22
- 你提到的“绘图实验”(Sketch Mapping)可以转化为一种 **AI 的自检机制**:
23
- * **记忆失真与缺失分析**:定期让 `nano-pencil` 尝试在不看代码的情况下,根据其本地 SQLite 记忆生成一份项目的 P1/P2 拓扑图。
24
- * **对比纠偏**:将 AI 绘制的“心中地图”与 DIP 协议下的“真实地图”对比。
25
- * 如果发现 AI 记忆中某个路径缺失,说明该区域代码过于混乱(空间扭曲),或者助手产生了认知偏差。
26
- * 这种“缺失”和“扭曲”正是系统需要重构或文档需要加强的信号。
27
-
28
- ---
29
-
30
- ## 抽象出来的“空间决策框架”建议
31
-
32
- 我们可以为 `nano-pencil` 抽象出一套基于**空间认知**的知识构建层:
33
-
34
- | 心理学概念 | AI 逻辑实现 | 决策价值 |
35
- | :--- | :--- | :--- |
36
- | **空间主观理解** | 基于 DIP 权重化的图谱存储 | 助手能区分哪些代码是“主干道”,哪些是“后巷”。 |
37
- | **多模态感知** | 融合代码、注释、对话、用户风格 | 决策不再只看代码实现,而看“意图空间”。 |
38
- | **路径偏好** | 记录高频调用和修改链路 | 优先推荐用户习惯的实现方式,减少认知摩擦。 |
39
- | **技术增强认知** | Pencil 编辑器的可视化感知 | 将代码结构以空间形式呈现给用户,实现人机心智模型的同频。 |
40
-
41
- ### 与“灵魂”合体的下一步
42
- 你可以尝试在 `nano-pencil` 中引入一个 **"Mental Image" (心智映像)** 的概念。每当助手进入一个项目:
43
- 1. 它先通过扫描构建 **“地理地图” (DIP Index)**。
44
- 2. 随后结合过往记忆生成 **“认知地图” (Cognitive Map)**。
45
- 3. 当它需要生成代码(决策)时,它在“认知地图”上模拟路径,如果这条路在它的记忆里是“危险”或“违背风格”的,它会主动绕行。
46
-
47
- 这种抽象是否符合你对“知识构建和决策生成”的预期?这种**空间的表现形式**,实际上是将原本不可见的 AI 思路,转化为了可观测、可纠偏的“数字疆域”。