irises 1.0.6 → 1.0.7
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/package.json +6 -6
- package/data/agents.example/master/configs/README.md +0 -17
- package/data/agents.yaml.example +0 -24
- package/data/configs.example/cloudflare.yaml +0 -17
- package/data/configs.example/llm.yaml +0 -99
- package/data/configs.example/mcp.yaml +0 -41
- package/data/configs.example/memory.yaml +0 -33
- package/data/configs.example/modes.yaml +0 -28
- package/data/configs.example/net.yaml +0 -26
- package/data/configs.example/ocr.yaml +0 -17
- package/data/configs.example/platform.yaml +0 -92
- package/data/configs.example/plugins.yaml +0 -50
- package/data/configs.example/storage.yaml +0 -22
- package/data/configs.example/sub_agents.yaml +0 -52
- package/data/configs.example/summary.yaml +0 -21
- package/data/configs.example/system.yaml +0 -73
- package/data/configs.example/tools.yaml +0 -276
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "irises",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.7",
|
|
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-x64": "1.0.
|
|
15
|
-
"irises-darwin-arm64": "1.0.
|
|
16
|
-
"irises-windows-x64": "1.0.
|
|
17
|
-
"irises-linux-arm64": "1.0.
|
|
13
|
+
"irises-darwin-x64": "1.0.7",
|
|
14
|
+
"irises-linux-x64": "1.0.7",
|
|
15
|
+
"irises-darwin-arm64": "1.0.7",
|
|
16
|
+
"irises-windows-x64": "1.0.7",
|
|
17
|
+
"irises-linux-arm64": "1.0.7"
|
|
18
18
|
}
|
|
19
19
|
}
|
|
@@ -1,17 +0,0 @@
|
|
|
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
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
# Agent 配置
|
|
2
|
-
#
|
|
3
|
-
# 首次运行时此文件会自动拷贝到 ~/.iris/agents.yaml。
|
|
4
|
-
#
|
|
5
|
-
# 多 Agent 配置分层重构:
|
|
6
|
-
# - 移除 enabled 开关,agents.yaml 存在即生效。
|
|
7
|
-
# - 默认 agent 为 master,空 configs/ 目录 = 完全继承全局配置。
|
|
8
|
-
# - 每个 agent 可在自己的 configs/ 下创建覆盖文件。
|
|
9
|
-
#
|
|
10
|
-
# agent 配置目录位于 ~/.iris/agents/<agent-name>/configs/
|
|
11
|
-
|
|
12
|
-
# Agent 定义
|
|
13
|
-
agents:
|
|
14
|
-
# 默认 Agent:配置目录在 ~/.iris/agents/master/configs/
|
|
15
|
-
master:
|
|
16
|
-
description: "主 AI 助手"
|
|
17
|
-
|
|
18
|
-
# 更多 agent 示例...
|
|
19
|
-
# code-helper:
|
|
20
|
-
# description: "专注代码开发的 AI 助手"
|
|
21
|
-
# chat-bot:
|
|
22
|
-
# description: "日常聊天机器人"
|
|
23
|
-
# # 自定义数据根目录(可选,默认 ~/.iris/agents/<name>/)
|
|
24
|
-
# dataDir: /custom/path/chat-bot
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
# Cloudflare 管理配置
|
|
2
|
-
# 用于通过 Web GUI 管理 DNS 记录和 SSL 设置
|
|
3
|
-
#
|
|
4
|
-
# API Token 解析优先级:apiToken > apiTokenEnv > apiTokenFile
|
|
5
|
-
# 三者都不配置则视为未配置 Cloudflare
|
|
6
|
-
|
|
7
|
-
# 方式一:直接填写 API Token(不推荐,明文存储)
|
|
8
|
-
# apiToken: your-cloudflare-api-token
|
|
9
|
-
|
|
10
|
-
# 方式二:从环境变量读取(推荐)
|
|
11
|
-
# apiTokenEnv: IRIS_CF_API_TOKEN
|
|
12
|
-
|
|
13
|
-
# 方式三:从文件读取(绝对路径,或相对于配置目录)
|
|
14
|
-
# apiTokenFile: /etc/iris/cf-token.txt
|
|
15
|
-
|
|
16
|
-
# Zone ID(不填则自动选择账号下的第一个 zone)
|
|
17
|
-
# zoneId: auto
|
|
@@ -1,99 +0,0 @@
|
|
|
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
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
# MCP 服务器配置
|
|
2
|
-
# 连接外部 MCP 服务器,自动将其工具注入 LLM 工具列表
|
|
3
|
-
# 启动时后台异步连接,不阻塞启动
|
|
4
|
-
#
|
|
5
|
-
# 每个服务器支持以下字段:
|
|
6
|
-
# transport - 传输方式: stdio | sse | streamable-http
|
|
7
|
-
# enabled - 是否启用(默认 true)
|
|
8
|
-
# timeout - 连接/listTools 超时,单位 ms(默认 30000)
|
|
9
|
-
#
|
|
10
|
-
# stdio 模式专用:
|
|
11
|
-
# command - 要执行的命令
|
|
12
|
-
# args - 命令参数数组
|
|
13
|
-
# env - 额外环境变量
|
|
14
|
-
# cwd - 工作目录
|
|
15
|
-
#
|
|
16
|
-
# sse / streamable-http 模式专用:
|
|
17
|
-
# url - MCP 服务器 URL
|
|
18
|
-
# headers - 自定义 HTTP 请求头
|
|
19
|
-
|
|
20
|
-
# servers:
|
|
21
|
-
# # stdio 传输示例(本地进程)
|
|
22
|
-
# filesystem:
|
|
23
|
-
# transport: stdio
|
|
24
|
-
# command: npx
|
|
25
|
-
# args: ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/allowed/dir"]
|
|
26
|
-
# timeout: 30000
|
|
27
|
-
# enabled: true
|
|
28
|
-
#
|
|
29
|
-
# # HTTP 传输示例(远程服务器)
|
|
30
|
-
# remote_tools:
|
|
31
|
-
# transport: streamable-http
|
|
32
|
-
# url: https://mcp.example.com/mcp
|
|
33
|
-
# headers:
|
|
34
|
-
# Authorization: Bearer your-token
|
|
35
|
-
# timeout: 30000
|
|
36
|
-
#
|
|
37
|
-
# # 企微官方文档 MCP(智能表格 + 文档 CRUD,8 个工具)
|
|
38
|
-
# # 在企微管理后台创建智能机器人后,MCP 端点页面可获取 apikey
|
|
39
|
-
# wecom-doc:
|
|
40
|
-
# transport: streamable-http
|
|
41
|
-
# url: "https://qyapi.weixin.qq.com/mcp/robot-doc?apikey=your-mcp-apikey"
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
# 记忆插件配置
|
|
2
|
-
#
|
|
3
|
-
# 启用后,LLM 可通过 memory_search / memory_add / memory_update / memory_delete 工具
|
|
4
|
-
# 读写长期记忆,实现跨会话的信息持久化。
|
|
5
|
-
#
|
|
6
|
-
# 存储后端:SQLite + FTS5 全文检索
|
|
7
|
-
# 数据库文件默认存放在数据目录下的 memory.db
|
|
8
|
-
|
|
9
|
-
# 是否启用记忆
|
|
10
|
-
enabled: false
|
|
11
|
-
|
|
12
|
-
# 数据库路径(相对于数据目录,或绝对路径)
|
|
13
|
-
# dbPath: ./memory.db
|
|
14
|
-
|
|
15
|
-
# ── 自动提取(对话结束后自动从对话中提取值得记住的信息)──
|
|
16
|
-
autoExtract: true
|
|
17
|
-
# 每 N 轮对话后提取一次
|
|
18
|
-
extractInterval: 1
|
|
19
|
-
|
|
20
|
-
# ── 智能检索(每轮对话前自动注入相关记忆到上下文)──
|
|
21
|
-
autoRecall: true
|
|
22
|
-
# 每轮注入记忆的最大大小(字节)
|
|
23
|
-
maxContextBytes: 20480
|
|
24
|
-
# 会话级记忆注入总上限(字节)
|
|
25
|
-
sessionBudgetBytes: 61440
|
|
26
|
-
|
|
27
|
-
# ── 跨会话归纳(定期整理合并冗余记忆)──
|
|
28
|
-
consolidation:
|
|
29
|
-
enabled: true
|
|
30
|
-
# 两次归纳之间的最小间隔(小时)
|
|
31
|
-
minHours: 24
|
|
32
|
-
# 触发归纳的最少新会话数
|
|
33
|
-
minSessions: 3
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
# 模式配置
|
|
2
|
-
# 不同模式可定义不同的系统提示词和工具策略
|
|
3
|
-
# 通过 /mode 命令切换模式
|
|
4
|
-
#
|
|
5
|
-
# 每个模式支持以下字段:
|
|
6
|
-
# description - 模式描述(供人类和 LLM 了解用途)
|
|
7
|
-
# systemPrompt - 该模式的系统提示词(覆盖默认提示词)
|
|
8
|
-
# tools - 工具过滤规则
|
|
9
|
-
# include - 白名单:仅允许这些工具(优先于 exclude)
|
|
10
|
-
# exclude - 黑名单:排除这些工具
|
|
11
|
-
#
|
|
12
|
-
# 模式名 "default" 为内置默认模式(全部工具可用),无需定义
|
|
13
|
-
|
|
14
|
-
# code:
|
|
15
|
-
# description: "代码开发模式"
|
|
16
|
-
# systemPrompt: "你是一个专注于代码开发的 AI 助手。"
|
|
17
|
-
# tools:
|
|
18
|
-
# exclude: [memory_add, memory_delete]
|
|
19
|
-
#
|
|
20
|
-
# readonly:
|
|
21
|
-
# description: "只读分析模式 — 只能读取文件和搜索,不能修改"
|
|
22
|
-
# tools:
|
|
23
|
-
# include: [read_file, search_in_files, find_files, list_files, memory_search, get_current_time]
|
|
24
|
-
#
|
|
25
|
-
# chat:
|
|
26
|
-
# description: "纯聊天模式 — 不使用任何文件操作工具"
|
|
27
|
-
# tools:
|
|
28
|
-
# include: [get_current_time]
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
# 多端互联配置
|
|
2
|
-
# 启用后可从远程设备控制本 Iris 实例
|
|
3
|
-
|
|
4
|
-
# 直连模式:启动 WebSocket 服务器
|
|
5
|
-
# enabled: true
|
|
6
|
-
# port: 9100
|
|
7
|
-
# host: 0.0.0.0
|
|
8
|
-
# token: your-secret-token-here
|
|
9
|
-
|
|
10
|
-
# 局域网发现:启用后可被同网络的 Iris 实例自动发现
|
|
11
|
-
# 发现使用 UDP 端口 (port + 1),默认 9101
|
|
12
|
-
# 发现响应不包含 token,安全可靠
|
|
13
|
-
|
|
14
|
-
# 已保存的远程连接(/remote 命令中显示为快捷列表)
|
|
15
|
-
# remotes:
|
|
16
|
-
# my-linux:
|
|
17
|
-
# url: ws://192.168.1.100:9100
|
|
18
|
-
# token: my-secret-token
|
|
19
|
-
# my-server:
|
|
20
|
-
# url: ws://10.0.0.5:9100
|
|
21
|
-
|
|
22
|
-
# 中继模式:注册到中继服务器(用于 NAT 穿透)
|
|
23
|
-
# relay:
|
|
24
|
-
# url: wss://your-relay-server:9001
|
|
25
|
-
# nodeId: my-iris
|
|
26
|
-
# token: relay-secret-token
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
# OCR 配置(可选)
|
|
2
|
-
#
|
|
3
|
-
# 当主模型不支持图片输入(supportsVision: false)时,
|
|
4
|
-
# Iris 会调用这里配置的 vision 模型提取图片中的文字和内容,
|
|
5
|
-
# 再把提取结果作为文本注入主对话模型的上下文。
|
|
6
|
-
#
|
|
7
|
-
# 何时需要配置:
|
|
8
|
-
# - 主模型是纯文本模型(如 gpt-4o-mini 文本版),但用户会上传图片
|
|
9
|
-
# - 主模型本身支持图片输入时,通常不需要配置 OCR
|
|
10
|
-
#
|
|
11
|
-
# 删除整个文件或注释掉所有字段即可关闭 OCR 回退。
|
|
12
|
-
# 关闭后,不支持图片的模型会收到"无法查看图片内容"的占位提示。
|
|
13
|
-
|
|
14
|
-
# provider: openai-compatible # 当前仅支持 openai-compatible
|
|
15
|
-
# apiKey: your-api-key-here # OCR 模型的 API Key
|
|
16
|
-
# baseUrl: https://api.openai.com/v1 # API 基地址
|
|
17
|
-
# model: gpt-4o-mini # 推荐使用轻量 vision 模型,成本低、速度快
|
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
# 平台配置
|
|
2
|
-
|
|
3
|
-
# 类型: console | discord | telegram | web | weixin | wxwork | lark | qq
|
|
4
|
-
# 注意:console / web / telegram / cron 由随发行包内嵌的 extensions 注册;lark / discord / qq / wxwork / weixin 为可选 extension,使用前需先安装。
|
|
5
|
-
# 支持单平台或多平台同时启动:
|
|
6
|
-
# type: console # 单平台
|
|
7
|
-
# type: [console, web] # 多平台同时启动
|
|
8
|
-
type: console
|
|
9
|
-
|
|
10
|
-
console:
|
|
11
|
-
# 是否在对话页面展开显示 sub_agent 执行过程中的子工具调用(默认关闭)
|
|
12
|
-
# expandSubAgentTools: true
|
|
13
|
-
|
|
14
|
-
# 对码系统配置(可选,平台层访问控制)
|
|
15
|
-
# dmPolicy:
|
|
16
|
-
# pairing = 需对码验证(默认,通过 /invite 生成码)
|
|
17
|
-
# allowlist = 仅配置的 allowFrom 成员可用
|
|
18
|
-
# open = 任何人均可私聊
|
|
19
|
-
pairing:
|
|
20
|
-
dmPolicy: pairing
|
|
21
|
-
# admin: "telegram:123456" # 可直接指定管理员(跳过首次对码)
|
|
22
|
-
# allowFrom: ["telegram:123"] # 预设白名单
|
|
23
|
-
|
|
24
|
-
discord:
|
|
25
|
-
# 该平台由可选 extension extensions/discord/ 提供;发行包默认不内嵌,使用前先执行 iris ext install discord
|
|
26
|
-
token: your-discord-bot-token
|
|
27
|
-
|
|
28
|
-
telegram:
|
|
29
|
-
# 该平台由内嵌 extension extensions/telegram/ 提供;发行包默认附带,无需单独安装
|
|
30
|
-
token: your-telegram-bot-token
|
|
31
|
-
# 是否在流式回复中展示工具执行状态(默认 true)
|
|
32
|
-
# showToolStatus: false
|
|
33
|
-
# 群聊中是否要求 @机器人 后才响应(默认 true)
|
|
34
|
-
# groupMentionRequired: true
|
|
35
|
-
|
|
36
|
-
web:
|
|
37
|
-
port: 8192
|
|
38
|
-
# 127.0.0.1 = 仅本机访问(配合 Nginx 反代使用,推荐)
|
|
39
|
-
# 0.0.0.0 = 允许所有网络接口访问(本地开发/无反代时使用)
|
|
40
|
-
host: 127.0.0.1
|
|
41
|
-
# API 全局认证令牌(可选,未配置时不启用)
|
|
42
|
-
# authToken: your-secret-token-here
|
|
43
|
-
# 管理接口认证令牌(推荐)
|
|
44
|
-
# managementToken: your-management-token-here
|
|
45
|
-
|
|
46
|
-
wxwork:
|
|
47
|
-
# 该平台由可选 extension extensions/wxwork/ 提供;发行包默认不内嵌,使用前先执行 iris ext install wxwork
|
|
48
|
-
# 企业微信智能机器人 Bot ID 和 Secret
|
|
49
|
-
# 在企业微信管理后台 → 应用管理 → 智能机器人 中创建并获取
|
|
50
|
-
# 文档: https://developer.work.weixin.qq.com/document/path/101463
|
|
51
|
-
botId: your-bot-id
|
|
52
|
-
secret: your-bot-secret
|
|
53
|
-
# 是否在流式回复中展示工具执行状态(默认 true)
|
|
54
|
-
# showToolStatus: false
|
|
55
|
-
|
|
56
|
-
lark:
|
|
57
|
-
# 该平台由可选 extension extensions/lark/ 提供;发行包默认不内嵌,使用前先执行 iris ext install lark
|
|
58
|
-
# 飞书自建应用 App ID 和 App Secret
|
|
59
|
-
# 在飞书开放平台创建自建应用,开启「机器人」能力后获取
|
|
60
|
-
# 文档: https://open.feishu.cn/document/home/develop-a-bot-in-5-minutes
|
|
61
|
-
appId: your-app-id
|
|
62
|
-
appSecret: your-app-secret
|
|
63
|
-
# 是否在流式回复中展示工具执行状态(默认 true)
|
|
64
|
-
# showToolStatus: false
|
|
65
|
-
# 可选:Webhook 模式用的验证 token(WebSocket 模式不需要)
|
|
66
|
-
# verificationToken: your-verification-token
|
|
67
|
-
# 可选:Webhook 模式用的加密 key(WebSocket 模式不需要)
|
|
68
|
-
# encryptKey: your-encrypt-key
|
|
69
|
-
|
|
70
|
-
weixin:
|
|
71
|
-
# 该平台由可选 extension extensions/weixin/ 提供;发行包默认不内嵌,使用前先执行 iris ext install weixin
|
|
72
|
-
# 普通微信(WeChat),基于腾讯官方 ilink 协议
|
|
73
|
-
# 首次启动时会自动弹出二维码,用微信扫码即可完成登录
|
|
74
|
-
# 登录成功后 Token 自动缓存到 IRIS_DATA_DIR/configs/weixin-auth.json,无需手动配置
|
|
75
|
-
#
|
|
76
|
-
# 可选:手动指定 Bot Token(如从其他实例迁移)
|
|
77
|
-
# botToken: your-bot-token
|
|
78
|
-
# 可选:覆盖 API 基地址
|
|
79
|
-
# baseUrl: https://ilinkai.weixin.qq.com
|
|
80
|
-
# 是否在回复中展示工具执行状态(默认 true)
|
|
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
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
# =========================================================
|
|
2
|
-
# 插件配置
|
|
3
|
-
#
|
|
4
|
-
# 配置要加载的 Iris 插件。
|
|
5
|
-
# 插件可以扩展工具、模式、钩子,也可以在 preBootstrap 阶段注册
|
|
6
|
-
# 自定义 LLM / Storage / Memory / OCR Provider 与自定义平台。
|
|
7
|
-
#
|
|
8
|
-
# 插件来源:
|
|
9
|
-
# - local(默认):按以下顺序查找
|
|
10
|
-
# 1. ~/.iris/extensions/<name>/ # 已安装 extension
|
|
11
|
-
# 2. <repo>/extensions/<name>/ # 源码仓库内收录的 extension
|
|
12
|
-
# - npm:从 npm 包 iris-plugin-<name> 加载
|
|
13
|
-
#
|
|
14
|
-
# priority:
|
|
15
|
-
# - 数值越大越先执行
|
|
16
|
-
# - 影响 preBootstrap、activate、hook 链执行顺序
|
|
17
|
-
#
|
|
18
|
-
# config:
|
|
19
|
-
# - 会与插件目录或 extension 根目录中的 config.yaml 做浅合并
|
|
20
|
-
# - 同名字段以这里的值为准
|
|
21
|
-
#
|
|
22
|
-
# inline 插件:
|
|
23
|
-
# - 只支持在运行时通过 bootstrap({ inlinePlugins }) 注入
|
|
24
|
-
# - 不能在 plugins.yaml 中直接声明
|
|
25
|
-
#
|
|
26
|
-
# extension 目录结构(plugin 贡献):
|
|
27
|
-
# ~/.iris/extensions/
|
|
28
|
-
# my-extension/
|
|
29
|
-
# manifest.json # extension 清单
|
|
30
|
-
# index.ts # 插件入口(或在 manifest.plugin.entry 中指定)
|
|
31
|
-
# config.yaml # 插件默认配置(可选)
|
|
32
|
-
# ============================================================
|
|
33
|
-
|
|
34
|
-
# plugins:
|
|
35
|
-
# # 本地插件示例
|
|
36
|
-
# - name: my-tool
|
|
37
|
-
# enabled: true
|
|
38
|
-
# priority: 100
|
|
39
|
-
# config:
|
|
40
|
-
# apiKey: "sk-xxx"
|
|
41
|
-
#
|
|
42
|
-
# # npm 包插件示例
|
|
43
|
-
# - name: rag
|
|
44
|
-
# type: npm
|
|
45
|
-
# enabled: true
|
|
46
|
-
# priority: 50
|
|
47
|
-
#
|
|
48
|
-
# # 禁用某个插件
|
|
49
|
-
# - name: some-plugin
|
|
50
|
-
# enabled: false
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
# 存储配置
|
|
2
|
-
#
|
|
3
|
-
# 会话数据的持久化后端,支持两种模式:
|
|
4
|
-
#
|
|
5
|
-
# json-file(默认):
|
|
6
|
-
# - 每个会话一个 .json 文件,存放在 dir 目录下
|
|
7
|
-
# - 可直接阅读/编辑 JSON 文件,适合小规模使用
|
|
8
|
-
# - 并发控制通过 per-session 写锁实现
|
|
9
|
-
#
|
|
10
|
-
# sqlite:
|
|
11
|
-
# - 单个 SQLite 数据库文件,WAL 模式,天然支持并发
|
|
12
|
-
# - 大量会话时性能更优
|
|
13
|
-
# - 需要 SQLite 工具查看数据
|
|
14
|
-
|
|
15
|
-
# 类型: json-file | sqlite
|
|
16
|
-
type: json-file
|
|
17
|
-
|
|
18
|
-
# 会话数据目录(默认 ~/.iris/sessions/,type 为 json-file 时使用)
|
|
19
|
-
# dir: ~/.iris/sessions
|
|
20
|
-
|
|
21
|
-
# SQLite 数据库路径(默认 ~/.iris/iris.db,type 为 sqlite 时使用)
|
|
22
|
-
# dbPath: ~/.iris/iris.db
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
# 子代理配置
|
|
2
|
-
# 定义主 LLM 可委派的子代理类型。
|
|
3
|
-
#
|
|
4
|
-
# 此文件在首次运行时自动创建,包含开箱即用的默认子代理(general-purpose / explore)。
|
|
5
|
-
# 可直接编辑修改、新增或禁用子代理类型。
|
|
6
|
-
|
|
7
|
-
# ── 全局设置(优先级高于各类型的独立设置) ──
|
|
8
|
-
# enabled - 子代理功能总开关(默认 true);false 时一键禁用全部子代理
|
|
9
|
-
# stream - 全局流式输出开关;设置后覆盖所有类型的 stream;不设置则各类型自行决定
|
|
10
|
-
#
|
|
11
|
-
# ── 类型独立设置(各 type 内部) ──
|
|
12
|
-
# enabled - 是否启用此类型(默认 true);全局 enabled 为 false 时此字段无效
|
|
13
|
-
# stream - 此类型是否使用流式输出(默认 false);全局 stream 有值时被覆盖
|
|
14
|
-
# description - 面向主 LLM 的用途说明(展示在 sub_agent 工具描述中)
|
|
15
|
-
# systemPrompt - 子代理的系统提示词
|
|
16
|
-
# allowedTools - 工具白名单(与 excludedTools 互斥,优先)
|
|
17
|
-
# excludedTools - 工具黑名单
|
|
18
|
-
# modelName - 固定使用的模型名称;不写时跟随当前活动模型
|
|
19
|
-
# parallel - 当前类型的 sub_agent 调用是否按 parallel 工具参与调度(默认 false)
|
|
20
|
-
# background - 是否默认后台运行(默认 false),可被调用时的 run_in_background 参数覆盖
|
|
21
|
-
# maxToolRounds - 最大工具执行轮次
|
|
22
|
-
|
|
23
|
-
enabled: true
|
|
24
|
-
stream: true
|
|
25
|
-
|
|
26
|
-
types:
|
|
27
|
-
general-purpose:
|
|
28
|
-
enabled: true
|
|
29
|
-
description: "执行需要多步工具操作的复杂子任务。适合承接相对独立的子任务。"
|
|
30
|
-
systemPrompt: "你是苦力1号,高级编程专家,外包程序员。负责独立完成委派给你的子任务。请专注于完成任务并返回清晰的结果。严格按照指令干活。尽全力完成指令。"
|
|
31
|
-
excludedTools:
|
|
32
|
-
- sub_agent
|
|
33
|
-
stream: true
|
|
34
|
-
parallel: false
|
|
35
|
-
# modelName: gemini_flash
|
|
36
|
-
maxToolRounds: 200
|
|
37
|
-
|
|
38
|
-
explore:
|
|
39
|
-
enabled: true
|
|
40
|
-
description: "只读搜索和阅读文件、执行查询命令。不做修改,只返回发现的信息。"
|
|
41
|
-
systemPrompt: "你是一个只读探索苦力,负责搜索和阅读信息。不要修改任何文件,只返回你发现的内容。"
|
|
42
|
-
allowedTools:
|
|
43
|
-
- read_file
|
|
44
|
-
- search_in_files
|
|
45
|
-
- find_files
|
|
46
|
-
- list_files
|
|
47
|
-
- shell # Windows; Linux/macOS 会自动映射为 bash
|
|
48
|
-
- bash # Linux/macOS; Windows 会自动映射为 shell
|
|
49
|
-
stream: true
|
|
50
|
-
parallel: true
|
|
51
|
-
# modelName: gpt4o_mini
|
|
52
|
-
maxToolRounds: 200
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
# 上下文压缩配置(/compact 指令)
|
|
2
|
-
|
|
3
|
-
# 总结 AI 的系统提示词
|
|
4
|
-
systemPrompt: |
|
|
5
|
-
You are a conversation compressor. Your task is to read the conversation history and produce a dense context summary.
|
|
6
|
-
|
|
7
|
-
The summary must:
|
|
8
|
-
1. State what the user is working on (project, goal)
|
|
9
|
-
2. List key file paths and code changes made
|
|
10
|
-
3. Note important decisions and their reasons
|
|
11
|
-
4. Describe current state and any pending tasks
|
|
12
|
-
5. Preserve technical details (function names, config keys, error messages, etc.)
|
|
13
|
-
|
|
14
|
-
Rules:
|
|
15
|
-
- Write in the same language as the conversation
|
|
16
|
-
- Be information-dense — every sentence should contain useful context
|
|
17
|
-
- Do NOT include pleasantries, greetings, or meta-commentary
|
|
18
|
-
- Output ONLY the summary text
|
|
19
|
-
|
|
20
|
-
# 追加在对话末尾的用户指令(要求 AI 生成摘要)
|
|
21
|
-
userPrompt: "Please summarize the conversation above into a concise context summary."
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
# 系统配置
|
|
2
|
-
|
|
3
|
-
# 系统提示词(留空则使用默认)
|
|
4
|
-
systemPrompt: ""
|
|
5
|
-
|
|
6
|
-
# 工具执行最大轮次
|
|
7
|
-
maxToolRounds: 200
|
|
8
|
-
|
|
9
|
-
# 流式输出
|
|
10
|
-
stream: true
|
|
11
|
-
|
|
12
|
-
# LLM 调用报错自动重试(默认开启)
|
|
13
|
-
retryOnError: true
|
|
14
|
-
|
|
15
|
-
# 最大重试次数(默认 3)
|
|
16
|
-
maxRetries: 3
|
|
17
|
-
|
|
18
|
-
# 子代理最大嵌套深度(默认 3)
|
|
19
|
-
# maxAgentDepth: 3
|
|
20
|
-
|
|
21
|
-
# 默认模式(需与 modes.yaml 中定义的名称对应)
|
|
22
|
-
# defaultMode: code
|
|
23
|
-
|
|
24
|
-
# 记录 LLM 请求/响应日志(调试用,默认关闭)
|
|
25
|
-
# 开启后每次 LLM 调用会在 ~/.iris/logs/ 生成配对的请求和响应文件:
|
|
26
|
-
# request_<timestamp>.json — 请求(URL、headers、body)
|
|
27
|
-
# response_<timestamp>.json — 非流式响应原文
|
|
28
|
-
# response_<timestamp>.txt — 流式响应原文(SSE)
|
|
29
|
-
# logRequests: true
|
|
30
|
-
|
|
31
|
-
# 异步子代理开关(默认关闭)
|
|
32
|
-
# 启用后,子代理可在后台异步执行,主对话不阻塞等待子代理完成。
|
|
33
|
-
# 需同时在 sub_agents.yaml 中定义至少一个子代理类型才会真正生效。
|
|
34
|
-
# asyncSubAgents: true
|
|
35
|
-
|
|
36
|
-
# 兼容旧配置:skillPreamble 仍可被读取,但当前版本已不再使用。
|
|
37
|
-
# 说明:Skill 已改为通过 read_skill 工具按需读取,不再拼接到用户消息末尾。
|
|
38
|
-
|
|
39
|
-
# Skill 定义(按需加载的提示词模块)
|
|
40
|
-
# 当前实现会先把 Skill 的 name / path / description 暴露给模型,
|
|
41
|
-
# 模型需要完整 Skill 内容时,再通过 read_skill(path) 工具按需读取。
|
|
42
|
-
# 名称规则:仅允许 ASCII 字母、数字、下划线、连字符,最长 64 字符
|
|
43
|
-
#
|
|
44
|
-
# 除了在此处内联定义,也可以将 SKILL.md 放在以下目录:
|
|
45
|
-
# ~/.iris/skills/<name>/SKILL.md — 全局 Skill
|
|
46
|
-
# .agents/skills/<name>/SKILL.md — 项目级 Skill(cwd 下)
|
|
47
|
-
# 文件格式遵循 Agent Skills 开放标准(YAML frontmatter + Markdown 正文)
|
|
48
|
-
# 同名时此处的内联定义优先于文件系统中的定义。
|
|
49
|
-
# 内联 Skill 没有真实的 SKILL.md 文件,因此系统会为它生成形如 inline:<name> 的路径标识,
|
|
50
|
-
# 供 read_skill 工具作为唯一参数使用。
|
|
51
|
-
# skills:
|
|
52
|
-
# code-review:
|
|
53
|
-
# description: "代码审查专家"
|
|
54
|
-
# content: |
|
|
55
|
-
# 你是一个代码审查专家。请对用户的代码进行详细审查,
|
|
56
|
-
# 关注代码质量、安全性、性能和可维护性。
|
|
57
|
-
#
|
|
58
|
-
# translator:
|
|
59
|
-
# description: "中英翻译助手"
|
|
60
|
-
# content: |
|
|
61
|
-
# 请将用户的内容翻译为对应的另一种语言(中→英 或 英→中)。
|
|
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
|
|
@@ -1,276 +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
|
-
# ── 命令执行工具 ──
|
|
33
|
-
# Windows 使用 shell (PowerShell),Linux/macOS 使用 bash
|
|
34
|
-
# 两者共享同一套 limits,配置 shell 或 bash 均可
|
|
35
|
-
shell:
|
|
36
|
-
defaultTimeout: 30000 # 默认超时 (毫秒)
|
|
37
|
-
maxOutputChars: 50000 # stdout/stderr 各自的最大字符数
|
|
38
|
-
maxBuffer: 10485760 # Node.js exec maxBuffer 字节数 (10MB)
|
|
39
|
-
|
|
40
|
-
# ─── 全局审批开关(最高优先级) ───
|
|
41
|
-
#
|
|
42
|
-
# 全部自动批准(跳过一类 + 二类审批)
|
|
43
|
-
# autoApproveAll: true
|
|
44
|
-
#
|
|
45
|
-
# 仅跳过一类审批(Y/N 确认),二类审批(diff 预览)仍生效
|
|
46
|
-
# autoApproveConfirmation: true
|
|
47
|
-
#
|
|
48
|
-
# 仅跳过二类审批(diff 预览),一类审批(Y/N 确认)仍生效
|
|
49
|
-
# autoApproveDiff: true
|
|
50
|
-
#
|
|
51
|
-
# ─── 禁用工具列表 ───
|
|
52
|
-
#
|
|
53
|
-
# 列出的工具不会发送给 LLM,LLM 无法调用这些工具。
|
|
54
|
-
# disabledTools:
|
|
55
|
-
# - memory_search
|
|
56
|
-
# - memory_add
|
|
57
|
-
#
|
|
58
|
-
# ─── 按工具配置执行策略 ───
|
|
59
|
-
#
|
|
60
|
-
# 下方按工具名称配置执行策略。
|
|
61
|
-
# 未配置的工具默认需要手动确认。
|
|
62
|
-
#
|
|
63
|
-
# autoApprove: true -> 工具调用后直接执行
|
|
64
|
-
# autoApprove: false -> 工具执行前需要手动确认
|
|
65
|
-
|
|
66
|
-
# 只读工具:默认直接执行
|
|
67
|
-
read_file:
|
|
68
|
-
autoApprove: true
|
|
69
|
-
search_in_files:
|
|
70
|
-
autoApprove: true
|
|
71
|
-
# 如需对 mode: replace 打开 diff 审批页,可改为 false,并开启 showApprovalView
|
|
72
|
-
showApprovalView: true
|
|
73
|
-
find_files:
|
|
74
|
-
autoApprove: true
|
|
75
|
-
list_files:
|
|
76
|
-
autoApprove: true
|
|
77
|
-
read_skill:
|
|
78
|
-
# Skill 读取工具是只读操作,建议默认直接执行
|
|
79
|
-
autoApprove: true
|
|
80
|
-
|
|
81
|
-
# 修改类工具:默认需要确认
|
|
82
|
-
write_file:
|
|
83
|
-
autoApprove: false
|
|
84
|
-
# Console TUI 中是否打开 diff 审批视图;设为 false 时退回到底部 Y/N 确认提示
|
|
85
|
-
showApprovalView: true
|
|
86
|
-
apply_diff:
|
|
87
|
-
autoApprove: false
|
|
88
|
-
# Console TUI 中是否打开 diff 审批视图;设为 false 时退回到底部 Y/N 确认提示
|
|
89
|
-
showApprovalView: true
|
|
90
|
-
insert_code:
|
|
91
|
-
autoApprove: false
|
|
92
|
-
showApprovalView: true
|
|
93
|
-
delete_code:
|
|
94
|
-
autoApprove: false
|
|
95
|
-
showApprovalView: true
|
|
96
|
-
delete_file:
|
|
97
|
-
autoApprove: false
|
|
98
|
-
create_directory:
|
|
99
|
-
autoApprove: false
|
|
100
|
-
|
|
101
|
-
# ─────────────────────────────────────────────────────────────
|
|
102
|
-
# 命令执行工具配置
|
|
103
|
-
# ─────────────────────────────────────────────────────────────
|
|
104
|
-
#
|
|
105
|
-
# Windows 使用 shell (PowerShell),Linux/macOS 使用 bash。
|
|
106
|
-
# 根据你的平台配置对应的 key(shell 或 bash),两者支持完全相同的选项。
|
|
107
|
-
#
|
|
108
|
-
# 除了 autoApprove 开关外,命令工具还支持细粒度的命令模式匹配:
|
|
109
|
-
#
|
|
110
|
-
# allowPatterns — 白名单:匹配的命令自动执行(即使 autoApprove: false)
|
|
111
|
-
# denyPatterns — 黑名单:匹配的命令必须确认(即使 autoApprove: true)
|
|
112
|
-
#
|
|
113
|
-
# 判定优先级:denyPatterns > allowPatterns > autoApprove
|
|
114
|
-
#
|
|
115
|
-
# 支持的模式语法:
|
|
116
|
-
# - 精确匹配: "git status" 仅匹配该完整命令
|
|
117
|
-
# - 通配符 *: "git log *" 匹配 git log 后跟任意参数
|
|
118
|
-
# - 通配符 ?: "ls -?" 匹配 ls 后跟单字母选项
|
|
119
|
-
# - 前缀匹配: "npm run *" 匹配所有 npm run 子命令
|
|
120
|
-
# - 正则表达式:"/^cat\s+\S+$/" 以 / 包裹按正则解析
|
|
121
|
-
#
|
|
122
|
-
# ── 用法示例 ──
|
|
123
|
-
#
|
|
124
|
-
# 场景 A:默认拒绝,仅放行指定命令(推荐)
|
|
125
|
-
# autoApprove: false
|
|
126
|
-
# allowPatterns:
|
|
127
|
-
# - "git status*"
|
|
128
|
-
# - "ls *"
|
|
129
|
-
#
|
|
130
|
-
# 场景 B:默认放行,拦截危险命令
|
|
131
|
-
# autoApprove: true
|
|
132
|
-
# denyPatterns:
|
|
133
|
-
# - "rm *"
|
|
134
|
-
# - "/sudo\s+/"
|
|
135
|
-
#
|
|
136
|
-
# 场景 C:混合使用(白名单 + 黑名单 + 兜底)
|
|
137
|
-
# autoApprove: false
|
|
138
|
-
# allowPatterns:
|
|
139
|
-
# - "git *"
|
|
140
|
-
# denyPatterns:
|
|
141
|
-
# - "git push *" # 虽然 git * 在白名单,但 push 被黑名单拦截
|
|
142
|
-
#
|
|
143
|
-
shell:
|
|
144
|
-
autoApprove: false
|
|
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
|
-
#
|
|
166
|
-
# ── 白名单(取消注释以启用) ──
|
|
167
|
-
allowPatterns:
|
|
168
|
-
# 只读 / 查看类
|
|
169
|
-
# - "ls *" # 列出文件
|
|
170
|
-
# - "cat *" # 查看文件内容
|
|
171
|
-
# - "head *" # 查看文件开头
|
|
172
|
-
# - "tail *" # 查看文件结尾
|
|
173
|
-
# - "wc *" # 统计行数/字数
|
|
174
|
-
# - "which *" # 查找命令路径
|
|
175
|
-
# - "echo *" # 输出信息
|
|
176
|
-
# - "pwd" # 当前目录
|
|
177
|
-
# - "env" # 查看环境变量
|
|
178
|
-
#
|
|
179
|
-
# 搜索类
|
|
180
|
-
# - "grep *" # 搜索文本
|
|
181
|
-
# - "find *" # 查找文件
|
|
182
|
-
# - "rg *" # ripgrep 搜索
|
|
183
|
-
# - "fd *" # fd 查找
|
|
184
|
-
#
|
|
185
|
-
# Git 只读操作
|
|
186
|
-
# - "git status*" # 状态查看
|
|
187
|
-
# - "git log *" # 日志查看
|
|
188
|
-
# - "git diff*" # 差异查看
|
|
189
|
-
# - "git branch*" # 分支查看
|
|
190
|
-
# - "git show *" # 查看提交
|
|
191
|
-
# - "git remote -v" # 查看远程
|
|
192
|
-
#
|
|
193
|
-
# 包管理器(只读)
|
|
194
|
-
# - "npm list*" # 查看依赖
|
|
195
|
-
# - "npm run *" # 运行脚本
|
|
196
|
-
# - "bun run *" # bun 运行脚本
|
|
197
|
-
#
|
|
198
|
-
# 自定义正则
|
|
199
|
-
# - "/^(node|bun|npx|tsx)\\s+/" # 允许 node/bun/npx/tsx 命令
|
|
200
|
-
|
|
201
|
-
# ── 黑名单(取消注释以启用) ──
|
|
202
|
-
denyPatterns:
|
|
203
|
-
# 危险操作
|
|
204
|
-
# - "rm -rf *" # 递归强制删除
|
|
205
|
-
# - "/^sudo\\s+/" # 所有 sudo 命令
|
|
206
|
-
# - "/^chmod\\s+/" # 修改权限
|
|
207
|
-
# - "/^chown\\s+/" # 修改所有者
|
|
208
|
-
# - "dd *" # 磁盘操作
|
|
209
|
-
# - "/\\|\\s*sh/" # 管道到 sh 执行
|
|
210
|
-
# - "curl * | *" # curl 管道执行
|
|
211
|
-
#
|
|
212
|
-
# Git 危险操作
|
|
213
|
-
# - "git push *" # 推送
|
|
214
|
-
# - "git reset --hard*" # 硬重置
|
|
215
|
-
# - "git clean -fd*" # 强制清理
|
|
216
|
-
#
|
|
217
|
-
# 包管理器写操作
|
|
218
|
-
# - "npm install*" # 安装依赖
|
|
219
|
-
# - "npm publish*" # 发布包
|
|
220
|
-
|
|
221
|
-
# Linux/macOS 用户:将上方 shell: 改为 bash:,配置选项完全相同
|
|
222
|
-
# bash:
|
|
223
|
-
# autoApprove: false
|
|
224
|
-
# # classifier:
|
|
225
|
-
# # enabled: true
|
|
226
|
-
|
|
227
|
-
sub_agent:
|
|
228
|
-
autoApprove: false
|
|
229
|
-
|
|
230
|
-
# 全局变量管理:读写好感度、信任度等跨对话持久变量
|
|
231
|
-
manage_variables:
|
|
232
|
-
autoApprove: true
|
|
233
|
-
|
|
234
|
-
# ─────────────────────────────────────────────────────────────
|
|
235
|
-
# Computer Use 工具配置(需在 computer_use.yaml 中启用)
|
|
236
|
-
# ─────────────────────────────────────────────────────────────
|
|
237
|
-
#
|
|
238
|
-
# 以下工具在 computer_use.yaml 的 enabled: true 时自动注册。
|
|
239
|
-
# 所有坐标参数均为 0-999 归一化值,由工具内部转换为实际像素。
|
|
240
|
-
#
|
|
241
|
-
# 只读 / 低风险操作:建议自动批准
|
|
242
|
-
# get_screenshot:
|
|
243
|
-
# autoApprove: true
|
|
244
|
-
# click_at:
|
|
245
|
-
# autoApprove: true
|
|
246
|
-
# hover_at:
|
|
247
|
-
# autoApprove: true
|
|
248
|
-
# scroll_document:
|
|
249
|
-
# autoApprove: true
|
|
250
|
-
# scroll_at:
|
|
251
|
-
# autoApprove: true
|
|
252
|
-
# go_back:
|
|
253
|
-
# autoApprove: true
|
|
254
|
-
# go_forward:
|
|
255
|
-
# autoApprove: true
|
|
256
|
-
# search:
|
|
257
|
-
# autoApprove: true
|
|
258
|
-
# navigate:
|
|
259
|
-
# autoApprove: true
|
|
260
|
-
# wait_5_seconds:
|
|
261
|
-
# autoApprove: true
|
|
262
|
-
#
|
|
263
|
-
# 输入类操作:按需决定是否自动批准
|
|
264
|
-
# type_text_at:
|
|
265
|
-
# autoApprove: true
|
|
266
|
-
# key_combination:
|
|
267
|
-
# autoApprove: false # 按键组合可能触发系统级操作,建议手动确认
|
|
268
|
-
# drag_and_drop:
|
|
269
|
-
# autoApprove: false
|
|
270
|
-
|
|
271
|
-
# 如需启用其他工具(记忆、MCP 等),请按工具名补充配置。
|
|
272
|
-
# 例如:
|
|
273
|
-
# memory_search:
|
|
274
|
-
# autoApprove: true
|
|
275
|
-
# mcp__my_server__my_tool:
|
|
276
|
-
# autoApprove: false
|