@bolloon/bolloon-agent 0.3.38 → 0.3.39

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 (213) hide show
  1. package/README.md +135 -135
  2. package/bin/bolloon-cli.cjs +183 -183
  3. package/bin/bolloon.cjs +0 -0
  4. package/bin/bolloon.js +157 -0
  5. package/dist/agents/constraint-layer.js +19 -19
  6. package/dist/agents/judgment-protocol.js +14 -14
  7. package/dist/agents/loop-review.js +58 -0
  8. package/dist/agents/pi-sdk-types.js +12 -12
  9. package/dist/agents/pi-sdk.js +113 -89
  10. package/dist/agents/workflow-pivot-loop.js +2 -2
  11. package/dist/bollharness/src/scripts/deploy-guard.js +8 -8
  12. package/dist/bollharness-integration/context-router-judgment.js +4 -4
  13. package/dist/bollharness-integration/context-router.js +292 -292
  14. package/dist/bollharness-integration/gate-state-machine.js +13 -13
  15. package/dist/bollharness-integration/llm-judgment-engine.js +134 -134
  16. package/dist/bollharness-integration/skill-adapter.js +21 -21
  17. package/dist/bootstrap/bootstrap.js +14 -1
  18. package/dist/bootstrap/chat-archiver.js +14 -14
  19. package/dist/bootstrap/context-os.js +21 -21
  20. package/dist/bootstrap/memory-compressor.js +13 -13
  21. package/dist/cli/mention-data.js +2 -1
  22. package/dist/cli-entry.js +36 -36
  23. package/dist/constraint-runtime/setup.js +1 -1
  24. package/dist/constraint-runtime/tools/PolymarketSDK/cancelOrder.d.ts +3 -13
  25. package/dist/constraint-runtime/tools/PolymarketSDK/cancelOrder.js +4 -16
  26. package/dist/constraint-runtime/tools/PolymarketSDK/createOrder.d.ts +3 -24
  27. package/dist/constraint-runtime/tools/PolymarketSDK/createOrder.js +4 -31
  28. package/dist/constraint-runtime/tools/PolymarketSDK/getMarket.d.ts +0 -1
  29. package/dist/constraint-runtime/tools/PolymarketSDK/getMarket.js +3 -14
  30. package/dist/constraint-runtime/tools/PolymarketSDK/getOrders.d.ts +2 -11
  31. package/dist/constraint-runtime/tools/PolymarketSDK/getOrders.js +4 -23
  32. package/dist/constraint-runtime/tools/PolymarketSDK/listMarkets.d.ts +0 -4
  33. package/dist/constraint-runtime/tools/PolymarketSDK/listMarkets.js +2 -22
  34. package/dist/context-compaction/auto-compact.js +7 -7
  35. package/dist/electron/first-run.js +54 -54
  36. package/dist/electron-build/electron/first-run.js +54 -54
  37. package/dist/electron-preload.js.map +1 -1
  38. package/dist/electron.js.map +1 -1
  39. package/dist/index.js +112 -112
  40. package/dist/llm/llm-judgment-client.js +102 -102
  41. package/dist/llm/pi-ai.js +48 -48
  42. package/dist/llm/system-prompt/layers/channel/human-async.md +41 -41
  43. package/dist/llm/system-prompt/layers/channel/local.md +14 -14
  44. package/dist/llm/system-prompt/layers/channel/p2p-agent.md +18 -18
  45. package/dist/llm/system-prompt/layers/channel/p2p-peer-sync.md +51 -51
  46. package/dist/llm/system-prompt/layers/channel/p2p-proactive.md +43 -43
  47. package/dist/llm/system-prompt/layers/channel/p2p-visitor.md +19 -19
  48. package/dist/llm/system-prompt/layers/channel/session-handoff.md +61 -61
  49. package/dist/llm/system-prompt/layers/core/artifacts_storage.md +89 -89
  50. package/dist/llm/system-prompt/layers/core/evenhandedness.md +21 -21
  51. package/dist/llm/system-prompt/layers/core/external-engagement.md +73 -73
  52. package/dist/llm/system-prompt/layers/core/hibs_reminders.md +15 -15
  53. package/dist/llm/system-prompt/layers/core/identity.md +48 -48
  54. package/dist/llm/system-prompt/layers/core/knowledge.md +17 -17
  55. package/dist/llm/system-prompt/layers/core/memory_system.md +12 -12
  56. package/dist/llm/system-prompt/layers/core/network_filesystem.md +28 -28
  57. package/dist/llm/system-prompt/layers/core/refusal.md +37 -37
  58. package/dist/llm/system-prompt/layers/core/tone.md +31 -31
  59. package/dist/llm/system-prompt/layers/core/tools.thin.md +13 -13
  60. package/dist/llm/system-prompt/layers/core/wellbeing.md +41 -41
  61. package/dist/llm/system-prompt/layers/role/architect.md +20 -20
  62. package/dist/llm/system-prompt/layers/role/expert.md +19 -19
  63. package/dist/llm/system-prompt/layers/role/implementer.md +15 -15
  64. package/dist/llm/system-prompt/layers/role/security.md +15 -15
  65. package/dist/llm/system-prompt/layers/tool/artifacts.md +72 -72
  66. package/dist/llm/system-prompt/layers/tool/bash.md +25 -25
  67. package/dist/llm/system-prompt/layers/tool/goal_handoff.md +77 -77
  68. package/dist/llm/system-prompt/layers/tool/hibs_api.md +171 -171
  69. package/dist/llm/system-prompt/layers/tool/image_search.md +70 -70
  70. package/dist/llm/system-prompt/layers/tool/manifest.md +89 -89
  71. package/dist/llm/system-prompt/layers/tool/mcp_apps.md +53 -53
  72. package/dist/llm/system-prompt/layers/tool/p2p_request.md +61 -61
  73. package/dist/llm/system-prompt/layers/tool/web_search.md +83 -83
  74. package/dist/llm/tool-manifest/ask_user_input.js +1 -1
  75. package/dist/llm/tool-manifest/bash.js +3 -3
  76. package/dist/llm/tool-manifest/create_file.js +4 -4
  77. package/dist/llm/tool-manifest/fetch_sports_data.js +3 -3
  78. package/dist/llm/tool-manifest/image_search.js +2 -2
  79. package/dist/llm/tool-manifest/index.js +0 -59
  80. package/dist/llm/tool-manifest/mcp.js +2 -2
  81. package/dist/llm/tool-manifest/message_compose.js +3 -3
  82. package/dist/llm/tool-manifest/places.js +2 -2
  83. package/dist/llm/tool-manifest/present_files.js +1 -1
  84. package/dist/llm/tool-manifest/recipe.js +2 -2
  85. package/dist/llm/tool-manifest/str_replace.js +5 -5
  86. package/dist/llm/tool-manifest/view.js +3 -3
  87. package/dist/llm/tool-manifest/weather.js +4 -4
  88. package/dist/llm/tool-manifest/web.js +4 -4
  89. package/dist/migration/external-agent-migrator.js +300 -0
  90. package/dist/pi-ecosystem-colony/index.js +365 -0
  91. package/dist/pi-ecosystem-judgment/causal-judge.js +51 -51
  92. package/dist/pi-ecosystem-judgment/distill-prompt.js +42 -42
  93. package/dist/pi-ecosystem-judgment/distillation.js +14 -14
  94. package/dist/pi-ecosystem-judgment/monitor-gate.js +28 -28
  95. package/dist/pi-ecosystem-judgment/value-injection.js +102 -102
  96. package/dist/security/context-router-tool.js +15 -15
  97. package/dist/social/ant-colony/AdaptiveHeartbeat.js +101 -0
  98. package/dist/social/ant-colony/PheromoneEngine.js +227 -0
  99. package/dist/social/ant-colony/index.js +6 -0
  100. package/dist/social/ant-colony/types.js +24 -0
  101. package/dist/test/ai-judgment-test.js +80 -0
  102. package/dist/test/bollharness-integration.test.js +318 -0
  103. package/dist/test/channel-agent-multi-dialogue.js +205 -0
  104. package/dist/test/channel-heartbeat-agent-test.js +201 -0
  105. package/dist/test/constraint-layer.test.js +164 -0
  106. package/dist/test/diap-identity-test.js +172 -0
  107. package/dist/test/diap-quick-test.js +62 -0
  108. package/dist/test/global-shared-context.test.js +315 -0
  109. package/dist/test/harness-judgment-injection.test.js +246 -0
  110. package/dist/test/harness-workflow-integrator-test.js +228 -0
  111. package/dist/test/human-value-store.test.js +243 -0
  112. package/dist/test/hybrid-integration-test.js +118 -0
  113. package/dist/test/hybrid-messenger-verify.js +55 -0
  114. package/dist/test/iroh-bistream-debug.js +38 -0
  115. package/dist/test/iroh-communication.test.js +66 -0
  116. package/dist/test/iroh-debug-test.js +57 -0
  117. package/dist/test/iroh-diap-test.js +71 -0
  118. package/dist/test/iroh-direct-connect.js +55 -0
  119. package/dist/test/iroh-e2e-fixed.js +89 -0
  120. package/dist/test/iroh-e2e-same-process.js +63 -0
  121. package/dist/test/iroh-e2e.js +66 -0
  122. package/dist/test/iroh-final-e2e.js +72 -0
  123. package/dist/test/iroh-relay-test.js +37 -0
  124. package/dist/test/iroh-simple-test.js +41 -0
  125. package/dist/test/iroh-transport-verify.js +54 -0
  126. package/dist/test/iroh-transport.test.js +37 -0
  127. package/dist/test/iroh-two-nodes.js +70 -0
  128. package/dist/test/iroh-verify.js +44 -0
  129. package/dist/test/judgment-decision.test.js +219 -0
  130. package/dist/test/llm-judgment-integration.test.js +220 -0
  131. package/dist/test/p2p-agent-complex-dialogue.js +385 -0
  132. package/dist/test/p2p-agent-dialogue.js +341 -0
  133. package/dist/test/p2p-agent-full-bidirectional.js +510 -0
  134. package/dist/test/p2p-agent-harness-flow.js +437 -0
  135. package/dist/test/p2p-agent-harness-single.js +143 -0
  136. package/dist/test/p2p-ai-dialogue-test.js +318 -0
  137. package/dist/test/p2p-cid-connect-test.js +195 -0
  138. package/dist/test/p2p-connect-receiver.js +69 -0
  139. package/dist/test/p2p-doc-transfer.js +110 -0
  140. package/dist/test/p2p-identity-page-test.js +77 -0
  141. package/dist/test/p2p-iroh-test.js +171 -0
  142. package/dist/test/p2p-minimal-test.js +241 -0
  143. package/dist/test/p2p-node-1.js +148 -0
  144. package/dist/test/p2p-node-2.js +148 -0
  145. package/dist/test/p2p-server.js +281 -0
  146. package/dist/test/p2p-two-nodes-test.js +438 -0
  147. package/dist/test/pi-sdk.test.js +44 -0
  148. package/dist/test/set-persona.js +40 -0
  149. package/dist/test/simple.test.js +9 -0
  150. package/dist/test/storage-integration.test.js +150 -0
  151. package/dist/test/subagent-manager.test.js +276 -0
  152. package/dist/test/test-gate-flow.test.js +81 -0
  153. package/dist/test/workflow-engine.test.js +87 -0
  154. package/dist/test/workflow-pivot-loop.test.js +246 -0
  155. package/dist/web/api-config.html +779 -779
  156. package/dist/web/client-hearth.js +10 -10
  157. package/dist/web/components/wallet-viem.mjs +118 -118
  158. package/dist/web/index.html +424 -424
  159. package/dist/web/manifest.json +20 -20
  160. package/dist/web/server.js +13 -13
  161. package/dist/web/style.css +4914 -4914
  162. package/package.json +193 -193
  163. package/scripts/build-cli.js +215 -215
  164. package/scripts/build-web.ts +130 -130
  165. package/scripts/postinstall.js +152 -152
  166. package/bin/bolloon-daemon.sh +0 -207
  167. package/dist/constraint-runtime/reference_data/archive_surface_snapshot.json +0 -63
  168. package/dist/constraint-runtime/reference_data/commands_snapshot.json +0 -1037
  169. package/dist/constraint-runtime/reference_data/subsystems/assistant.json +0 -8
  170. package/dist/constraint-runtime/reference_data/subsystems/bootstrap.json +0 -8
  171. package/dist/constraint-runtime/reference_data/subsystems/bridge.json +0 -32
  172. package/dist/constraint-runtime/reference_data/subsystems/buddy.json +0 -13
  173. package/dist/constraint-runtime/reference_data/subsystems/cli.json +0 -26
  174. package/dist/constraint-runtime/reference_data/subsystems/components.json +0 -32
  175. package/dist/constraint-runtime/reference_data/subsystems/constants.json +0 -28
  176. package/dist/constraint-runtime/reference_data/subsystems/coordinator.json +0 -8
  177. package/dist/constraint-runtime/reference_data/subsystems/entrypoints.json +0 -15
  178. package/dist/constraint-runtime/reference_data/subsystems/hooks.json +0 -32
  179. package/dist/constraint-runtime/reference_data/subsystems/keybindings.json +0 -21
  180. package/dist/constraint-runtime/reference_data/subsystems/memdir.json +0 -15
  181. package/dist/constraint-runtime/reference_data/subsystems/migrations.json +0 -18
  182. package/dist/constraint-runtime/reference_data/subsystems/moreright.json +0 -8
  183. package/dist/constraint-runtime/reference_data/subsystems/native_ts.json +0 -11
  184. package/dist/constraint-runtime/reference_data/subsystems/outputStyles.json +0 -8
  185. package/dist/constraint-runtime/reference_data/subsystems/plugins.json +0 -9
  186. package/dist/constraint-runtime/reference_data/subsystems/remote.json +0 -11
  187. package/dist/constraint-runtime/reference_data/subsystems/schemas.json +0 -8
  188. package/dist/constraint-runtime/reference_data/subsystems/screens.json +0 -10
  189. package/dist/constraint-runtime/reference_data/subsystems/server.json +0 -10
  190. package/dist/constraint-runtime/reference_data/subsystems/services.json +0 -32
  191. package/dist/constraint-runtime/reference_data/subsystems/skills.json +0 -27
  192. package/dist/constraint-runtime/reference_data/subsystems/state.json +0 -13
  193. package/dist/constraint-runtime/reference_data/subsystems/types.json +0 -18
  194. package/dist/constraint-runtime/reference_data/subsystems/upstreamproxy.json +0 -9
  195. package/dist/constraint-runtime/reference_data/subsystems/utils.json +0 -32
  196. package/dist/constraint-runtime/reference_data/subsystems/vim.json +0 -12
  197. package/dist/constraint-runtime/reference_data/subsystems/voice.json +0 -8
  198. package/dist/constraint-runtime/reference_data/tools_snapshot.json +0 -922
  199. package/dist/constraint-runtime/tools/PolymarketSDK/clobShared.d.ts +0 -50
  200. package/dist/constraint-runtime/tools/PolymarketSDK/clobShared.js +0 -78
  201. package/dist/electron/config.js.map +0 -1
  202. package/dist/electron/dialogs.js.map +0 -1
  203. package/dist/electron/first-run.js.map +0 -1
  204. package/dist/electron/ipc.js.map +0 -1
  205. package/dist/electron/logger.js.map +0 -1
  206. package/dist/electron/main.js.map +0 -1
  207. package/dist/electron/menu.js.map +0 -1
  208. package/dist/electron/paths.js.map +0 -1
  209. package/dist/electron/server.js.map +0 -1
  210. package/dist/electron/tray.js.map +0 -1
  211. package/dist/electron/window.js.map +0 -1
  212. package/dist/utils/auto-update.js.map +0 -1
  213. package/dist/web/client.js.map +0 -7
package/dist/index.js CHANGED
@@ -1362,10 +1362,10 @@ async function runToolCommand(tool, args, outputJson, comm, model, prompt) {
1362
1362
  const running = irohTransport.isRunning();
1363
1363
  const irohPeers = irohTransport.getPeers();
1364
1364
  const messenger = hybridMessenger ? 'HybridMessenger 就绪' : 'HybridMessenger 未初始化';
1365
- response = `iroh P2P 状态:
1366
- 运行中: ${running ? '是' : '否'}
1367
- Node ID: ${nodeId ? nodeId.substring(0, 32) + '...' : 'N/A'}
1368
- 已知节点: ${irohPeers.length}
1365
+ response = `iroh P2P 状态:
1366
+ 运行中: ${running ? '是' : '否'}
1367
+ Node ID: ${nodeId ? nodeId.substring(0, 32) + '...' : 'N/A'}
1368
+ 已知节点: ${irohPeers.length}
1369
1369
  ${messenger}`;
1370
1370
  break;
1371
1371
  }
@@ -2499,114 +2499,114 @@ function parseArgs() {
2499
2499
  return result;
2500
2500
  }
2501
2501
  function printHelp() {
2502
- console.log(`
2503
- 🤖 Bolloon Agent - AI 可调用文档处理智能体
2504
-
2505
- 用法:
2506
- npx tsx src/index.ts [选项] [参数]
2507
-
2508
- 选项:
2509
- # 文档处理
2510
- --read <file> 读取文档 (txt, md, pdf, docx)
2511
- --summarize <file> [ctx] 总结文档,可选上下文
2512
- --improve <file> <req> 改进文档,req 为改进要求
2513
-
2514
- # P2P 网络
2515
- --peers 列出已连接的对等节点
2516
- --broadcast <msg> 广播消息到所有节点
2517
- --send <peerId> <msg> 向指定节点发送消息
2518
-
2519
- # 智能体
2520
- --identity 显示当前智能体身份
2521
- --logs 显示操作日志
2522
- --search <keyword> 搜索文件
2523
- --tools 显示所有可用工具
2524
-
2525
- # SubAgent 管理
2526
- --agents 列出所有 SubAgent
2527
- --register-agent <name> [cap1] [cap2]... 注册新 SubAgent
2528
- --delegate <任务描述> [能力要求...] 委派任务给最佳 Agent
2529
-
2530
- # 全局共享上下文
2531
- --context 显示全局共享上下文摘要
2532
- --global-agents 显示全局 Agent 注册表
2533
- --add-action <内容> [重要性] 添加用户行动到共享上下文
2534
-
2535
- # Bollharness 治理框架
2536
- --harness-init 初始化 Bollharness 治理框架
2537
- --harness-gate 显示当前 Gate 状态
2538
- --harness-transition [PASS|BLOCK] 执行 Gate 转移
2539
- --harness-skill <name> [action] 执行 Harness Skill
2540
- --harness-classify <描述> 分类变更类型
2541
- --harness-context <file> 获取文件上下文
2542
- --harness-check <file> 执行 Guard 检查
2543
- --harness-archive 归档当前 Session 到 Harness
2544
- --harness-sessions 列出 Session 归档记录
2545
- --harness-session-context [id] 获取 Session 上下文
2546
-
2547
- # 自动更新
2548
- --update-check 检查 npm 包更新
2549
- --update-now [pkg] 更新到最新版本
2550
-
2551
- # 跨机聊天 (commits-as-messages, 共享 GitHub 仓库)
2552
- --chat-init 初始化 .comm/ 目录 (一次性)
2553
- --chat-send "消息正文" 把消息写到 .comm/<role>/, commit + push
2554
- --chat-pull 拉取远端 .comm/ 的新消息并显示
2555
- --chat-list 列出本地所有已同步消息
2556
- --chat-watch [--interval 15s] 后台定时拉取, 有新消息时输出
2557
- --chat-status 一屏查看: role / publicKey / remote / ahead-behind
2558
-
2559
- # 纯 P2P 私聊 (不走 GitHub, 不写 git, 不持久化)
2560
- --chat-p2p-send <peer|publicKey> "消息正文" 通过 P2P 直接发一条
2561
- --chat-p2p-listen 后台监听对方 P2P 私聊消息 (Ctrl-C 退出)
2562
-
2563
- # 跨机 agent 协作 (对方 bolloon --web 起着才能处理, 走 P2P 不经 GitHub)
2564
- --collab <peer|publicKey> "<任务描述>" 派任务给对端 LLM 干活, 等回结果 (90s 超时)
2565
-
2566
- # 外部编码智能体委派
2567
- --engine, -e <id> [--model <m>] <prompt> 委派任务给外部引擎,如 opencode/codex
2568
- --model <name> 指定委派时使用的模型
2569
-
2570
- # 输出控制
2571
- --json, -j 输出 JSON 格式
2572
- --output, -o <file> 结果保存到文件
2573
- --web 启动 Web UI 模式
2574
- --help, -h 显示帮助信息
2575
-
2576
- 示例:
2577
- # 文档处理
2578
- npx tsx src/index.ts --read 想法.md
2579
- npx tsx src/index.ts --summarize docs/想法.md
2580
- npx tsx src/index.ts --improve docs/README.md "让内容更简洁"
2581
- npx tsx src/index.ts --read 想法.md -o summary.txt
2582
-
2583
- # P2P 网络
2584
- npx tsx src/index.ts --peers
2585
- npx tsx src/index.ts --broadcast "Hello everyone"
2586
- npx tsx src/index.ts --send QmABC... "私信内容"
2587
-
2588
- # AI 对话
2589
- npx tsx src/index.ts --prompt "总结 README.md"
2590
- npx tsx src/index.ts -p "分析这个项目" -j
2591
-
2592
- # 交互模式
2593
- npx tsx src/index.ts
2594
-
2595
- # 外部引擎委派
2596
- npx tsx src/index.ts --engine opencode --model opencode/deepseek-v4-flash-free "说你好"
2597
-
2598
- # Web 模式
2599
- npx tsx src/index.ts --web
2600
-
2601
- 环境变量:
2602
- MINIMAX_API_KEY MiniMax API 密钥
2603
- DEEPSEEK_API_KEY DeepSeek API 密钥
2604
- KIMI_API_KEY / MOONSHOT_API_KEY Kimi/Moonshot API 密钥
2605
- GLM_API_KEY / ZHIPU_API_KEY 智谱 GLM API 密钥
2606
- QWEN_API_KEY / DASHSCOPE_API_KEY 通义千问 API 密钥
2607
- OPENAI_API_KEY OpenAI API 密钥(Pi SDK)
2608
- ANTHROPIC_API_KEY Anthropic API 密钥(Pi SDK)
2609
- PORT Web 服务端口(默认 54188)
2502
+ console.log(`
2503
+ 🤖 Bolloon Agent - AI 可调用文档处理智能体
2504
+
2505
+ 用法:
2506
+ npx tsx src/index.ts [选项] [参数]
2507
+
2508
+ 选项:
2509
+ # 文档处理
2510
+ --read <file> 读取文档 (txt, md, pdf, docx)
2511
+ --summarize <file> [ctx] 总结文档,可选上下文
2512
+ --improve <file> <req> 改进文档,req 为改进要求
2513
+
2514
+ # P2P 网络
2515
+ --peers 列出已连接的对等节点
2516
+ --broadcast <msg> 广播消息到所有节点
2517
+ --send <peerId> <msg> 向指定节点发送消息
2518
+
2519
+ # 智能体
2520
+ --identity 显示当前智能体身份
2521
+ --logs 显示操作日志
2522
+ --search <keyword> 搜索文件
2523
+ --tools 显示所有可用工具
2524
+
2525
+ # SubAgent 管理
2526
+ --agents 列出所有 SubAgent
2527
+ --register-agent <name> [cap1] [cap2]... 注册新 SubAgent
2528
+ --delegate <任务描述> [能力要求...] 委派任务给最佳 Agent
2529
+
2530
+ # 全局共享上下文
2531
+ --context 显示全局共享上下文摘要
2532
+ --global-agents 显示全局 Agent 注册表
2533
+ --add-action <内容> [重要性] 添加用户行动到共享上下文
2534
+
2535
+ # Bollharness 治理框架
2536
+ --harness-init 初始化 Bollharness 治理框架
2537
+ --harness-gate 显示当前 Gate 状态
2538
+ --harness-transition [PASS|BLOCK] 执行 Gate 转移
2539
+ --harness-skill <name> [action] 执行 Harness Skill
2540
+ --harness-classify <描述> 分类变更类型
2541
+ --harness-context <file> 获取文件上下文
2542
+ --harness-check <file> 执行 Guard 检查
2543
+ --harness-archive 归档当前 Session 到 Harness
2544
+ --harness-sessions 列出 Session 归档记录
2545
+ --harness-session-context [id] 获取 Session 上下文
2546
+
2547
+ # 自动更新
2548
+ --update-check 检查 npm 包更新
2549
+ --update-now [pkg] 更新到最新版本
2550
+
2551
+ # 跨机聊天 (commits-as-messages, 共享 GitHub 仓库)
2552
+ --chat-init 初始化 .comm/ 目录 (一次性)
2553
+ --chat-send "消息正文" 把消息写到 .comm/<role>/, commit + push
2554
+ --chat-pull 拉取远端 .comm/ 的新消息并显示
2555
+ --chat-list 列出本地所有已同步消息
2556
+ --chat-watch [--interval 15s] 后台定时拉取, 有新消息时输出
2557
+ --chat-status 一屏查看: role / publicKey / remote / ahead-behind
2558
+
2559
+ # 纯 P2P 私聊 (不走 GitHub, 不写 git, 不持久化)
2560
+ --chat-p2p-send <peer|publicKey> "消息正文" 通过 P2P 直接发一条
2561
+ --chat-p2p-listen 后台监听对方 P2P 私聊消息 (Ctrl-C 退出)
2562
+
2563
+ # 跨机 agent 协作 (对方 bolloon --web 起着才能处理, 走 P2P 不经 GitHub)
2564
+ --collab <peer|publicKey> "<任务描述>" 派任务给对端 LLM 干活, 等回结果 (90s 超时)
2565
+
2566
+ # 外部编码智能体委派
2567
+ --engine, -e <id> [--model <m>] <prompt> 委派任务给外部引擎,如 opencode/codex
2568
+ --model <name> 指定委派时使用的模型
2569
+
2570
+ # 输出控制
2571
+ --json, -j 输出 JSON 格式
2572
+ --output, -o <file> 结果保存到文件
2573
+ --web 启动 Web UI 模式
2574
+ --help, -h 显示帮助信息
2575
+
2576
+ 示例:
2577
+ # 文档处理
2578
+ npx tsx src/index.ts --read 想法.md
2579
+ npx tsx src/index.ts --summarize docs/想法.md
2580
+ npx tsx src/index.ts --improve docs/README.md "让内容更简洁"
2581
+ npx tsx src/index.ts --read 想法.md -o summary.txt
2582
+
2583
+ # P2P 网络
2584
+ npx tsx src/index.ts --peers
2585
+ npx tsx src/index.ts --broadcast "Hello everyone"
2586
+ npx tsx src/index.ts --send QmABC... "私信内容"
2587
+
2588
+ # AI 对话
2589
+ npx tsx src/index.ts --prompt "总结 README.md"
2590
+ npx tsx src/index.ts -p "分析这个项目" -j
2591
+
2592
+ # 交互模式
2593
+ npx tsx src/index.ts
2594
+
2595
+ # 外部引擎委派
2596
+ npx tsx src/index.ts --engine opencode --model opencode/deepseek-v4-flash-free "说你好"
2597
+
2598
+ # Web 模式
2599
+ npx tsx src/index.ts --web
2600
+
2601
+ 环境变量:
2602
+ MINIMAX_API_KEY MiniMax API 密钥
2603
+ DEEPSEEK_API_KEY DeepSeek API 密钥
2604
+ KIMI_API_KEY / MOONSHOT_API_KEY Kimi/Moonshot API 密钥
2605
+ GLM_API_KEY / ZHIPU_API_KEY 智谱 GLM API 密钥
2606
+ QWEN_API_KEY / DASHSCOPE_API_KEY 通义千问 API 密钥
2607
+ OPENAI_API_KEY OpenAI API 密钥(Pi SDK)
2608
+ ANTHROPIC_API_KEY Anthropic API 密钥(Pi SDK)
2609
+ PORT Web 服务端口(默认 54188)
2610
2610
  `);
2611
2611
  }
2612
2612
  // ---------------------------------------------------------------------------
@@ -31,55 +31,55 @@ export const JUDGMENT_PROMPTS = {
31
31
  default: {
32
32
  systemPrompt: '',
33
33
  systemPromptResolver: () => loadRoleLayer('role.expert', '你是一个专业的 AI 任务分析专家. '),
34
- userPromptTemplate: `【当前输入】
35
- {user_input}
36
-
37
- 【对话历史】
38
- {history}
39
-
40
- 【发送者】
41
- {sender_name}
42
-
43
- 请分析以上输入,判断:
44
-
45
- ## 理解
46
- 1. 问题本质是什么?(how-to / why / what / should / feasibility)
47
- 2. 核心需求是什么?
48
- 3. 有哪些隐含信息需要注意?
49
-
50
- ## 评估
51
- 1. 复杂性等级(simple / moderate / complex / profound)
52
- 2. 为什么是这个等级?
53
- 3. 需要多深的理解?(surface / deeper / fundamental)
54
-
55
- ## 决策
56
- 1. 推荐处理方式(answer / analyze / design / implement / coordinate)
57
- 2. 为什么这样处理?
58
-
59
- ## 路由
60
- 1. 应该调用哪些 Skills?(arch / guardian-fixer / harness-eng / harness-dev / task-arch / crystal-learn)
61
- 2. 需要什么协作模式?(solo / pair / team)
62
-
63
- 请用 JSON 格式输出,格式如下:
64
- {
65
- "understanding": {
66
- "essence": "问题本质",
67
- "coreNeed": "核心需求",
68
- "implicit": ["隐含信息1", "隐含信息2"]
69
- },
70
- "assessment": {
71
- "complexity": "complex",
72
- "complexityReason": "评估理由",
73
- "depth": "deeper"
74
- },
75
- "decision": {
76
- "approach": "design",
77
- "reasoning": "决策理由"
78
- },
79
- "routing": {
80
- "skills": ["arch", "guardian-fixer"],
81
- "collaboration": "pair"
82
- }
34
+ userPromptTemplate: `【当前输入】
35
+ {user_input}
36
+
37
+ 【对话历史】
38
+ {history}
39
+
40
+ 【发送者】
41
+ {sender_name}
42
+
43
+ 请分析以上输入,判断:
44
+
45
+ ## 理解
46
+ 1. 问题本质是什么?(how-to / why / what / should / feasibility)
47
+ 2. 核心需求是什么?
48
+ 3. 有哪些隐含信息需要注意?
49
+
50
+ ## 评估
51
+ 1. 复杂性等级(simple / moderate / complex / profound)
52
+ 2. 为什么是这个等级?
53
+ 3. 需要多深的理解?(surface / deeper / fundamental)
54
+
55
+ ## 决策
56
+ 1. 推荐处理方式(answer / analyze / design / implement / coordinate)
57
+ 2. 为什么这样处理?
58
+
59
+ ## 路由
60
+ 1. 应该调用哪些 Skills?(arch / guardian-fixer / harness-eng / harness-dev / task-arch / crystal-learn)
61
+ 2. 需要什么协作模式?(solo / pair / team)
62
+
63
+ 请用 JSON 格式输出,格式如下:
64
+ {
65
+ "understanding": {
66
+ "essence": "问题本质",
67
+ "coreNeed": "核心需求",
68
+ "implicit": ["隐含信息1", "隐含信息2"]
69
+ },
70
+ "assessment": {
71
+ "complexity": "complex",
72
+ "complexityReason": "评估理由",
73
+ "depth": "deeper"
74
+ },
75
+ "decision": {
76
+ "approach": "design",
77
+ "reasoning": "决策理由"
78
+ },
79
+ "routing": {
80
+ "skills": ["arch", "guardian-fixer"],
81
+ "collaboration": "pair"
82
+ }
83
83
  }`,
84
84
  outputFormat: 'json'
85
85
  },
@@ -87,26 +87,26 @@ export const JUDGMENT_PROMPTS = {
87
87
  architecture: {
88
88
  systemPrompt: '',
89
89
  systemPromptResolver: () => loadRoleLayer('role.architect', '你是一个经验丰富的系统架构师. '),
90
- userPromptTemplate: `【架构设计问题】
91
- {user_input}
92
-
93
- 【上下文】
94
- {context}
95
-
96
- 请进行架构分析,判断是否需要 Harness 介入。
97
-
98
- 分析维度:
99
- 1. 涉及哪些架构维度?(分层、微服务、事件驱动等)
100
- 2. 需要什么级别的架构设计?(概念性、逻辑性、物理性)
101
- 3. 有什么架构风险需要考虑?
102
-
103
- 输出 JSON:
104
- {
105
- "needsHarness": true/false,
106
- "gate": 0-8,
107
- "skills": ["arch", "harness-eng"],
108
- "architectureType": "microservices/layered/event-driven/etc",
109
- "concerns": ["concern1", "concern2"]
90
+ userPromptTemplate: `【架构设计问题】
91
+ {user_input}
92
+
93
+ 【上下文】
94
+ {context}
95
+
96
+ 请进行架构分析,判断是否需要 Harness 介入。
97
+
98
+ 分析维度:
99
+ 1. 涉及哪些架构维度?(分层、微服务、事件驱动等)
100
+ 2. 需要什么级别的架构设计?(概念性、逻辑性、物理性)
101
+ 3. 有什么架构风险需要考虑?
102
+
103
+ 输出 JSON:
104
+ {
105
+ "needsHarness": true/false,
106
+ "gate": 0-8,
107
+ "skills": ["arch", "harness-eng"],
108
+ "architectureType": "microservices/layered/event-driven/etc",
109
+ "concerns": ["concern1", "concern2"]
110
110
  }`,
111
111
  outputFormat: 'json'
112
112
  },
@@ -114,22 +114,22 @@ export const JUDGMENT_PROMPTS = {
114
114
  code: {
115
115
  systemPrompt: '',
116
116
  systemPromptResolver: () => loadRoleLayer('role.implementer', '你是一个高效的代码实现专家. '),
117
- userPromptTemplate: `【代码问题】
118
- {user_input}
119
-
120
- 请判断这个问题:
121
-
122
- 1. 是新功能实现还是修复问题?
123
- 2. 涉及哪些代码层面?(业务逻辑、数据访问、接口设计)
124
- 3. 需要什么测试覆盖?
125
-
126
- 输出 JSON:
127
- {
128
- "needsHarness": true/false,
129
- "gate": 0-8,
130
- "skills": ["harness-dev", "guardian-fixer"],
131
- "codeType": "feature/fix/refactor",
132
- "testCoverage": "unit/integration/e2e"
117
+ userPromptTemplate: `【代码问题】
118
+ {user_input}
119
+
120
+ 请判断这个问题:
121
+
122
+ 1. 是新功能实现还是修复问题?
123
+ 2. 涉及哪些代码层面?(业务逻辑、数据访问、接口设计)
124
+ 3. 需要什么测试覆盖?
125
+
126
+ 输出 JSON:
127
+ {
128
+ "needsHarness": true/false,
129
+ "gate": 0-8,
130
+ "skills": ["harness-dev", "guardian-fixer"],
131
+ "codeType": "feature/fix/refactor",
132
+ "testCoverage": "unit/integration/e2e"
133
133
  }`,
134
134
  outputFormat: 'json'
135
135
  },
@@ -137,23 +137,23 @@ export const JUDGMENT_PROMPTS = {
137
137
  security: {
138
138
  systemPrompt: '',
139
139
  systemPromptResolver: () => loadRoleLayer('role.security', '你是一个严格的安全专家. '),
140
- userPromptTemplate: `【安全问题】
141
- {user_input}
142
-
143
- 请分析安全问题:
144
-
145
- 1. 涉及哪些安全维度?(认证、授权、数据保护、传输安全)
146
- 2. 风险等级?(低/中/高/严重)
147
- 3. 需要什么安全措施?
148
-
149
- 输出 JSON:
150
- {
151
- "needsHarness": true,
152
- "gate": 4,
153
- "skills": ["guardian-fixer", "arch"],
154
- "securityDimensions": ["authentication", "authorization"],
155
- "riskLevel": "high",
156
- "recommendations": ["rec1", "rec2"]
140
+ userPromptTemplate: `【安全问题】
141
+ {user_input}
142
+
143
+ 请分析安全问题:
144
+
145
+ 1. 涉及哪些安全维度?(认证、授权、数据保护、传输安全)
146
+ 2. 风险等级?(低/中/高/严重)
147
+ 3. 需要什么安全措施?
148
+
149
+ 输出 JSON:
150
+ {
151
+ "needsHarness": true,
152
+ "gate": 4,
153
+ "skills": ["guardian-fixer", "arch"],
154
+ "securityDimensions": ["authentication", "authorization"],
155
+ "riskLevel": "high",
156
+ "recommendations": ["rec1", "rec2"]
157
157
  }`,
158
158
  outputFormat: 'json'
159
159
  }
package/dist/llm/pi-ai.js CHANGED
@@ -494,12 +494,12 @@ export class PiAIModel {
494
494
  // 降级: 旧硬编码 (layer registry 不可用时不挂)
495
495
  console.warn('[pi-ai] layer registry 不可用, 降级:', err.message?.slice(0, 100));
496
496
  const envDetails = this.getEnvironmentDetails();
497
- return `You are a friendly AI assistant in a P2P document collaboration network.
498
-
499
- ## User Working Directory
500
- ${context || process.cwd()}
501
-
502
- ## Environment
497
+ return `You are a friendly AI assistant in a P2P document collaboration network.
498
+
499
+ ## User Working Directory
500
+ ${context || process.cwd()}
501
+
502
+ ## Environment
503
503
  ${envDetails}`;
504
504
  }
505
505
  }
@@ -507,49 +507,49 @@ ${envDetails}`;
507
507
  // 保留但内部用 sync fallback; 后续可改成 async
508
508
  buildSystemPrompt(context) {
509
509
  const envDetails = this.getEnvironmentDetails();
510
- return `You are a friendly AI assistant in a P2P document collaboration network.
511
-
512
- ## User Working Directory
513
- ${context || process.cwd()}
514
-
515
- ## Environment
510
+ return `You are a friendly AI assistant in a P2P document collaboration network.
511
+
512
+ ## User Working Directory
513
+ ${context || process.cwd()}
514
+
515
+ ## Environment
516
516
  ${envDetails}`;
517
517
  }
518
518
  getEnvironmentDetails() {
519
- return `
520
- ## Available Workflows
521
- - read - Read documents
522
- - summarize - Summarize documents
523
- - improve - Improve documents
524
- - collaborate - Multi-agent collaboration
525
- - query - Query status
526
- - report - Generate reports
527
-
528
- ## System Capabilities
529
- - Document processing (Markdown, Text, PDF, DOCX)
530
- - Multi-agent collaboration (P2P network)
531
- - Workflow engine (constraint layer)
532
- - Quality assessment and auto-send
533
-
534
- ## Current Time
519
+ return `
520
+ ## Available Workflows
521
+ - read - Read documents
522
+ - summarize - Summarize documents
523
+ - improve - Improve documents
524
+ - collaborate - Multi-agent collaboration
525
+ - query - Query status
526
+ - report - Generate reports
527
+
528
+ ## System Capabilities
529
+ - Document processing (Markdown, Text, PDF, DOCX)
530
+ - Multi-agent collaboration (P2P network)
531
+ - Workflow engine (constraint layer)
532
+ - Quality assessment and auto-send
533
+
534
+ ## Current Time
535
535
  ${new Date().toISOString()}`;
536
536
  }
537
537
  buildSummarizePrompt(text, context) {
538
538
  const maxLength = 8000;
539
539
  const truncatedText = text.length > maxLength ? text.substring(0, maxLength) + '...' : text;
540
- let prompt = `Please generate a concise and accurate summary for the following document:
541
-
542
- ${truncatedText}
543
-
544
- Please output in the following format:
545
- ## Summary
546
- [Write summary here]
547
-
548
- ## Quality Self-Assessment
540
+ let prompt = `Please generate a concise and accurate summary for the following document:
541
+
542
+ ${truncatedText}
543
+
544
+ Please output in the following format:
545
+ ## Summary
546
+ [Write summary here]
547
+
548
+ ## Quality Self-Assessment
549
549
  [Score 1-10, with reasoning]`;
550
550
  if (context) {
551
- prompt = `Context: ${context}
552
-
551
+ prompt = `Context: ${context}
552
+
553
553
  ${prompt}`;
554
554
  }
555
555
  return prompt;
@@ -557,17 +557,17 @@ ${prompt}`;
557
557
  buildImprovePrompt(content, requirements, context) {
558
558
  const maxLength = 8000;
559
559
  const truncatedContent = content.length > maxLength ? content.substring(0, maxLength) + '...' : content;
560
- let prompt = `Please improve the document according to the following requirements:
561
-
562
- Requirements: ${requirements}
563
-
564
- Original Document:
565
- ${truncatedContent}
566
-
560
+ let prompt = `Please improve the document according to the following requirements:
561
+
562
+ Requirements: ${requirements}
563
+
564
+ Original Document:
565
+ ${truncatedContent}
566
+
567
567
  Please output only the improved document without additional explanation.`;
568
568
  if (context) {
569
- prompt = `Context: ${context}
570
-
569
+ prompt = `Context: ${context}
570
+
571
571
  ${prompt}`;
572
572
  }
573
573
  return prompt;