foliko 1.1.6 → 1.1.8

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 (307) hide show
  1. package/.agent/.shared/ui-ux-pro-max/data/charts.csv +26 -0
  2. package/.agent/.shared/ui-ux-pro-max/data/colors.csv +97 -0
  3. package/.agent/.shared/ui-ux-pro-max/data/icons.csv +101 -0
  4. package/.agent/.shared/ui-ux-pro-max/data/landing.csv +31 -0
  5. package/.agent/.shared/ui-ux-pro-max/data/products.csv +97 -0
  6. package/.agent/.shared/ui-ux-pro-max/data/prompts.csv +24 -0
  7. package/.agent/.shared/ui-ux-pro-max/data/react-performance.csv +45 -0
  8. package/.agent/.shared/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
  9. package/.agent/.shared/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
  10. package/.agent/.shared/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
  11. package/.agent/.shared/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
  12. package/.agent/.shared/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
  13. package/.agent/.shared/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
  14. package/.agent/.shared/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
  15. package/.agent/.shared/ui-ux-pro-max/data/stacks/react.csv +54 -0
  16. package/.agent/.shared/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
  17. package/.agent/.shared/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
  18. package/.agent/.shared/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
  19. package/.agent/.shared/ui-ux-pro-max/data/stacks/vue.csv +50 -0
  20. package/.agent/.shared/ui-ux-pro-max/data/styles.csv +59 -0
  21. package/.agent/.shared/ui-ux-pro-max/data/typography.csv +58 -0
  22. package/.agent/.shared/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
  23. package/.agent/.shared/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
  24. package/.agent/.shared/ui-ux-pro-max/data/web-interface.csv +31 -0
  25. package/.agent/.shared/ui-ux-pro-max/scripts/__pycache__/core.cpython-313.pyc +0 -0
  26. package/.agent/.shared/ui-ux-pro-max/scripts/__pycache__/design_system.cpython-313.pyc +0 -0
  27. package/.agent/.shared/ui-ux-pro-max/scripts/core.py +258 -0
  28. package/.agent/.shared/ui-ux-pro-max/scripts/design_system.py +1067 -0
  29. package/.agent/.shared/ui-ux-pro-max/scripts/search.py +106 -0
  30. package/.agent/ARCHITECTURE.md +288 -0
  31. package/.agent/agents/ambient-agent.md +57 -0
  32. package/.agent/agents/debugger.md +55 -0
  33. package/.agent/agents/email-assistant.md +49 -0
  34. package/.agent/agents/file-manager.md +42 -0
  35. package/.agent/agents/python-developer.md +60 -0
  36. package/.agent/agents/scheduler.md +59 -0
  37. package/.agent/agents/web-developer.md +45 -0
  38. package/.agent/data/default.json +412 -3
  39. package/.agent/data/plugins-state.json +177 -174
  40. package/.agent/data/puppeteer-sessions/undefined.json +6 -0
  41. package/.agent/data/weixin-media/2026-04-08/img_1775618677512.jpg +0 -0
  42. package/.agent/data/weixin-media/2026-04-08/img_1775619073340.jpg +0 -0
  43. package/.agent/data/weixin-media/2026-04-08/img_1775619097536.jpg +0 -0
  44. package/.agent/data/weixin-media/2026-04-08/img_1775619209388.jpg +0 -0
  45. package/.agent/mcp_config.json +11 -3
  46. package/.agent/memory/feedback/mnrdvj5i-ca3dkd.md +9 -0
  47. package/.agent/memory/feedback/mnre365e-7s4zax.md +9 -0
  48. package/.agent/memory/feedback/mnre36jn-nkfgmp.md +9 -0
  49. package/.agent/memory/feedback/mnre3805-kjiq6h.md +9 -0
  50. package/.agent/memory/feedback/mnsf66kp-b10rcd.md +9 -0
  51. package/.agent/memory/feedback/mnsi3sz8-p5g2cw.md +9 -0
  52. package/.agent/memory/feedback/mnsibe47-sv2ni1.md +9 -0
  53. package/.agent/memory/feedback/mnsic89w-nn228o.md +9 -0
  54. package/.agent/memory/feedback/mnsj1xe9-x83ba0.md +9 -0
  55. package/.agent/memory/feedback/mnsj21iv-wnwelx.md +9 -0
  56. package/.agent/memory/feedback/mnsj2g4a-cog7a2.md +9 -0
  57. package/.agent/memory/feedback/mnsj4js7-lktjp6.md +9 -0
  58. package/.agent/memory/feedback/mnsj5d4y-uglwvp.md +9 -0
  59. package/.agent/memory/feedback/mnslkuo9-uous66.md +24 -0
  60. package/.agent/memory/feedback/mnsm3vq0-megoil.md +9 -0
  61. package/.agent/memory/feedback/mnsnn5x2-sxcihd.md +9 -0
  62. package/.agent/memory/feedback/mnsnq17s-nabrn9.md +9 -0
  63. package/.agent/memory/feedback/mnsnybet-wz7rn3.md +9 -0
  64. package/.agent/memory/feedback/mnsrw0s7-7s9e30.md +9 -0
  65. package/.agent/memory/feedback/mnu5hpnd-tlm16q.md +9 -0
  66. package/.agent/memory/feedback/mnu60uqe-xuoxp4.md +9 -0
  67. package/.agent/memory/project/mnqx54u5-loqtoe.md +9 -0
  68. package/.agent/memory/project/mnqx84cv-mx6dmd.md +9 -0
  69. package/.agent/memory/project/mnsacuyr-hgtk5n.md +20 -0
  70. package/.agent/memory/project/mnu5hy2x-bjsg7u.md +9 -0
  71. package/.agent/memory/reference/mnre3cww-penbo1.md +9 -0
  72. package/.agent/memory/reference/mns9wn48-luerua.md +14 -0
  73. package/.agent/memory/reference/mns9yz5c-thc2s0.md +16 -0
  74. package/.agent/memory/reference/mnsfy4um-910f1o.md +23 -0
  75. package/.agent/memory/reference/mnsg37dp-lmfj18.md +32 -0
  76. package/.agent/memory/reference/mnsll60q-0j911u.md +36 -0
  77. package/.agent/memory/reference/mnsmlb5y-nej31u.md +16 -0
  78. package/.agent/memory/reference/mnssle72-yrot96.md +9 -0
  79. package/.agent/memory/user/mnsfuon6-l416q1.md +21 -0
  80. package/.agent/memory/user/mnsg9kut-95m7rf.md +20 -0
  81. package/.agent/memory/user/mnu2eo1v-yy6fhe.md +9 -0
  82. package/.agent/memory/user/mnu2etuo-8u8jk8.md +9 -0
  83. package/.agent/plugins/poster-plugin/fonts/NotoColorEmoji-Regular.ttf +0 -0
  84. package/.agent/plugins/poster-plugin/fonts/Symbola_hint.ttf +0 -0
  85. package/.agent/plugins/poster-plugin/package.json +3 -3
  86. package/.agent/plugins/poster-plugin/src/canvas.js +8 -0
  87. package/.agent/plugins/poster-plugin/src/components/barcode.js +5 -2
  88. package/.agent/plugins/poster-plugin/src/components/bubble.js +3 -2
  89. package/.agent/plugins/poster-plugin/src/components/button.js +74 -30
  90. package/.agent/plugins/poster-plugin/src/components/columns.js +97 -83
  91. package/.agent/plugins/poster-plugin/src/components/grid.js +104 -92
  92. package/.agent/plugins/poster-plugin/src/components/highlightText.js +2 -1
  93. package/.agent/plugins/poster-plugin/src/components/imageFrame.js +143 -93
  94. package/.agent/plugins/poster-plugin/src/components/quote.js +85 -13
  95. package/.agent/plugins/poster-plugin/src/components/ribbon.js +13 -9
  96. package/.agent/plugins/poster-plugin/src/components/seal.js +5 -3
  97. package/.agent/plugins/poster-plugin/src/components/star.js +3 -3
  98. package/.agent/plugins/poster-plugin/src/components/table.js +1 -1
  99. package/.agent/plugins/poster-plugin/src/components/watermark.js +4 -2
  100. package/.agent/plugins/poster-plugin/src/composer.js +181 -13
  101. package/.agent/plugins/poster-plugin/src/elements/artText.js +16 -7
  102. package/.agent/plugins/poster-plugin/src/elements/background.js +20 -5
  103. package/.agent/plugins/poster-plugin/src/elements/richText.js +160 -107
  104. package/.agent/plugins/poster-plugin/src/elements/text.js +48 -45
  105. package/.agent/plugins/poster-plugin/src/fonts.js +556 -125
  106. package/.agent/plugins/poster-plugin/src/index.js +46 -1
  107. package/.agent/plugins/poster-plugin/yarn.lock +186 -356
  108. package/.agent/plugins/puppeteer-plugin/README.md +147 -0
  109. package/.agent/plugins/puppeteer-plugin/index.js +1422 -0
  110. package/.agent/plugins/puppeteer-plugin/package.json +9 -0
  111. package/.agent/plugins.json +5 -11
  112. package/.agent/rules/GEMINI.md +273 -0
  113. package/.agent/rules/allow-rule.md +77 -0
  114. package/.agent/rules/log-rule.md +83 -0
  115. package/.agent/rules/security-rule.md +93 -0
  116. package/.agent/scripts/auto_preview.py +148 -0
  117. package/.agent/scripts/checklist.py +217 -0
  118. package/.agent/scripts/session_manager.py +120 -0
  119. package/.agent/scripts/verify_all.py +327 -0
  120. package/.agent/sessions/cli_default.json +128 -5479
  121. package/.agent/skills/api-patterns/SKILL.md +81 -0
  122. package/.agent/skills/api-patterns/api-style.md +42 -0
  123. package/.agent/skills/api-patterns/auth.md +24 -0
  124. package/.agent/skills/api-patterns/documentation.md +26 -0
  125. package/.agent/skills/api-patterns/graphql.md +41 -0
  126. package/.agent/skills/api-patterns/rate-limiting.md +31 -0
  127. package/.agent/skills/api-patterns/response.md +37 -0
  128. package/.agent/skills/api-patterns/rest.md +40 -0
  129. package/.agent/skills/api-patterns/scripts/api_validator.py +211 -0
  130. package/.agent/skills/api-patterns/security-testing.md +122 -0
  131. package/.agent/skills/api-patterns/trpc.md +41 -0
  132. package/.agent/skills/api-patterns/versioning.md +22 -0
  133. package/.agent/skills/app-builder/SKILL.md +75 -0
  134. package/.agent/skills/app-builder/agent-coordination.md +71 -0
  135. package/.agent/skills/app-builder/feature-building.md +53 -0
  136. package/.agent/skills/app-builder/project-detection.md +34 -0
  137. package/.agent/skills/app-builder/scaffolding.md +118 -0
  138. package/.agent/skills/app-builder/tech-stack.md +40 -0
  139. package/.agent/skills/app-builder/templates/SKILL.md +39 -0
  140. package/.agent/skills/app-builder/templates/astro-static/TEMPLATE.md +76 -0
  141. package/.agent/skills/app-builder/templates/chrome-extension/TEMPLATE.md +92 -0
  142. package/.agent/skills/app-builder/templates/cli-tool/TEMPLATE.md +88 -0
  143. package/.agent/skills/app-builder/templates/electron-desktop/TEMPLATE.md +88 -0
  144. package/.agent/skills/app-builder/templates/express-api/TEMPLATE.md +83 -0
  145. package/.agent/skills/app-builder/templates/flutter-app/TEMPLATE.md +90 -0
  146. package/.agent/skills/app-builder/templates/monorepo-turborepo/TEMPLATE.md +90 -0
  147. package/.agent/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +122 -0
  148. package/.agent/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +122 -0
  149. package/.agent/skills/app-builder/templates/nextjs-static/TEMPLATE.md +169 -0
  150. package/.agent/skills/app-builder/templates/nuxt-app/TEMPLATE.md +134 -0
  151. package/.agent/skills/app-builder/templates/python-fastapi/TEMPLATE.md +83 -0
  152. package/.agent/skills/app-builder/templates/react-native-app/TEMPLATE.md +119 -0
  153. package/.agent/skills/architecture/SKILL.md +55 -0
  154. package/.agent/skills/architecture/context-discovery.md +43 -0
  155. package/.agent/skills/architecture/examples.md +94 -0
  156. package/.agent/skills/architecture/pattern-selection.md +68 -0
  157. package/.agent/skills/architecture/patterns-reference.md +50 -0
  158. package/.agent/skills/architecture/trade-off-analysis.md +77 -0
  159. package/.agent/skills/clean-code/SKILL.md +201 -0
  160. package/.agent/skills/doc.md +177 -0
  161. package/.agent/skills/frontend-design/SKILL.md +418 -0
  162. package/.agent/skills/frontend-design/animation-guide.md +331 -0
  163. package/.agent/skills/frontend-design/color-system.md +311 -0
  164. package/.agent/skills/frontend-design/decision-trees.md +418 -0
  165. package/.agent/skills/frontend-design/motion-graphics.md +306 -0
  166. package/.agent/skills/frontend-design/scripts/accessibility_checker.py +183 -0
  167. package/.agent/skills/frontend-design/scripts/ux_audit.py +722 -0
  168. package/.agent/skills/frontend-design/typography-system.md +345 -0
  169. package/.agent/skills/frontend-design/ux-psychology.md +1116 -0
  170. package/.agent/skills/frontend-design/visual-effects.md +383 -0
  171. package/.agent/skills/i18n-localization/SKILL.md +154 -0
  172. package/.agent/skills/i18n-localization/scripts/i18n_checker.py +241 -0
  173. package/.agent/skills/mcp-builder/SKILL.md +176 -0
  174. package/.agent/skills/poster-design/SKILL.md +385 -0
  175. package/.agent/skills/web-design-guidelines/SKILL.md +57 -0
  176. package/.agent/workflows/brainstorm.md +113 -0
  177. package/.agent/workflows/create.md +59 -0
  178. package/.agent/workflows/debug.md +103 -0
  179. package/.agent/workflows/deploy.md +176 -0
  180. package/.agent/workflows/enhance.md +63 -0
  181. package/.agent/workflows/orchestrate.md +237 -0
  182. package/.agent/workflows/plan.md +89 -0
  183. package/.agent/workflows/preview.md +81 -0
  184. package/.agent/workflows/simple-test.md +42 -0
  185. package/.agent/workflows/status.md +86 -0
  186. package/.agent/workflows/structured-orchestrate.md +180 -0
  187. package/.agent/workflows/test.md +144 -0
  188. package/.agent/workflows/ui-ux-pro-max.md +296 -0
  189. package/.env.example +56 -56
  190. package/README.md +441 -441
  191. package/SPEC.md +735 -696
  192. package/output/foliko-poster.png +0 -0
  193. package/outputs/emoji-font-showcase.png +0 -0
  194. package/outputs/foliko-muji-style.png +0 -0
  195. package/package.json +3 -2
  196. package/plugins/ambient-agent/EventWatcher.js +33 -37
  197. package/plugins/ambient-agent/ExplorerLoop.js +338 -36
  198. package/plugins/ambient-agent/GoalManager.js +7 -3
  199. package/plugins/ambient-agent/StateStore.js +30 -1
  200. package/plugins/ambient-agent/constants.js +15 -1
  201. package/plugins/ambient-agent/index.js +26 -33
  202. package/plugins/coordinator-plugin.js +3 -3
  203. package/plugins/default-plugins.js +4 -3
  204. package/plugins/email/index.js +150 -36
  205. package/plugins/email/monitor.js +79 -5
  206. package/plugins/email/reply.js +15 -25
  207. package/plugins/extension-executor-plugin.js +184 -32
  208. package/plugins/feishu-plugin.js +2 -2
  209. package/plugins/file-system-plugin.js +57 -24
  210. package/plugins/memory-plugin.js +176 -64
  211. package/plugins/python-plugin-loader.js +79 -9
  212. package/plugins/scheduler-plugin.js +64 -24
  213. package/plugins/telegram-plugin.js +2 -2
  214. package/plugins/think-plugin.js +7 -2
  215. package/plugins/web-plugin.js +263 -4
  216. package/plugins/weixin-plugin.js +2 -2
  217. package/skills/ambient-agent/SKILL.md +342 -314
  218. package/skills/find-skills/AGENTS.md +162 -162
  219. package/skills/find-skills/SKILL.md +133 -133
  220. package/src/core/agent-chat.js +64 -9
  221. package/src/core/agent.js +216 -69
  222. package/src/core/tool-registry.js +5 -5
  223. package/src/executors/mcp-executor.js +453 -35
  224. package/src/utils/id.js +5 -0
  225. package/system.md +3629 -0
  226. package/.agent/agents/code-assistant.json +0 -17
  227. package/.agent/agents/email-assistant.json +0 -14
  228. package/.agent/agents/file-assistant.json +0 -18
  229. package/.agent/agents/orchestrator-demo.md +0 -53
  230. package/.agent/agents/orchestrator.json +0 -7
  231. package/.agent/agents/system-assistant.json +0 -15
  232. package/.agent/agents/web-assistant.json +0 -12
  233. package/.agent/data/ambient/goals.json +0 -50
  234. package/.agent/data/ambient/memories.json +0 -7
  235. package/.agent/data/scheduler/tasks.json +0 -1
  236. package/.agent/memory/core.md +0 -1
  237. package/.agent/memory/feedback/mnrsiuoc-e1ru74.md +0 -9
  238. package/.agent/memory/feedback/mnrt2mmz-98az6n.md +0 -9
  239. package/.agent/memory/feedback/mnrtqrhm-kxsicz.md +0 -9
  240. package/.agent/memory/feedback/mnrts8vg-i0ngzp.md +0 -15
  241. package/.agent/memory/feedback/mnrtt7jt-c0trb2.md +0 -9
  242. package/.agent/memory/feedback/mnruc2f0-5s52la.md +0 -16
  243. package/.agent/memory/feedback/mnrumbmx-63sa0v.md +0 -9
  244. package/.agent/memory/project/mnn93ogy-ypjn27.md +0 -9
  245. package/.agent/memory/project/mnn98fqy-5nhc1u.md +0 -25
  246. package/.agent/memory/project/mnrp7p5n-8enm2a.md +0 -31
  247. package/.agent/memory/project/mnrp9ifb-yynks0.md +0 -40
  248. package/.agent/memory/project/mnrpb3b8-f617s4.md +0 -25
  249. package/.agent/memory/project/mnrrmqgg-focprv.md +0 -9
  250. package/.agent/memory/project/mnrtykbh-6atsor.md +0 -9
  251. package/.agent/memory/project/mnru9jiu-kgau16.md +0 -35
  252. package/.agent/memory/reference/mnq3oenw-46haj6.md +0 -63
  253. package/.agent/memory/reference/mnq5qxm2-mjoooh.md +0 -116
  254. package/.agent/memory/reference/mnrnvpwo-rcqv9m.md +0 -52
  255. package/.agent/memory/reference/mnrovxvz-zy9xqm.md +0 -25
  256. package/.agent/memory/reference/mnroxabj-1b3930.md +0 -68
  257. package/.agent/memory/reference/mnrpjtlp-mnb9od.md +0 -35
  258. package/.agent/memory/reference/mnrps1x3-6b8xfm.md +0 -28
  259. package/.agent/memory/reference/mnrpt9ov-15er5w.md +0 -22
  260. package/.agent/memory/reference/mnrq82dn-y9tv9e.md +0 -50
  261. package/.agent/memory/reference/mnrqnr5v-v75drf.md +0 -34
  262. package/.agent/memory/reference/mnrrfzys-urudaf.md +0 -31
  263. package/.agent/memory/reference/mnrrocha-t0027n.md +0 -21
  264. package/.agent/memory/reference/mnrukklc-bxndsb.md +0 -35
  265. package/.agent/memory/user/mnm67t9m-x8rekk.md +0 -9
  266. package/.agent/memory/user/mnn5mmqh-w6aktx.md +0 -11
  267. package/.agent/memory/user/mnnbfhhn-dk1bd1.md +0 -22
  268. package/.agent/memory/user/mnrt39t8-8eosy0.md +0 -9
  269. package/.agent/package.json +0 -8
  270. package/.agent/plugins/__pycache__/file_writer.cpython-312.pyc +0 -0
  271. package/.agent/plugins/daytona/README.md +0 -89
  272. package/.agent/plugins/daytona/index.js +0 -377
  273. package/.agent/plugins/daytona/package.json +0 -12
  274. package/.agent/plugins/marknative/README.md +0 -134
  275. package/.agent/plugins/marknative/fonts/SegoeUI Emoji.ttf +0 -0
  276. package/.agent/plugins/marknative/fonts.zip +0 -0
  277. package/.agent/plugins/marknative/index.js +0 -256
  278. package/.agent/plugins/marknative/package.json +0 -12
  279. package/.agent/plugins/poster-plugin/emojis/rocket.png +0 -1
  280. package/.agent/plugins/poster-plugin/test-background.svg +0 -1
  281. package/.agent/plugins/poster-plugin/test-full-poster.svg +0 -2
  282. package/.agent/plugins/poster-plugin/test-image.png +0 -0
  283. package/.agent/plugins/system-info/index.js +0 -387
  284. package/.agent/plugins/system-info/package.json +0 -4
  285. package/.agent/plugins/system-info/test.js +0 -40
  286. package/.agent/python-scripts/test_sample.py +0 -24
  287. package/.agent/skills/agent-browser/SKILL.md +0 -311
  288. package/.agent/skills/agent-browser/TEST_PLAN.md +0 -200
  289. package/.agent/skills/sysinfo/SKILL.md +0 -38
  290. package/.agent/skills/sysinfo/system-info.sh +0 -130
  291. package/.agent/skills/workflow/SKILL.md +0 -324
  292. package/.agent/test-agent.js +0 -35
  293. package/.agent/weixin.json +0 -6
  294. package/.agent/workflows/email-digest.json +0 -50
  295. package/.agent/workflows/file-backup.json +0 -21
  296. package/.agent/workflows/get-ip-notify.json +0 -32
  297. package/.agent/workflows/news-aggregator.json +0 -93
  298. package/.agent/workflows/news-dashboard-v2.json +0 -94
  299. package/.agent/workflows/notification-batch.json +0 -32
  300. package/foliko-cloud-rising.png +0 -0
  301. package/foliko-dawn-of-ai.png +0 -0
  302. package/foliko-mindful-observation.png +0 -0
  303. package/foliko-stellar-dreams.png +0 -0
  304. package/foliko-zen-jing.png +0 -0
  305. package/foliko-zen-kong.png +0 -0
  306. package/foliko-zen-wu.png +0 -0
  307. package/zen_karesansui.png +0 -0
@@ -1,314 +1,342 @@
1
- ---
2
- name: ambient-agent
3
- description: Ambient Agent - 持续后台运行的智能代理,用于主动监控事件和执行操作
4
- allowed-tools: ambient_goals,ambient_status,ambient_think,ambient_remember,ambient_control
5
- ---
6
-
7
- # Ambient Agent
8
-
9
- Ambient Agent 是一个持续后台运行的智能代理,监控事件并主动执行操作。
10
-
11
- ## 核心概念
12
-
13
- ### Goal(目标)
14
-
15
- 目标是对话式 LLM 派发的任务,包含:
16
-
17
- - `title` - 目标标题
18
- - `description` - 目标描述
19
- - `priority` - 优先级 1-10
20
- - `actions` - 要执行的操作列表
21
- - `conditions` - 激活条件(如监听特定事件)
22
- - `state` - 状态:`pending` | `active` | `completed` | `failed`
23
-
24
- ### Action(操作)
25
-
26
- 操作是目标的最小执行单元,有三种类型:
27
-
28
- | 类型 | 说明 | 参数 |
29
- | --------- | -------- | --------------------------------------- |
30
- | `tool` | 调用工具 | `name` 工具名, `args` 参数 |
31
- | `message` | 发送消息 | `content` 消息内容 |
32
- | `think` | 触发思考 | `topic` 主题, `mode` 模式, `depth` 深度 |
33
-
34
- ### Event(事件)
35
-
36
- 目标可以监听框架事件:
37
-
38
- - `tool:result` - 工具执行结果
39
- - `scheduler:reminder` - 定时提醒
40
- - `agent:message` - 代理消息
41
- - `email:received` - 收到邮件
42
- - `webhook:received` - Webhook 接收
43
-
44
- ## 工具
45
-
46
- ### ambient_goals - 目标管理
47
-
48
- ```javascript
49
- // 列出所有目标
50
- await ambient_goals({ action: 'list' })
51
-
52
- // 创建目标
53
- await ambient_goals({
54
- action: 'create',
55
- title: '监控邮件',
56
- description: '定期检查新邮件',
57
- priority: 8,
58
- actions: [
59
- { id: 'check-email', type: 'tool', name: 'email_list', args: { box: 'INBOX' } }
60
- ],
61
- conditions: {
62
- events: ['email:received']
63
- }
64
- })
65
-
66
- // 更新目标
67
- await ambient_goals({
68
- action: 'update',
69
- goalId: 'xxx-xxx',
70
- title: '新标题',
71
- actions: [...] // 新操作列表
72
- })
73
-
74
- // 删除目标
75
- await ambient_goals({ action: 'delete', goalId: 'xxx-xxx' })
76
-
77
- // 激活目标
78
- await ambient_goals({ action: 'activate', goalId: 'xxx-xxx' })
79
- ```
80
-
81
- ### ambient_status - 获取状态
82
-
83
- ```javascript
84
- await ambient_status({});
85
- // 返回: { running, tickCount, activeGoals, pendingGoals, recentActivities }
86
- ```
87
-
88
- ### ambient_think - 触发思考
89
-
90
- ```javascript
91
- await ambient_think({
92
- goalId: 'xxx-xxx', // 可选,关联目标
93
- mode: 'reflect', // reflect | brainstorm | plan | analyze
94
- topic: '反思主题', // 可选
95
- depth: 2, // 可选,1-5
96
- });
97
- ```
98
-
99
- ### ambient_remember - 记忆管理
100
-
101
- ```javascript
102
- // 存储记忆
103
- await ambient_remember({
104
- action: 'store',
105
- key: 'user-preference',
106
- content: '用户喜欢在早上收到摘要',
107
- });
108
-
109
- // 检索最近记忆
110
- await ambient_remember({
111
- action: 'retrieve',
112
- limit: 10,
113
- });
114
-
115
- // 搜索记忆
116
- await ambient_remember({
117
- action: 'search',
118
- query: '邮件',
119
- });
120
- ```
121
-
122
- ### ambient_control - 控制循环
123
-
124
- ```javascript
125
- // 暂停
126
- await ambient_control({ action: 'pause' });
127
-
128
- // 恢复
129
- await ambient_control({ action: 'resume' });
130
-
131
- // 调整参数
132
- await ambient_control({
133
- action: 'adjust',
134
- tickInterval: 10000, // 新 tick 间隔(毫秒)
135
- cooldownPeriod: 5000, // 新冷却时间(毫秒)
136
- });
137
- ```
138
-
139
- ## action 与 step 的关系
140
-
141
- Ambient Agent 的 action 与 Workflow Engine 的 step 共用 `StepExecutor` 执行:
142
-
143
- ```
144
- action.type → step.type
145
- ───────────────────────
146
- tool → tool
147
- message → message
148
- think → think
149
- ```
150
-
151
- 这意味着:
152
-
153
- - 变量引用语法一致:`${variableName}`(Ambient Agent 使用 `${}`)
154
- - sessionId 传递机制一致
155
- - 错误处理方式一致
156
-
157
- ## action 执行上下文
158
-
159
- 当 action 执行时,可用的上下文:
160
-
161
- ```javascript
162
- // context.variables 中可用
163
- context.variables._event; // 触发的事件数据(如果有)
164
- context.variables._action; // 当前执行的 action 对象
165
- context.variables.loopIndex; // 循环索引(如果被 loop 执行)
166
-
167
- // context.input 中可用
168
- context.input; // 工作流/目标输入参数
169
- ```
170
-
171
- ## 变量引用语法
172
-
173
- Ambient Agent 使用 `${}` 语法在 action 参数中引用变量:
174
-
175
- ### 1. 事件数据引用 `${event.xxx}`
176
-
177
- 当 goal 监听事件时,事件数据可通过 `${event.xxx}` 直接引用:
178
-
179
- ```javascript
180
- {
181
- id: 'auto-reply',
182
- type: 'tool',
183
- name: 'email_auto_reply',
184
- args: {
185
- to: '${event.from}',
186
- subject: '${event.subject}',
187
- body: '${event.text}',
188
- from: ''
189
- }
190
- }
191
- ```
192
-
193
- **注意**:`email:received` 事件的数据结构:
194
-
195
- - `event.from` - 发件人地址
196
- - `event.subject` - 邮件主题
197
- - `event.text` - 邮件正文(纯文本)
198
- - `event.body` - 邮件正文(可能含 HTML)
199
- - `event.messageId` - 邮件消息 ID
200
-
201
- ### 2. 多步骤引用 `${actionId.output.field}`
202
-
203
- 当有多个顺序执行的 action 时,后续 action 可以引用前一个 action 的输出:
204
-
205
- ```javascript
206
- actions: [
207
- {
208
- id: 'read-email',
209
- type: 'tool',
210
- name: 'email_read',
211
- args: { limit: 1, unreadOnly: true },
212
- },
213
- {
214
- id: 'process',
215
- type: 'tool',
216
- name: 'some_processor',
217
- args: {
218
- // 引用 read-email 输出的 emails 数组的第一个元素的 from 字段
219
- sender: '${read-email.output.emails[0].from}',
220
- },
221
- },
222
- ];
223
- ```
224
-
225
- ### 3. 变量解析规则
226
-
227
- `${}` 语法支持嵌套属性访问:
228
-
229
- - `${event.from}` - 直接字段
230
- - `${actionId.output.field}` - 嵌套字段
231
- - `${event.data.xxx}` - data 对象内的字段(兼容性别名)
232
-
233
- ## 创建目标的最佳实践
234
-
235
- 1. **明确目标标题** - 让用户清楚知道目标意图
236
- 2. **设置合适优先级** - 高优先级目标会被优先处理
237
- 3. **操作要原子化** - 每个 action 只做一件事
238
- 4. **设置冷却时间** - 避免同一目标过度频繁执行
239
- 5. **检查循环** - 同一 action 连续失败 3 次会判定为循环
240
-
241
- ## 示例:创建邮件自动回复目标
242
-
243
- **重要**:`email:received` 事件的数据结构:
244
-
245
- - `event.from` - 发件人地址
246
- - `event.subject` - 邮件主题
247
- - `event.text` - 邮件正文(纯文本)
248
- - `event.messageId` - 邮件消息 ID
249
-
250
- 使用 `${}` 语法从事件中提取参数:
251
-
252
- ```javascript
253
- await ambient_goals({
254
- action: 'create',
255
- title: '邮件自动回复',
256
- description: '收到邮件后自动回复发件人',
257
- priority: 8,
258
- actions: [
259
- {
260
- id: 'auto-reply',
261
- type: 'tool',
262
- name: 'email_auto_reply',
263
- args: {
264
- to: '${event.from}',
265
- subject: '${event.subject}',
266
- body: '${event.text}',
267
- from: '',
268
- },
269
- },
270
- {
271
- id: 'mark-read',
272
- type: 'tool',
273
- name: 'email_mark_read',
274
- args: {
275
- messageId: '${event.messageId}',
276
- },
277
- },
278
- ],
279
- conditions: {
280
- events: ['email:received'],
281
- },
282
- });
283
- ```
284
-
285
- **错误示例**(缺少参数):
286
-
287
- ```javascript
288
- // ❌ 错误 - 没有传递必需参数
289
- { type: 'tool', name: 'email_auto_reply', args: {} }
290
-
291
- // ✅ 正确 - 从事件中提取参数
292
- { type: 'tool', name: 'email_auto_reply', args: {
293
- to: '${event.from}',
294
- subject: '${event.subject}',
295
- body: '${event.text}',
296
- from: ''
297
- }
298
- }
299
- ```
300
-
301
- **注意**:`email_auto_reply` 需要 `to`、`subject`、`body` 三个必需参数,必须从 `${event.xxx}` 提取。由于 `email:received` 事件已携带邮件数据,不需要额外的 `email_read` 步骤来读取邮件。
302
-
303
- ## 生命周期
304
-
305
- ```
306
- Goal 创建 → [条件满足] → ACTIVE → 执行 actions → COMPLETED/FAILED
307
- ↑ ↓
308
- └────── 重新激活 ← ─────────────┘
309
- ```
310
-
311
- - **pending** - 待激活,满足条件后自动变为 active
312
- - **active** - 执行中,循环处理 actions
313
- - **completed** - 所有 actions 执行完毕
314
- - **failed** - 达到最大尝试次数或检测到循环
1
+ ---
2
+ name: ambient-agent
3
+ description: Ambient Agent - 持续后台运行的智能代理,用于主动监控事件和执行操作
4
+ allowed-tools: ambient_goals,ambient_status,ambient_think,ambient_remember,ambient_control
5
+ ---
6
+
7
+ # Ambient Agent
8
+
9
+ Ambient Agent 是一个持续后台运行的智能代理,监控事件并主动执行操作。
10
+
11
+ ## 核心概念
12
+
13
+ ### Goal(目标)
14
+
15
+ 目标是对话式 LLM 派发的任务,包含:
16
+
17
+ - `title` - 目标标题
18
+ - `description` - 目标描述
19
+ - `priority` - 优先级 1-10
20
+ - `actions` - 要执行的操作列表
21
+ - `conditions` - 激活条件(如监听特定事件)
22
+ - `persistent` - 是否持久化(默认 true,false 为一次性任务)
23
+ - `state` - 状态:`pending` | `active` | `completed` | `failed`
24
+
25
+ ### Action(操作)
26
+
27
+ 操作是目标的最小执行单元,有三种类型:
28
+
29
+ | 类型 | 说明 | 参数 |
30
+ | --------- | -------- | --------------------------------------- |
31
+ | `tool` | 调用工具 | `name` 工具名, `args` 参数 |
32
+ | `message` | 发送消息 | `content` 消息内容 |
33
+ | `think` | 触发思考 | `topic` 主题, `mode` 模式, `depth` 深度 |
34
+
35
+ 每个 action 有 `completed` 标记,执行完成后标记为 true。
36
+
37
+ ### Event(事件)
38
+
39
+ 目标可以监听以下框架事件:
40
+
41
+ | 事件 | 触发时机 | 数据结构 |
42
+ | -------------------------- | ----------------- | ------------------------------------------------------------------------------- | ---- |
43
+ | `email:received` | 收到新邮件 | `{uid, messageId, from, to, subject, text, body, html, attachments, timestamp}` |
44
+ | `webhook:received` | 收到 Webhook 请求 | `{path, method, query, body, timestamp}` |
45
+ | `webhook:processed` | Webhook 处理完成 | `{path, method, query, body, response, timestamp}` |
46
+ | `scheduler:task_created` | 定时任务创建 | `{taskId, taskName, type, scheduleTime, cronExpression}` |
47
+ | `scheduler:reminder` | 定时提醒触发 | `{taskId, message, time}` |
48
+ | `scheduler:task_completed` | 定时任务完成 | `{taskId, result}` |
49
+ | `scheduler:task_failed` | 定时任务失败 | `{taskId, error}` |
50
+ | `think:thought_completed` | 思考完成 | `{mode, topic, thought, depth}` |
51
+ | `tool:result` | 工具执行成功 | `{name, args, result, source}` (source: tool | mcp) |
52
+ | `tool:error` | 工具执行错误 | `{name, args, error, source}` (source: tool | mcp) |
53
+ | `tool:call` | 工具被调用 | `{name, args, source}` (source: tool | mcp) |
54
+ | `agent:message` | Agent 发送消息 | `{content, sessionId, userMessage}` |
55
+ | `worker:completed` | Worker 完成 | `{workerId, name, result, notification}` |
56
+ | `worker:error` | Worker 错误 | `{workerId, name, error, notification}` |
57
+ | `subagent:chat:end` | 子 Agent 聊天结束 | `{parentAgent, subAgent, subAgentName, result}` |
58
+
59
+ ## 工具
60
+
61
+ ### ambient_goals - 目标管理
62
+
63
+ ```javascript
64
+ // 列出所有目标
65
+ await ambient_goals({ action: 'list' })
66
+
67
+ // 创建持久化目标(默认)- 事件驱动,执行完等待下一事件
68
+ await ambient_goals({
69
+ action: 'create',
70
+ title: '监控邮件',
71
+ description: '收到邮件后自动回复',
72
+ priority: 8,
73
+ persistent: true, // 默认 true,持久化目标
74
+ actions: [
75
+ { id: 'auto-reply', type: 'tool', name: 'email_auto_reply', args: {...} }
76
+ ],
77
+ conditions: {
78
+ events: ['email:received']
79
+ }
80
+ })
81
+
82
+ // 创建一次性目标 - 执行完自动完成,不等待新事件
83
+ await ambient_goals({
84
+ action: 'create',
85
+ title: '处理定时提醒',
86
+ description: '提醒到达后执行一次操作',
87
+ priority: 8,
88
+ persistent: false, // 一次性任务
89
+ actions: [
90
+ { id: 'process', type: 'tool', name: 'some_tool', args: {...} }
91
+ ],
92
+ conditions: {
93
+ events: ['scheduler:reminder']
94
+ }
95
+ })
96
+
97
+ // 更新目标
98
+ await ambient_goals({
99
+ action: 'update',
100
+ goalId: 'xxx-xxx',
101
+ title: '新标题',
102
+ persistent: false, // 改为一次性
103
+ actions: [...] // 新操作列表
104
+ })
105
+
106
+ // 删除目标
107
+ await ambient_goals({ action: 'delete', goalId: 'xxx-xxx' })
108
+
109
+ // 激活目标
110
+ await ambient_goals({ action: 'activate', goalId: 'xxx-xxx' })
111
+ ```
112
+
113
+ ### ambient_status - 获取状态
114
+
115
+ ```javascript
116
+ await ambient_status({});
117
+ // 返回: { running, tickCount, activeGoals, pendingGoals, recentActivities }
118
+ ```
119
+
120
+ ### ambient_think - 触发思考
121
+
122
+ ```javascript
123
+ await ambient_think({
124
+ goalId: 'xxx-xxx', // 可选,关联目标
125
+ mode: 'reflect', // reflect | brainstorm | plan | analyze
126
+ topic: '反思主题', // 可选
127
+ depth: 2, // 可选,1-5
128
+ });
129
+ ```
130
+
131
+ ### ambient_remember - 记忆管理
132
+
133
+ ```javascript
134
+ // 存储记忆
135
+ await ambient_remember({
136
+ action: 'store',
137
+ key: 'user-preference',
138
+ content: '用户喜欢在早上收到摘要',
139
+ });
140
+
141
+ // 检索最近记忆
142
+ await ambient_remember({
143
+ action: 'retrieve',
144
+ limit: 10,
145
+ });
146
+
147
+ // 搜索记忆
148
+ await ambient_remember({
149
+ action: 'search',
150
+ query: '邮件',
151
+ });
152
+ ```
153
+
154
+ ### ambient_control - 控制循环
155
+
156
+ ```javascript
157
+ // 暂停
158
+ await ambient_control({ action: 'pause' });
159
+
160
+ // 恢复
161
+ await ambient_control({ action: 'resume' });
162
+
163
+ // 调整参数
164
+ await ambient_control({
165
+ action: 'adjust',
166
+ tickInterval: 10000, // 新 tick 间隔(毫秒)
167
+ cooldownPeriod: 5000, // 新冷却时间(毫秒)
168
+ });
169
+ ```
170
+
171
+ ## action 与 step 的关系
172
+
173
+ Ambient Agent action Workflow Engine 的 step 共用 `StepExecutor` 执行:
174
+
175
+ ```
176
+ action.type → step.type
177
+ ───────────────────────
178
+ tool → tool
179
+ message → message
180
+ think → think
181
+ ```
182
+
183
+ 这意味着:
184
+
185
+ - 变量引用语法一致:`${variableName}`(Ambient Agent 使用 `${}`)
186
+ - sessionId 传递机制一致
187
+ - 错误处理方式一致
188
+
189
+ ## action 执行上下文
190
+
191
+ 当 action 执行时,可用的上下文:
192
+
193
+ ```javascript
194
+ // context.variables 中可用
195
+ context.variables._event; // 触发的事件数据(如果有)
196
+ context.variables._action; // 当前执行的 action 对象
197
+ context.variables.loopIndex; // 循环索引(如果被 loop 执行)
198
+
199
+ // context.input 中可用
200
+ context.input; // 工作流/目标输入参数
201
+ ```
202
+
203
+ ## 变量引用语法
204
+
205
+ Ambient Agent 使用 `${}` 语法在 action 参数中引用变量:
206
+
207
+ ### 1. 事件数据引用 `${event.xxx}`
208
+
209
+ goal 监听事件时,事件数据可通过 `${event.xxx}` 直接引用:
210
+
211
+ ```javascript
212
+ {
213
+ id: 'auto-reply',
214
+ type: 'tool',
215
+ name: 'email_auto_reply',
216
+ args: {
217
+ to: '${event.from}',
218
+ subject: '${event.subject}',
219
+ body: '${event.text}',
220
+ from: ''
221
+ }
222
+ }
223
+ ```
224
+
225
+ **注意**:`email:received` 事件的数据结构:
226
+
227
+ - `event.from` - 发件人地址
228
+ - `event.subject` - 邮件主题
229
+ - `event.text` - 邮件正文(纯文本)
230
+ - `event.body` - 邮件正文(可能含 HTML)
231
+ - `event.messageId` - 邮件消息 ID
232
+
233
+ ### 2. 多步骤引用 `${actionId.output.field}`
234
+
235
+ 当有多个顺序执行的 action 时,后续 action 可以引用前一个 action 的输出:
236
+
237
+ ```javascript
238
+ actions: [
239
+ {
240
+ id: 'read-email',
241
+ type: 'tool',
242
+ name: 'email_read',
243
+ args: { limit: 1, unreadOnly: true },
244
+ },
245
+ {
246
+ id: 'process',
247
+ type: 'tool',
248
+ name: 'some_processor',
249
+ args: {
250
+ // 引用 read-email 输出的 emails 数组的第一个元素的 from 字段
251
+ sender: '${read-email.output.emails[0].from}',
252
+ },
253
+ },
254
+ ];
255
+ ```
256
+
257
+ ### 3. 变量解析规则
258
+
259
+ `${}` 语法支持嵌套属性访问:
260
+
261
+ - `${event.from}` - 直接字段
262
+ - `${actionId.output.field}` - 嵌套字段
263
+ - `${event.data.xxx}` - data 对象内的字段(兼容性别名)
264
+
265
+ ## 创建目标的最佳实践
266
+
267
+ 1. **明确目标标题** - 让用户清楚知道目标意图
268
+ 2. **设置合适优先级** - 高优先级目标会被优先处理
269
+ 3. **操作要原子化** - 每个 action 只做一件事
270
+ 4. **选择合适的持久化模式** - 需要持续监控用 `persistent: true`,一次性任务用 `persistent: false`
271
+ 5. **检查循环** - 同一 action 连续失败 3 次会判定为循环
272
+
273
+ ## 示例:创建邮件自动回复目标
274
+
275
+ `email:received` 事件的数据结构:
276
+
277
+ - `event.from` - 发件人地址
278
+ - `event.subject` - 邮件主题
279
+ - `event.text` - 邮件正文(纯文本)
280
+ - `event.body` - 邮件正文(与 text 相同)
281
+ - `event.messageId` - 邮件消息 ID
282
+ - `event.uid` - 邮件 UID(数字)
283
+
284
+ ```javascript
285
+ await ambient_goals({
286
+ action: 'create',
287
+ title: '邮件自动回复',
288
+ description: '收到邮件后自动回复发件人',
289
+ priority: 8,
290
+ persistent: false, // 一次性任务,回复完成后不再等待新邮件
291
+ actions: [
292
+ {
293
+ id: 'auto-reply',
294
+ type: 'tool',
295
+ name: 'email_auto_reply',
296
+ args: {
297
+ to: '${event.from}',
298
+ subject: '${event.subject}',
299
+ body: '${event.text}',
300
+ },
301
+ },
302
+ ],
303
+ conditions: {
304
+ events: ['email:received'],
305
+ },
306
+ });
307
+ ```
308
+
309
+ **错误示例**(缺少参数):
310
+
311
+ ```javascript
312
+ // 错误 - 没有传递必需参数
313
+ { type: 'tool', name: 'email_auto_reply', args: {} }
314
+
315
+ // ✅ 正确 - 从事件中提取参数
316
+ { type: 'tool', name: 'email_auto_reply', args: {
317
+ to: '${event.from}',
318
+ subject: '${event.subject}',
319
+ body: '${event.text}',
320
+ }
321
+ }
322
+ ```
323
+
324
+ **注意**:`email_auto_reply` 需要 `to`、`subject`、`body` 三个必需参数,必须从 `${event.xxx}` 提取。由于 `email:received` 事件已携带邮件数据,不需要额外的 `email_read` 步骤来读取邮件。
325
+
326
+ ## 生命周期
327
+
328
+ ```
329
+ Goal 创建 → [条件满足] → ACTIVE → 执行 actions → COMPLETED/FAILED
330
+ ↑ ↓
331
+ └────── 重新激活 ← ─────────────┘(仅 persistent=true)
332
+ ```
333
+
334
+ - **pending** - 待激活,满足条件后自动变为 active
335
+ - **active** - 执行中,循环处理 actions
336
+ - **completed** - 所有 actions 执行完毕(一次性任务执行完后直接完成)
337
+ - **failed** - 达到最大尝试次数或检测到循环
338
+
339
+ **persistent 行为**:
340
+
341
+ - `persistent: true`(默认)- 事件驱动目标,actions 执行完后等待下一事件再次执行
342
+ - `persistent: false` - 一次性目标,所有 actions 执行完后直接完成,不等待新事件