irises 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. package/LICENSE +674 -0
  2. package/bin/iris +97 -0
  3. package/data/agents.example/my-agent/configs/computer_use.yaml +138 -0
  4. package/data/agents.example/my-agent/configs/llm.yaml +71 -0
  5. package/data/agents.example/my-agent/configs/mcp.yaml +20 -0
  6. package/data/agents.example/my-agent/configs/memory.yaml +7 -0
  7. package/data/agents.example/my-agent/configs/modes.yaml +18 -0
  8. package/data/agents.example/my-agent/configs/ocr.yaml +9 -0
  9. package/data/agents.example/my-agent/configs/platform.yaml +49 -0
  10. package/data/agents.example/my-agent/configs/storage.yaml +10 -0
  11. package/data/agents.example/my-agent/configs/sub_agents.yaml +53 -0
  12. package/data/agents.example/my-agent/configs/system.yaml +25 -0
  13. package/data/agents.example/my-agent/configs/tools.yaml +231 -0
  14. package/data/agents.yaml.example +28 -0
  15. package/data/configs.example/computer_use.yaml +196 -0
  16. package/data/configs.example/llm.yaml +99 -0
  17. package/data/configs.example/mcp.yaml +20 -0
  18. package/data/configs.example/memory.yaml +7 -0
  19. package/data/configs.example/modes.yaml +18 -0
  20. package/data/configs.example/ocr.yaml +9 -0
  21. package/data/configs.example/platform.yaml +71 -0
  22. package/data/configs.example/plugins.yaml +47 -0
  23. package/data/configs.example/storage.yaml +10 -0
  24. package/data/configs.example/sub_agents.yaml +53 -0
  25. package/data/configs.example/summary.yaml +21 -0
  26. package/data/configs.example/system.yaml +57 -0
  27. package/data/configs.example/tools.yaml +237 -0
  28. package/package.json +19 -0
  29. package/postinstall.mjs +107 -0
@@ -0,0 +1,231 @@
1
+ # 工具配置
2
+ #
3
+ # ─── 工具防御性参数(防止输出过大撑爆 LLM 上下文) ───
4
+ #
5
+ # 所有参数均有内置默认值,通常无需修改。
6
+ # 如需调整,取消对应行的注释即可。
7
+ #
8
+ limits:
9
+ # ── read_file ──
10
+ read_file:
11
+ maxFiles: 10 # 单次调用最多读取文件数
12
+ maxFileSizeBytes: 2097152 # 单文件最大字节数 (2MB)
13
+ maxTotalOutputChars: 200000 # 所有文件格式化后的总输出字符数上限
14
+
15
+ # ── search_in_files ──
16
+ search_in_files:
17
+ maxResults: 100 # 最大匹配结果数 (search 模式)
18
+ maxFiles: 50 # 最大处理文件数 (replace 模式)
19
+ contextLines: 2 # 每条匹配的上下文行数
20
+ maxFileSizeBytes: 2097152 # 单文件最大字节数 (2MB),超过则跳过
21
+ maxLineDisplayChars: 500 # 结果中单行最大展示字符数 (防 minified 文件撑爆)
22
+ maxMatchDisplayChars: 200 # 匹配文本最大展示字符数
23
+
24
+ # ── list_files ──
25
+ list_files:
26
+ maxEntries: 2000 # 递归列出时最大条目数
27
+
28
+ # ── find_files ──
29
+ find_files:
30
+ maxResults: 500 # 每个 pattern 的最大结果数
31
+
32
+ # ── shell ──
33
+ shell:
34
+ defaultTimeout: 30000 # 默认超时 (毫秒)
35
+ maxOutputChars: 50000 # stdout/stderr 各自的最大字符数
36
+ maxBuffer: 10485760 # Node.js exec maxBuffer 字节数 (10MB)
37
+
38
+ # ─── 全局审批开关(最高优先级) ───
39
+ #
40
+ # 全部自动批准(跳过一类 + 二类审批)
41
+ # autoApproveAll: true
42
+ #
43
+ # 仅跳过一类审批(Y/N 确认),二类审批(diff 预览)仍生效
44
+ # autoApproveConfirmation: true
45
+ #
46
+ # 仅跳过二类审批(diff 预览),一类审批(Y/N 确认)仍生效
47
+ # autoApproveDiff: true
48
+ #
49
+ # ─── 按工具配置执行策略 ───
50
+ #
51
+ # 下方按工具名称配置执行策略。
52
+ # 未配置的工具默认需要手动确认。
53
+ #
54
+ # autoApprove: true -> 工具调用后直接执行
55
+ # autoApprove: false -> 工具执行前需要手动确认
56
+
57
+ # 只读工具:默认直接执行
58
+ read_file:
59
+ autoApprove: true
60
+ search_in_files:
61
+ autoApprove: true
62
+ # 如需对 mode: replace 打开 diff 审批页,可改为 false,并开启 showApprovalView
63
+ showApprovalView: true
64
+ find_files:
65
+ autoApprove: true
66
+ list_files:
67
+ autoApprove: true
68
+
69
+ # 修改类工具:默认需要确认
70
+ write_file:
71
+ autoApprove: false
72
+ # Console TUI 中是否打开 diff 审批视图;设为 false 时退回到底部 Y/N 确认提示
73
+ showApprovalView: true
74
+ apply_diff:
75
+ autoApprove: false
76
+ # Console TUI 中是否打开 diff 审批视图;设为 false 时退回到底部 Y/N 确认提示
77
+ showApprovalView: true
78
+ insert_code:
79
+ autoApprove: false
80
+ showApprovalView: true
81
+ delete_code:
82
+ autoApprove: false
83
+ showApprovalView: true
84
+ delete_file:
85
+ autoApprove: false
86
+ create_directory:
87
+ autoApprove: false
88
+
89
+ # ─────────────────────────────────────────────────────────────
90
+ # Shell 工具配置
91
+ # ─────────────────────────────────────────────────────────────
92
+ #
93
+ # 除了 autoApprove 开关外,shell 工具还支持细粒度的命令模式匹配:
94
+ #
95
+ # allowPatterns — 白名单:匹配的命令自动执行(即使 autoApprove: false)
96
+ # denyPatterns — 黑名单:匹配的命令必须确认(即使 autoApprove: true)
97
+ #
98
+ # 判定优先级:denyPatterns > allowPatterns > autoApprove
99
+ #
100
+ # 支持的模式语法:
101
+ # - 精确匹配: "git status" 仅匹配该完整命令
102
+ # - 通配符 *: "git log *" 匹配 git log 后跟任意参数
103
+ # - 通配符 ?: "ls -?" 匹配 ls 后跟单字母选项
104
+ # - 前缀匹配: "npm run *" 匹配所有 npm run 子命令
105
+ # - 正则表达式:"/^cat\s+\S+$/" 以 / 包裹按正则解析
106
+ #
107
+ # ── 用法示例 ──
108
+ #
109
+ # 场景 A:默认拒绝,仅放行指定命令(推荐)
110
+ # autoApprove: false
111
+ # allowPatterns:
112
+ # - "git status*"
113
+ # - "ls *"
114
+ #
115
+ # 场景 B:默认放行,拦截危险命令
116
+ # autoApprove: true
117
+ # denyPatterns:
118
+ # - "rm *"
119
+ # - "/sudo\s+/"
120
+ #
121
+ # 场景 C:混合使用(白名单 + 黑名单 + 兜底)
122
+ # autoApprove: false
123
+ # allowPatterns:
124
+ # - "git *"
125
+ # denyPatterns:
126
+ # - "git push *" # 虽然 git * 在白名单,但 push 被黑名单拦截
127
+ #
128
+ shell:
129
+ autoApprove: false
130
+
131
+ # ── 白名单(取消注释以启用) ──
132
+ allowPatterns:
133
+ # 只读 / 查看类
134
+ # - "ls *" # 列出文件
135
+ # - "cat *" # 查看文件内容
136
+ # - "head *" # 查看文件开头
137
+ # - "tail *" # 查看文件结尾
138
+ # - "wc *" # 统计行数/字数
139
+ # - "which *" # 查找命令路径
140
+ # - "echo *" # 输出信息
141
+ # - "pwd" # 当前目录
142
+ # - "env" # 查看环境变量
143
+ #
144
+ # 搜索类
145
+ # - "grep *" # 搜索文本
146
+ # - "find *" # 查找文件
147
+ # - "rg *" # ripgrep 搜索
148
+ # - "fd *" # fd 查找
149
+ #
150
+ # Git 只读操作
151
+ # - "git status*" # 状态查看
152
+ # - "git log *" # 日志查看
153
+ # - "git diff*" # 差异查看
154
+ # - "git branch*" # 分支查看
155
+ # - "git show *" # 查看提交
156
+ # - "git remote -v" # 查看远程
157
+ #
158
+ # 包管理器(只读)
159
+ # - "npm list*" # 查看依赖
160
+ # - "npm run *" # 运行脚本
161
+ # - "bun run *" # bun 运行脚本
162
+ #
163
+ # 自定义正则
164
+ # - "/^(node|bun|npx|tsx)\\s+/" # 允许 node/bun/npx/tsx 命令
165
+
166
+ # ── 黑名单(取消注释以启用) ──
167
+ denyPatterns:
168
+ # 危险操作
169
+ # - "rm -rf *" # 递归强制删除
170
+ # - "/^sudo\\s+/" # 所有 sudo 命令
171
+ # - "/^chmod\\s+/" # 修改权限
172
+ # - "/^chown\\s+/" # 修改所有者
173
+ # - "dd *" # 磁盘操作
174
+ # - "/\\|\\s*sh/" # 管道到 sh 执行
175
+ # - "curl * | *" # curl 管道执行
176
+ #
177
+ # Git 危险操作
178
+ # - "git push *" # 推送
179
+ # - "git reset --hard*" # 硬重置
180
+ # - "git clean -fd*" # 强制清理
181
+ #
182
+ # 包管理器写操作
183
+ # - "npm install*" # 安装依赖
184
+ # - "npm publish*" # 发布包
185
+
186
+ sub_agent:
187
+ autoApprove: false
188
+
189
+ # ─────────────────────────────────────────────────────────────
190
+ # Computer Use 工具配置(需在 computer_use.yaml 中启用)
191
+ # ─────────────────────────────────────────────────────────────
192
+ #
193
+ # 以下工具在 computer_use.yaml 的 enabled: true 时自动注册。
194
+ # 所有坐标参数均为 0-999 归一化值,由工具内部转换为实际像素。
195
+ #
196
+ # 只读 / 低风险操作:建议自动批准
197
+ # get_screenshot:
198
+ # autoApprove: true
199
+ # click_at:
200
+ # autoApprove: true
201
+ # hover_at:
202
+ # autoApprove: true
203
+ # scroll_document:
204
+ # autoApprove: true
205
+ # scroll_at:
206
+ # autoApprove: true
207
+ # go_back:
208
+ # autoApprove: true
209
+ # go_forward:
210
+ # autoApprove: true
211
+ # search:
212
+ # autoApprove: true
213
+ # navigate:
214
+ # autoApprove: true
215
+ # wait_5_seconds:
216
+ # autoApprove: true
217
+ #
218
+ # 输入类操作:按需决定是否自动批准
219
+ # type_text_at:
220
+ # autoApprove: true
221
+ # key_combination:
222
+ # autoApprove: false # 按键组合可能触发系统级操作,建议手动确认
223
+ # drag_and_drop:
224
+ # autoApprove: false
225
+
226
+ # 如需启用其他工具(记忆、MCP 等),请按工具名补充配置。
227
+ # 例如:
228
+ # memory_search:
229
+ # autoApprove: true
230
+ # mcp__my_server__my_tool:
231
+ # autoApprove: false
@@ -0,0 +1,28 @@
1
+ # 多 Agent 系统配置
2
+ #
3
+ # 首次运行时此文件会自动拷贝到 ~/.iris/agents.yaml。
4
+ # 设置 enabled: true 即可启用多 Agent 模式。
5
+ #
6
+ # 每个 agent 拥有独立的完整配置集(llm.yaml, system.yaml, tools.yaml 等)、
7
+ # 会话存储和记忆数据库。
8
+ #
9
+ # agent 配置目录位于 ~/.iris/agents/<agent-name>/configs/
10
+ # 首次启动时会自动从模板初始化。
11
+ # 请编辑各 agent 的配置文件(至少填写 LLM API Key)。
12
+
13
+ # 全局开关(默认关闭)
14
+ enabled: false
15
+
16
+ # Agent 定义
17
+ agents:
18
+ # 示例 Agent:配置目录在 ~/.iris/agents/my-agent/configs/
19
+ my-agent:
20
+ description: "我的 AI 助手"
21
+
22
+ # 更多 agent 示例...
23
+ # code-helper:
24
+ # description: "专注代码开发的 AI 助手"
25
+ # chat-bot:
26
+ # description: "日常聊天机器人"
27
+ # # 自定义数据根目录(可选,默认 ~/.iris/agents/<name>/)
28
+ # dataDir: /custom/path/chat-bot
@@ -0,0 +1,196 @@
1
+ # Computer Use 配置
2
+ #
3
+ # 启用后,LLM 可通过一组预定义工具操控浏览器或桌面。
4
+ # 工具包括 get_screenshot、click_at、type_text_at、scroll_document 等,
5
+ # 走普通 function calling 路径,任何支持工具调用的模型均可使用。
6
+ #
7
+ # 依赖:
8
+ # browser 环境需要安装 Playwright
9
+ # npm install playwright
10
+ # laywright install chromium
11
+ # screen 环境无额外依赖(Windows 通过 PowerShell 调用系统 API)
12
+
13
+ # 是否启用(默认关闭)
14
+ enabled: false
15
+
16
+ # 执行环境
17
+ # browser — Playwright 控制 Chromium 浏览器(操作范围限定在浏览器窗口内)
18
+ # screen — 系统级截屏 + 输入模拟(默认全屏,可通过 targetWindow 限定到单个窗口)
19
+ environment: browser
20
+
21
+ # ─── 工具策略 ───
22
+ #
23
+ # 按环境配置要启用或排除的工具。
24
+ # 三个环境层级,运行时自动选择匹配的一个:
25
+ # browser — Playwright 浏览器环境
26
+ # screen — 桌面全屏 / 窗口前台模式
27
+ # background — 桌面窗口后台模式(screen + backgroundMode: true)
28
+ #
29
+ # 每个环境支持两种策略(互斥,include 优先):
30
+ # include: [工具名] — 白名单,仅启用列出的工具
31
+ # exclude: [工具名] — 黑名单,排除列出的工具,其余全部启用
32
+ #
33
+ # 不配置 environmentTools 时使用内置默认策略:
34
+ # browser: 全部启用
35
+ # screen: 排除 go_back, go_forward, search
36
+ # background: 排除 go_back, go_forward, search, drag_and_drop
37
+ #
38
+ # 配置后覆盖对应环境的默认策略。未配置的环境仍使用默认值。
39
+ #
40
+ # 全部 13 个工具:
41
+ # get_screenshot, click_at, hover_at, type_text_at,
42
+ # scroll_document, scroll_at, key_combination, navigate,
43
+ # go_back, go_forward, search, wait_5_seconds, drag_and_drop
44
+ #
45
+ # ── 示例 ──
46
+ #
47
+ # environmentTools:
48
+ # # 浏览器环境:排除拖拽
49
+ # browser:
50
+ # exclude:
51
+ # - drag_and_drop
52
+ #
53
+ # # 桌面环境:使用内置默认排除策略(不配置即可)
54
+ #
55
+ # # 后台模式:白名单,只允许基础操作
56
+ # background:
57
+ # include:
58
+ # - get_screenshot
59
+ # - click_at
60
+ # - type_text_at
61
+ # - scroll_document
62
+ # - key_combination
63
+ # - wait_5_seconds
64
+
65
+ # ─── browser 环境专用 ───
66
+
67
+ # 启动时打开的初始页面
68
+ # initialUrl: https://www.google.com
69
+
70
+ # 搜索引擎首页(search 工具导航的目标)
71
+ # searchEngineUrl: https://www.google.com
72
+
73
+ # 浏览器视口尺寸(像素),仅 browser 环境生效
74
+ # screen 环境下屏幕/窗口尺寸自动检测,无需手动配置
75
+ # Gemini 推荐 1440×900 以获得最佳效果
76
+ screenWidth: 1440
77
+ screenHeight: 900
78
+
79
+ # 是否无头模式(不显示浏览器窗口)
80
+ # 调试时建议关闭,以便观察操作过程
81
+ headless: false
82
+
83
+ # 是否在操作位置显示红色圆圈标记(调试用)
84
+ # highlightMouse: true
85
+
86
+ # ─── screen 环境专用 ───
87
+ #
88
+ # 默认为全屏模式(截取整个桌面,操作范围不受限制)。
89
+ # 如需限定在某个应用窗口内,设置 targetWindow 即可。
90
+ #
91
+ # targetWindow 仅作为启动时首次绑定的条件。
92
+ # 找到窗口后会锁定到该窗口的原生句柄(HWND),后续操作不依赖标题。
93
+ # 运行时可通过 /window 指令切换绑定到其他窗口。
94
+ #
95
+ # ── 字符串形式 ──
96
+ #
97
+ # 填一个字符串,按标题子串匹配,取第一个匹配的窗口。
98
+ # 大部分场景用这个就够了。
99
+ #
100
+ # 设置后:
101
+ # - 截屏只截取该窗口区域
102
+ # - 鼠标坐标自动偏移到窗口位置
103
+ # - 操作前自动将窗口置于前台(后台模式除外)
104
+ # - screenSize 返回窗口尺寸(LLM 的坐标归一化基于窗口尺寸)
105
+ #
106
+ # 示例:
107
+ # targetWindow: "记事本" # 匹配标题包含"记事本"的窗口
108
+ # targetWindow: "Chrome" # 匹配标题包含 Chrome 的窗口
109
+ # targetWindow: "Visual Studio Code"
110
+ #
111
+ # ── 对象形式 ──
112
+ #
113
+ # 字符串形式不够精确时,改用对象形式。
114
+ #
115
+ # hwnd 优先级最高:填了 hwnd 就直接用它定位,忽略其他所有字段。
116
+ # 其他字段填了多个时,必须全部满足才算匹配。
117
+ # 如果匹配到多个窗口,自动选第一个。
118
+ #
119
+ # 字段说明:
120
+ #
121
+ # hwnd 窗口句柄,如 "0x00120ABC"。最精确,填了就忽略其他字段。
122
+ # 可通过 /window 指令查看。注意 HWND 在窗口关闭后会变。
123
+ # title 标题包含这个文字就算匹配(不区分大小写)
124
+ # exactTitle 标题必须完全一致才算匹配(区分大小写)
125
+ # processName 进程名(不带 .exe),比如 WindowsTerminal、notepad
126
+ # processId 进程 PID,比如 1232。注意 PID 在进程重启后会变。
127
+ # className 窗口类名,比如 CASCADIA_HOSTING_WINDOW_CLASS
128
+ #
129
+ # 怎么查看这些值:
130
+ # 运行时在 TUI 里输入 /window,列表会显示每个窗口的标题、进程名、PID、HWND。
131
+ #
132
+ # 示例:
133
+ #
134
+ # # 最精确:直接用 HWND(通过 /window 查看后填入)
135
+ # targetWindow:
136
+ # hwnd: "0x00120ABC"
137
+ #
138
+ # # 按标题 + 进程名匹配
139
+ # targetWindow:
140
+ # title: "PowerShell"
141
+ # processName: "WindowsTerminal"
142
+ #
143
+ # # 按 PID 指定
144
+ # targetWindow:
145
+ # processId: 1232
146
+ #
147
+ # 多个窗口匹配时(比如同一个 WindowsTerminal 下开了三个标签页,
148
+ # title、processName、processId 全一样),自动绑定第一个。
149
+ # 如果绑错了,有两种办法:
150
+ # - 在配置里填 hwnd,精确指定(通过 /window 查看后填入)
151
+ # - 启动后用 /window 手动切换
152
+ #
153
+ # targetWindow:
154
+
155
+
156
+ # 运行时切换窗口:
157
+ # 在 TUI 中输入 /window 打开当前可见窗口列表,选择后绑定。
158
+ # 输入 /window <关键词> 可预填搜索文本,按标题或进程名过滤。
159
+ # 绑定时直接用窗口的 HWND 精确定位,不受标题重复影响。
160
+ #
161
+ # 不设置 targetWindow 则为全屏模式。
162
+ # 注意:全屏模式下 AI 的操作范围不受限制,请谨慎使用。
163
+ # 建议将 key_combination 等高风险工具设为 autoApprove: false(在 tools.yaml 中配置)。
164
+
165
+ # 后台操作模式(仅窗口模式下有效,需先设置 targetWindow)。
166
+ # 启用后不需要目标窗口在前台,AI 可以在后台操作窗口。
167
+ # 窗口只需处于显示状态(不最小化),可以被其他窗口遮挡。
168
+ # 如果窗口被最小化,会自动恢复但不激活(不抢焦点)。
169
+ #
170
+ # 实现方式:
171
+ # 截图 → PrintWindow(请求窗口自绘,支持 GPU 加速窗口)
172
+ # 鼠标 → PostMessage(WM_LBUTTONDOWN/UP)
173
+ # 键盘 → PostMessage(WM_KEYDOWN/UP) / WM_CHAR
174
+ #
175
+ # 截图兼容性(PrintWindow):
176
+ # ✓ 原生 Win32 / WPF / WinForms 应用
177
+ # ✓ GPU 加速窗口(Chrome、Electron、游戏等)— 只要窗口处于显示状态
178
+ #
179
+ # 操作兼容性(PostMessage):
180
+ # ✓ 原生 Win32 / WPF / WinForms — 点击、键盘、滚动均正常
181
+ # △ 部分应用可能不响应 PostMessage 的鼠标/键盘消息
182
+ # △ 拖拽操作通过消息模拟,部分应用可能不支持
183
+ #
184
+ # 默认 false(前台模式)。
185
+ # backgroundMode: true
186
+
187
+ # ─── 截图保留策略 ───
188
+ #
189
+ # 发送给 LLM 时,只保留最近 N 轮 Computer Use 工具交互中的截图。
190
+ # 超出的旧轮次截图会被自动剥离,以节省 token。
191
+ # 存储中的完整截图不受影响。
192
+ #
193
+ # 默认 3,与 Gemini 官方示例一致。
194
+ # 设为 0 表示不保留任何截图(仅保留 URL 等文本信息)。
195
+ # 不设置或注释掉则使用默认值 3。
196
+ maxRecentScreenshots: 3
@@ -0,0 +1,99 @@
1
+ # LLM 配置(模型池)
2
+ # defaultModel: 启动时默认使用的模型名称
3
+ # models: 可用模型列表,键名就是模型名称
4
+
5
+ # defaultModel 必须指向 models 中的某个模型名称
6
+ # 运行中的 Console TUI 可以通过 /model 指令切换当前使用的模型
7
+
8
+ defaultModel: gemini_flash
9
+
10
+ # 是否记住各平台上次使用的模型(通过 /model 切换后持久化,重启后自动恢复)
11
+ # 启用后,各平台的 lastModel 会自动写入 platform.yaml 对应平台节内
12
+ rememberPlatformModel: true
13
+
14
+ # 用于 /compact 上下文压缩的模型名称
15
+ # 需指向 models 中的某个模型,不填则使用 defaultModel
16
+ # 建议使用速度快、成本低的模型(如 gemini-3-flash)
17
+ summaryModel: gemini_flash
18
+
19
+ models:
20
+ gemini_flash:
21
+ # 提供商: gemini | openai-compatible | openai-responses | claude
22
+ provider: gemini
23
+ apiKey: your-api-key-here
24
+ # model 字段填写提供商真实模型 id
25
+ model: gemini-2.0-flash
26
+ # Gemini 要以 /v1beta 结尾;OpenAI 兼容 / OpenAI Responses / Claude 要以 /v1 结尾
27
+ # 在此基础上,程序再补全具体接口后缀
28
+ baseUrl: https://generativelanguage.googleapis.com/v1beta
29
+ # 是否支持图片输入;不填时程序会按模型名自动判断。
30
+ # 如果你使用代理网关、自定义模型别名,建议显式填写。
31
+ supportsVision: true
32
+
33
+ # 模型上下文窗口大小(token 数,用于 TUI 显示占用比例)
34
+ # 常见模型已有内置默认值,通常无需手动设置
35
+ # contextWindow: 1048576
36
+
37
+ # 自动上下文压缩阈值:token 数超过此值时自动执行 /compact
38
+ # 支持绝对值(如 100000)或 contextWindow 百分比(如 "80%")
39
+ # 不设置则不自动压缩
40
+ # autoSummaryThreshold: "80%"
41
+ # autoSummaryThreshold: 100000
42
+
43
+ # 自定义请求头:会覆盖 provider 内置同名 header
44
+ # headers:
45
+ # x-goog-api-key: your-override-key
46
+ # x-custom-header: hello
47
+
48
+ # 自定义请求体:会深合并到 provider 编码后的最终请求体,支持嵌套参数
49
+ # 例如 Gemini thinking / 输出长度 / 温度等都可以直接这样配置
50
+ # requestBody:
51
+ # generationConfig:
52
+ # maxOutputTokens: 32000
53
+ # temperature: 1
54
+ # topP: 1
55
+ # thinkingConfig:
56
+ # thinkingBudget: 1228
57
+ # includeThoughts: true
58
+
59
+ # gpt4o_mini:
60
+ # provider: openai-compatible
61
+ # apiKey: your-api-key-here
62
+ # model: gpt-4o-mini
63
+ # baseUrl: https://api.openai.com/v1
64
+ # supportsVision: false
65
+
66
+ # gpt4o:
67
+ # provider: openai-responses
68
+ # apiKey: your-api-key-here
69
+ # model: gpt-4o
70
+ # baseUrl: https://api.openai.com/v1
71
+ # supportsVision: true
72
+
73
+ # Claude 示例:
74
+ # models:
75
+ # claude_sonnet:
76
+ # provider: claude
77
+ # apiKey: your-api-key-here
78
+ # model: claude-sonnet-4-6
79
+ # baseUrl: https://api.anthropic.com/v1
80
+ # # 启用 Anthropic Prompt Caching(手动缓存断点)。
81
+ # # 在请求体的关键位置注入 cache_control: { type: "ephemeral" } 标记:
82
+ # # 1. tools — 最后一个工具定义
83
+ # # 2. system — 系统指令(转换为 content-block 数组)
84
+ # # 3. messages — 最后一条用户消息的最后一个内容块
85
+ # # 最多使用 3 个断点(Anthropic 允许最多 4 个)。
86
+ # # 缓存读取仅需基础输入 token 价格的 10%。
87
+ # promptCaching: true
88
+ # # 启用 Anthropic 自动提示词缓存。
89
+ # # 在请求体顶层添加 cache_control 字段;
90
+ # # 服务端自动决定缓存哪部分前缀。
91
+ # # 可单独使用,也可与 promptCaching 组合使用。
92
+ # autoCaching: true
93
+ # Gemini 示例:
94
+ # models:
95
+ # gemini_flash:
96
+ # provider: gemini
97
+ # apiKey: your-api-key-here
98
+ # model: gemini-2.0-flash
99
+ # baseUrl: https://generativelanguage.googleapis.com/v1beta
@@ -0,0 +1,20 @@
1
+ # MCP 服务器配置
2
+ # 连接外部 MCP 服务器,自动将其工具注入 LLM 工具列表
3
+
4
+ # servers:
5
+ # # stdio 传输示例(本地进程)
6
+ # filesystem:
7
+ # transport: stdio
8
+ # command: npx
9
+ # args: ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/allowed/dir"]
10
+ #
11
+ # # HTTP 传输示例(远程服务器)
12
+ # remote_tools:
13
+ # transport: streamable-http
14
+ # url: https://mcp.example.com/sse
15
+ #
16
+ # # 企微官方文档 MCP(智能表格 + 文档 CRUD,8 个工具)
17
+ # # 在企微管理后台创建智能机器人后,MCP 端点页面可获取 apikey
18
+ # wecom-doc:
19
+ # transport: streamable-http
20
+ # url: "https://qyapi.weixin.qq.com/mcp/robot-doc?apikey=your-mcp-apikey"
@@ -0,0 +1,7 @@
1
+ # 记忆配置
2
+
3
+ # 是否启用记忆
4
+ enabled: false
5
+
6
+ # 数据库路径(默认 ~/.iris/memory.db)
7
+ # dbPath: ~/.iris/memory.db
@@ -0,0 +1,18 @@
1
+ # 模式配置
2
+ # 不同模式可定义不同的系统提示词和工具策略
3
+
4
+ # code:
5
+ # description: "代码开发模式"
6
+ # systemPrompt: "你是一个专注于代码开发的 AI 助手。"
7
+ # tools:
8
+ # exclude: [memory_add, memory_delete]
9
+ #
10
+ # readonly:
11
+ # description: "只读分析模式"
12
+ # tools:
13
+ # include: [read_file, memory_search, get_current_time]
14
+ #
15
+ # chat:
16
+ # description: "纯聊天模式"
17
+ # tools:
18
+ # include: [get_current_time]
@@ -0,0 +1,9 @@
1
+ # OCR 配置(可选)
2
+ # 当主模型不支持图片输入时,Iris 会调用这里配置的 openai-compatible vision 模型提取文字与图片内容,
3
+ # 再把提取结果发送给主对话模型。
4
+ # 删除整个文件即可关闭 OCR 回退。
5
+
6
+ provider: openai-compatible
7
+ apiKey: your-api-key-here
8
+ baseUrl: https://api.openai.com/v1
9
+ model: gpt-4o-mini
@@ -0,0 +1,71 @@
1
+ # 平台配置
2
+
3
+ # 类型: console | discord | telegram | web | weixin | wxwork | lark | qq
4
+ # 支持单平台或多平台同时启动:
5
+ # type: console # 单平台
6
+ # type: [console, web] # 多平台同时启动
7
+ type: console
8
+
9
+ # 对码系统配置(可选,平台层访问控制)
10
+ # dmPolicy:
11
+ # pairing = 需对码验证(默认,通过 /invite 生成码)
12
+ # allowlist = 仅配置的 allowFrom 成员可用
13
+ # open = 任何人均可私聊
14
+ pairing:
15
+ dmPolicy: pairing
16
+ # admin: "telegram:123456" # 可直接指定管理员(跳过首次对码)
17
+ # allowFrom: ["telegram:123"] # 预设白名单
18
+
19
+ discord:
20
+ token: your-discord-bot-token
21
+
22
+ telegram:
23
+ token: your-telegram-bot-token
24
+ # 是否在流式回复中展示工具执行状态(默认 true)
25
+ # showToolStatus: false
26
+ # 群聊中是否要求 @机器人 后才响应(默认 true)
27
+ # groupMentionRequired: true
28
+
29
+ web:
30
+ port: 8192
31
+ # 127.0.0.1 = 仅本机访问(配合 Nginx 反代使用,推荐)
32
+ # 0.0.0.0 = 允许所有网络接口访问(本地开发/无反代时使用)
33
+ host: 127.0.0.1
34
+ # API 全局认证令牌(可选,未配置时不启用)
35
+ # authToken: your-secret-token-here
36
+ # 管理接口认证令牌(推荐)
37
+ # managementToken: your-management-token-here
38
+
39
+ wxwork:
40
+ # 企业微信智能机器人 Bot ID 和 Secret
41
+ # 在企业微信管理后台 → 应用管理 → 智能机器人 中创建并获取
42
+ # 文档: https://developer.work.weixin.qq.com/document/path/101463
43
+ botId: your-bot-id
44
+ secret: your-bot-secret
45
+ # 是否在流式回复中展示工具执行状态(默认 true)
46
+ # showToolStatus: false
47
+
48
+ lark:
49
+ # 飞书自建应用 App ID 和 App Secret
50
+ # 在飞书开放平台创建自建应用,开启「机器人」能力后获取
51
+ # 文档: https://open.feishu.cn/document/home/develop-a-bot-in-5-minutes
52
+ appId: your-app-id
53
+ appSecret: your-app-secret
54
+ # 是否在流式回复中展示工具执行状态(默认 true)
55
+ # showToolStatus: false
56
+ # 可选:Webhook 模式用的验证 token(WebSocket 模式不需要)
57
+ # verificationToken: your-verification-token
58
+ # 可选:Webhook 模式用的加密 key(WebSocket 模式不需要)
59
+ # encryptKey: your-encrypt-key
60
+
61
+ weixin:
62
+ # 普通微信(WeChat),基于腾讯官方 ilink 协议
63
+ # 首次启动时会自动弹出二维码,用微信扫码即可完成登录
64
+ # 登录成功后 Token 自动缓存到 data/configs/weixin-auth.json,无需手动配置
65
+ #
66
+ # 可选:手动指定 Bot Token(如从其他实例迁移)
67
+ # botToken: your-bot-token
68
+ # 可选:覆盖 API 基地址
69
+ # baseUrl: https://ilinkai.weixin.qq.com
70
+ # 是否在回复中展示工具执行状态(默认 true)
71
+ # showToolStatus: false