foliko 1.1.0 → 1.1.2

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 (214) 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 +173 -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_updated.json +12 -0
  46. package/.agent/plugins/poster-plugin/fonts/NotoColorEmoji-Regular.ttf +0 -0
  47. package/.agent/plugins/poster-plugin/package.json +2 -1
  48. package/.agent/plugins/poster-plugin/src/canvas.js +70 -7
  49. package/.agent/plugins/poster-plugin/src/components/barcode.js +120 -0
  50. package/.agent/plugins/poster-plugin/src/components/bubble.js +153 -0
  51. package/.agent/plugins/poster-plugin/src/components/button.js +124 -0
  52. package/.agent/plugins/poster-plugin/src/components/cta.js +26 -24
  53. package/.agent/plugins/poster-plugin/src/components/featureGrid.js +22 -17
  54. package/.agent/plugins/poster-plugin/src/components/frame.js +230 -0
  55. package/.agent/plugins/poster-plugin/src/components/highlightText.js +144 -0
  56. package/.agent/plugins/poster-plugin/src/components/icon.js +94 -0
  57. package/.agent/plugins/poster-plugin/src/components/index.js +19 -0
  58. package/.agent/plugins/poster-plugin/src/components/listItem.js +6 -5
  59. package/.agent/plugins/poster-plugin/src/components/qrcode.js +74 -0
  60. package/.agent/plugins/poster-plugin/src/components/ribbon.js +193 -0
  61. package/.agent/plugins/poster-plugin/src/components/seal.js +146 -0
  62. package/.agent/plugins/poster-plugin/src/components/table.js +17 -9
  63. package/.agent/plugins/poster-plugin/src/components/tagCloud.js +24 -17
  64. package/.agent/plugins/poster-plugin/src/components/timeline.js +24 -12
  65. package/.agent/plugins/poster-plugin/src/composer.js +392 -150
  66. package/.agent/plugins/poster-plugin/src/elements/background.js +36 -4
  67. package/.agent/plugins/poster-plugin/src/elements/image.js +4 -47
  68. package/.agent/plugins/poster-plugin/src/elements/index.js +2 -0
  69. package/.agent/plugins/poster-plugin/src/elements/polygon.js +37 -6
  70. package/.agent/plugins/poster-plugin/src/elements/richText.js +230 -0
  71. package/.agent/plugins/poster-plugin/src/elements/svg.js +35 -19
  72. package/.agent/plugins/poster-plugin/src/elements/text.js +71 -2
  73. package/.agent/plugins/poster-plugin/src/fonts.js +123 -8
  74. package/.agent/plugins/poster-plugin/src/index.js +445 -23
  75. package/.agent/plugins/poster-plugin/src/utils/imageLoader.js +84 -0
  76. package/.agent/plugins/poster-plugin/test-background.svg +1 -0
  77. package/.agent/plugins/poster-plugin/test-full-poster.svg +2 -0
  78. package/.agent/plugins/poster-plugin/test-image.png +0 -0
  79. package/.agent/plugins/puppeteer-plugin/README.md +147 -0
  80. package/.agent/plugins/puppeteer-plugin/index.js +1418 -0
  81. package/.agent/plugins/puppeteer-plugin/package.json +9 -0
  82. package/.agent/plugins.json +5 -11
  83. package/.agent/rules/GEMINI.md +273 -0
  84. package/.agent/rules/allow-rule.md +77 -0
  85. package/.agent/rules/log-rule.md +83 -0
  86. package/.agent/rules/security-rule.md +93 -0
  87. package/.agent/scripts/auto_preview.py +148 -0
  88. package/.agent/scripts/checklist.py +217 -0
  89. package/.agent/scripts/session_manager.py +120 -0
  90. package/.agent/scripts/verify_all.py +327 -0
  91. package/.agent/sessions/cli_default.json +678 -23580
  92. package/.agent/sessions/weixin_o9cq80zgZqKPA2-s59PN43GdDy1w@im.wechat.json +11097 -0
  93. package/.agent/skills/api-patterns/SKILL.md +81 -0
  94. package/.agent/skills/api-patterns/api-style.md +42 -0
  95. package/.agent/skills/api-patterns/auth.md +24 -0
  96. package/.agent/skills/api-patterns/documentation.md +26 -0
  97. package/.agent/skills/api-patterns/graphql.md +41 -0
  98. package/.agent/skills/api-patterns/rate-limiting.md +31 -0
  99. package/.agent/skills/api-patterns/response.md +37 -0
  100. package/.agent/skills/api-patterns/rest.md +40 -0
  101. package/.agent/skills/api-patterns/scripts/api_validator.py +211 -0
  102. package/.agent/skills/api-patterns/security-testing.md +122 -0
  103. package/.agent/skills/api-patterns/trpc.md +41 -0
  104. package/.agent/skills/api-patterns/versioning.md +22 -0
  105. package/.agent/skills/app-builder/SKILL.md +75 -0
  106. package/.agent/skills/app-builder/agent-coordination.md +71 -0
  107. package/.agent/skills/app-builder/feature-building.md +53 -0
  108. package/.agent/skills/app-builder/project-detection.md +34 -0
  109. package/.agent/skills/app-builder/scaffolding.md +118 -0
  110. package/.agent/skills/app-builder/tech-stack.md +40 -0
  111. package/.agent/skills/app-builder/templates/SKILL.md +39 -0
  112. package/.agent/skills/app-builder/templates/astro-static/TEMPLATE.md +76 -0
  113. package/.agent/skills/app-builder/templates/chrome-extension/TEMPLATE.md +92 -0
  114. package/.agent/skills/app-builder/templates/cli-tool/TEMPLATE.md +88 -0
  115. package/.agent/skills/app-builder/templates/electron-desktop/TEMPLATE.md +88 -0
  116. package/.agent/skills/app-builder/templates/express-api/TEMPLATE.md +83 -0
  117. package/.agent/skills/app-builder/templates/flutter-app/TEMPLATE.md +90 -0
  118. package/.agent/skills/app-builder/templates/monorepo-turborepo/TEMPLATE.md +90 -0
  119. package/.agent/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +122 -0
  120. package/.agent/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +122 -0
  121. package/.agent/skills/app-builder/templates/nextjs-static/TEMPLATE.md +169 -0
  122. package/.agent/skills/app-builder/templates/nuxt-app/TEMPLATE.md +134 -0
  123. package/.agent/skills/app-builder/templates/python-fastapi/TEMPLATE.md +83 -0
  124. package/.agent/skills/app-builder/templates/react-native-app/TEMPLATE.md +119 -0
  125. package/.agent/skills/architecture/SKILL.md +55 -0
  126. package/.agent/skills/architecture/context-discovery.md +43 -0
  127. package/.agent/skills/architecture/examples.md +94 -0
  128. package/.agent/skills/architecture/pattern-selection.md +68 -0
  129. package/.agent/skills/architecture/patterns-reference.md +50 -0
  130. package/.agent/skills/architecture/trade-off-analysis.md +77 -0
  131. package/.agent/skills/clean-code/SKILL.md +201 -0
  132. package/.agent/skills/doc.md +177 -0
  133. package/.agent/skills/frontend-design/SKILL.md +418 -0
  134. package/.agent/skills/frontend-design/animation-guide.md +331 -0
  135. package/.agent/skills/frontend-design/color-system.md +311 -0
  136. package/.agent/skills/frontend-design/decision-trees.md +418 -0
  137. package/.agent/skills/frontend-design/motion-graphics.md +306 -0
  138. package/.agent/skills/frontend-design/scripts/accessibility_checker.py +183 -0
  139. package/.agent/skills/frontend-design/scripts/ux_audit.py +722 -0
  140. package/.agent/skills/frontend-design/typography-system.md +345 -0
  141. package/.agent/skills/frontend-design/ux-psychology.md +1116 -0
  142. package/.agent/skills/frontend-design/visual-effects.md +383 -0
  143. package/.agent/skills/i18n-localization/SKILL.md +154 -0
  144. package/.agent/skills/i18n-localization/scripts/i18n_checker.py +241 -0
  145. package/.agent/skills/mcp-builder/SKILL.md +176 -0
  146. package/.agent/skills/web-design-guidelines/SKILL.md +57 -0
  147. package/.agent/workflows/brainstorm.md +113 -0
  148. package/.agent/workflows/create.md +59 -0
  149. package/.agent/workflows/debug.md +103 -0
  150. package/.agent/workflows/deploy.md +176 -0
  151. package/.agent/workflows/enhance.md +63 -0
  152. package/.agent/workflows/orchestrate.md +237 -0
  153. package/.agent/workflows/plan.md +89 -0
  154. package/.agent/workflows/preview.md +81 -0
  155. package/.agent/workflows/simple-test.md +42 -0
  156. package/.agent/workflows/status.md +86 -0
  157. package/.agent/workflows/structured-orchestrate.md +180 -0
  158. package/.agent/workflows/test.md +144 -0
  159. package/.agent/workflows/ui-ux-pro-max.md +296 -0
  160. package/.claude/settings.local.json +21 -1
  161. package/.env.example +56 -56
  162. package/README.md +441 -441
  163. package/cli/src/commands/chat.js +2 -1
  164. package/output/international-news-daily.png +0 -0
  165. package/package.json +2 -1
  166. package/plugins/extension-executor-plugin.js +91 -12
  167. package/plugins/file-system-plugin.js +4 -19
  168. package/plugins/subagent-plugin.js +37 -14
  169. package/plugins/weixin-plugin.js +168 -40
  170. package/poster-test-2.png +0 -0
  171. package/skills/find-skills/AGENTS.md +162 -162
  172. package/skills/find-skills/SKILL.md +133 -133
  173. package/skills/poster-guide/SKILL.md +1435 -627
  174. package/src/core/agent-chat.js +223 -11
  175. package/src/core/agent.js +6 -3
  176. package/.agent/agents/code-assistant.json +0 -14
  177. package/.agent/agents/email-assistant.json +0 -14
  178. package/.agent/agents/file-assistant.json +0 -15
  179. package/.agent/agents/system-assistant.json +0 -15
  180. package/.agent/agents/web-assistant.json +0 -12
  181. package/.agent/data/ambient/goals.json +0 -50
  182. package/.agent/data/ambient/memories.json +0 -7
  183. package/.agent/data/scheduler/tasks.json +0 -1
  184. package/.agent/memory/core.md +0 -1
  185. package/.agent/memory/project/mnn93ogy-ypjn27.md +0 -9
  186. package/.agent/memory/project/mnn98fqy-5nhc1u.md +0 -25
  187. package/.agent/memory/user/mnm67t9m-x8rekk.md +0 -9
  188. package/.agent/memory/user/mnn5mmqh-w6aktx.md +0 -11
  189. package/.agent/memory/user/mnnbfhhn-dk1bd1.md +0 -22
  190. package/.agent/package.json +0 -8
  191. package/.agent/plugins/__pycache__/file_writer.cpython-312.pyc +0 -0
  192. package/.agent/plugins/daytona/README.md +0 -89
  193. package/.agent/plugins/daytona/index.js +0 -377
  194. package/.agent/plugins/daytona/package.json +0 -12
  195. package/.agent/plugins/marknative/README.md +0 -134
  196. package/.agent/plugins/marknative/index.js +0 -228
  197. package/.agent/plugins/marknative/package.json +0 -12
  198. package/.agent/plugins/marknative/update-readme.js +0 -134
  199. package/.agent/plugins/system-info/index.js +0 -387
  200. package/.agent/plugins/system-info/package.json +0 -4
  201. package/.agent/plugins/system-info/test.js +0 -40
  202. package/.agent/python-scripts/test_sample.py +0 -24
  203. package/.agent/skills/agent-browser/SKILL.md +0 -311
  204. package/.agent/skills/agent-browser/TEST_PLAN.md +0 -200
  205. package/.agent/skills/sysinfo/SKILL.md +0 -38
  206. package/.agent/skills/sysinfo/system-info.sh +0 -130
  207. package/.agent/skills/workflow/SKILL.md +0 -324
  208. package/.agent/weixin.json +0 -6
  209. package/.agent/workflows/email-digest.json +0 -50
  210. package/.agent/workflows/file-backup.json +0 -21
  211. package/.agent/workflows/get-ip-notify.json +0 -32
  212. package/.agent/workflows/news-aggregator.json +0 -93
  213. package/.agent/workflows/news-dashboard-v2.json +0 -94
  214. package/.agent/workflows/notification-batch.json +0 -32
package/README.md CHANGED
@@ -1,441 +1,441 @@
1
- # Foliko
2
-
3
- 简约的插件化 Agent 框架
4
-
5
- ## 特性
6
-
7
- - **插件化架构** - 核心简单,通过插件扩展功能
8
- - **流式输出** - 支持实时流式输出
9
- - **多 AI 支持** - 支持 Anthropic、DeepSeek、MiniMax 等
10
- - **内置工具** - Shell、Python、MCP、文件系统等
11
- - **技能系统** - 可扩展的 Skill 管理
12
- - **会话管理** - 支持多会话切换
13
- - **规则引擎** - 可配置的行为规则
14
- - **子 Agent** - 支持多子 Agent 分工协作
15
- - **Ambient Agent** - 持续后台运行,监控事件主动执行
16
- - **统一通知** - 微信、飞书、Telegram 消息推送
17
-
18
- ## 安装
19
-
20
- ```bash
21
- # 方式一:npm 安装
22
- npm install -g foliko
23
-
24
- # 方式二:Windows 一键脚本安装
25
- irm https://folikoai.com/install.ps1 | iex
26
-
27
- # 方式三:Mac/Linux 一键脚本安装
28
- curl -fsSL https://folikoai.com/install.sh | bash
29
- ```
30
-
31
- ## 快速开始
32
-
33
- ```bash
34
- # 全局安装后
35
- foliko chat
36
- ```
37
-
38
- ## CLI 命令
39
-
40
- ```bash
41
- # 聊天模式(使用 .env 中的配置)
42
- foliko chat
43
-
44
- # 指定完整配置
45
- foliko chat --provider deepseek --model deepseek-chat --base-url https://api.deepseek.com/v1 --api-key sk-xxx
46
-
47
- # 只指定 provider(使用 provider 默认 model 和 baseURL)
48
- foliko chat --provider deepseek --api-key sk-xxx
49
-
50
- # 列出所有子Agent配置
51
- foliko list
52
- ```
53
-
54
- ### 聊天内命令
55
-
56
- 在 `foliko chat` 的对话界面中,可以直接输入自然语言来控制框架:
57
-
58
- **插件管理**
59
-
60
- ```
61
- 开启微信插件
62
- 开启飞书插件
63
- 开启telegram插件
64
- 关闭微信插件
65
- 列出所有插件
66
- 重载所有插件
67
- ```
68
-
69
- **定时任务**
70
-
71
- ```
72
- 10分钟后提醒我喝水
73
- 每天早上9点提醒我查看邮件
74
- 设置一个定时任务:2小时后提醒我开会
75
- 列出所有定时任务
76
- 取消定时任务
77
- ```
78
-
79
- **会话管理**
80
-
81
- ```
82
- 创建一个新会话
83
- 列出所有会话
84
- 删除某个会话
85
- 获取会话历史
86
- ```
87
-
88
- **Ambient Agent**
89
-
90
- ```
91
- 查看 Ambient Agent 状态
92
- 创建一个目标:监控新邮件
93
- 暂停 Ambient Agent
94
- 恢复 Ambient Agent
95
- 存储记忆:用户喜欢在早上处理邮件
96
- 检索记忆
97
- ```
98
-
99
- **子 Agent**
100
-
101
- ```
102
- 列出所有子Agent
103
- 调用 backend-specialist 处理任务
104
- 重新加载子Agent配置
105
- ```
106
-
107
- **系统操作**
108
-
109
- ```
110
- 执行 shell 命令:ls -la
111
- 安装 npm 包:lodash
112
- 执行 Python 代码
113
- 查看审计日志
114
- 清除当前会话历史
115
- ```
116
-
117
- 这些命令会通过 Agent 调用相应的工具来执行。
118
-
119
- ```
120
- foliko/
121
- ├── cli/ # 命令行入口
122
- │ └── bin/foliko.js # CLI 入口
123
- ├── src/ # 核心框架
124
- │ ├── core/ # 核心组件
125
- │ ├── capabilities/ # 能力插件
126
- │ └── executors/ # 执行器
127
- ├── plugins/ # 内置插件
128
- ├── skills/ # 技能目录
129
- └── examples/ # 示例
130
- ```
131
-
132
- ## 配置
133
-
134
- ### 环境变量配置 (.env)
135
-
136
- 在项目根目录创建 `.env` 文件:
137
-
138
- ```bash
139
- # ========== AI Configuration ==========
140
- # AI Provider: minimax, deepseek, openai, anthropic 等
141
- FOLIKO_PROVIDER=minimax
142
-
143
- # AI Model(如果未设置,使用 provider 默认值)
144
- # MiniMax: MiniMax-M2.7
145
- # DeepSeek: deepseek-chat, deepseek-coder 等
146
- FOLIKO_MODEL=MiniMax-M2.7
147
-
148
- # API Base URL(如果未设置,使用 provider 默认值)
149
- # MiniMax: https://api.minimaxi.com/v1
150
- # DeepSeek: https://api.deepseek.com/v1
151
- FOLIKO_BASE_URL=https://api.minimaxi.com/v1
152
-
153
- # API Key(通用,如果未设置则尝试 provider 专用 key)
154
- FOLIKO_API_KEY=sk-your-api-key
155
-
156
- # Provider 专用 API Key(可选,如果 FOLIKO_API_KEY 未设置则使用这些)
157
- DEEPSEEK_API_KEY=sk-your-deepseek-api-key
158
- MINIMAX_API_KEY=sk-your-minimax-api-key
159
-
160
- # ========== Email Configuration ==========
161
- # SMTP Settings (for sending emails)
162
- SMTP_HOST=smtp.gmail.com
163
- SMTP_PORT=587
164
- SMTP_SECURE=false
165
- SMTP_USER=your-email@gmail.com
166
- SMTP_PASS=your-app-password
167
-
168
- # IMAP Settings (for reading emails)
169
- IMAP_HOST=imap.gmail.com
170
- IMAP_PORT=993
171
- IMAP_USER=your-email@gmail.com
172
- IMAP_PASS=your-app-password
173
-
174
- # Default sender email address
175
- FROM_EMAIL=your-email@gmail.com
176
-
177
- # ========== Telegram Bot (optional) ==========
178
- TELEGRAM_BOT_TOKEN=your-telegram-bot-token
179
-
180
- # ========== Feishu Bot (optional) ==========
181
- FEISHU_APP_ID=cli_xxxxxxxxxxx
182
- FEISHU_APP_SECRET=app_secret
183
-
184
- # ========== Web Server (optional) ==========
185
- # Web 服务端口,默认 8088
186
- WEB_PORT=3000
187
-
188
- # Web 服务主机,默认 127.0.0.1
189
- WEB_HOST=127.0.0.1
190
-
191
- # 公网访问的 base URL(用于生成 webhook URL 等),不设置则使用 host:port,最好部署在docker中可以暴露自定义域名
192
- WEB_BASE_URL=https://your-domain.com
193
-
194
- ```
195
-
196
- **配置优先级**:命令行参数 > .env配置 > provider默认值
197
-
198
- ### .agent 目录结构
199
-
200
- ```
201
- .agent/
202
- ├── config # 配置文件
203
- ├── ai.json # AI 配置
204
- ├── mcp_config.json # MCP 服务器配置
205
- ├── agents/ # 子Agent配置目录
206
- ├── plugins/ # 用户插件目录
207
- ├── skills/ # 用户技能目录
208
- └── data/ # 数据目录
209
- ```
210
-
211
- ### 子 Agent 配置 (.agent/agents/)
212
-
213
- 在 `.agent/agents/` 目录下放置子 Agent 配置文件,支持 `.js`、`.json`、`.md` 格式:
214
-
215
- ```
216
- .agent/agents/
217
- ├── backend-specialist.md
218
- ├── frontend-specialist.md
219
- └── database-architect.md
220
- ```
221
-
222
- #### JSON 格式
223
-
224
- ```json
225
- {
226
- "name": "backend-specialist",
227
- "role": "Backend Specialist",
228
- "description": "Expert in backend development",
229
- "parentTools": ["read_file", "run_command"]
230
- }
231
- ```
232
-
233
- #### Markdown 格式
234
-
235
- ````markdown
236
- # Backend Specialist
237
-
238
- ```json
239
- {
240
- "name": "backend-specialist",
241
- "role": "Backend Specialist",
242
- "description": "Expert in backend development",
243
- "parentTools": ["read_file", "run_command"]
244
- }
245
- ```
246
- ````
247
-
248
- ````
249
-
250
- ### ai.json 格式
251
-
252
- ```json
253
- {
254
- "provider": "minimax",
255
- "model": "MiniMax-M2.7",
256
- "apiKey": "your-api-key",
257
- "baseURL": "https://api.minimaxi.com/v1"
258
- }
259
- ````
260
-
261
- ### mcp_config.json 格式
262
-
263
- ```json
264
- {
265
- "mcpServers": {
266
- "fetch": {
267
- "command": "npx",
268
- "args": ["-y", "@modelcontextprotocol/server-fetch"]
269
- }
270
- }
271
- }
272
- ```
273
-
274
- ## 开发插件
275
-
276
- ### 用户插件(.agent/plugins/)
277
-
278
- 插件支持两种结构:**文件夹结构**(推荐)和**单文件结构**。
279
-
280
- #### 文件夹结构(推荐)
281
-
282
- ```
283
- .agent/plugins/my-plugin/
284
- ├── package.json # 可选,main 字段指定入口
285
- ├── index.js # 默认入口
286
- └── node_modules/ # 可选,插件私有依赖
287
- ```
288
-
289
- ```json
290
- // package.json 示例
291
- {
292
- "name": "my-plugin",
293
- "main": "index.js"
294
- }
295
- ```
296
-
297
- ```javascript
298
- // .agent/plugins/my-plugin/index.js
299
- module.exports = function (Plugin) {
300
- return class MyPlugin extends Plugin {
301
- constructor(config = {}) {
302
- super();
303
- this.name = 'my-plugin';
304
- this.version = '1.0.0';
305
- this.description = '我的工具插件';
306
- this.priority = 10;
307
- }
308
-
309
- install(framework) {
310
- const { z } = require('zod');
311
- framework.registerTool({
312
- name: 'my_tool',
313
- description: '我的工具',
314
- inputSchema: z.object({
315
- param: z.string().describe('参数描述'),
316
- }),
317
- execute: async (args, framework) => {
318
- return { success: true, result: args.param };
319
- },
320
- });
321
- return this;
322
- }
323
- };
324
- };
325
- ```
326
-
327
- #### 单文件结构(兼容)
328
-
329
- ```
330
- .agent/plugins/my-plugin.js
331
- ```
332
-
333
- 如果同时存在文件夹和同名 `.js` 文件,**文件夹优先**。
334
-
335
- **注意**:如果插件需要第三方库(如 `zod`),需要先安装:
336
-
337
- 1. 创建插件文件/文件夹
338
- 2. 调用 `install` 工具安装依赖
339
- 3. 热重载插件
340
-
341
- ### 技能开发
342
-
343
- 在 `.agent/skills/` 下创建技能:
344
-
345
- ```
346
- .agent/skills/my-skill/
347
- └── SKILL.md
348
- ```
349
-
350
- SKILL.md 格式:
351
-
352
- ```markdown
353
- ---
354
- name: my-skill
355
- description: 技能描述
356
- allowed-tools: tool1,tool2
357
- ---
358
-
359
- 技能内容...
360
- ```
361
-
362
- ## 内置工具
363
-
364
- ### 通用工具
365
-
366
- | 工具 | 说明 |
367
- | ---------------- | -------------------- |
368
- | `loadSkill` | 加载技能 |
369
- | `list_plugins` | 列出所有插件 |
370
- | `list_tools` | 列出所有工具 |
371
- | `reload_plugins` | 重载插件 |
372
- | `shell` | 执行 Shell 命令 |
373
- | `powershell` | 执行 PowerShell 命令 |
374
- | `python-execute` | 执行 Python 代码 |
375
- | `python_script` | 执行 Python 脚本 |
376
- | `pip_install` | 安装 Python 包 |
377
- | `install` | 安装 npm 包 |
378
- | `mcp_reload` | 重载 MCP 服务器 |
379
- | `audit_query` | 查询审计日志 |
380
-
381
- ### 子 Agent 管理工具
382
-
383
- | 工具 | 说明 |
384
- | ----------------- | ------------------------- |
385
- | `subagent_list` | 列出所有子Agent |
386
- | `subagent_call` | 调用指定的子Agent处理任务 |
387
- | `subagent_reload` | 重新加载子Agent配置 |
388
-
389
- ### 会话工具
390
-
391
- | 工具 | 说明 |
392
- | ----------------- | ------------ |
393
- | `session_create` | 创建会话 |
394
- | `session_get` | 获取会话 |
395
- | `session_list` | 列出所有会话 |
396
- | `session_delete` | 删除会话 |
397
- | `session_history` | 获取会话历史 |
398
-
399
- ### 定时任务工具
400
-
401
- | 工具 | 说明 |
402
- | ----------------- | -------------- |
403
- | `schedule_task` | 创建定时任务 |
404
- | `schedule_list` | 列出定时任务 |
405
- | `schedule_cancel` | 取消定时任务 |
406
- | `cron_examples` | 显示 cron 示例 |
407
-
408
- ### Ambient Agent 工具
409
-
410
- | 工具 | 说明 |
411
- | ------------------ | ------------------------------------ |
412
- | `ambient_goals` | 管理目标(列出/创建/更新/删除/激活) |
413
- | `ambient_status` | 获取 Ambient Agent 状态 |
414
- | `ambient_think` | 触发主动思考 |
415
- | `ambient_remember` | 存储/检索记忆 |
416
- | `ambient_control` | 控制循环(暂停/恢复/调整) |
417
-
418
- ### 通知事件
419
-
420
- 消息插件(微信、飞书、Telegram)监听 `notification` 事件推送通知给用户:
421
-
422
- ```javascript
423
- {
424
- title: '目标完成',
425
- message: '目标 "xxx" 已完成',
426
- source: 'scheduler', // 来源
427
- level: 'success', // info | warning | success | error
428
- sessionId: 'weixin_xxx'
429
- }
430
- ```
431
-
432
- ## 工作目录
433
-
434
- CLI 工作目录默认使用执行命令的目录。
435
-
436
- - `.agent/` 目录会创建在工作目录下
437
- - 配置文件、插件、技能等都放在工作目录的 `.agent/` 下
438
-
439
- ## 许可证
440
-
441
- MIT
1
+ # Foliko
2
+
3
+ 简约的插件化 Agent 框架
4
+
5
+ ## 特性
6
+
7
+ - **插件化架构** - 核心简单,通过插件扩展功能
8
+ - **流式输出** - 支持实时流式输出
9
+ - **多 AI 支持** - 支持 Anthropic、DeepSeek、MiniMax 等
10
+ - **内置工具** - Shell、Python、MCP、文件系统等
11
+ - **技能系统** - 可扩展的 Skill 管理
12
+ - **会话管理** - 支持多会话切换
13
+ - **规则引擎** - 可配置的行为规则
14
+ - **子 Agent** - 支持多子 Agent 分工协作
15
+ - **Ambient Agent** - 持续后台运行,监控事件主动执行
16
+ - **统一通知** - 微信、飞书、Telegram 消息推送
17
+
18
+ ## 安装
19
+
20
+ ```bash
21
+ # 方式一:npm 安装
22
+ npm install -g foliko
23
+
24
+ # 方式二:Windows 一键脚本安装
25
+ irm https://folikoai.com/install.ps1 | iex
26
+
27
+ # 方式三:Mac/Linux 一键脚本安装
28
+ curl -fsSL https://folikoai.com/install.sh | bash
29
+ ```
30
+
31
+ ## 快速开始
32
+
33
+ ```bash
34
+ # 全局安装后
35
+ foliko chat
36
+ ```
37
+
38
+ ## CLI 命令
39
+
40
+ ```bash
41
+ # 聊天模式(使用 .env 中的配置)
42
+ foliko chat
43
+
44
+ # 指定完整配置
45
+ foliko chat --provider deepseek --model deepseek-chat --base-url https://api.deepseek.com/v1 --api-key sk-xxx
46
+
47
+ # 只指定 provider(使用 provider 默认 model 和 baseURL)
48
+ foliko chat --provider deepseek --api-key sk-xxx
49
+
50
+ # 列出所有子Agent配置
51
+ foliko list
52
+ ```
53
+
54
+ ### 聊天内命令
55
+
56
+ 在 `foliko chat` 的对话界面中,可以直接输入自然语言来控制框架:
57
+
58
+ **插件管理**
59
+
60
+ ```
61
+ 开启微信插件
62
+ 开启飞书插件
63
+ 开启telegram插件
64
+ 关闭微信插件
65
+ 列出所有插件
66
+ 重载所有插件
67
+ ```
68
+
69
+ **定时任务**
70
+
71
+ ```
72
+ 10分钟后提醒我喝水
73
+ 每天早上9点提醒我查看邮件
74
+ 设置一个定时任务:2小时后提醒我开会
75
+ 列出所有定时任务
76
+ 取消定时任务
77
+ ```
78
+
79
+ **会话管理**
80
+
81
+ ```
82
+ 创建一个新会话
83
+ 列出所有会话
84
+ 删除某个会话
85
+ 获取会话历史
86
+ ```
87
+
88
+ **Ambient Agent**
89
+
90
+ ```
91
+ 查看 Ambient Agent 状态
92
+ 创建一个目标:监控新邮件
93
+ 暂停 Ambient Agent
94
+ 恢复 Ambient Agent
95
+ 存储记忆:用户喜欢在早上处理邮件
96
+ 检索记忆
97
+ ```
98
+
99
+ **子 Agent**
100
+
101
+ ```
102
+ 列出所有子Agent
103
+ 调用 backend-specialist 处理任务
104
+ 重新加载子Agent配置
105
+ ```
106
+
107
+ **系统操作**
108
+
109
+ ```
110
+ 执行 shell 命令:ls -la
111
+ 安装 npm 包:lodash
112
+ 执行 Python 代码
113
+ 查看审计日志
114
+ 清除当前会话历史
115
+ ```
116
+
117
+ 这些命令会通过 Agent 调用相应的工具来执行。
118
+
119
+ ```
120
+ foliko/
121
+ ├── cli/ # 命令行入口
122
+ │ └── bin/foliko.js # CLI 入口
123
+ ├── src/ # 核心框架
124
+ │ ├── core/ # 核心组件
125
+ │ ├── capabilities/ # 能力插件
126
+ │ └── executors/ # 执行器
127
+ ├── plugins/ # 内置插件
128
+ ├── skills/ # 技能目录
129
+ └── examples/ # 示例
130
+ ```
131
+
132
+ ## 配置
133
+
134
+ ### 环境变量配置 (.env)
135
+
136
+ 在项目根目录创建 `.env` 文件:
137
+
138
+ ```bash
139
+ # ========== AI Configuration ==========
140
+ # AI Provider: minimax, deepseek, openai, anthropic 等
141
+ FOLIKO_PROVIDER=minimax
142
+
143
+ # AI Model(如果未设置,使用 provider 默认值)
144
+ # MiniMax: MiniMax-M2.7
145
+ # DeepSeek: deepseek-chat, deepseek-coder 等
146
+ FOLIKO_MODEL=MiniMax-M2.7
147
+
148
+ # API Base URL(如果未设置,使用 provider 默认值)
149
+ # MiniMax: https://api.minimaxi.com/v1
150
+ # DeepSeek: https://api.deepseek.com/v1
151
+ FOLIKO_BASE_URL=https://api.minimaxi.com/v1
152
+
153
+ # API Key(通用,如果未设置则尝试 provider 专用 key)
154
+ FOLIKO_API_KEY=sk-your-api-key
155
+
156
+ # Provider 专用 API Key(可选,如果 FOLIKO_API_KEY 未设置则使用这些)
157
+ DEEPSEEK_API_KEY=sk-your-deepseek-api-key
158
+ MINIMAX_API_KEY=sk-your-minimax-api-key
159
+
160
+ # ========== Email Configuration ==========
161
+ # SMTP Settings (for sending emails)
162
+ SMTP_HOST=smtp.gmail.com
163
+ SMTP_PORT=587
164
+ SMTP_SECURE=false
165
+ SMTP_USER=your-email@gmail.com
166
+ SMTP_PASS=your-app-password
167
+
168
+ # IMAP Settings (for reading emails)
169
+ IMAP_HOST=imap.gmail.com
170
+ IMAP_PORT=993
171
+ IMAP_USER=your-email@gmail.com
172
+ IMAP_PASS=your-app-password
173
+
174
+ # Default sender email address
175
+ FROM_EMAIL=your-email@gmail.com
176
+
177
+ # ========== Telegram Bot (optional) ==========
178
+ TELEGRAM_BOT_TOKEN=your-telegram-bot-token
179
+
180
+ # ========== Feishu Bot (optional) ==========
181
+ FEISHU_APP_ID=cli_xxxxxxxxxxx
182
+ FEISHU_APP_SECRET=app_secret
183
+
184
+ # ========== Web Server (optional) ==========
185
+ # Web 服务端口,默认 8088
186
+ WEB_PORT=3000
187
+
188
+ # Web 服务主机,默认 127.0.0.1
189
+ WEB_HOST=127.0.0.1
190
+
191
+ # 公网访问的 base URL(用于生成 webhook URL 等),不设置则使用 host:port,最好部署在docker中可以暴露自定义域名
192
+ WEB_BASE_URL=https://your-domain.com
193
+
194
+ ```
195
+
196
+ **配置优先级**:命令行参数 > .env配置 > provider默认值
197
+
198
+ ### .agent 目录结构
199
+
200
+ ```
201
+ .agent/
202
+ ├── config # 配置文件
203
+ ├── ai.json # AI 配置
204
+ ├── mcp_config.json # MCP 服务器配置
205
+ ├── agents/ # 子Agent配置目录
206
+ ├── plugins/ # 用户插件目录
207
+ ├── skills/ # 用户技能目录
208
+ └── data/ # 数据目录
209
+ ```
210
+
211
+ ### 子 Agent 配置 (.agent/agents/)
212
+
213
+ 在 `.agent/agents/` 目录下放置子 Agent 配置文件,支持 `.js`、`.json`、`.md` 格式:
214
+
215
+ ```
216
+ .agent/agents/
217
+ ├── backend-specialist.md
218
+ ├── frontend-specialist.md
219
+ └── database-architect.md
220
+ ```
221
+
222
+ #### JSON 格式
223
+
224
+ ```json
225
+ {
226
+ "name": "backend-specialist",
227
+ "role": "Backend Specialist",
228
+ "description": "Expert in backend development",
229
+ "parentTools": ["read_file", "run_command"]
230
+ }
231
+ ```
232
+
233
+ #### Markdown 格式
234
+
235
+ ````markdown
236
+ # Backend Specialist
237
+
238
+ ```json
239
+ {
240
+ "name": "backend-specialist",
241
+ "role": "Backend Specialist",
242
+ "description": "Expert in backend development",
243
+ "parentTools": ["read_file", "run_command"]
244
+ }
245
+ ```
246
+ ````
247
+
248
+ ````
249
+
250
+ ### ai.json 格式
251
+
252
+ ```json
253
+ {
254
+ "provider": "minimax",
255
+ "model": "MiniMax-M2.7",
256
+ "apiKey": "your-api-key",
257
+ "baseURL": "https://api.minimaxi.com/v1"
258
+ }
259
+ ````
260
+
261
+ ### mcp_config.json 格式
262
+
263
+ ```json
264
+ {
265
+ "mcpServers": {
266
+ "fetch": {
267
+ "command": "npx",
268
+ "args": ["-y", "@modelcontextprotocol/server-fetch"]
269
+ }
270
+ }
271
+ }
272
+ ```
273
+
274
+ ## 开发插件
275
+
276
+ ### 用户插件(.agent/plugins/)
277
+
278
+ 插件支持两种结构:**文件夹结构**(推荐)和**单文件结构**。
279
+
280
+ #### 文件夹结构(推荐)
281
+
282
+ ```
283
+ .agent/plugins/my-plugin/
284
+ ├── package.json # 可选,main 字段指定入口
285
+ ├── index.js # 默认入口
286
+ └── node_modules/ # 可选,插件私有依赖
287
+ ```
288
+
289
+ ```json
290
+ // package.json 示例
291
+ {
292
+ "name": "my-plugin",
293
+ "main": "index.js"
294
+ }
295
+ ```
296
+
297
+ ```javascript
298
+ // .agent/plugins/my-plugin/index.js
299
+ module.exports = function (Plugin) {
300
+ return class MyPlugin extends Plugin {
301
+ constructor(config = {}) {
302
+ super();
303
+ this.name = 'my-plugin';
304
+ this.version = '1.0.0';
305
+ this.description = '我的工具插件';
306
+ this.priority = 10;
307
+ }
308
+
309
+ install(framework) {
310
+ const { z } = require('zod');
311
+ framework.registerTool({
312
+ name: 'my_tool',
313
+ description: '我的工具',
314
+ inputSchema: z.object({
315
+ param: z.string().describe('参数描述'),
316
+ }),
317
+ execute: async (args, framework) => {
318
+ return { success: true, result: args.param };
319
+ },
320
+ });
321
+ return this;
322
+ }
323
+ };
324
+ };
325
+ ```
326
+
327
+ #### 单文件结构(兼容)
328
+
329
+ ```
330
+ .agent/plugins/my-plugin.js
331
+ ```
332
+
333
+ 如果同时存在文件夹和同名 `.js` 文件,**文件夹优先**。
334
+
335
+ **注意**:如果插件需要第三方库(如 `zod`),需要先安装:
336
+
337
+ 1. 创建插件文件/文件夹
338
+ 2. 调用 `install` 工具安装依赖
339
+ 3. 热重载插件
340
+
341
+ ### 技能开发
342
+
343
+ 在 `.agent/skills/` 下创建技能:
344
+
345
+ ```
346
+ .agent/skills/my-skill/
347
+ └── SKILL.md
348
+ ```
349
+
350
+ SKILL.md 格式:
351
+
352
+ ```markdown
353
+ ---
354
+ name: my-skill
355
+ description: 技能描述
356
+ allowed-tools: tool1,tool2
357
+ ---
358
+
359
+ 技能内容...
360
+ ```
361
+
362
+ ## 内置工具
363
+
364
+ ### 通用工具
365
+
366
+ | 工具 | 说明 |
367
+ | ---------------- | -------------------- |
368
+ | `loadSkill` | 加载技能 |
369
+ | `list_plugins` | 列出所有插件 |
370
+ | `list_tools` | 列出所有工具 |
371
+ | `reload_plugins` | 重载插件 |
372
+ | `shell` | 执行 Shell 命令 |
373
+ | `powershell` | 执行 PowerShell 命令 |
374
+ | `python-execute` | 执行 Python 代码 |
375
+ | `python_script` | 执行 Python 脚本 |
376
+ | `pip_install` | 安装 Python 包 |
377
+ | `install` | 安装 npm 包 |
378
+ | `mcp_reload` | 重载 MCP 服务器 |
379
+ | `audit_query` | 查询审计日志 |
380
+
381
+ ### 子 Agent 管理工具
382
+
383
+ | 工具 | 说明 |
384
+ | ----------------- | ------------------------- |
385
+ | `subagent_list` | 列出所有子Agent |
386
+ | `subagent_call` | 调用指定的子Agent处理任务 |
387
+ | `subagent_reload` | 重新加载子Agent配置 |
388
+
389
+ ### 会话工具
390
+
391
+ | 工具 | 说明 |
392
+ | ----------------- | ------------ |
393
+ | `session_create` | 创建会话 |
394
+ | `session_get` | 获取会话 |
395
+ | `session_list` | 列出所有会话 |
396
+ | `session_delete` | 删除会话 |
397
+ | `session_history` | 获取会话历史 |
398
+
399
+ ### 定时任务工具
400
+
401
+ | 工具 | 说明 |
402
+ | ----------------- | -------------- |
403
+ | `schedule_task` | 创建定时任务 |
404
+ | `schedule_list` | 列出定时任务 |
405
+ | `schedule_cancel` | 取消定时任务 |
406
+ | `cron_examples` | 显示 cron 示例 |
407
+
408
+ ### Ambient Agent 工具
409
+
410
+ | 工具 | 说明 |
411
+ | ------------------ | ------------------------------------ |
412
+ | `ambient_goals` | 管理目标(列出/创建/更新/删除/激活) |
413
+ | `ambient_status` | 获取 Ambient Agent 状态 |
414
+ | `ambient_think` | 触发主动思考 |
415
+ | `ambient_remember` | 存储/检索记忆 |
416
+ | `ambient_control` | 控制循环(暂停/恢复/调整) |
417
+
418
+ ### 通知事件
419
+
420
+ 消息插件(微信、飞书、Telegram)监听 `notification` 事件推送通知给用户:
421
+
422
+ ```javascript
423
+ {
424
+ title: '目标完成',
425
+ message: '目标 "xxx" 已完成',
426
+ source: 'scheduler', // 来源
427
+ level: 'success', // info | warning | success | error
428
+ sessionId: 'weixin_xxx'
429
+ }
430
+ ```
431
+
432
+ ## 工作目录
433
+
434
+ CLI 工作目录默认使用执行命令的目录。
435
+
436
+ - `.agent/` 目录会创建在工作目录下
437
+ - 配置文件、插件、技能等都放在工作目录的 `.agent/` 下
438
+
439
+ ## 许可证
440
+
441
+ MIT