irises 1.0.6 → 1.0.8

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "irises",
3
- "version": "1.0.6",
3
+ "version": "1.0.8",
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.6",
14
- "irises-linux-x64": "1.0.6",
15
- "irises-darwin-arm64": "1.0.6",
16
- "irises-windows-x64": "1.0.6",
17
- "irises-linux-arm64": "1.0.6"
13
+ "irises-darwin-x64": "1.0.8",
14
+ "irises-linux-x64": "1.0.8",
15
+ "irises-darwin-arm64": "1.0.8",
16
+ "irises-windows-x64": "1.0.8",
17
+ "irises-linux-arm64": "1.0.8"
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`
@@ -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