Features · KIP 0.9.5-beta.1
它能做什么,和它被允许做什么
这是当前版本全部能力的真实边界。
包括它做不到的,和它刻意不做的。
01 / PERMISSION PIPELINE
六道关,一条路
内置工具、技能工具、插件工具、MCP 工具——全部走同一条路。任何一关拒绝,后面就不会发生。
- 任务策略:越权直接拒绝;计划模式不放宽任何权限
- 预执行守卫:桌面动作、联网、文件写入各有独立守卫
- 生命周期钩子门禁:同步可拒绝,抛错或非法返回值即阻止
- 权限判定:插件 / MCP / 联网各自独立,不共用一层
- 一次性审批:workspace 模式逐次确认,没有「记住选择」
- 执行:前五关全过,工具函数才会被调用

02 / TOOL PRESETS
三档,只填空缺
48 个工具、20 个开关收敛成三档。安全档与出厂行为逐位一致,并且这一点由测试拿真实的示例配置对照锁定——有人改了预设却忘了同步示例配置,测试立刻失败。
- 预设只是默认值来源,只填空缺,绝不覆盖你显式写过的值
- 未知档位直接拒绝,不静默回退到安全档
- 切换档位只写 tool_preset 一个键,夹带其它字段一律 400
- 切换档位写入安全审计;界面不硬编码任何一档的开关组合,理由全部来自服务端

03 / EXTENSIONS
四种加法,四种风险
四个扩展位对应四种完全不同的风险面,因此不共用一层判定——混在一起会让审计日志分不清一次拒绝挡的到底是什么。
- 技能:渐进披露的说明文档,只能提供说明,不能提供可调用的工具
- MCP:跨进程协议,只在 trusted 模式才可能生效,任何档位都不默认开
- 插件:同进程 ESM 模块,声明即全集,同名必须显式 reject / yield,卸载是全量替换
- 钩子:只能是宿主进程内注册的 JS 函数,不接受文件路径、命令行或来自模型/HTTP 的代码
- 命令是唯一真源:API 契约与前端输入框都从同一份注册表派生,避免两处漂移

04 / NETWORK BOUNDARY
能收窄的,都收窄了
联网工具的默认状态是不存在。web_fetch / web_search 在开关关闭时完全不注册,模型在工具清单里根本看不到它们。
- 只允许 http/https,拒绝 URL 内嵌凭据
- 默认拒绝回环、私网、链路本地与云元数据端点
- DNS 重绑定缓解:全部解析地址逐一校验,连接固定到已验证地址
- 响应体按上限流式截断,超时用信号中断;返回体标记为不可信
- 浏览器自动化用隔离临时 profile,结束即删;绝不复用你的浏览器 profile 或 cookie,阻断 Service Worker
- 搜索提供方 off / mcp / http;未知凭据时状态记为不可用,绝不返回编造的结果

05 / LOCAL DATA
你的数据,和你的密钥
聊天、记忆、配置、执行记录与用量都在本机应用数据目录。备份不是「复制一个文件夹」——它有递归哈希清单、SQLite 一致快照、恢复前验证,并且恢复会保留旧数据。
- 密钥、token/password/secret、MCP 环境变量与请求头:DPAPI 当前用户级加密
- 旧明文配置在读取时迁移,失败时拒绝明文回退;环境变量提供的密钥不会被主动写入配置
- 本机 Host / Origin / 跨站请求检查,桌面 IPC 来源校验,渲染进程隔离
- 内置 OCR 本地离线识别(出厂即开)——默认情况下原图不出本机,只把识别出的文字交给模型
- 记忆召回默认只用词法 BM25,记忆不出本机;要接向量层必须显式选择回环地址,远程嵌入需要二次确认
- 召回反馈只记录有界的效果计数,不记录原始查询文本,也不自动晋升记忆

06 / HONEST DEGRADATION
做不到,就说做不到
能力没就绪就说没就绪,数据不够就说数据不够。这一条贯穿接口、工具注册表和界面。
- 依赖缺失的工具不出现在注册表,并如实返回不可用原因——不启动假浏览器
- 指标接口把「无数据(null)」与「真 0%」严格分开,且只允许用判等判断
- 供应商没返回用量的调用从分母排除,并单独显示条数,不让指标被稀释
- 文档与表格产物先落暂存区,做真实格式与结构校验;「HTML 改名成 .pdf」与截断容器都过不去,失败即删除
- 沙箱后端不可用时拒绝执行,绝不回退到宿主进程跑命令
- 做不到的事写在文档里,而不是写成一句营销词
