@pencil-agent/nano-pencil 2.0.0-beta.8 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (241) 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/extensions-host/index.d.ts +1 -1
  7. package/dist/core/extensions-host/loader.js +1 -1
  8. package/dist/core/extensions-host/runner.d.ts +1 -0
  9. package/dist/core/extensions-host/runner.js +2 -2
  10. package/dist/core/extensions-host/types.d.ts +17 -22
  11. package/dist/core/lib/ai/src/types.d.ts +12 -2
  12. package/dist/core/persona/persona-manager.js +5 -2
  13. package/dist/core/runtime/agent-session.js +3 -3
  14. package/dist/core/runtime/extension-core-bindings.d.ts +1 -0
  15. package/dist/core/runtime/extension-core-bindings.js +2 -2
  16. package/dist/extensions/builtin/AGENT.md +115 -115
  17. package/dist/extensions/builtin/browser/AGENT.md +17 -17
  18. package/dist/extensions/builtin/browser/agent-workspace/agent_helpers.py +12 -12
  19. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/amazon/product-search.md +198 -198
  20. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/archive-org/scraping.md +341 -341
  21. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/arxiv/scraping.md +311 -311
  22. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/arxiv-bulk/scraping.md +333 -333
  23. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/atlas/overview.md +70 -70
  24. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/booking-com/scraping.md +578 -578
  25. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/capterra/scraping.md +440 -440
  26. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/centilebrain/generate-estimates.md +110 -110
  27. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/coingecko/scraping.md +325 -325
  28. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/coinmarketcap/scraping.md +463 -463
  29. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/coursera/scraping.md +360 -360
  30. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/craigslist/scraping.md +390 -390
  31. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/crossref/scraping.md +568 -568
  32. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/dev-to/scraping.md +323 -323
  33. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/duckduckgo/scraping.md +349 -349
  34. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/ebay/scraping.md +435 -435
  35. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/etsy/scraping.md +506 -506
  36. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/eventbrite/scraping.md +363 -363
  37. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/expedia/automation.md +168 -168
  38. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/facebook/groups.md +236 -236
  39. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/facebook/pages.md +295 -295
  40. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/framer/editor.md +108 -108
  41. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/fred/scraping.md +493 -493
  42. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/g2/scraping.md +580 -580
  43. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/genius/scraping.md +511 -511
  44. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/github/repo-actions.md +65 -65
  45. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/github/scraping.md +184 -184
  46. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/glassdoor/scraping.md +543 -543
  47. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/gmail/compose.md +122 -122
  48. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/goodreads/scraping.md +461 -461
  49. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/gutenberg/scraping.md +383 -383
  50. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/hackernews/scraping.md +243 -243
  51. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/howlongtobeat/scraping.md +473 -473
  52. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/imdb/scraping.md +271 -271
  53. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/itch-io/scraping.md +436 -436
  54. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/job-boards/indeed-glassdoor.md +1021 -1021
  55. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/letterboxd/scraping.md +349 -349
  56. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/linkedin/invitation-manager.md +109 -109
  57. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/loom/folder-enumeration.md +170 -170
  58. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/macrotrends/scraping.md +537 -537
  59. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/medium/article-hydration.md +120 -120
  60. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/medium/scraping.md +414 -414
  61. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/metacritic/scraping.md +477 -477
  62. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/musicbrainz/scraping.md +478 -478
  63. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/nasa/scraping.md +339 -339
  64. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/news-aggregation/multi-source.md +205 -205
  65. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/open-library/scraping.md +472 -472
  66. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/openalex/scraping.md +470 -470
  67. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/openstreetmap/scraping.md +490 -490
  68. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/package-registries/npm-pypi.md +478 -478
  69. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/polymarket/scraping.md +234 -234
  70. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/producthunt/scraping.md +307 -307
  71. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/pubmed/scraping.md +421 -421
  72. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/quora/scraping.md +364 -364
  73. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/rawg/scraping.md +352 -352
  74. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/reddit/scraping.md +124 -124
  75. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/rest-countries/scraping.md +233 -233
  76. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/sec-edgar/scraping.md +361 -361
  77. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/shopify-admin/README.md +36 -36
  78. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/shopify-admin/embedded-apps.md +72 -72
  79. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/shopify-admin/knowledge-base.md +109 -109
  80. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/shopify-admin/polaris-inputs.md +137 -137
  81. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/soundcloud/scraping.md +362 -362
  82. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/spotify/scraping.md +339 -339
  83. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/stackoverflow/scraping.md +435 -435
  84. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/steam/scraping.md +575 -575
  85. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/substack/scraping.md +338 -338
  86. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/thetechgeeks/pricing.md +52 -52
  87. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/tiktok/upload.md +107 -107
  88. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/tradingview/scraping.md +309 -309
  89. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/trello/boards-and-lists.md +88 -88
  90. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/trustpilot/scraping.md +375 -375
  91. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/walmart/scraping.md +444 -444
  92. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/wayback-machine/scraping.md +306 -306
  93. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/weather/scraping.md +398 -398
  94. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/wellfound/scraping.md +596 -596
  95. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/world-bank/scraping.md +356 -356
  96. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/xiaohongshu/scraping.md +84 -84
  97. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/youtube/scraping.md +418 -418
  98. package/dist/extensions/builtin/browser/agent-workspace/domain-skills/zillow/scraping.md +433 -433
  99. package/dist/extensions/builtin/browser/browser.md +73 -73
  100. package/dist/extensions/builtin/browser/install.md +142 -142
  101. package/dist/extensions/builtin/browser/interaction-skills/connection.md +48 -48
  102. package/dist/extensions/builtin/browser/interaction-skills/cookies.md +3 -3
  103. package/dist/extensions/builtin/browser/interaction-skills/cross-origin-iframes.md +3 -3
  104. package/dist/extensions/builtin/browser/interaction-skills/dialogs.md +64 -64
  105. package/dist/extensions/builtin/browser/interaction-skills/downloads.md +3 -3
  106. package/dist/extensions/builtin/browser/interaction-skills/drag-and-drop.md +3 -3
  107. package/dist/extensions/builtin/browser/interaction-skills/dropdowns.md +3 -3
  108. package/dist/extensions/builtin/browser/interaction-skills/iframes.md +3 -3
  109. package/dist/extensions/builtin/browser/interaction-skills/network-requests.md +3 -3
  110. package/dist/extensions/builtin/browser/interaction-skills/print-as-pdf.md +3 -3
  111. package/dist/extensions/builtin/browser/interaction-skills/profile-sync.md +90 -90
  112. package/dist/extensions/builtin/browser/interaction-skills/screenshots.md +17 -17
  113. package/dist/extensions/builtin/browser/interaction-skills/scrolling.md +3 -3
  114. package/dist/extensions/builtin/browser/interaction-skills/shadow-dom.md +3 -3
  115. package/dist/extensions/builtin/browser/interaction-skills/tabs.md +69 -69
  116. package/dist/extensions/builtin/browser/interaction-skills/uploads.md +1 -1
  117. package/dist/extensions/builtin/browser/interaction-skills/viewport.md +3 -3
  118. package/dist/extensions/builtin/browser/src/browser_harness/AGENT.md +15 -15
  119. package/dist/extensions/builtin/browser/src/browser_harness/__init__.py +8 -8
  120. package/dist/extensions/builtin/browser/src/browser_harness/_ipc.py +90 -90
  121. package/dist/extensions/builtin/browser/src/browser_harness/admin.py +722 -722
  122. package/dist/extensions/builtin/browser/src/browser_harness/daemon.py +328 -328
  123. package/dist/extensions/builtin/browser/src/browser_harness/helpers.py +396 -396
  124. package/dist/extensions/builtin/browser/src/browser_harness/run.py +103 -103
  125. package/dist/extensions/builtin/discipline/skills/brainstorming/SKILL.md +33 -33
  126. package/dist/extensions/builtin/discipline/skills/executing-plans/SKILL.md +25 -25
  127. package/dist/extensions/builtin/discipline/skills/finishing-development-branch/SKILL.md +25 -25
  128. package/dist/extensions/builtin/discipline/skills/receiving-code-review/SKILL.md +22 -22
  129. package/dist/extensions/builtin/discipline/skills/requesting-code-review/SKILL.md +31 -31
  130. package/dist/extensions/builtin/discipline/skills/systematic-debugging/SKILL.md +28 -28
  131. package/dist/extensions/builtin/discipline/skills/test-driven-development/SKILL.md +32 -32
  132. package/dist/extensions/builtin/discipline/skills/using-git-worktrees/SKILL.md +25 -25
  133. package/dist/extensions/builtin/discipline/skills/verification-before-completion/SKILL.md +27 -27
  134. package/dist/extensions/builtin/discipline/skills/writing-plans/SKILL.md +26 -26
  135. package/dist/extensions/builtin/goal/README.md +67 -67
  136. package/dist/extensions/builtin/goal/goal-controller.d.ts +39 -10
  137. package/dist/extensions/builtin/goal/goal-controller.js +1 -1
  138. package/dist/extensions/builtin/goal/goal-format.js +1 -1
  139. package/dist/extensions/builtin/goal/goal-prompts.d.ts +2 -0
  140. package/dist/extensions/builtin/goal/goal-prompts.js +5 -4
  141. package/dist/extensions/builtin/goal/goal-store.js +1 -1
  142. package/dist/extensions/builtin/goal/index.d.ts +1 -1
  143. package/dist/extensions/builtin/goal/index.js +10 -7
  144. package/dist/extensions/builtin/grub/README.md +112 -112
  145. package/dist/extensions/builtin/link-world/agent-workspace/README.md +16 -16
  146. package/dist/extensions/builtin/link-world/index.js +6 -6
  147. package/dist/extensions/builtin/link-world/internet-search/internet-search.md +65 -65
  148. package/dist/extensions/builtin/link-world/link-world-agent.md +82 -82
  149. package/dist/extensions/builtin/link-world/linkworld.md +313 -313
  150. package/dist/extensions/builtin/link-world/{network-routing.md → network-routing/network-routing.md} +67 -67
  151. package/dist/extensions/builtin/loop/README.md +92 -92
  152. package/dist/extensions/builtin/mcp/figma-design.md +68 -68
  153. package/dist/extensions/builtin/mcp/mcp-management.md +85 -85
  154. package/dist/extensions/builtin/plan/index.js +1 -1
  155. package/dist/extensions/builtin/recap/AGENT.md +15 -15
  156. package/dist/extensions/builtin/sal/README.md +72 -72
  157. package/dist/extensions/builtin/security-audit/README.md +289 -289
  158. package/dist/extensions/builtin/task/task-store.d.ts +4 -0
  159. package/dist/extensions/builtin/task/task-store.js +1 -1
  160. package/dist/extensions/builtin/team/AGENT.md +112 -112
  161. package/dist/extensions/builtin/team/TESTING.md +299 -299
  162. package/dist/extensions/builtin/token-save/README.md +56 -56
  163. package/dist/extensions/optional/AGENT.md +10 -10
  164. package/dist/index.d.ts +5 -30
  165. package/dist/index.js +1 -1
  166. package/dist/models.d.ts +7 -0
  167. package/dist/models.js +1 -0
  168. package/dist/modes/interactive/components/footer.js +1 -1
  169. package/dist/modes/interactive/components/task-status-panel.d.ts +36 -0
  170. package/dist/modes/interactive/components/task-status-panel.js +1 -0
  171. package/dist/modes/interactive/controllers/stream-render-controller.d.ts +7 -0
  172. package/dist/modes/interactive/controllers/stream-render-controller.js +2 -2
  173. package/dist/modes/interactive/interactive-mode.js +40 -40
  174. package/dist/modes/interactive/state/interactive-state.d.ts +2 -0
  175. package/dist/modes/interactive/state/interactive-state.js +1 -1
  176. package/dist/modes/interactive/theme/dark.json +85 -85
  177. package/dist/modes/interactive/theme/light.json +84 -84
  178. package/dist/modes/interactive/theme/theme-schema.json +335 -335
  179. package/dist/modes/interactive/theme/warm.json +81 -81
  180. package/dist/node_modules/@pencil-agent/ai/dist/cli.js +0 -0
  181. package/dist/node_modules/@pencil-agent/ai/dist/models.generated.js +1 -1
  182. package/dist/node_modules/@pencil-agent/ai/dist/providers/anthropic.js +2 -2
  183. package/dist/node_modules/@pencil-agent/ai/dist/providers/openai-completions.js +5 -5
  184. package/dist/node_modules/@pencil-agent/ai/dist/providers/openai-responses.js +1 -1
  185. package/dist/node_modules/@pencil-agent/ai/dist/stream.js +1 -1
  186. package/dist/packages/protocol/src/commands.d.ts +33 -0
  187. package/dist/packages/protocol/src/flags.d.ts +20 -0
  188. package/dist/packages/protocol/src/hooks.d.ts +17 -0
  189. package/dist/packages/protocol/src/hooks.js +0 -0
  190. package/dist/packages/{extension-sdk → protocol}/src/index.d.ts +7 -4
  191. package/dist/packages/protocol/src/index.js +1 -0
  192. package/dist/packages/{extension-sdk → protocol}/src/lifecycle.d.ts +15 -27
  193. package/dist/packages/protocol/src/lifecycle.js +0 -0
  194. package/dist/packages/{extension-sdk → protocol}/src/tools.d.ts +1 -1
  195. package/dist/packages/protocol/src/tools.js +0 -0
  196. package/dist/public-config.d.ts +12 -0
  197. package/dist/public-config.js +1 -0
  198. package/dist/runtime.d.ts +9 -0
  199. package/dist/runtime.js +1 -0
  200. package/dist/session-compaction.d.ts +7 -0
  201. package/dist/session-compaction.js +1 -0
  202. package/dist/session.d.ts +7 -0
  203. package/dist/session.js +1 -0
  204. package/dist/skills.d.ts +7 -0
  205. package/dist/skills.js +1 -0
  206. package/dist/tools.d.ts +7 -0
  207. package/dist/tools.js +1 -0
  208. 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 +851 -0
  209. package/docs/SDK-TESTING.md +364 -0
  210. package/docs/codex-goal-command-impl.md +1055 -1055
  211. package/docs/codex-goal-vs-grub.md +500 -500
  212. package/docs/custom-provider.md +27 -27
  213. package/docs/extensions.md +27 -27
  214. package/docs/keybindings.md +27 -27
  215. package/docs/loop /351/207/215/346/236/204/345/256/214/346/210/220/346/200/273/347/273/223.md" +250 -250
  216. package/docs/loop /351/207/215/346/236/204/345/256/214/346/210/220/346/212/245/345/221/212.md" +122 -122
  217. package/docs/loop /351/207/215/346/236/204/346/226/271/346/241/210.md" +1222 -1222
  218. 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
  219. 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
  220. package/docs/loop /351/207/215/346/236/204/350/256/241/345/210/222.md" +320 -320
  221. package/docs/loop-usage-examples.md +214 -214
  222. package/docs/mem-core/346/212/200/346/234/257/346/226/207/346/241/243.md +593 -0
  223. package/docs/models.md +27 -27
  224. package/docs/packages.md +27 -27
  225. package/docs/pi-design-philosophy.md +457 -457
  226. package/docs/planmode.md +1987 -1987
  227. package/docs/prompt-templates.md +27 -27
  228. package/docs/providers.md +27 -27
  229. package/docs/sdk.md +27 -27
  230. package/docs/skills.md +27 -27
  231. package/docs/startup-performance-optimization.md +301 -0
  232. package/docs/themes.md +27 -27
  233. package/docs/tui.md +27 -27
  234. package/docs//350/256/244/347/237/245/345/234/260/345/233/276.md +47 -0
  235. package/package.json +190 -162
  236. package/dist/packages/extension-sdk/src/index.js +0 -1
  237. package/docs/cc-agent-design.md +0 -1297
  238. package/docs/cc-tui-design.md +0 -1333
  239. package/docs//345/257/271/346/240/207Claude-Code.md +0 -1775
  240. /package/dist/packages/{extension-sdk/src/lifecycle.js → protocol/src/commands.js} +0 -0
  241. /package/dist/packages/{extension-sdk/src/tools.js → protocol/src/flags.js} +0 -0
@@ -0,0 +1,47 @@
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 思路,转化为了可观测、可纠偏的“数字疆域”。
package/package.json CHANGED
@@ -1,162 +1,190 @@
1
- {
2
- "name": "@pencil-agent/nano-pencil",
3
- "version": "2.0.0-beta.8",
4
- "description": "CLI writing agent with read, bash, edit, write tools and session management. Supports DashScope and Ali Token Plan. Soul enabled by default for AI personality evolution.",
5
- "type": "module",
6
- "bin": {
7
- "nanopencil": "dist/cli.js"
8
- },
9
- "exports": {
10
- ".": {
11
- "import": "./dist/index.js",
12
- "types": "./dist/index.d.ts"
13
- }
14
- },
15
- "files": [
16
- "dist/**/*.js",
17
- "dist/**/*.d.ts",
18
- "dist/**/*.json",
19
- "dist/**/*.md",
20
- "dist/**/*.py",
21
- "dist/**/*.html",
22
- "dist/**/*.css",
23
- "docs",
24
- "LICENSE",
25
- "README.md"
26
- ],
27
- "scripts": {
28
- "dev": "tsx cli.ts",
29
- "build": "npm run clean:dist && npm run build:deps && tsc -p tsconfig.build.json && npm run copy:internal-libs && npm run copy:theme:json && npm run copy:assets && npm run build:meta && npm run minify:dist",
30
- "build:meta": "node scripts/generate-build-meta.js",
31
- "minify:dist": "node scripts/minify-dist.js",
32
- "build:release": "npm run generate-models --prefix core/lib/ai && npm run build",
33
- "build:deps": "node scripts/build-deps.js",
34
- "clean:dist": "node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"",
35
- "copy:theme:json": "node -e \"const fs=require('fs');const p=require('path');const d='dist/modes/interactive/theme';if(!fs.existsSync(d))fs.mkdirSync(d,{recursive:true});fs.readdirSync('modes/interactive/theme').forEach(f=>{if(f.endsWith('.json'))fs.copyFileSync(p.join('modes/interactive/theme',f),p.join(d,f))})\"",
36
- "copy:internal-libs": "node scripts/copy-internal-libs.js",
37
- "copy:assets": "node scripts/copy-assets.js",
38
- "update-models": "npm run generate-models --prefix core/lib/ai",
39
- "benchmark": "node scripts/startup-benchmark.cjs",
40
- "benchmark:save": "node scripts/startup-benchmark.cjs --output .benchmarks/baseline.json",
41
- "benchmark:compare": "node scripts/startup-benchmark.cjs --baseline .benchmarks/baseline.json",
42
- "scaffold:docs": "node --import tsx scripts/scaffold-feature-docs.ts",
43
- "verify:dip": "node --import tsx scripts/verify-dip.ts",
44
- "verify:quality": "node --import tsx scripts/verify-quality.ts",
45
- "verify:package-boundary": "node --import tsx scripts/verify-package-boundary.ts",
46
- "verify:package-boundary:dist": "node --import tsx scripts/verify-package-boundary.ts --dist",
47
- "verify:all": "npm run verify:dip && npm run verify:quality && npm run verify:package-boundary && npx tsc --noEmit",
48
- "wiki:scan": "node --import tsx scripts/llm-wiki.ts scan",
49
- "wiki:update": "node --import tsx scripts/llm-wiki.ts update",
50
- "wiki:verify": "node --import tsx scripts/llm-wiki.ts verify",
51
- "wiki:build": "node --import tsx scripts/llm-wiki.ts build",
52
- "wiki:all": "node --import tsx scripts/llm-wiki.ts all",
53
- "watch": "tsc --watch",
54
- "test:subagent": "node --test --import tsx test/subagent-parser.test.ts test/worktree-manager.test.ts test/bash-sandbox.test.ts",
55
- "test:team": "node --test --import tsx test/team-parser.test.ts test/team-runtime.test.ts",
56
- "test:plan": "node --test --import tsx test/plan-mode.test.ts",
57
- "test:utils": "node --test --import tsx test/logger.test.ts",
58
- "test:commands": "node --test --import tsx test/slash-command-catalog.test.ts test/extension-command-completions.test.ts test/interactive-slash-command-arguments.test.ts test/rpc-command-catalog.test.ts",
59
- "test:security": "node --test --import tsx test/security-audit.test.ts",
60
- "test:tools": "node --test --import tsx test/workspace-write-guard.test.ts test/read-tool.test.ts test/tool-window-validation.test.ts test/bash-sandbox.test.ts",
61
- "test:presence": "node --test --import tsx test/presence-opening.test.ts",
62
- "test:interactive-memory-notify": "node --test --import tsx test/interactive-memory-notify.test.ts test/session-manager-header.test.ts",
63
- "start": "npx cross-env NODE_ENV=production node --no-deprecation dist/cli.js",
64
- "prepare": "git config core.hooksPath .githooks || true",
65
- "prepublishOnly": "npm run build:release",
66
- "changelog": "node scripts/generate-changelog.js",
67
- "version": "npm run changelog && git add CHANGELOG.md",
68
- "postversion": "git push",
69
- "release": "npm version patch && npm publish"
70
- },
71
- "keywords": [
72
- "nanopencil",
73
- "writing-agent",
74
- "coding-agent",
75
- "ai",
76
- "llm",
77
- "cli",
78
- "tui",
79
- "agent",
80
- "apikey",
81
- "dashscope"
82
- ],
83
- "license": "GPL-3.0",
84
- "workspaces": [
85
- "core/lib/agent-core",
86
- "core/lib/ai",
87
- "core/lib/tui",
88
- "packages/mem-core",
89
- "packages/soul-core",
90
- "packages/extension-sdk"
91
- ],
92
- "engines": {
93
- "node": ">=20"
94
- },
95
- "dependencies": {
96
- "@agentclientprotocol/sdk": "^0.16.1",
97
- "@anthropic-ai/sdk": "^0.73.0",
98
- "@aws-sdk/client-bedrock-runtime": "^3.983.0",
99
- "@google/genai": "^1.40.0",
100
- "@mariozechner/clipboard": "^0.3.2",
101
- "@mariozechner/jiti": "^2.6.2",
102
- "@mistralai/mistralai": "1.10.0",
103
- "@pencil-agent/extension-sdk": "^0.1.0",
104
- "@pencil-agent/mem-core": "^1.1.2",
105
- "@pencil-agent/soul-core": "^0.1.0",
106
- "@silvia-odwyer/photon-node": "^0.3.4",
107
- "@sinclair/typebox": "^0.34.41",
108
- "ajv": "^8.17.1",
109
- "ajv-formats": "^3.0.1",
110
- "chalk": "^5.5.0",
111
- "chokidar": "^5.0.0",
112
- "cli-highlight": "^2.1.11",
113
- "diff": "^8.0.2",
114
- "extract-zip": "^2.0.1",
115
- "file-type": "^21.1.1",
116
- "get-east-asian-width": "^1.3.0",
117
- "glob": "^13.0.1",
118
- "hosted-git-info": "^9.0.2",
119
- "ignore": "^7.0.5",
120
- "marked": "^15.0.12",
121
- "mime-types": "^3.0.1",
122
- "minimatch": "^10.1.1",
123
- "openai": "6.10.0",
124
- "partial-json": "^0.1.7",
125
- "pdf-lib": "^1.17.1",
126
- "pdfjs-dist": "^4.0.379",
127
- "proper-lockfile": "^4.1.2",
128
- "proxy-agent": "^6.5.0",
129
- "undici": "^7.19.1",
130
- "vscode-jsonrpc": "^8.2.1",
131
- "vscode-languageserver-protocol": "^3.18.0",
132
- "vscode-languageserver-types": "^3.18.0",
133
- "yaml": "^2.8.2",
134
- "zod": "^4.3.6",
135
- "zod-to-json-schema": "^3.24.6"
136
- },
137
- "optionalDependencies": {
138
- "koffi": "^2.9.0"
139
- },
140
- "devDependencies": {
141
- "@types/hosted-git-info": "^3.0.5",
142
- "@types/node": "^22.15.0",
143
- "@types/proper-lockfile": "^4.1.4",
144
- "cross-env": "^10.1.0",
145
- "esbuild": "^0.27.3",
146
- "tsx": "^4.7.0",
147
- "typescript": "^5.3.3"
148
- },
149
- "overrides": {
150
- "@types/node": "^22.15.0",
151
- "zod": "^4.3.6"
152
- },
153
- "nanopencilConfig": {
154
- "name": "nanopencil",
155
- "configDir": ".pencils"
156
- },
157
- "repository": {
158
- "type": "git",
159
- "url": "git+ssh://git@github.com/O-Pencil/nanoPencil.git"
160
- },
161
- "homepage": "https://github.com/O-Pencil/nanoPencil"
162
- }
1
+ {
2
+ "name": "@pencil-agent/nano-pencil",
3
+ "version": "2.0.0",
4
+ "description": "CLI writing agent with read, bash, edit, write tools and session management. Supports DashScope and Ali Token Plan. Soul enabled by default for AI personality evolution.",
5
+ "type": "module",
6
+ "bin": {
7
+ "nanopencil": "dist/cli.js"
8
+ },
9
+ "exports": {
10
+ ".": {
11
+ "import": "./dist/index.js",
12
+ "types": "./dist/index.d.ts"
13
+ },
14
+ "./tools": {
15
+ "import": "./dist/tools.js",
16
+ "types": "./dist/tools.d.ts"
17
+ },
18
+ "./runtime": {
19
+ "import": "./dist/runtime.js",
20
+ "types": "./dist/runtime.d.ts"
21
+ },
22
+ "./session": {
23
+ "import": "./dist/session.js",
24
+ "types": "./dist/session.d.ts"
25
+ },
26
+ "./session/compaction": {
27
+ "import": "./dist/session-compaction.js",
28
+ "types": "./dist/session-compaction.d.ts"
29
+ },
30
+ "./config": {
31
+ "import": "./dist/public-config.js",
32
+ "types": "./dist/public-config.d.ts"
33
+ },
34
+ "./models": {
35
+ "import": "./dist/models.js",
36
+ "types": "./dist/models.d.ts"
37
+ },
38
+ "./skills": {
39
+ "import": "./dist/skills.js",
40
+ "types": "./dist/skills.d.ts"
41
+ }
42
+ },
43
+ "files": [
44
+ "dist/**/*.js",
45
+ "dist/**/*.d.ts",
46
+ "dist/**/*.json",
47
+ "dist/**/*.md",
48
+ "dist/**/*.py",
49
+ "dist/**/*.html",
50
+ "dist/**/*.css",
51
+ "docs",
52
+ "LICENSE",
53
+ "README.md"
54
+ ],
55
+ "scripts": {
56
+ "dev": "tsx cli.ts",
57
+ "build": "npm run clean:dist && npm run build:deps && tsc -p tsconfig.build.json && npm run copy:internal-libs && npm run copy:theme:json && npm run copy:assets && npm run build:meta && npm run minify:dist",
58
+ "build:meta": "node scripts/generate-build-meta.js",
59
+ "minify:dist": "node scripts/minify-dist.js",
60
+ "build:release": "npm run generate-models --prefix core/lib/ai && npm run build",
61
+ "build:deps": "node scripts/build-deps.js",
62
+ "clean:dist": "node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"",
63
+ "copy:theme:json": "node -e \"const fs=require('fs');const p=require('path');const d='dist/modes/interactive/theme';if(!fs.existsSync(d))fs.mkdirSync(d,{recursive:true});fs.readdirSync('modes/interactive/theme').forEach(f=>{if(f.endsWith('.json'))fs.copyFileSync(p.join('modes/interactive/theme',f),p.join(d,f))})\"",
64
+ "copy:internal-libs": "node scripts/copy-internal-libs.js",
65
+ "copy:assets": "node scripts/copy-assets.js",
66
+ "update-models": "npm run generate-models --prefix core/lib/ai",
67
+ "benchmark": "node scripts/startup-benchmark.cjs",
68
+ "benchmark:save": "node scripts/startup-benchmark.cjs --output .benchmarks/baseline.json",
69
+ "benchmark:compare": "node scripts/startup-benchmark.cjs --baseline .benchmarks/baseline.json",
70
+ "scaffold:docs": "node --import tsx scripts/scaffold-feature-docs.ts",
71
+ "verify:dip": "node --import tsx scripts/verify-dip.ts",
72
+ "verify:quality": "node --import tsx scripts/verify-quality.ts",
73
+ "verify:package-boundary": "node --import tsx scripts/verify-package-boundary.ts",
74
+ "verify:package-boundary:dist": "node --import tsx scripts/verify-package-boundary.ts --dist",
75
+ "verify:all": "npm run build:deps && npm run verify:dip && npm run verify:quality && npm run verify:package-boundary && npx tsc --noEmit",
76
+ "wiki:scan": "node --import tsx scripts/llm-wiki.ts scan",
77
+ "wiki:update": "node --import tsx scripts/llm-wiki.ts update",
78
+ "wiki:verify": "node --import tsx scripts/llm-wiki.ts verify",
79
+ "wiki:build": "node --import tsx scripts/llm-wiki.ts build",
80
+ "wiki:all": "node --import tsx scripts/llm-wiki.ts all",
81
+ "watch": "tsc --watch",
82
+ "test:subagent": "node --test --import tsx test/subagent-parser.test.ts test/worktree-manager.test.ts test/bash-sandbox.test.ts",
83
+ "test:team": "node --test --import tsx test/team-parser.test.ts test/team-runtime.test.ts",
84
+ "test:plan": "node --test --import tsx test/plan-mode.test.ts",
85
+ "test:utils": "node --test --import tsx test/logger.test.ts",
86
+ "test:commands": "node --test --import tsx test/slash-command-catalog.test.ts test/extension-command-completions.test.ts test/interactive-slash-command-arguments.test.ts test/rpc-command-catalog.test.ts",
87
+ "test:security": "node --test --import tsx test/security-audit.test.ts",
88
+ "test:tools": "node --test --import tsx test/workspace-write-guard.test.ts test/read-tool.test.ts test/tool-window-validation.test.ts test/bash-sandbox.test.ts",
89
+ "test:presence": "node --test --import tsx test/presence-opening.test.ts",
90
+ "test:interactive-memory-notify": "node --test --import tsx test/interactive-memory-notify.test.ts test/session-manager-header.test.ts",
91
+ "start": "npx cross-env NODE_ENV=production node --no-deprecation dist/cli.js",
92
+ "prepare": "git config core.hooksPath .githooks || true",
93
+ "prepublishOnly": "npm run build:release",
94
+ "changelog": "node scripts/generate-changelog.js",
95
+ "version": "npm run changelog && git add CHANGELOG.md",
96
+ "postversion": "git push",
97
+ "release": "npm version patch && npm publish"
98
+ },
99
+ "keywords": [
100
+ "nanopencil",
101
+ "writing-agent",
102
+ "coding-agent",
103
+ "ai",
104
+ "llm",
105
+ "cli",
106
+ "tui",
107
+ "agent",
108
+ "apikey",
109
+ "dashscope"
110
+ ],
111
+ "license": "GPL-3.0",
112
+ "workspaces": [
113
+ "core/lib/agent-core",
114
+ "core/lib/ai",
115
+ "core/lib/tui",
116
+ "packages/mem-core",
117
+ "packages/soul-core",
118
+ "packages/protocol"
119
+ ],
120
+ "engines": {
121
+ "node": ">=20"
122
+ },
123
+ "dependencies": {
124
+ "@agentclientprotocol/sdk": "^0.16.1",
125
+ "@anthropic-ai/sdk": "^0.73.0",
126
+ "@aws-sdk/client-bedrock-runtime": "^3.983.0",
127
+ "@google/genai": "^1.40.0",
128
+ "@mariozechner/clipboard": "^0.3.2",
129
+ "@mariozechner/jiti": "^2.6.2",
130
+ "@mistralai/mistralai": "1.10.0",
131
+ "@pencil-agent/protocol": "^0.1.0",
132
+ "@pencil-agent/mem-core": "^1.1.2",
133
+ "@pencil-agent/soul-core": "^0.1.0",
134
+ "@silvia-odwyer/photon-node": "^0.3.4",
135
+ "@sinclair/typebox": "^0.34.41",
136
+ "ajv": "^8.17.1",
137
+ "ajv-formats": "^3.0.1",
138
+ "chalk": "^5.5.0",
139
+ "chokidar": "^5.0.0",
140
+ "cli-highlight": "^2.1.11",
141
+ "diff": "^8.0.2",
142
+ "extract-zip": "^2.0.1",
143
+ "file-type": "^21.1.1",
144
+ "get-east-asian-width": "^1.3.0",
145
+ "glob": "^13.0.1",
146
+ "hosted-git-info": "^9.0.2",
147
+ "ignore": "^7.0.5",
148
+ "marked": "^15.0.12",
149
+ "mime-types": "^3.0.1",
150
+ "minimatch": "^10.1.1",
151
+ "openai": "6.10.0",
152
+ "partial-json": "^0.1.7",
153
+ "pdf-lib": "^1.17.1",
154
+ "pdfjs-dist": "^4.0.379",
155
+ "proper-lockfile": "^4.1.2",
156
+ "proxy-agent": "^6.5.0",
157
+ "undici": "^7.19.1",
158
+ "vscode-jsonrpc": "^8.2.1",
159
+ "vscode-languageserver-protocol": "^3.18.0",
160
+ "vscode-languageserver-types": "^3.18.0",
161
+ "yaml": "^2.8.2",
162
+ "zod": "^4.3.6",
163
+ "zod-to-json-schema": "^3.24.6"
164
+ },
165
+ "optionalDependencies": {
166
+ "koffi": "^2.9.0"
167
+ },
168
+ "devDependencies": {
169
+ "@types/hosted-git-info": "^3.0.5",
170
+ "@types/node": "^22.15.0",
171
+ "@types/proper-lockfile": "^4.1.4",
172
+ "cross-env": "^10.1.0",
173
+ "esbuild": "^0.27.3",
174
+ "tsx": "^4.7.0",
175
+ "typescript": "^5.3.3"
176
+ },
177
+ "overrides": {
178
+ "@types/node": "^22.15.0",
179
+ "zod": "^4.3.6"
180
+ },
181
+ "nanopencilConfig": {
182
+ "name": "nanopencil",
183
+ "configDir": ".pencils"
184
+ },
185
+ "repository": {
186
+ "type": "git",
187
+ "url": "git+ssh://git@github.com/O-Pencil/nanoPencil.git"
188
+ },
189
+ "homepage": "https://github.com/O-Pencil/nanoPencil"
190
+ }
@@ -1 +0,0 @@
1
- export*from"./tools.js";export*from"./lifecycle.js";