irises 1.0.2 → 1.0.5
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/data/agents.example/master/configs/README.md +17 -0
- package/data/agents.yaml.example +8 -12
- package/data/configs.example/platform.yaml +22 -1
- package/data/configs.example/plugins.yaml +9 -6
- package/data/configs.example/sub_agents.yaml +22 -23
- package/data/configs.example/system.yaml +16 -0
- package/data/configs.example/tools.yaml +45 -3
- package/package.json +6 -6
- package/data/agents.example/my-agent/configs/computer_use.yaml +0 -138
- package/data/agents.example/my-agent/configs/llm.yaml +0 -71
- package/data/agents.example/my-agent/configs/mcp.yaml +0 -20
- package/data/agents.example/my-agent/configs/memory.yaml +0 -7
- package/data/agents.example/my-agent/configs/modes.yaml +0 -18
- package/data/agents.example/my-agent/configs/ocr.yaml +0 -9
- package/data/agents.example/my-agent/configs/platform.yaml +0 -49
- package/data/agents.example/my-agent/configs/storage.yaml +0 -10
- package/data/agents.example/my-agent/configs/sub_agents.yaml +0 -53
- package/data/agents.example/my-agent/configs/system.yaml +0 -25
- package/data/agents.example/my-agent/configs/tools.yaml +0 -231
- package/data/configs.example/computer_use.yaml +0 -196
- package/data/configs.example/memory.yaml +0 -7
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Agent 配置覆盖目录
|
|
2
|
+
|
|
3
|
+
此目录下的文件会覆盖全局配置(~/.iris/configs/)中的同名文件。
|
|
4
|
+
留空表示完全继承全局配置。
|
|
5
|
+
|
|
6
|
+
可覆盖的文件:
|
|
7
|
+
- `system.yaml` — 系统提示词、工具轮次等个性化参数
|
|
8
|
+
- `tools.yaml` — 工具权限配置
|
|
9
|
+
- `summary.yaml` — 上下文压缩提示词
|
|
10
|
+
- `mcp.yaml` — MCP 服务器配置
|
|
11
|
+
- `modes.yaml` — 自定义模式
|
|
12
|
+
- `sub_agents.yaml` — 子代理配置
|
|
13
|
+
|
|
14
|
+
以下文件属于全局独占,不应放在此目录下:
|
|
15
|
+
- `llm.yaml`
|
|
16
|
+
- `ocr.yaml`
|
|
17
|
+
- `storage.yaml`
|
package/data/agents.yaml.example
CHANGED
|
@@ -1,23 +1,19 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Agent 配置
|
|
2
2
|
#
|
|
3
3
|
# 首次运行时此文件会自动拷贝到 ~/.iris/agents.yaml。
|
|
4
|
-
# 设置 enabled: true 即可启用多 Agent 模式。
|
|
5
4
|
#
|
|
6
|
-
#
|
|
7
|
-
#
|
|
5
|
+
# 多 Agent 配置分层重构:
|
|
6
|
+
# - 移除 enabled 开关,agents.yaml 存在即生效。
|
|
7
|
+
# - 默认 agent 为 master,空 configs/ 目录 = 完全继承全局配置。
|
|
8
|
+
# - 每个 agent 可在自己的 configs/ 下创建覆盖文件。
|
|
8
9
|
#
|
|
9
10
|
# agent 配置目录位于 ~/.iris/agents/<agent-name>/configs/
|
|
10
|
-
# 首次启动时会自动从模板初始化。
|
|
11
|
-
# 请编辑各 agent 的配置文件(至少填写 LLM API Key)。
|
|
12
|
-
|
|
13
|
-
# 全局开关(默认关闭)
|
|
14
|
-
enabled: false
|
|
15
11
|
|
|
16
12
|
# Agent 定义
|
|
17
13
|
agents:
|
|
18
|
-
#
|
|
19
|
-
|
|
20
|
-
description: "
|
|
14
|
+
# 默认 Agent:配置目录在 ~/.iris/agents/master/configs/
|
|
15
|
+
master:
|
|
16
|
+
description: "主 AI 助手"
|
|
21
17
|
|
|
22
18
|
# 更多 agent 示例...
|
|
23
19
|
# code-helper:
|
|
@@ -1,11 +1,16 @@
|
|
|
1
1
|
# 平台配置
|
|
2
2
|
|
|
3
3
|
# 类型: console | discord | telegram | web | weixin | wxwork | lark | qq
|
|
4
|
+
# 注意:console / web / telegram / cron 由随发行包内嵌的 extensions 注册;lark / discord / qq / wxwork / weixin 为可选 extension,使用前需先安装。
|
|
4
5
|
# 支持单平台或多平台同时启动:
|
|
5
6
|
# type: console # 单平台
|
|
6
7
|
# type: [console, web] # 多平台同时启动
|
|
7
8
|
type: console
|
|
8
9
|
|
|
10
|
+
console:
|
|
11
|
+
# 是否在对话页面展开显示 sub_agent 执行过程中的子工具调用(默认关闭)
|
|
12
|
+
# expandSubAgentTools: true
|
|
13
|
+
|
|
9
14
|
# 对码系统配置(可选,平台层访问控制)
|
|
10
15
|
# dmPolicy:
|
|
11
16
|
# pairing = 需对码验证(默认,通过 /invite 生成码)
|
|
@@ -17,9 +22,11 @@ pairing:
|
|
|
17
22
|
# allowFrom: ["telegram:123"] # 预设白名单
|
|
18
23
|
|
|
19
24
|
discord:
|
|
25
|
+
# 该平台由可选 extension extensions/discord/ 提供;发行包默认不内嵌,使用前先执行 iris ext install discord
|
|
20
26
|
token: your-discord-bot-token
|
|
21
27
|
|
|
22
28
|
telegram:
|
|
29
|
+
# 该平台由内嵌 extension extensions/telegram/ 提供;发行包默认附带,无需单独安装
|
|
23
30
|
token: your-telegram-bot-token
|
|
24
31
|
# 是否在流式回复中展示工具执行状态(默认 true)
|
|
25
32
|
# showToolStatus: false
|
|
@@ -37,6 +44,7 @@ web:
|
|
|
37
44
|
# managementToken: your-management-token-here
|
|
38
45
|
|
|
39
46
|
wxwork:
|
|
47
|
+
# 该平台由可选 extension extensions/wxwork/ 提供;发行包默认不内嵌,使用前先执行 iris ext install wxwork
|
|
40
48
|
# 企业微信智能机器人 Bot ID 和 Secret
|
|
41
49
|
# 在企业微信管理后台 → 应用管理 → 智能机器人 中创建并获取
|
|
42
50
|
# 文档: https://developer.work.weixin.qq.com/document/path/101463
|
|
@@ -46,6 +54,7 @@ wxwork:
|
|
|
46
54
|
# showToolStatus: false
|
|
47
55
|
|
|
48
56
|
lark:
|
|
57
|
+
# 该平台由可选 extension extensions/lark/ 提供;发行包默认不内嵌,使用前先执行 iris ext install lark
|
|
49
58
|
# 飞书自建应用 App ID 和 App Secret
|
|
50
59
|
# 在飞书开放平台创建自建应用,开启「机器人」能力后获取
|
|
51
60
|
# 文档: https://open.feishu.cn/document/home/develop-a-bot-in-5-minutes
|
|
@@ -59,9 +68,10 @@ lark:
|
|
|
59
68
|
# encryptKey: your-encrypt-key
|
|
60
69
|
|
|
61
70
|
weixin:
|
|
71
|
+
# 该平台由可选 extension extensions/weixin/ 提供;发行包默认不内嵌,使用前先执行 iris ext install weixin
|
|
62
72
|
# 普通微信(WeChat),基于腾讯官方 ilink 协议
|
|
63
73
|
# 首次启动时会自动弹出二维码,用微信扫码即可完成登录
|
|
64
|
-
# 登录成功后 Token 自动缓存到
|
|
74
|
+
# 登录成功后 Token 自动缓存到 IRIS_DATA_DIR/configs/weixin-auth.json,无需手动配置
|
|
65
75
|
#
|
|
66
76
|
# 可选:手动指定 Bot Token(如从其他实例迁移)
|
|
67
77
|
# botToken: your-bot-token
|
|
@@ -69,3 +79,14 @@ weixin:
|
|
|
69
79
|
# baseUrl: https://ilinkai.weixin.qq.com
|
|
70
80
|
# 是否在回复中展示工具执行状态(默认 true)
|
|
71
81
|
# showToolStatus: false
|
|
82
|
+
|
|
83
|
+
qq:
|
|
84
|
+
# 该平台由可选 extension extensions/qq/ 提供;发行包默认不内嵌,使用前先执行 iris ext install qq
|
|
85
|
+
# NapCat OneBot v11 正向 WebSocket 地址
|
|
86
|
+
wsUrl: ws://127.0.0.1:3001
|
|
87
|
+
# 机器人自身 QQ 号(用于群聊 @ 判断)
|
|
88
|
+
selfId: your-qq-number
|
|
89
|
+
# NapCat 鉴权 token(可选)
|
|
90
|
+
# accessToken: your-napcat-token
|
|
91
|
+
# groupMode: at
|
|
92
|
+
# showToolStatus: true
|
|
@@ -6,7 +6,9 @@
|
|
|
6
6
|
# 自定义 LLM / Storage / Memory / OCR Provider 与自定义平台。
|
|
7
7
|
#
|
|
8
8
|
# 插件来源:
|
|
9
|
-
# - local
|
|
9
|
+
# - local(默认):按以下顺序查找
|
|
10
|
+
# 1. ~/.iris/extensions/<name>/ # 已安装 extension
|
|
11
|
+
# 2. <repo>/extensions/<name>/ # 源码仓库内收录的 extension
|
|
10
12
|
# - npm:从 npm 包 iris-plugin-<name> 加载
|
|
11
13
|
#
|
|
12
14
|
# priority:
|
|
@@ -14,17 +16,18 @@
|
|
|
14
16
|
# - 影响 preBootstrap、activate、hook 链执行顺序
|
|
15
17
|
#
|
|
16
18
|
# config:
|
|
17
|
-
# -
|
|
19
|
+
# - 会与插件目录或 extension 根目录中的 config.yaml 做浅合并
|
|
18
20
|
# - 同名字段以这里的值为准
|
|
19
21
|
#
|
|
20
22
|
# inline 插件:
|
|
21
23
|
# - 只支持在运行时通过 bootstrap({ inlinePlugins }) 注入
|
|
22
24
|
# - 不能在 plugins.yaml 中直接声明
|
|
23
25
|
#
|
|
24
|
-
#
|
|
25
|
-
# ~/.iris/
|
|
26
|
-
# my-
|
|
27
|
-
#
|
|
26
|
+
# extension 目录结构(plugin 贡献):
|
|
27
|
+
# ~/.iris/extensions/
|
|
28
|
+
# my-extension/
|
|
29
|
+
# manifest.json # extension 清单
|
|
30
|
+
# index.ts # 插件入口(或在 manifest.plugin.entry 中指定)
|
|
28
31
|
# config.yaml # 插件默认配置(可选)
|
|
29
32
|
# ============================================================
|
|
30
33
|
|
|
@@ -1,53 +1,52 @@
|
|
|
1
1
|
# 子代理配置
|
|
2
2
|
# 定义主 LLM 可委派的子代理类型。
|
|
3
|
-
#
|
|
3
|
+
#
|
|
4
|
+
# 此文件在首次运行时自动创建,包含开箱即用的默认子代理(general-purpose / explore)。
|
|
5
|
+
# 可直接编辑修改、新增或禁用子代理类型。
|
|
4
6
|
|
|
5
|
-
#
|
|
7
|
+
# ── 全局设置(优先级高于各类型的独立设置) ──
|
|
8
|
+
# enabled - 子代理功能总开关(默认 true);false 时一键禁用全部子代理
|
|
9
|
+
# stream - 全局流式输出开关;设置后覆盖所有类型的 stream;不设置则各类型自行决定
|
|
10
|
+
#
|
|
11
|
+
# ── 类型独立设置(各 type 内部) ──
|
|
12
|
+
# enabled - 是否启用此类型(默认 true);全局 enabled 为 false 时此字段无效
|
|
13
|
+
# stream - 此类型是否使用流式输出(默认 false);全局 stream 有值时被覆盖
|
|
6
14
|
# description - 面向主 LLM 的用途说明(展示在 sub_agent 工具描述中)
|
|
7
15
|
# systemPrompt - 子代理的系统提示词
|
|
8
16
|
# allowedTools - 工具白名单(与 excludedTools 互斥,优先)
|
|
9
17
|
# excludedTools - 工具黑名单
|
|
10
18
|
# modelName - 固定使用的模型名称;不写时跟随当前活动模型
|
|
11
19
|
# parallel - 当前类型的 sub_agent 调用是否按 parallel 工具参与调度(默认 false)
|
|
12
|
-
#
|
|
20
|
+
# background - 是否默认后台运行(默认 false),可被调用时的 run_in_background 参数覆盖
|
|
13
21
|
# maxToolRounds - 最大工具执行轮次
|
|
14
22
|
|
|
23
|
+
enabled: true
|
|
24
|
+
stream: true
|
|
25
|
+
|
|
15
26
|
types:
|
|
16
27
|
general-purpose:
|
|
28
|
+
enabled: true
|
|
17
29
|
description: "执行需要多步工具操作的复杂子任务。适合承接相对独立的子任务。"
|
|
18
|
-
systemPrompt: "
|
|
30
|
+
systemPrompt: "你是苦力1号,高级编程专家,外包程序员。负责独立完成委派给你的子任务。请专注于完成任务并返回清晰的结果。严格按照指令干活。尽全力完成指令。"
|
|
19
31
|
excludedTools:
|
|
20
32
|
- sub_agent
|
|
33
|
+
stream: true
|
|
21
34
|
parallel: false
|
|
22
35
|
# modelName: gemini_flash
|
|
23
36
|
maxToolRounds: 200
|
|
24
37
|
|
|
25
38
|
explore:
|
|
39
|
+
enabled: true
|
|
26
40
|
description: "只读搜索和阅读文件、执行查询命令。不做修改,只返回发现的信息。"
|
|
27
|
-
systemPrompt: "
|
|
41
|
+
systemPrompt: "你是一个只读探索苦力,负责搜索和阅读信息。不要修改任何文件,只返回你发现的内容。"
|
|
28
42
|
allowedTools:
|
|
29
43
|
- read_file
|
|
30
44
|
- search_in_files
|
|
31
45
|
- find_files
|
|
32
46
|
- list_files
|
|
33
|
-
- shell
|
|
47
|
+
- shell # Windows; Linux/macOS 会自动映射为 bash
|
|
48
|
+
- bash # Linux/macOS; Windows 会自动映射为 shell
|
|
49
|
+
stream: true
|
|
34
50
|
parallel: true
|
|
35
51
|
# modelName: gpt4o_mini
|
|
36
52
|
maxToolRounds: 200
|
|
37
|
-
|
|
38
|
-
recall:
|
|
39
|
-
description: "从长期记忆中检索相关信息。当需要回忆用户偏好、历史事实或之前保存的内容时使用。"
|
|
40
|
-
systemPrompt: |
|
|
41
|
-
你是一个记忆召回代理。根据给定的查询,从长期记忆中尽可能全面地检索相关信息。
|
|
42
|
-
|
|
43
|
-
策略:
|
|
44
|
-
1. 先用原始查询搜索
|
|
45
|
-
2. 如果结果不够,提取关键词重新搜索
|
|
46
|
-
3. 尝试相关概念或同义词搜索
|
|
47
|
-
|
|
48
|
-
将所有找到的记忆整理为清晰的摘要返回。如果没有找到任何相关记忆,明确说明。
|
|
49
|
-
allowedTools:
|
|
50
|
-
- memory_search
|
|
51
|
-
parallel: false
|
|
52
|
-
# modelName: recall_model
|
|
53
|
-
maxToolRounds: 3
|
|
@@ -28,6 +28,11 @@ maxRetries: 3
|
|
|
28
28
|
# response_<timestamp>.txt — 流式响应原文(SSE)
|
|
29
29
|
# logRequests: true
|
|
30
30
|
|
|
31
|
+
# 异步子代理开关(默认关闭)
|
|
32
|
+
# 启用后,子代理可在后台异步执行,主对话不阻塞等待子代理完成。
|
|
33
|
+
# 需同时在 sub_agents.yaml 中定义至少一个子代理类型才会真正生效。
|
|
34
|
+
# asyncSubAgents: true
|
|
35
|
+
|
|
31
36
|
# 兼容旧配置:skillPreamble 仍可被读取,但当前版本已不再使用。
|
|
32
37
|
# 说明:Skill 已改为通过 read_skill 工具按需读取,不再拼接到用户消息末尾。
|
|
33
38
|
|
|
@@ -55,3 +60,14 @@ maxRetries: 3
|
|
|
55
60
|
# content: |
|
|
56
61
|
# 请将用户的内容翻译为对应的另一种语言(中→英 或 英→中)。
|
|
57
62
|
# 保持原文的语气和风格。
|
|
63
|
+
|
|
64
|
+
# 开发模式:源码加载的扩展白名单
|
|
65
|
+
# 白名单中的扩展将从 src/index.ts 加载,而非使用 manifest 中指定的打包产物(dist/index.mjs)。
|
|
66
|
+
# 适用于本地开发时使用 npm run dev 等热编译工具的场景。
|
|
67
|
+
# 不在白名单中的扩展仍使用默认的打包产物入口。
|
|
68
|
+
# devSourceExtensions:
|
|
69
|
+
# - cron
|
|
70
|
+
# - memory
|
|
71
|
+
#
|
|
72
|
+
# 是否将 irises-extension-sdk 也从源码加载(需配合 devSourceExtensions)
|
|
73
|
+
# devSourceSdk: true
|
|
@@ -29,7 +29,9 @@ limits:
|
|
|
29
29
|
find_files:
|
|
30
30
|
maxResults: 500 # 每个 pattern 的最大结果数
|
|
31
31
|
|
|
32
|
-
# ──
|
|
32
|
+
# ── 命令执行工具 ──
|
|
33
|
+
# Windows 使用 shell (PowerShell),Linux/macOS 使用 bash
|
|
34
|
+
# 两者共享同一套 limits,配置 shell 或 bash 均可
|
|
33
35
|
shell:
|
|
34
36
|
defaultTimeout: 30000 # 默认超时 (毫秒)
|
|
35
37
|
maxOutputChars: 50000 # stdout/stderr 各自的最大字符数
|
|
@@ -46,6 +48,13 @@ limits:
|
|
|
46
48
|
# 仅跳过二类审批(diff 预览),一类审批(Y/N 确认)仍生效
|
|
47
49
|
# autoApproveDiff: true
|
|
48
50
|
#
|
|
51
|
+
# ─── 禁用工具列表 ───
|
|
52
|
+
#
|
|
53
|
+
# 列出的工具不会发送给 LLM,LLM 无法调用这些工具。
|
|
54
|
+
# disabledTools:
|
|
55
|
+
# - memory_search
|
|
56
|
+
# - memory_add
|
|
57
|
+
#
|
|
49
58
|
# ─── 按工具配置执行策略 ───
|
|
50
59
|
#
|
|
51
60
|
# 下方按工具名称配置执行策略。
|
|
@@ -90,10 +99,13 @@ create_directory:
|
|
|
90
99
|
autoApprove: false
|
|
91
100
|
|
|
92
101
|
# ─────────────────────────────────────────────────────────────
|
|
93
|
-
#
|
|
102
|
+
# 命令执行工具配置
|
|
94
103
|
# ─────────────────────────────────────────────────────────────
|
|
95
104
|
#
|
|
96
|
-
#
|
|
105
|
+
# Windows 使用 shell (PowerShell),Linux/macOS 使用 bash。
|
|
106
|
+
# 根据你的平台配置对应的 key(shell 或 bash),两者支持完全相同的选项。
|
|
107
|
+
#
|
|
108
|
+
# 除了 autoApprove 开关外,命令工具还支持细粒度的命令模式匹配:
|
|
97
109
|
#
|
|
98
110
|
# allowPatterns — 白名单:匹配的命令自动执行(即使 autoApprove: false)
|
|
99
111
|
# denyPatterns — 黑名单:匹配的命令必须确认(即使 autoApprove: true)
|
|
@@ -131,6 +143,26 @@ create_directory:
|
|
|
131
143
|
shell:
|
|
132
144
|
autoApprove: false
|
|
133
145
|
|
|
146
|
+
# ── AI 安全分类器 ──
|
|
147
|
+
#
|
|
148
|
+
# 当命令不在内置白名单/黑名单中时,调用 LLM 判断命令安全性。
|
|
149
|
+
# 启用后,非白名单命令不再一律拒绝,而是由 AI 评估后决定。
|
|
150
|
+
#
|
|
151
|
+
# 注意:
|
|
152
|
+
# - 分类器每次调用会消耗少量 token(约 200 输入 + 50 输出)
|
|
153
|
+
# - 白名单命令(ls、git status 等只读操作)不会触发分类器
|
|
154
|
+
# - 黑名单命令(rm -rf /、Invoke-Expression 等)直接拒绝,也不触发分类器
|
|
155
|
+
# - 仅"不确定"的命令才会调用分类器
|
|
156
|
+
# - autoLearn 启用后,pip install / npm install -g 等安装命令成功后会自动学习新工具的安全子命令
|
|
157
|
+
#
|
|
158
|
+
classifier:
|
|
159
|
+
enabled: true # 启用 AI 分类器
|
|
160
|
+
# model: null # 分类器使用的模型(不填则跟随当前活跃模型)
|
|
161
|
+
# confidenceThreshold: 0.8 # 置信度阈值(低于此值视为"不确定")
|
|
162
|
+
# fallbackPolicy: deny # 不确定时的兜底策略:deny(拒绝)或 allow(放行)
|
|
163
|
+
# timeout: 8000 # 分类器调用超时(ms)
|
|
164
|
+
# autoLearn: true # 安装依赖后自动评估新工具的安全子命令(默认���随 enabled)
|
|
165
|
+
#
|
|
134
166
|
# ── 白名单(取消注释以启用) ──
|
|
135
167
|
allowPatterns:
|
|
136
168
|
# 只读 / 查看类
|
|
@@ -186,9 +218,19 @@ shell:
|
|
|
186
218
|
# - "npm install*" # 安装依赖
|
|
187
219
|
# - "npm publish*" # 发布包
|
|
188
220
|
|
|
221
|
+
# Linux/macOS 用户:将上方 shell: 改为 bash:,配置选项完全相同
|
|
222
|
+
# bash:
|
|
223
|
+
# autoApprove: false
|
|
224
|
+
# # classifier:
|
|
225
|
+
# # enabled: true
|
|
226
|
+
|
|
189
227
|
sub_agent:
|
|
190
228
|
autoApprove: false
|
|
191
229
|
|
|
230
|
+
# 全局变量管理:读写好感度、信任度等跨对话持久变量
|
|
231
|
+
manage_variables:
|
|
232
|
+
autoApprove: true
|
|
233
|
+
|
|
192
234
|
# ─────────────────────────────────────────────────────────────
|
|
193
235
|
# Computer Use 工具配置(需在 computer_use.yaml 中启用)
|
|
194
236
|
# ─────────────────────────────────────────────────────────────
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "irises",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.5",
|
|
4
4
|
"description": "模块化、可解耦的 AI 聊天框架,支持多平台、多 LLM、工具调用",
|
|
5
5
|
"license": "GPL-3.0-only",
|
|
6
6
|
"bin": {
|
|
@@ -10,10 +10,10 @@
|
|
|
10
10
|
"postinstall": "bun ./postinstall.mjs || node ./postinstall.mjs"
|
|
11
11
|
},
|
|
12
12
|
"optionalDependencies": {
|
|
13
|
-
"irises-darwin-x64": "1.0.
|
|
14
|
-
"irises-linux-
|
|
15
|
-
"irises-darwin-arm64": "1.0.
|
|
16
|
-
"irises-windows-x64": "1.0.
|
|
17
|
-
"irises-linux-
|
|
13
|
+
"irises-darwin-x64": "1.0.5",
|
|
14
|
+
"irises-linux-x64": "1.0.5",
|
|
15
|
+
"irises-darwin-arm64": "1.0.5",
|
|
16
|
+
"irises-windows-x64": "1.0.5",
|
|
17
|
+
"irises-linux-arm64": "1.0.5"
|
|
18
18
|
}
|
|
19
19
|
}
|
|
@@ -1,138 +0,0 @@
|
|
|
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
|
-
# 目标窗口标题(子串匹配)。设置后:
|
|
92
|
-
# - 截屏只截取该窗口区域
|
|
93
|
-
# - 鼠标坐标自动偏移到窗口位置
|
|
94
|
-
# - 操作前自动将窗口置于前台(后台模式除外)
|
|
95
|
-
# - screenSize 返回窗口尺寸(LLM 的坐标归一化基于窗口尺寸)
|
|
96
|
-
# 不设置则为全屏模式。
|
|
97
|
-
#
|
|
98
|
-
# 示例:
|
|
99
|
-
# targetWindow: "记事本" # 匹配标题包含"记事本"的窗口
|
|
100
|
-
# targetWindow: "Chrome" # 匹配标题包含 Chrome 的窗口
|
|
101
|
-
# targetWindow: "Visual Studio Code"
|
|
102
|
-
# targetWindow:
|
|
103
|
-
#
|
|
104
|
-
# 注意:全屏模式下 AI 的操作范围不受限制,请谨慎使用。
|
|
105
|
-
# 建议将 key_combination 等高风险工具设为 autoApprove: false(在 tools.yaml 中配置)。
|
|
106
|
-
|
|
107
|
-
# 后台操作模式(仅窗口模式下有效,需先设置 targetWindow)。
|
|
108
|
-
# 启用后不需要目标窗口在前台,AI 可以在后台操作窗口。
|
|
109
|
-
# 窗口只需处于显示状态(不最小化),可以被其他窗口遮挡。
|
|
110
|
-
# 如果窗口被最小化,会自动恢复但不激活(不抢焦点)。
|
|
111
|
-
#
|
|
112
|
-
# 实现方式:
|
|
113
|
-
# 截图 → PrintWindow(请求窗口自绘,支持 GPU 加速窗口)
|
|
114
|
-
# 鼠标 → PostMessage(WM_LBUTTONDOWN/UP)
|
|
115
|
-
# 键盘 → PostMessage(WM_KEYDOWN/UP) / WM_CHAR
|
|
116
|
-
#
|
|
117
|
-
# 截图兼容性(PrintWindow):
|
|
118
|
-
# ✓ 原生 Win32 / WPF / WinForms 应用
|
|
119
|
-
# ✓ GPU 加速窗口(Chrome、Electron、游戏等)— 只要窗口处于显示状态
|
|
120
|
-
#
|
|
121
|
-
# 操作兼容性(PostMessage):
|
|
122
|
-
# ✓ 原生 Win32 / WPF / WinForms — 点击、键盘、滚动均正常
|
|
123
|
-
# △ 部分应用可能不响应 PostMessage 的鼠标/键盘消息
|
|
124
|
-
# △ 拖拽操作通过消息模拟,部分应用可能不支持
|
|
125
|
-
#
|
|
126
|
-
# 默认 false(前台模式)。
|
|
127
|
-
# backgroundMode: true
|
|
128
|
-
|
|
129
|
-
# ─── 截图保留策略 ───
|
|
130
|
-
#
|
|
131
|
-
# 发送给 LLM 时,只保留最近 N 轮 Computer Use 工具交互中的截图。
|
|
132
|
-
# 超出的旧轮次截图会被自动剥离,以节省 token。
|
|
133
|
-
# 存储中的完整截图不受影响。
|
|
134
|
-
#
|
|
135
|
-
# 默认 3,与 Gemini 官方示例一致。
|
|
136
|
-
# 设为 0 表示不保留任何截图(仅保留 URL 等文本信息)。
|
|
137
|
-
# 不设置或注释掉则使用默认值 3。
|
|
138
|
-
maxRecentScreenshots: 3
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
# LLM 配置(模型池)
|
|
2
|
-
# defaultModel: 启动时默认使用的模型名称
|
|
3
|
-
# models: 可用模型列表,键名就是模型名称
|
|
4
|
-
|
|
5
|
-
# defaultModel 必须指向 models 中的某个模型名称
|
|
6
|
-
# 运行中的 Console TUI 可以通过 /model 指令切换当前使用的模型
|
|
7
|
-
|
|
8
|
-
defaultModel: gemini_flash
|
|
9
|
-
|
|
10
|
-
models:
|
|
11
|
-
gemini_flash:
|
|
12
|
-
# 提供商: gemini | openai-compatible | openai-responses | claude
|
|
13
|
-
provider: gemini
|
|
14
|
-
apiKey: your-api-key-here
|
|
15
|
-
# model 字段填写提供商真实模型 id
|
|
16
|
-
model: gemini-2.0-flash
|
|
17
|
-
# Gemini 要以 /v1beta 结尾;OpenAI 兼容 / OpenAI Responses / Claude 要以 /v1 结尾
|
|
18
|
-
# 在此基础上,程序再补全具体接口后缀
|
|
19
|
-
baseUrl: https://generativelanguage.googleapis.com/v1beta
|
|
20
|
-
# 是否支持图片输入;不填时程序会按模型名自动判断。
|
|
21
|
-
# 如果你使用代理网关、自定义模型别名,建议显式填写。
|
|
22
|
-
supportsVision: true
|
|
23
|
-
|
|
24
|
-
# 模型上下文窗口大小(token 数,用于 TUI 显示占用比例)
|
|
25
|
-
# 常见模型已有内置默认值,通常无需手动设置
|
|
26
|
-
# contextWindow: 1048576
|
|
27
|
-
|
|
28
|
-
# 自定义请求头:会覆盖 provider 内置同名 header
|
|
29
|
-
# headers:
|
|
30
|
-
# x-goog-api-key: your-override-key
|
|
31
|
-
# x-custom-header: hello
|
|
32
|
-
|
|
33
|
-
# 自定义请求体:会深合并到 provider 编码后的最终请求体,支持嵌套参数
|
|
34
|
-
# 例如 Gemini thinking / 输出长度 / 温度等都可以直接这样配置
|
|
35
|
-
# requestBody:
|
|
36
|
-
# generationConfig:
|
|
37
|
-
# maxOutputTokens: 32000
|
|
38
|
-
# temperature: 1
|
|
39
|
-
# topP: 1
|
|
40
|
-
# thinkingConfig:
|
|
41
|
-
# thinkingBudget: 1228
|
|
42
|
-
# includeThoughts: true
|
|
43
|
-
|
|
44
|
-
# gpt4o_mini:
|
|
45
|
-
# provider: openai-compatible
|
|
46
|
-
# apiKey: your-api-key-here
|
|
47
|
-
# model: gpt-4o-mini
|
|
48
|
-
# baseUrl: https://api.openai.com/v1
|
|
49
|
-
# supportsVision: false
|
|
50
|
-
|
|
51
|
-
# gpt4o:
|
|
52
|
-
# provider: openai-responses
|
|
53
|
-
# apiKey: your-api-key-here
|
|
54
|
-
# model: gpt-4o
|
|
55
|
-
# baseUrl: https://api.openai.com/v1
|
|
56
|
-
# supportsVision: true
|
|
57
|
-
|
|
58
|
-
# Claude 示例:
|
|
59
|
-
# models:
|
|
60
|
-
# claude_sonnet:
|
|
61
|
-
# provider: claude
|
|
62
|
-
# apiKey: your-api-key-here
|
|
63
|
-
# model: claude-sonnet-4-6
|
|
64
|
-
# baseUrl: https://api.anthropic.com/v1
|
|
65
|
-
# Gemini 示例:
|
|
66
|
-
# models:
|
|
67
|
-
# gemini_flash:
|
|
68
|
-
# provider: gemini
|
|
69
|
-
# apiKey: your-api-key-here
|
|
70
|
-
# model: gemini-2.0-flash
|
|
71
|
-
# baseUrl: https://generativelanguage.googleapis.com/v1beta
|
|
@@ -1,20 +0,0 @@
|
|
|
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"
|
|
@@ -1,18 +0,0 @@
|
|
|
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]
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
# 平台配置
|
|
2
|
-
|
|
3
|
-
# 类型: console | discord | telegram | web | wxwork | lark
|
|
4
|
-
# 支持单平台或多平台同时启动:
|
|
5
|
-
# type: console # 单平台
|
|
6
|
-
# type: [console, web] # 多平台同时启动
|
|
7
|
-
type: console
|
|
8
|
-
|
|
9
|
-
discord:
|
|
10
|
-
token: your-discord-bot-token
|
|
11
|
-
|
|
12
|
-
telegram:
|
|
13
|
-
token: your-telegram-bot-token
|
|
14
|
-
# 是否在流式回复中展示工具执行状态(默认 true)
|
|
15
|
-
# showToolStatus: false
|
|
16
|
-
# 群聊中是否要求 @机器人 后才响应(默认 true)
|
|
17
|
-
# groupMentionRequired: true
|
|
18
|
-
|
|
19
|
-
web:
|
|
20
|
-
port: 8192
|
|
21
|
-
# 127.0.0.1 = 仅本机访问(配合 Nginx 反代使用,推荐)
|
|
22
|
-
# 0.0.0.0 = 允许所有网络接口访问(本地开发/无反代时使用)
|
|
23
|
-
host: 127.0.0.1
|
|
24
|
-
# API 全局认证令牌(可选,未配置时不启用)
|
|
25
|
-
# authToken: your-secret-token-here
|
|
26
|
-
# 管理接口认证令牌(推荐)
|
|
27
|
-
# managementToken: your-management-token-here
|
|
28
|
-
|
|
29
|
-
wxwork:
|
|
30
|
-
# 企业微信智能机器人 Bot ID 和 Secret
|
|
31
|
-
# 在企业微信管理后台 → 应用管理 → 智能机器人 中创建并获取
|
|
32
|
-
# 文档: https://developer.work.weixin.qq.com/document/path/101463
|
|
33
|
-
botId: your-bot-id
|
|
34
|
-
secret: your-bot-secret
|
|
35
|
-
# 是否在流式回复中展示工具执行状态(默认 true)
|
|
36
|
-
# showToolStatus: false
|
|
37
|
-
|
|
38
|
-
lark:
|
|
39
|
-
# 飞书自建应用 App ID 和 App Secret
|
|
40
|
-
# 在飞书开放平台创建自建应用,开启「机器人」能力后获取
|
|
41
|
-
# 文档: https://open.feishu.cn/document/home/develop-a-bot-in-5-minutes
|
|
42
|
-
appId: your-app-id
|
|
43
|
-
appSecret: your-app-secret
|
|
44
|
-
# 是否在流式回复中展示工具执行状态(默认 true)
|
|
45
|
-
# showToolStatus: false
|
|
46
|
-
# 可选:Webhook 模式用的验证 token(WebSocket 模式不需要)
|
|
47
|
-
# verificationToken: your-verification-token
|
|
48
|
-
# 可选:Webhook 模式用的加密 key(WebSocket 模式不需要)
|
|
49
|
-
# encryptKey: your-encrypt-key
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
# 子代理配置
|
|
2
|
-
# 定义主 LLM 可委派的子代理类型。
|
|
3
|
-
# 删除或注释掉某个类型即可禁用它,清空所有类型则完全禁用子代理功能。
|
|
4
|
-
|
|
5
|
-
# 字段说明:
|
|
6
|
-
# description - 面向主 LLM 的用途说明(展示在 sub_agent 工具描述中)
|
|
7
|
-
# systemPrompt - 子代理的系统提示词
|
|
8
|
-
# allowedTools - 工具白名单(与 excludedTools 互斥,优先)
|
|
9
|
-
# excludedTools - 工具黑名单
|
|
10
|
-
# modelName - 固定使用的模型名称;不写时跟随当前活动模型
|
|
11
|
-
# parallel - 当前类型的 sub_agent 调用是否按 parallel 工具参与调度(默认 false)
|
|
12
|
-
# 不写就是 false,只有显式写 true 才会参与并行调度
|
|
13
|
-
# maxToolRounds - 最大工具执行轮次
|
|
14
|
-
|
|
15
|
-
types:
|
|
16
|
-
general-purpose:
|
|
17
|
-
description: "执行需要多步工具操作的复杂子任务。适合承接相对独立的子任务。"
|
|
18
|
-
systemPrompt: "你是一个通用子代理,负责独立完成委派给你的子任务。请专注于完成任务并返回清晰的结果。"
|
|
19
|
-
excludedTools:
|
|
20
|
-
- sub_agent
|
|
21
|
-
parallel: false
|
|
22
|
-
# modelName: gemini_flash
|
|
23
|
-
maxToolRounds: 200
|
|
24
|
-
|
|
25
|
-
explore:
|
|
26
|
-
description: "只读搜索和阅读文件、执行查询命令。不做修改,只返回发现的信息。"
|
|
27
|
-
systemPrompt: "你是一个只读探索代理,负责搜索和阅读信息。不要修改任何文件,只返回你发现的内容。"
|
|
28
|
-
allowedTools:
|
|
29
|
-
- read_file
|
|
30
|
-
- search_in_files
|
|
31
|
-
- find_files
|
|
32
|
-
- list_files
|
|
33
|
-
- shell
|
|
34
|
-
parallel: true
|
|
35
|
-
# modelName: gpt4o_mini
|
|
36
|
-
maxToolRounds: 200
|
|
37
|
-
|
|
38
|
-
recall:
|
|
39
|
-
description: "从长期记忆中检索相关信息。当需要回忆用户偏好、历史事实或之前保存的内容时使用。"
|
|
40
|
-
systemPrompt: |
|
|
41
|
-
你是一个记忆召回代理。根据给定的查询,从长期记忆中尽可能全面地检索相关信息。
|
|
42
|
-
|
|
43
|
-
策略:
|
|
44
|
-
1. 先用原始查询搜索
|
|
45
|
-
2. 如果结果不够,提取关键词重新搜索
|
|
46
|
-
3. 尝试相关概念或同义词搜索
|
|
47
|
-
|
|
48
|
-
将所有找到的记忆整理为清晰的摘要返回。如果没有找到任何相关记忆,明确说明。
|
|
49
|
-
allowedTools:
|
|
50
|
-
- memory_search
|
|
51
|
-
parallel: false
|
|
52
|
-
# modelName: recall_model
|
|
53
|
-
maxToolRounds: 3
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
# 系统配置(Agent: my-agent)
|
|
2
|
-
#
|
|
3
|
-
# 每个 agent 拥有独立的系统配置。
|
|
4
|
-
# 你可以为不同 agent 设置不同的提示词、工具轮次等。
|
|
5
|
-
|
|
6
|
-
# 系统提示词(留空则使用默认)
|
|
7
|
-
systemPrompt: ""
|
|
8
|
-
|
|
9
|
-
# 工具执行最大轮次
|
|
10
|
-
maxToolRounds: 200
|
|
11
|
-
|
|
12
|
-
# 流式输出
|
|
13
|
-
stream: true
|
|
14
|
-
|
|
15
|
-
# LLM 调用报错自动重试(默认开启)
|
|
16
|
-
retryOnError: true
|
|
17
|
-
|
|
18
|
-
# 最大重试次数(默认 3)
|
|
19
|
-
maxRetries: 3
|
|
20
|
-
|
|
21
|
-
# 子代理最大嵌套深度(默认 3)
|
|
22
|
-
# maxAgentDepth: 3
|
|
23
|
-
|
|
24
|
-
# 默认模式(需与 modes.yaml 中定义的名称对应)
|
|
25
|
-
# defaultMode: code
|
|
@@ -1,231 +0,0 @@
|
|
|
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
|
|
@@ -1,196 +0,0 @@
|
|
|
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
|