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.
- package/LICENSE +674 -0
- package/bin/iris +97 -0
- package/data/agents.example/my-agent/configs/computer_use.yaml +138 -0
- package/data/agents.example/my-agent/configs/llm.yaml +71 -0
- package/data/agents.example/my-agent/configs/mcp.yaml +20 -0
- package/data/agents.example/my-agent/configs/memory.yaml +7 -0
- package/data/agents.example/my-agent/configs/modes.yaml +18 -0
- package/data/agents.example/my-agent/configs/ocr.yaml +9 -0
- package/data/agents.example/my-agent/configs/platform.yaml +49 -0
- package/data/agents.example/my-agent/configs/storage.yaml +10 -0
- package/data/agents.example/my-agent/configs/sub_agents.yaml +53 -0
- package/data/agents.example/my-agent/configs/system.yaml +25 -0
- package/data/agents.example/my-agent/configs/tools.yaml +231 -0
- package/data/agents.yaml.example +28 -0
- package/data/configs.example/computer_use.yaml +196 -0
- package/data/configs.example/llm.yaml +99 -0
- package/data/configs.example/mcp.yaml +20 -0
- package/data/configs.example/memory.yaml +7 -0
- package/data/configs.example/modes.yaml +18 -0
- package/data/configs.example/ocr.yaml +9 -0
- package/data/configs.example/platform.yaml +71 -0
- package/data/configs.example/plugins.yaml +47 -0
- package/data/configs.example/storage.yaml +10 -0
- package/data/configs.example/sub_agents.yaml +53 -0
- package/data/configs.example/summary.yaml +21 -0
- package/data/configs.example/system.yaml +57 -0
- package/data/configs.example/tools.yaml +237 -0
- package/package.json +19 -0
- 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,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,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
|