AVL Code 参考手册

适用版本:AVL Code v0.7.28-alpha 及以上 适用平台:Windows · macOS · Linux(含银河麒麟 Kylin / 统信 UOS) 文档定位:以查询为目的、表格密集型的参考手册。每章按主题组织,按字段或键名罗列细节,便于在使用过程中按需翻查。

与配套手册的关系:日常使用请阅《AVL Code 用户手册》;初次安装请阅《AVL Code 快速上手指南》;本手册为前两者提供穷举式补充。


目录

  1. 总览
  2. 工作模式参考
  3. 设置面板参考
  4. 键盘快捷键参考
  5. 输入框 Slash 命令参考
  6. 随行通讯命令参考
  7. 智能编程工具参考
  8. 安全分析工具参考
  9. 外部工具服务接入参考
  10. 工具权限策略参考
  11. 计划与待办状态参考
  12. 技能(SKILL.md)格式参考
  13. 助手人设参考
  14. 模型 Provider 参考
  15. 历史折叠(Compact)参考
  16. 子任务与后台执行参考
  17. 命令行入口参考
  18. 主题与外观参考
  19. 系统集成参考
  20. 状态指示与提示参考
  21. 错误信息参考
  22. 数据与备份参考
  23. 文件命名约定
  24. 网络访问清单
  25. 隐私与遥测参考
  26. 升级与版本号参考
  27. 附录 A:术语表
  28. 附录 B:参数取值速查
  29. 附录 C:常见正则与通配符语法
  30. 附录 D:键值清单导出格式

1. 总览

本章给出"哪些东西可被查询"的总图,便于跳转到具体章节。

1.1 查询入口对照

你想查 章节
某个工作模式做什么 / 不做什么 第 2 章 工作模式
某个设置项在哪 / 默认值 第 3 章 设置面板
某个键盘快捷键 第 4 章 键盘快捷键
某个 /-开头命令的语义 第 5 / 6 章 Slash 命令
某个工具的参数 第 7 / 8 / 9 章 工具
全库 RAG 检索 / 问答(code.search/ask) 第 7.12.3 节
SBOM / 供应链漏洞排查工具参数 第 8.13 节
VirusTotal / GTI 情报工具(vt / sec.vtai 工具组) 第 8.14 节
内置技能 / market.check 发布契约校验 第 12.6 / 12.7 节
威胁检测 / 哨兵 / VT-GTI 设置 第 3.17 节
技能 / 插件签名策略与信任库 第 3.17.1 节
工作区与会话布局(侧边栏 / 顶部标签页) 第 3.2 节
对话内插件管理(PluginSearch / Install / …) 第 7.1 节
并行 fan-out(AgentParallel)参数 第 16.3.1 节
自修复 / 自愈 / 经验学习闭环 第 16.5 / 16.6 节
复述意图 / 自省页设置 第 3.11.1 节
某个权限策略生效顺序 第 10 章 权限
计划 / 待办的状态机 第 11 章
SKILL.md 的字段 第 12 章
助手人设字段 第 13 章
模型 / Provider 配置字段 第 14 章
一段命令行能做什么 第 17 章 CLI
应用主题色 / 间距 第 18 章
自启 / 托盘 / 通知 第 19 章
一个状态点 / 颜色含义 第 20 章
一段错误信息含义 第 21 章
备份 / 数据目录结构 第 22 章
文件命名规则 第 23 章
应用会访问哪些网络资源 第 24 章
隐私 / 遥测 第 25 章
升级源 / 版本号语义 第 26 章

1.2 阅读约定

  • 表格中 表示"无 / 不适用"。
  • 表格中 表示"省略,可参阅展开章节"。
  • 单元格里的 code 等宽内容代表字面字符串(命令、字段名、文件名、正则、shell 等)。
  • 「占位 ID」用 <…> 表示,例如 <workspace-id>
  • 「模式」列出现 表示该项不受工作模式影响。

2. 工作模式参考

2.1 模式一览

模式 图标 中文名 默认助手 写文件 编辑 终端执行 联网
auto 自动 内置 · 自动 启用 启用 启用 启用
plan 筹划 内置 · 筹划 禁用 禁用 禁用 启用
prepare 准备 内置 · 准备 启用 启用 启用 启用
execute 执行 内置 · 执行 启用 启用 启用 启用
assess 评估 内置 · 评估 禁用 禁用 启用 启用

plan(筹划)是严格只读:只放行读取类工具(读文件 / 读代码 / 读 git / 安全分析 / 联网 / 技能 / 待办与规划本身),不含任何 fs.exec.*fs.exec.tailfs.exec.list 在筹划模式下同样不可用)。该限制与所绑定助手声明的工具取交集,助手只能更严、不能更松,配置面板无法放宽。

assess(评估)不写业务代码,但可以执行命令:放行读取类工具之外,还包括终端执行(fs.exec.*)、测试 / lint / SAST(verify.*)、SBOM 生成(sbom.*)、安全分析与威胁情报(sec.* / vt.*),以便真正完成验收与复盘。它禁用的是写文件与编辑(fs.write / fs.patch)。与筹划模式不同,评估模式的这一约束来自其绑定助手的工具声明 —— 若把评估模式改绑到别的助手,约束随之改变。

2.2 模式切换的副作用

切换发生时 行为
加载该模式绑定的助手 助手 SOUL 注入到下一回合
切换工具开关集合 工具列表立即重算可见性
在会话流中插入分隔标记 一条「模式切换」事件卡片
计划与待办 不重置;继承自上一模式
模型与参数 切到该模式记录的覆盖项;无覆盖时沿用工作区默认

2.3 推荐工作流

plan → prepare → execute → assess

各模式间的"退出"按钮显示在会话顶端横幅;点击会自动加载下一模式并把已确认产物(计划 / 准备清单 / 执行变更)注入新一回合。


3. 设置面板参考

设置面板共 22 个 tab,按 6 个分组组织(由旧的「账号 / 桌面 / 服务」3 组重组而来)。下表按界面顺序逐一列出,并标注作用粒度(G 全局 / W 工作区 / M 模式)与默认值。

3.0 设置面板分组

旧的「账号 / 桌面 / 服务」3 组(服务 12 项过载)重组为 6 组,每组最多 6 项,互斥领域 + 使用频率自上而下:

分组 包含的 tab
账号 账号 · 反馈
常规 通用 · 最近工作区 · 数据 · 例行程序
模型 提供商 · 模型
智能体 Agents · 自省 · 技能 · 工具 · Hooks · 上下文 · 记忆宫殿
安全 安全 · 技能/插件签名 · 测试与自检 · 数据脱敏 · 供应链 / SBOM
扩展 插件 · 随行通讯

3.1 设置 → 账号

粒度 默认 说明
登录方式 G 手机号验证码 手机号验证码(默认;无账号自动注册;60s 倒计时;风控时切图形验证码)/ 用户名密码 / SSO
共享额度 G 自动 登录后自动下发;无需手动配置
点数余额提醒阈值 G 1 小时 离过期不到该时长,状态点变琥珀;面板前缀 §(点)
用量周期 G 24h / 7d / 30d 每分钟刷新
退出登录 G 点击执行;保留本地数据
兑换码 G 输入兑换码 → 就地反馈(成功 / 失效 / 已用过等 12 种本地化提示)
我的用量点券 G 列出全部代金券:面额、有效期、永久券标注

3.2 设置 → 通用

粒度 默认 说明
语言 G 跟随系统 简体中文 / 繁體中文 / English。落盘 language;Header 快捷菜单「语言」滑块同步此项
主题 G system system / light / dark
工作区与会话布局 G 侧边栏 sidebar(左侧边栏)/ tabs(顶部标签页,内容区贴边;打开的标签持久记忆、重启恢复;登录后标签条右端显示当前用户名,定宽、过长省略)。落盘 workspace_display_mode;Header 快捷菜单「布局」滑块同步此项
最小化到托盘 G 关窗后驻留托盘
开机自启 G 启动时静默到托盘
字体大小 G 小 / 中 / 大
消息密度 G 正常 detailed(正常,带卡片 / 参数预览) / compact(极简,无卡片灰阶细行 + 过程内容归并计数)。落盘 message_density;只压缩过程渲染、不动正文;旧 collapsed 自动迁到 compact
记住窗口状态 G 关闭后启动用屏幕自适应默认尺寸并居中、退出不回写
配置目录 G 一键打开
检查更新 G 启用 手动 / 自动

3.3 设置 → 最近工作区(独立 Tab)

粒度 默认 说明
搜索 命中词高亮;始终显示
置顶区 / 其他区 各自独立滚动;置顶项不随下方滚动消失
多选 支持顶部批量操作栏(删除 / 打开所选
批量打开 打开所选 由「打开全部」改为「打开所选」;超过同时活跃上限按前 N 项截断并告知
删除 inline 倒计时 武装 → 3 秒倒计时 → 确认;不弹 confirm

3.4 设置 → 数据

粒度 默认 说明
存储占用视图 G 14 备份类别 + 6 非备份项,按 du 字节级对齐
单项 / 批量清理 G 含敏感数据的类别自动落 auto-clean-<ts> 快照
全量重置 G 深度清 14 类 + 重置默认配置 + 落 auto-fullreset-<ts> 快照
创建备份 G .zbk 加密文件(AES-GCM),14 类应用数据
恢复备份 G .zbk → 输入密码 → 预览 → 确认
历史快照 G 列出所有自动 / 手动快照,深链可跳定位
附件 / 样本上限 G 300 MiB 范围 1–4096 MiB;有「恢复默认」按钮
数据目录 G 一键打开备份 / 迁移用
同步(实验性) G 多设备共享

3.5 设置 → 上下文

粒度 默认 说明
会话自动重命名 G 未手动改名的会话首条 AI 回复后自动起标题
自动命名豁免 自动 手动改名过的会话永久豁免
历史折叠(Compact)阈值 G 由模型决定 接近 context 上限时触发
自动压缩 · 触发阈值 G 85% 占用达上下文窗口的该比例时触发;范围 50–99
自动压缩 · 保留最近消息数 G 压缩时保留末尾若干条原文不摘要
自动压缩 · 绝对触发上限 G 372000 与百分比取先到者。仅对声明的上下文窗口超过约 437K 的模型改变行为(部分模型窗口声明极大,只按百分比会迟迟触发不了)。0 = 关闭,只按百分比触发。落盘 auto_compact.max_prompt_tokens;env ZAGENT_AUTO_COMPACT_MAX_PROMPT_TOKENS
自动压缩 · 单进程最大触发次数 G 同一进程内的压缩次数上限

3.6 设置 → 记忆宫殿

粒度 默认 说明
记忆条目 G 长期记忆库的增删改查
旅程设计 G 把一组记忆组合成"旅程"
回顾面板 G 按主题查看历史回忆
单次提取上限 G 7 1–10 为固定上限;填 0 或 >10 则不设上限、由模型自主决定。自动 / 手动 / 重新提取三条路径统一生效
待审草稿盒 G HookStop 抽取 → {宫殿}/_pending/{时戳}-{slug}.mdMemoryReviewPanel 批准 / 编辑 / 驳回。批准前不进 in-memory index / 不参与检索
健康看板 G 总数 / 已过期 / 从未召回 / 房间分布 / 热度 Top 10 / 冷门 ≤20 / 低效 ≤20(R≥5 且 SR≤0.2)/ 疑似重复簇 ≤20 / 待审 dup·conflict 计数;可一键剪枝 / 合并
召回加权 G RecallCount × SuccessCount;老被翻出却没用的自动沉底
罕见词加权 G 冷门 / 特征强词的命中分更高,相关条更易翻出
无关时少塞 G 与当前提问相关性弱的记忆不注入;仅保留 Pinned
冲突放待审 G 同 S+P 但 O 不同 → 写 ConflictHint = 旧 ID;批准时取代旧条;与 MergeHint(三元组重合 ≥ 2/3)互补
judge 教训沉淀 G 自检门禁 judge 发现的问题自动落到草稿盒

3.7 设置 → 提供商

粒度 默认 说明
Provider 列表 G AVL-Zero(共享,Delta) 可加自定义 Provider
类型 G AVL-Zero 默认 AVL Delta 兼容,其它默认 OpenAI AVL Delta 兼容 / OpenAI(兼容)/ Anthropicx-api-key + anthropic-version
Delta 协议开关 G 开(AVL-Zero) 每轮只传增量;404/405/501 本会话一次性回退 chat/completions,401/403 不降级
添加 / 编辑 G 名称 / 接入地址 / 凭证
API Key 管理 G 自动下发 自行接入时填写
高级 → 自定义请求头 G 仅自定义 Provider;多组 key/value,在内置头之后应用,可覆盖 Authorization / User-Agent 等;空 key 与含 CR/LF 自动跳过;Host 头不生效
模型刷新 G 立即按所选类型拉取模型列表

3.8 设置 → 模型

粒度 默认 说明
模型作用域 G 全局一致 全局一致(共用) / 跟随会话(独立,新建快照当前选择,失效自动回落)
未开启模型折叠 G 折叠 每个供应商分组默认只显示已开启的;底部「展开 N 个」一键展开,按供应商各自记忆;搜索自动绕过折叠
默认模型 W 由 Provider 决定 工作区粒度覆盖
Temperature W·M 0.7 0–1
Top-P W·M 1.0 0–1
上下文窗口 W·M 跟随模型配置 模型可容纳的上下文 token 总量;自动压缩与软阈值告警的依据
最大输出 token W·M 跟随模型配置 无硬性上限,超出模型标称时以上游实际限制为准
标称最大输出 W·M 跟随模型配置 模型规格声明的输出上限;未显式配置「最大输出 token」时的默认值,并参与窗口结构校验(上下文窗口须大于它)
调用超时 G 30 秒 LLM 单次调用超时;填 0 = 跟随 Provider API 设置
最大执行步数 W·M 0(不限) 一次 LLM 响应或一批工具结果计 1 步;长任务建议保持 0
流式 G 关闭后整段输出

参数编辑收敛到唯一入口:以上模型参数统一在「参数配置」抽屉里编辑(从「模型」页或「模型提供方」对话框进入的是同一个面板),避免此前两处编辑面各存一份、互相覆盖导致设置被静默抹掉。保存时做窗口结构校验:输出上限 ≥ 上下文窗口会拒绝保存;输出上限超过窗口一半会给出提示(建议上下文窗口 ≥ 4 × 最大输出)。两处同时修改时以乐观锁校验,冲突会就近提示而不是无声覆盖。

3.9 设置 → 插件

粒度 默认 说明
视图切换 G 已装视图 已装 ↔ 市场,两层面包屑导航
已安装列表 G 启用 / 禁用 / 卸载(行内二次确认)
浏览市场 G 默认市场 可加 / 切换市场源;按分类、按已披露能力筛选
CC 插件适配 G 兼容 Claude Code 插件:github@<org>owner/repo、git 远程都识别
安装前确认 G 摊开来源 / 命令行 / 能力 / 签名,确认后才装
工作区默认激活 W 全局插件在每个工作区默认启用;市场装完即在当前工作区激活
权限设置 G 询问 插件可调用的工具范围
自动更新 G 询问 启动时检查
市场回源刷新 G 重新拉取已添加市场源(git 重拉 / 本地重解析);视图露出已装版本 + 「可升级」标记,可从市场行 / 卡片直接升级
检查更新(已装) G 列表头「检查更新」反查已装插件可升级项;有更新的卡片显示「有更新」徽章 + 升级按钮
升级机制 G 版本比对 semver 为主 + 差异兜底;升级前清空插件目录防旧组件残留;市场缓存原子换盘、失败可回退
行内进度 G 安装 / 升级 / 预览 / 更新 / 添加显示行内进度条(解析 git clone 真实进度);更新 / 检查更新按钮为原地旋转刷新图标
来源可信盾牌 G 插件卡片作者旁标示来源可信状态(与 zMarket 商店同款);模型提供方条目复用所属插件图标,「插件」徽标为中性描边
导入身份 G zip 导入的插件名取自签名 manifest 而非文件名;与既有插件同名的 zip 不再静默复用旧目录

典型插件目录:仓库自带 22 个开箱插件 — 15 家模型提供方(DeepSeek / OpenRouter / OpenCode Zen / OpenCode Go / MiniMax / 小米 MiMo 按量+Token Plan / 智谱 / 月之暗面 / 通义千问 / 豆包 / Ollama / 硅基流动 / 阶跃星辰 / OpenAI 兼容模板)+ 知乎工具集 + 4 个原生能力示范(tools / hooks / channels / skills)+ 2 个 CC 兼容格式示范(agents+commands、mcp+hooks)。 对话内插件管理PluginSearch / PluginList / PluginInstall / PluginUninstall 四个工具可在会话中完成插件生命周期,写入类走 dry_run → confirm 两步确认(见 §7.1 注)。

3.10 设置 → Hooks

粒度 默认 说明
工具调用前确认 W·M 见各工具 三态:启用 / 询问 / 禁用
自动批准列表 W 「始终允许」写入此处
工具黑名单 W·M 强制禁用某些工具
错误抽屉 W 自动保留最近 100 条
Hook 执行可见 每次钩子执行都在对话流出系统消息(折叠条,Markdown 渲染)
插件 hook 根目录 自动 CLAUDE_PLUGIN_ROOT 指向插件目录,SessionStart 等 hook 稳定触发

3.11 设置 → Agents

粒度 默认 说明
Agent 列表 G 5 个内置 + 用户自定义 来源标签:内置 / 全局 / 工作区
名称 G 内置名 显示用
个性 G 内置 短句风格
系统提示词 G 内置 可指向工作区下文件
模式绑定 W 默认对应 五种模式各自指派一位
编辑 / 复制 / 删除 G 仅全局 / 工作区来源可编辑

3.11.1 设置 → 自省(智能体组新页)

把「自主与自省」相关的三个开关集中到一处(tab id reflection,图标 Brain,隶属智能体组)。

粒度 默认 说明
复述意图(开工前确认) G 落盘键 intent_confirm(schema v8,默认 true)。仅对亲手输入的首条消息、且短(≤30 字 shortFirstMsgRunes)或简单(非多行 / 非列表、分隔符 ≤3、≤80 字 simpleMaxRunes)时触发;多 Agent 模式给分阶段计划。确认条三选:确认开始 / 修改(目标+计划)/ 保留我的本意intent.confirm.keepOriginal,用原消息继续)。消息菜单「分析意图并从这里重新开始」可强制触发(先隐藏重启点之后消息)。详见用户手册 §5.4.1
意图复述选择统计 G 独立 YAML 记录确认 / 修改 / 保留本意 / 超时自动开始 / 取消的次数与字数;在本页以表格展示(列:类别 / 次数 / 字数)
自动反省(复盘学习) G 落盘键 auto_reflect。多步任务收尾自动跑一次 GRAI+KISS 复盘(读轨迹 + 自愈统计),把 Keep/Improve/Stop/Start 教训沉淀到记忆待审;有 LLM 调用成本(见 §16.6)
自动恢复被中断的任务 G 落盘键 auto_resume_tasks。开启后重启自动续跑上次崩溃 / 被杀时未完成的后台任务(夜间无人值守),启动每次最多自动恢复 5 个、其余转手动;关闭时仍在顶部横幅列出供手动恢复(见 §16.4)

这三项原在「通用」页,本版起迁入「自省」页。

3.12 设置 → 技能

粒度 默认 说明
技能列表 G + W 内置技能空 三层来源(全局 / 工作区 / 插件);内置技能(如 skill-creator)标「内置」徽标
加载策略 W 自动 启动时刷新;内置技能启动自动物化、漂移覆盖
安装 / 删除 G 拖入文件夹或扫描目录

签名校验、签名验证策略与信任库已迁至独立的 设置 → 技能/插件签名 Tab(安全分组,见 §3.17.1)。

3.13 设置 → 例行程序

粒度 默认 说明
列表 G 按来源工作区分组
启停开关 G 与其它设置页同款 ui/Switch
立即运行 G 不等计划,立刻跑一轮
最近运行痕迹 G 行内展开,可逐条查看会话
跨工作区分组 G 未打开工作区显示徽标 + 一键打开
搜索 G 按例行程序名或工作区名

调度参数:

字段 类型 默认 说明
type enum manual hourly / daily / weekdays / weekly / manual
weekdays array [1..7];预设「工作日」/「周末」一键
time (HH:MM) string 时 / 分双列下拉(选中居中、选完分钟自动收起)。hourly 只看分钟,小时锁 00、触发器显 :MM;NextRun 取 after 之后最近该分钟点,撞上 / 已过则 +1h,跨日 / DST 用时间算术天然正确
command string 触发时发给 AI 的指令内容
mode string auto 与正常会话同款五种模式
model string 与正常会话同款选择器(搜索分组)

运行行为:

  • 每次运行在对应工作区生成正常会话,过程与结果可回看。
  • 同一条例行程序运行中自动跳过下一次触发,不会叠跑。
  • 手动模式(无计划)保存后立即触发一轮,按钮显示「运行一次」。

3.14 设置 → 随行通讯

粒度 默认 说明
通道 G 微信 同时支持微信 / 飞书 / 钉钉
扫码登录 G 各通道独立扫码
配对码 W 6 位数字 10 分钟 TTL
工作区路由 W 默认会话 见 §6.2
节流 G min 200 / idle 3s / max 3800 字数控制
解绑 W 立即失效

3.15 设置 → 数据脱敏

落盘 ~/.config/avlcode/redaction.yaml;主程序与子进程共用 pkg/redact 引擎。

粒度 默认 说明
总开关 enabled G opt-in;关闭时所有场景一律放行
场景 scopes.export_html G 开(总开关后) 会话导出 HTML 时套用;规则对解码后的 JSON 文本值生效并递归下钻嵌套 JSON(覆盖工具调用参数与结果),修了代码块行首 IP 与深层字段漏脱敏
场景 scopes.export_session G 开(总开关后) .zsession 导出时套用(同上,覆盖代码块行首 IP)
场景 scopes.write_md G AI 写 .md 等文档类落盘脱敏(Phase 2)
内置 presets.secrets G 内置密钥规则包(见下)
自定义规则 rules[] G 用户规则 + presets 并集为最终编译输入

Rule 字段

字段 类型 说明
type enum keyword / regex / ipv4_mask / domain_mask
pattern string keyword 自动转义;regex RE2
replacement string keyword 字面量;regex 支持 $1 / ${name} 捕获模板
octets int[] ipv4_mask 要遮的段(1-based,1..4,任意段含中间)
segments int ipv4_mask 兼容旧配置:掩前 N 段
keepLast int domain_mask 保留末尾几段(默认 1)
maskChar string ipv4 / domain 掩码字符(默认 *
enabled bool 启停单条
label string 命中审计用

内置 secrets 预设清单:AWS Access Key(AKIA…)/ GitHub PAT (ghp_…) / GitHub Token (gh[osu]_…) / Slack Token (xox[baprs]-…) / Stripe Live Key (sk_live_…) / GCP API Key (AIza…) / OpenAI Key (sk-…) / PEM 私钥整块(含头尾与中间 base64,跨行)。

命中反馈:每次脱敏完成时弹一条 toast — 命中条数 + 命中规则 label 列表。

3.16 设置 → 供应链 / SBOM

sbom.audit / sbom.vex 配置漏洞库数据源与本地离线库。落盘 <config>/sbom.json;所有字段可留空,留空即回退到内置默认(直连公网),坏 / 缺 JSON 安全回退默认、绝不阻塞审计。后端绑定:SBOMGetSettings / SBOMSetSettings / SBOMSyncDB / SBOMOpenVulnDBDir / SBOMTestSettings

保存按钮为「测试并保存」:先校验地址 / 路径合法性(URL 须 http/https、代理 http/https/socks5、路径无空字节),再经 SBOMTestSettingsdefault_mode 探测可用性(本地库路径可写性始终阻断式,离线模式跳过联网探测);任一阻断项不可用则拒绝保存并列出原因。本地漏洞库路径等离线字段归入「离线漏洞库」区,测试时把相对路径规范为绝对路径回写。另有「重置为默认」按钮把各字段清回内置默认(仅改表单,不落盘,需再点「测试并保存」才生效)。

数据源(Data sources):

落盘键 默认 说明
OSV 在线查询 API osv_api_base_url https://api.osv.dev 在线审计的查询端点
OSV 离线 dump 源 osv_bucket_url https://osv-vulnerabilities.storage.googleapis.com dbsync sync 拉取按生态 dump 的存储桶
KEV 名录源 kev_url CISA KEV feed 已知被利用漏洞名录地址
本地漏洞库路径 vulndb_path <config>/vulndb 离线库目录,可指向只读挂载;附「打开文件夹」
HTTP 代理 http_proxy 留空回落 HTTPS_PROXY / NO_PROXY 环境变量
默认审计来源 default_mode auto auto(本地有库则离线、否则在线)/ online / offline

离线库(Offline DB): 按生态表格展示「生态 / 记录数 / 新鲜度(unknown / today / Nd ago)/ 来源」,并列出 KEV 条目数;提供按生态多选下拉(含筛选、全选 / 清空)驱动 同步(每生态独立进度条)与 同步 KEV 按钮。可同步的生态来自后端 SyncableEcosystems(13 个有 OSV 离线 dump 覆盖的生态)。

air-gap 提示:把上面各源指向内部镜像(必要时配代理),再用 sbom.dbsync sync 或离线 import 填好本地库,audit / vex 即可全程离线。

3.17 设置 → 安全(威胁检测 · 哨兵 · VT/GTI)

VirusTotal / GTI 云端威胁情报的配置页(tab id security)。落盘 <config>/vtai.yaml;密钥本机加密存储。检测能力与哨兵拦截解耦——配好后端 / YARA 即可让 Agent 调用扫描工具,无需开拦截。四段:

① 威胁检测

落盘键 默认 说明
云端检测服务(单选) mode 空(不启用) vtai=VirusTotal AI·免费托管(哈希 / 可疑文件上传公开分析、别名上榜);user_key=Google Threat Intelligence·自带 Key(结果不公开,需下方填 Key,无可用 Key 时置灰);""=不使用云端。旧 local 迁移为 ""+yara_enabled
上传文件到云端扫描 auto_scan 开=允许上传做完整扫描(密钥 / .env 等敏感文件始终不传);关=只查哈希
本地 YARA 规则 yara_enabled 独立开关,纯离线;可与云端同开;改规则目录后工作区重启才重载(不热加载)
恢复默认 非破坏:mode="" + auto_scan=false保留 Key / 注册 / api_base / full_tools
重新获取 Key(VirusTotal AI) RefreshVTAIKey:用现有身份重注册取新 token(换机 / 轮换时用)

② 自动扫描拦截 · 哨兵(Sentinel):单开关(合并 enabled+monitor),开启后 Agent 读 / 写 / 执行文件自动扫描、命中即阻断;未配置任一检测方式时置灰capable = mode≠"" 或 yara_enabled)。

③ Google Threat Intelligence 密钥API Key(本机加密,user_key 云端与 vt.* 共用;单填不启用任何功能)+ 自定义服务地址(默认 https://www.virustotal.com/api/v3,对接企业 / 内网镜像)。VirusTotal AI 免费托管后端也支持各自独立的自定义接入点(与 GTI 的地址相互独立)。显示名统一为全称 VirusTotal AI / Google Threat Intelligence

④ vt. 全量情报工具*:主开关(无可用 Key 置灰)+ 子开关 仅查询模式(默认开)/ 启用收费功能(默认关)/ 上传样本前确认(默认开,仅「仅查询」关时出现);启用后显示「当前有效:仅查询|读写 · 含收费|仅免费 · 自定义端点」摘要。

面板文案为硬编码简体,无 i18n;后端 Wails:GetVTAIState / SetVTAIMode / SetVTAIYaraEnabled / RefreshVTAIKey / GetVTAILeaderboardGetVTFullToolsState / SetVTFullToolsPolicy / SetVTFullToolsAPIKey / SetVTFullToolsAPIBaseHasAPIKeyKeyUsable

3.17.1 设置 → 技能/插件签名(独立 Tab)

签名验证策略与信任库从「安全」「技能」两页集中迁到此独立 Tab(安全分组,tab id signatures),一份策略同时管住技能与插件

① 签名验证策略(三档,切换时自愈历史遗留的不一致状态):

档位 语义
strict · 严格 未签名或验证失败的技能 / 插件不加载、不安装
warn · 警告 验证失败仍可放行,但在 UI 上标记;「来源不可证实」的包改为弹确认、由用户决定是否放行,存在篡改证据的包仍硬性拦截
skip · 跳过 不执行密码学校验,仅读取 manifest 元数据

② 信任库

说明
信任库路径 默认路径 / 自定义路径均可;signer_roots/ 放签名根 CA PEM、tsa_roots/ 放 TSA 根 CA(完整验证时间戳)
重新加载 手动重载按钮 + 自动重载;投放证书后即时生效,无需重启
导入根证书(PEM) 文件选择器导入,写入信任库并立即计入签名者锚 / TSA 锚计数
锚点计数 面板显示「🔑 签名者锚 N · 🕒 TSA 锚 N」,可一键打开信任库目录

拒绝 / 导入失败时透出具体原因(签名链、时间戳、篡改点),不是笼统报错。


4. 键盘快捷键参考

当前版本只列已绑定到键盘的快捷键。其它操作均通过界面按钮 / 右键菜单 / 命令面板(输入 /)触发。

4.1 全局

操作 macOS Windows / Linux
新建会话 ⌘N Ctrl+N
打开命令面板(Header 搜索) ⌘K Ctrl+K
关闭设置 / 弹窗 / 命令面板 Esc Esc

4.2 会话输入框

操作 macOS Windows / Linux
发送消息 Enter
换行 ⇧⏎ Shift+Enter
入队补充(运行中) Enter
弹出命令面板 输入 / 输入 /

4.3 命令面板(输入 / 后)

操作 macOS Windows / Linux
上 / 下选择 ↑ / ↓ ↑ / ↓
执行 Enter
关闭 Esc Esc

5. 输入框 Slash 命令参考

5.1 通用命令

命令 参数 说明
/new [name] 新建会话;可附名称
/clear 清空当前会话所有消息
/copy 复制最后一条 AI 回复
/fork [继续指示] 复制当前会话为副本并切换过去,自动在副本中继续当前任务;可附文本指定继续方向(原会话原样保留;运行中需先停止)
/compact [keep <N>] 触发历史折叠;可保留最近 N 条原文
/memorize <text> 写入一条长期记忆
/memory 打开记忆宫殿面板
/goal [<目标> | pause | resume | complete | clear | budget <N>] 设定 / 暂停 / 恢复 / 完成 / 清除会话目标;budget <N> 设最大步数预算;新建会话直接生效
/unrestricted 切换当前会话的无限制模式(开启走 5 秒冷静期风险确认弹窗,关闭即时生效)
/无限 /unrestricted 中文别名;菜单 / /help 隐藏(visible:false,免重复行),键入回车仍可执行
/help 列出当前可用命令

命令面板的两类命令行为分流

  • 无参命令/clear/help/memory 等)— 选中即时执行
  • 带参命令/goal/compact/memorize/skill:<name> 等)— 选中后把 /命令 回填到输入框,等你补完参数再回车发送(与主流补全工具一致;避免之前"选中就立刻报『必须带参数』"的尴尬)。

5.2 触发技能

命令 参数 说明
/skill:<name> 取决于技能 渲染该技能模板并注入下一回合
/skill:<name> <arg1> <arg2> … 位置参数 替换技能模板中的 $1 $2

5.3 行为细节

  • 命令行首必须以 / 开头,命令名忽略大小写。
  • 命令与参数之间用空格分隔;含空格的参数请用 "双引号" 包裹。
  • 命令面板(输入 / 弹出)支持 ↑ / ↓ 选择、 执行、Esc 关闭。
  • 已加载的技能会以 /skill:<name> 形式动态出现在命令面板里。

6. 随行通讯命令参考

6.1 命令清单

命令 参数 作用域 说明
/bind <6 位配对码> 单聊 / 群 绑定该 IM 对端到工作区
/ws <工作区名> 单聊 / 群 持久切换本对端绑定的工作区(落盘,重启后仍生效);切换后下一条消息在新工作区开启新会话;名字未命中时回执可用工作区名单。单条消息临时切换用 [ws:<工作区名>] 前缀
/sessions 单聊 / 群 列出最近会话(含短 id)
/new [文本] 单聊 / 群 新建会话;可附首条消息
/s <短 id> 单聊 / 群 切到指定会话(≥4 字符前缀)
/approve <审批号> 单聊 / 群 允许本次
/always <审批号> 单聊 / 群 始终允许(写白名单)
/deny <审批号> 单聊 / 群 拒绝
/stop 单聊 / 群 暂停本对端的 Agent 响应并终止在跑任务;后续消息不再转给 Agent。暂停态持久化,重启仍生效
/resume 单聊 / 群 解除 /stop 的暂停(未暂停时也回同一句,幂等)
/help 单聊 / 群 列出所有命令

单条临时覆盖(前缀标签)

前缀 作用
[ws:<工作区名>] 消息正文 该条消息单次切换工作区,下条恢复
[s:<短 id>] 消息正文 该条消息单次切到指定会话,下条恢复

6.2 入站路由优先级

会话选择(按以下顺序匹配,前者命中即停):

  1. 明确的 /new [文本] 新建
  2. 明确的 /s <短id> 切换(行内前缀 [s:<短id>] 等价)
  3. 当前对端绑定的最近活跃会话
  4. 首次入站兜底:按绑定 / 工作区 + 发送人稳定生成

工作区选择[ws:<工作区名>] 行内覆盖 > 对端绑定的工作区 > 全局默认工作区;三者皆无时回执提示先 /bind

6.3 出站节流

参数 默认 说明
最小批量 200 字 累积到该长度才发出
空闲触发 3 秒 无新增字符即立即发出
最大单段 3800 字 避免触达 IM 单条上限
Markdown 过滤 自动转纯文本,避免 IM 渲染错乱
Typing 指示 处理中显示「输入中」

6.4 出站工具

下列工具可被助手主动调用,把信息推到 IM。

工具 参数 用途
channels.notify workspace_id, text 广播到该工作区所有绑定
channels.reply session_id, text 回到触发该会话的原对端
channels.send_to binding_id(或 account+peer), text 精确直发到指定对端
channels.list_bindings 列出该工作区所有绑定
channels.list_sessions workspace_id 列出该工作区可投递的会话

7. 智能编程工具参考

7.1 工具一览

工具 用途 默认权限
fs.read 读文件(按行 / 按字节) 启用
fs.write 覆盖写整个文件 询问
fs.patch 基于行号 + 校验哈希做精确替换 询问
fs.list 列目录 启用
fs.glob 通配符匹配文件名 启用
fs.grep 内容正则搜索 启用
fs.exec 同步执行命令 询问
fs.exec.start 启动后台命令,返回 session_id 询问
fs.exec.tail 拉取后台命令实时输出 启用
fs.exec.kill 终止后台命令 启用
fs.exec.list 列出当前后台命令 启用
time.now 获取当前时间(带时区) 启用
git.status 仓库状态 启用
git.branch 创建 / 切换分支 询问
git.init 初始化仓库 询问
web.bing Bing 搜索(RSS 端点) 启用
web.fetch 抓取指定 URL 并清洗为可阅读文本 启用
skill.list 列出当前可用技能 启用
skill.invoke 渲染并调用某个技能 启用
TodoWrite 写入 / 更新待办列表(最多 50 条) 启用
TaskWait 阻塞等待后台任务 / 子代理(默认 5min,最长 30min;支持 all / any 启用
SuggestTask AI 主动建议一个分外任务(卡片形式挂在消息流,不打断当前正事) 启用
DismissTask AI 撤回已过时的建议任务 启用
mcp.list_servers 列出所有 MCP server 启用
mcp.describe_server 查看某 server 详情(密钥脱敏) 启用
mcp.list_tools 查看某 server 暴露的工具 启用
mcp.test_server 真握手探活(30s 预算,含 4 阶段) 启用
mcp.add_server 新增 server(写类,两步制 confirm=true 询问
mcp.remove_server 删除 server(写类,两步制);默认 MCP 后端现在也可删(网关此前会拒删默认后端,已修复) 询问
mcp.toggle_server 启停 server(写类,两步制) 询问
mcp.import_config 批量导入;支持 Claude Desktop schema(写类,两步制) 询问
mcp.export_config 导出当前配置(密钥脱敏) 启用
PluginSearch 搜索插件市场目录(全局只读,无需工作区上下文) 启用
PluginList 列出已装 / 可装插件清单 启用
PluginInstall 安装插件并在当前工作区激活(写类,两步制:先返回 dry_run 预览 — 能力清单 / MCP 真实命令行 / 签名状态 / 来源溯源,confirm=true 才落地;签名校验沿用产品策略) 询问
PluginUninstall 卸载插件并同步清理工具配置残留(写类,两步制) 询问

7.2 通用返回字段

读取 / 搜索类工具的返回都包含:

字段 类型 说明
truncated bool 是否被软上限 / 硬上限截断
next_offset int 下次按行读的起始行号
next_byte_offset int 下次按字节读的起始字节
content_hash string 整文件内容指纹(写入校验用)
line_hashes array 行级指纹(patch 校验用);已去重,仅在需要时输出

结果瘦身(省 token / 额度):工作区工具的返回路径一律相对工作区根relPath),错误串出口剥除根路径前缀(不外泄绝对根),去除重复 line_hashes分页记账(next_offset 等)仅在 truncated=true 时才输出

7.3 read

参数 类型 默认 说明
path string 相对工作区根;必填
mode enum lines lines / bytes
offset int 0 起始行号 / 字节偏移
limit int 软上限 4096 字节上限;硬上限 256 KiB

7.4 write

参数 类型 默认 说明
path string 必填
content string 必填
expected_hash string 上次 read 返回的 content_hash;用于并发覆写校验(CAS)

7.5 patch

参数 类型 默认 说明
path string 必填
start_line int 1-based
end_line int 1-based,含
replacement string 新内容
verify_hashes array 该行号区间的 line_hashes;不匹配则拒绝

7.6 list

参数 类型 默认 说明
path string . 相对工作区根
pattern string * shell 风格通配
include_hidden bool false 是否包含隐藏文件
sort enum name name / mtime / size
limit int 4096 字节 单次返回总长度上限

7.7 glob

参数 类型 默认 说明
pattern string 通配符表达式
path string . 相对工作区根
sort enum mtime mtime / name
自动跳过 .git/ node_modules/ dist/ 不可解除

7.8 grep

参数 类型 默认 说明
pattern string RE2 正则
path string . 相对工作区根
path_glob string **/* 文件名过滤
case enum smart sensitive / insensitive / smart
context int 0 上下文行数
include_binary bool false 默认启发式跳过二进制

7.9 fs.exec / fs.exec.start

参数 类型 默认 说明
cmd string 必填
cwd string 工作区根 相对路径
timeout_seconds int 120 超过即终止
env object 追加环境变量
stdin string 选填
output_byte_limit int 4096 / 256 KiB 软上限 / 硬上限(stdout、stderr 各自)

7.10 fs.exec.tail / fs.exec.kill / fs.exec.list

工具 参数 说明
fs.exec.tail session_id, stream(stdout 默认 / stderr), byte_offset(opt), byte_limit(opt,默认 4096,硬上限 256 KiB) 按字节偏移续读输出;返回 status / exit_code / buffer_truncated / next_byte_offset
fs.exec.kill session_id, grace_seconds(opt) 终止会话;grace_seconds 先发 SIGTERM 等 N 秒再 SIGKILL,0 = 直接 SIGKILL(Windows 忽略)。Unix 整组终止,Windows 单杀头进程
fs.exec.list 当前所有后台会话列表

本地后台会话上限:最多 16 个并发;单会话磁盘日志 256 MiB(溢出丢尾);进程退出后日志可继续拉取,1 小时后 GC 回收;会话随 Interpreter 生命周期结束。

SSH 远端后台会话不受上述限制:状态与日志落在远端 <root>/.avlcode/sessions/,日志为完整文件(无 256 MiB 环形丢尾),且跨断线重连与应用重启存活(见 §22.6.1)。

7.11 web.bing / web.fetch

工具 参数 说明
web.bing query, top_k(默认 5) Bing RSS 搜索;返回标题 / 摘要 / URL
web.fetch url, format(md/txt/html) 抓取并清洗

7.12 code.* — 代码智能工具组(基于 LSP)

工具 参数 说明
code.definition path, symbolline/character 跳转到符号定义
code.references path, symbolline/character, include_declaration(默认 false) 查找符号的全部引用 / 调用点
code.hover path, line, character 查看符号的类型 / 签名 / 文档
code.symbols path 列出文件的符号大纲
code.workspace_symbols query 全仓按名搜索符号
code.diagnostics path(可空) 报告编译错误 / 警告;空 path 返回工作区聚合
code.call_hierarchy path, symbolline/character, direction(incoming/outgoing) 调用图
code.repo_map 项目骨架(文件树 + 各文件顶层符号),token 友好
code.rename path, symbolline/character, new_name 跨文件安全重命名(写盘)
code.code_action path, line, character, apply_title(可空) 不传 = 列出动作;传 = 应用对应快速修复(写盘)
code.lsp_status LSP server 池实时状态:运行中的 server / 工程 root / 存活 / 在线·空闲秒数 / 支持语言
code.search query(必填), limit(默认 20), path, refresh(默认 false), expand(默认 false) 非向量全库 RAG 检索(见 §7.12.3)
code.ask question(必填), limit(默认 12), path 全库 RAG 问答,复用会话模型(见 §7.12.3)
code.implementation path, symbolline/character 跳到接口 / 抽象方法的实现(LSP implementation)
code.type_definition path, symbolline/character 跳到变量 / 表达式的类型定义(LSP typeDefinition)
code.document_highlight path, symbolline/character 本文件内该符号的全部读 / 写 / 引用点,比全仓 references 轻量
code.completion path, line, character 该光标位置的补全候选
code.signature_help path, line, character 函数调用的形参签名 + 当前高亮参数(光标置于调用括号内)
code.formatting path, tab_size(默认 4), use_tabs(默认 false) 按 LSP 格式化整篇并写盘;无改动则不写

位置参数对外 1-based(对齐 fs.read 行模式 / cat -n);进 LSP 前由 interpret 层转 0-based。

能力降级:可选能力(implementation / type_definition / document_highlight / completion / signature_help / formatting 等)并非每个语言服务器都实现。是否支持按真实响应判定而非按 server 声明预判(避免声明缺失导致的误拒);判定为不支持后跨会话缓存,同一 server 不再重复试探。

7.12.1 内置语言(22 门,按 ID)

go · ts · py · c(cpp) · rust · java · deno · eslint(js 增强) · lua · bash · yaml · php · ruby · vue · zig · dart · kotlin · clojure · elixir · haskell · fsharp · csharp · gleam · astro

每门语言绑定一个 LSP 命令(gopls / typescript-language-server / pyright-langserver / clangd / rust-analyzer / jdtls / …);缺哪个按需自动下载go install / npm 等),并显示安装进度。

7.12.2 用户配置文件 lsp.yaml / lsp.json

工作区根目录 .avlcode/~/.avlcode/,按 lsp.yaml > lsp.yml > lsp.json 顺序取第一个存在的:

lsp:
  rust:
    disabled: true              # 禁用
  go:
    cmd: gopls                  # 覆盖启动命令
    args: ["-rpc.trace"]
    root_markers: ["go.mod", "go.work"]
  custom_lang:                  # 增加自定义 server
    extensions: [".myx"]
    cmd: my-langserver
    install_via: npm
    install_pkgs: [my-langserver]

热重载:文件 mtime/size 变更自动重读,不必重启工作区。服务器进程崩了 / SSH 掉线自动重启

7.12.3 全库 RAG 检索与问答(code.search / code.ask

非向量(零 embedding)符号级全库检索:BM25 + 标识符切分(驼峰 / 下划线 / 连字符)+ 中日韩二元切分(中文注释 / 中文提问同样能命中),纯本地、可离线。索引落 <base>/.avlcode/rag/symbols.jsonl(远程工作区仅内存),首建后按文件 mtime 增量同步(改 / 增 / 删)。仅索引定义类符号(函数 / 方法 / 类型 / 接口 / 常量等)。

索引文件数上限 4000(不可配)。超限时如实回报而非静默截断:结果里带 index_covers_all_files=falsefiles_not_indexed(未纳入索引的文件数)与 truncated_hint 可读提示,便于判断"没搜到"是真不存在还是没覆盖到。

code.search 参数

参数 类型 默认 说明
query string 必填,自然语言 / 关键词 / 符号名
limit int 20 返回命中数上限
path string 工作区根 限定子目录
refresh bool false 强制全量重建索引
expand bool false 结构重排:对头部命中跑 LSP 调用层级,被调用更多 = 更核心、排更前(更准但慢)

返回 hits[]file / start_line / end_line / name / kind / score / why[](命中的关键词)/ 可选 container·signature)、countindexed_symbolsindexed_files;空结果给 hint

code.ask 参数

参数 类型 默认 说明
question string 必填,自然语言问题
limit int 12 喂给合成的检索片段数
path string 工作区根 限定子目录

复用当前会话的 provider / model(隐式注入,未取到则回落 AVL-Zero)。返回 answer + citations[]file / start_line / end_line / name)+ hit_count + model;检索不到会直说、不编造。code.ask 现在默认对扩展检索结果做结构感知智能重排(无需显式 expand),回答更聚焦。

上限:索引文件数 ≤ 4000、全量构建超时 120s、每文件 ≤ 400 符号 / ≤ 4 MiB;结构重排取头部 8 条。增量刷新的作用域已修正(文件变更后不多刷、不漏刷)。

7.13 test.run — 测试运行 + 失败回灌

字段 类型 说明
framework string 可选;go / pytest / cargo / node(vitest / jest);留空 = 自动探测
path string 可选;限定范围(Go 包模式 ./pkg/... / pytest 目录或文件 / cargo 包名)
command string 可选;完整测试命令覆盖(如 go test -run TestFoo ./pkg
timeout_sec int 默认 300 秒

返回failures[](最多 50 条 {test, file, line, message}) + 一小段原始 tail;未知框架退回到退出码 + tail 兜底。plan(筹划)模式禁用(执行测试会产生写副作用);assess(评估)模式可用,以便验收阶段实际跑测试。

7.13.1 自检门禁(opt-in,泛化的多检查器)

粒度 默认 说明
自检门禁 G 设置 → 代码测试与自检 tab 配全局默认(~/.config/avlcode/checkgate-default.yaml
自检门禁 W 工作区 .avlcode/testgate.yaml;新会话默认值
自检门禁 S 继承 W 会话菜单的检查项勾选清单逐条覆盖;显示实际生效
仅在有编辑后跑 没改动文件的轮次跳过
连续注入上限 3 撞到即停门禁

testgate.yaml 结构

enabled: true
checks:                              # 检查器列表(可单选 / 组合)
  - name: test                       # test | diagnostics | lint | sast
    mode: block                      # block | report
    submode: changed                 # test: changed | full
    scope: changed                   # changed | workspace
  - name: lint
    mode: block
    submode: strict                  # lint: strict | lenient
    linters: [errcheck, govet]       # 子集(可选)
  - name: sast
    mode: report
    submode: quick                   # sast: quick | deep
    config: .semgrep.yml             # 离线规则(可选)
modes:                               # 按工作模式分别覆盖
  plan:    { enabled: false }
  prepare: { enabled: false }

7.13.2 CheckSpec 字段

字段 类型 说明
name enum test / diagnostics / lint / sast / testgen / judge
mode enum block(默认,注入强制修) / report(只通报不拦)
submode string test: changed / full;lint: strict / lenient;sast: quick / deep
scope enum changed(默认,改动文件) / workspace(全库)
path string 限定范围(可选)
linters array lint 子集(可选)
config string 自定义配置路径(sast .semgrep.yml 等)
timeout_sec int 单检查器超时

7.13.2a testgen — 改动缺测试自动补(opt-in)

  • 不在默认集:要显式把 testgen 加进 checks 才生效。
  • 覆盖语言:Go / Python / JavaScript / TypeScript;其它扩展名(.c / .java 等)不判定。
  • 测试文件本身与生成物跳过:避免「给测试写测试」「给 .pb.go 写测试」。
  • 存在性查询:经 zMCP 网关 fs.glob 查测试文件存在性(SSH 远端也正确)。
  • 3 次注入硬上限:复用 MaxTestGateRetries,误报最多纠缠 3 轮即停门禁。

7.13.2b judge — LLM 收尾自审(opt-in,默认 report

  • 独立 fresh-context 模型调用:复用 agentFacade.CompactSummaryStream不带 agent 自己的对话历史 — 消除自我合理化偏见(这是 LLM-as-judge 区别于「让 agent 自我反思」的核心)。
  • 看什么:本轮目标 + diff,挑出机检抓不到的逻辑 / 语义 / 安全意图错。
  • few-shot 提示 + 当轮诊断背景注入到 prompt,判断更准、误报更少。
  • 门控judge 在所有便宜检查器之后、且仅当 block 检查器全绿时才跑(省一次模型调用,也不在客观失败上堆主观意见)。
  • 模型乱报 / JSON 脏 / 超时 → 非权威放行,绝不误拦。
  • 返回结构{ok: bool, issues: [{file, line, severity, confidence, message}]}severity ∈ error / warning / infoconfidence ∈ 0..1。block 模式下的 confidence / severity 阈值过滤为 Phase 2 计划。

7.13.3 lint.run — 静态检查(只读分析)

字段 类型 说明
linter string golangci-lint / eslint / ruff;留空 = 自动探测(go.mod → golangci-lint / .eslintrc·eslint.config → eslint / pyproject.toml·ruff.toml → ruff)
path string 范围(目录 / 文件 / Go 包模式 ./...
linters array 子集(如 golangci 的 errcheck / govet
submode string strict(警告也算失败) / lenient
config string 自定义配置文件路径
command string 完整命令覆盖
timeout_sec int 默认 180

返回findings[]{file, line, rule, severity, message}),与 test.run 同形。golangci-lint v1 / v2 JSON 输出参数已自适应。只读分析,plan / assess 模式可用。

7.13.4 sast.run — 安全静态分析(只读分析)

字段 类型 说明
path string 范围
submode string quick(限大文件加速) / deep(完整)
config string 规则配置;空 = --config auto(联网拉规则);离线请用本地 .semgrep.yml
command string 完整命令覆盖
timeout_sec int 默认 240

返回findings[] 同形。后端:semgrep。只读分析,plan / assess 模式可用。

7.14 tools.list / tools.describe / tools.load — 工具自省与按需加载

工具 参数 说明
tools.list prefix(可选) 列本会话可调用的工具(名 + 描述);可按命名空间过滤
tools.describe name(必填) 返回指定工具的完整 schema(描述 + 参数定义)
tools.load 分类名 按分类加载工具;不传时返回分类目录(每类一句话能力说明 + 工具名清单)

自省结果按本会话的实际可用性裁剪(受工具三态与分类延迟加载影响),返回的说明中会提示"表里看不见 ≠ 不存在,可先 tools.load"。这两个自省工具本身穿透子代理白名单恒可用,但输出仍按名单裁剪,且压不过用户设置的禁用清单。

7.14.1 工具分类延迟加载

默认开启(Settings.ToolLazyLoad,schema v9 起)。开关在智能体管理器 →「配置工具」Tab →「工具分类延迟加载」不在设置页

  • 常驻分类fs(读写 / glob / grep / exec)、tools(list / describe / load)、agent(委派 + EnterPlanMode / ExitPlanMode / TodoWrite)。
  • 16 个可延迟分类code / git / sec / vt / sbom / mcp / web / skill / test / lint / sast / market / plugin / gh / sys / time
  • 加载路径:① 隐式 —— 按新增 user 消息中的关键词预加载对应分类(中英关键词表);② 显式 —— tools.load 点名加载。会话中途新连的 MCP 后端分类自动放行。
  • 旁路:可见候选 ≤ 32 个时整表放行(子代理白名单模式通常走这条)。
  • 开启时系统提示词会注入一段说明,告知助手工具表是有意精简的、可按需加载。
  • 每个 MCP 服务可单独设置是否延迟(Settings.MCPLazyLoad,缺省跟随全局)—— 见 §9.1。

7.15 Python venv 自动感知

fs.exec / fs.exec.start 在工作区里跑 Python 相关命令时自动遵循工作区 venv:

来源 探测路径
标准 venv <工作区>/.venv / <工作区>/venv
conda env 目录下的 bin/python(含 Windows Scripts/python.exe
poetry poetry env info -p(项目外环境也支持)
pipenv pipenv --venv

机制:把首命令改写成 venv 里的绝对路径 + 注入 VIRTUAL_ENV / PATH。项目外发现缓存 5 分钟 / 探测超时 15 秒。全局关闭AVLCODE_DISABLE_VENV_AUTODETECT=1

pyright 语言服务(code.*)也接入 venv 感知,本地 + SSH 远端一致。

例外:SSH 远端的后台命令fs.exec.start)不做 venv 感知 —— venv 探测靠本机目录结构,在远端会探到错误的本地路径。远端跑 Python 后台任务请显式指定解释器。


8. 安全分析工具参考

8.1 适用约束

  • 全部工具仅在当前工作区下名为 samples/ 的子目录中可用。
  • 该子目录下 exec 类工具被强制禁用,且不可解除。
  • 分析工具不修改样本本体;samples/ 目录本身可写入(样本投放、sec.pcap_stream_extract 的提取产物都会落盘)。

8.1.1 样本投放入口

入口 行为
输入框左下角「+」按钮 系统多文件对话框 → 落到 <workspace>/samples/
用户取消选择 静默忽略,不报错
重名 自动附加时间戳后缀,不覆盖
无活动工作区 按钮置灰;点击提示「没有活动工作区」

后端透明支持本地与远程工作区。

8.2 工具一览(共 16 个)

工具 用途
sec.hash 多算法哈希(md5 / sha1 / sha256 / sha512 等)
sec.entropy Shannon 熵(总 + 分块)
sec.hexdump xxd 风格十六进制 + ASCII 视图
sec.strings 提取 ASCII + UTF-16LE 字符串
sec.ioc_extract 提取 IOC(IP / URL / 域名 / 邮箱 / 哈希含 SHA-512 / BTC·ETH·XMR / CVE / MAC / 注册表 / 路径);先还原 defang,分页返回(见 §8.6)
sec.pe_parse PE / PE+ 结构(节、导入、导出、入口、子系统)
sec.elf_parse ELF 结构(节、动态依赖、符号、build-id)
sec.macho_parse Mach-O 结构(含 FAT / universal)
sec.imphash Mandiant-style PE 导入哈希
sec.disasm 线性反汇编(架构自动嗅探)
sec.decompile LLM 辅助反编译为 C / Java 伪代码
sec.pcap_info pcap 元信息 + Top-N 流聚合
sec.pcap_stream_list 列出 pcap 中所有 TCP/UDP/ICMP 流并赋稳定 id
sec.pcap_stream_extract 把指定流的 L7 载荷 dump 到工作区路径
sec.pcap_extract DNS / HTTP / TLS ClientHello SNI 字段抽取
sec.yara_scan YARA 规则扫描(默认 build 为 stub)

8.3 sec.hash

参数 类型 默认 说明
path string 必填
algorithms array [md5, sha1, sha256] 可选:md5, sha1, sha256, sha384, sha512, sm3

8.4 sec.entropy

参数 类型 默认 说明
path string 必填
block_size int 4096 0 表示不分块

8.5 sec.strings

参数 类型 默认 说明
path string 必填
min_len int 6 最小长度
encodings array [ascii, utf16le]
limit int 软 4096 / 硬 256 KiB

8.6 sec.ioc_extract

先自动还原 defanghxxp://1.2.3[.]4evil[.]comfoo(dot)bar)再在可打印字符串上匹配(减二进制噪声)。IP 走 net.ParseIP 校验并打标(private/loopback/link_local/multicast/cgnat/unspecified),MAC 不再误判为 IPv6,域名按公共后缀校验(丢弃 kernel32.dll 之类)。按值去重、附 counttags(含 defanged)。分页同 sec.stringslimitbyte_limit 取更紧者;truncated=true 时读 next_offset / per_kind_capped / hint 续取)。

参数 类型 默认 说明
path string 必填
kinds array 全部 见下表;空 = 全部
max_per_kind int 200(上限 5000) 每类唯一命中上限;打满的类列入 per_kind_capped
max_bytes int 128 MiB 扫描字节上限
offset int 0 全集 0-based 续读起点(填上次 next_offset
limit int 500(上限 5000) 单次返回条数上限
byte_limit int 4096(硬上限 262144) 单次返回字节上限,整条粒度
defang_output bool false 以 defang 形式渲染值(evil[.]com / hxxp://…)便于安全展示
exclude_private bool false 丢弃非公网 IP(默认保留并打标)
context bool false 每条附一小段命中上下文

可选 kinds

类别 含义
ipv4 / ipv6 IP 地址(带分类标签)
url / domain / email 链接 / 域名(公共后缀校验)/ 邮箱
md5 / sha1 / sha256 / sha512 哈希
btc / eth / xmr 比特币 / 以太坊 / 门罗币等加密货币地址
cve CVE 编号
mac MAC 地址
registry Windows 注册表路径
path_win / path_unix 路径式字符串

提取是候选指标、非判黑结论,用前请二次核实。

8.7 sec.pe_parse / sec.elf_parse / sec.macho_parse

参数 类型 默认 说明
path string 必填
sections bool true 节列表
imports bool true 导入表(PE)/ 动态依赖(ELF)
exports bool true 导出表
signatures bool false 签名 / 证书链

8.8 sec.disasm

参数 类型 默认 说明
path string 必填
arch enum auto auto / x86 / x86_64 / arm / arm64 / ppc64
start int / hex 文件入口 起始虚拟地址 / 偏移
length int 4096 反汇编字节长度

8.9 sec.decompile

参数 类型 默认 说明
path string 必填
target enum c c / java
function string 入口 函数名或起始地址

隐私提示:sec.decompile 会把反汇编片段送往反编译模型;只在样本可外送的前提下使用。

8.10 sec.pcap_info / sec.pcap_stream_list / sec.pcap_stream_extract / sec.pcap_extract

工具 参数 说明
sec.pcap_info path 总包数 / 起止时间 / 协议占比 / TopN 流
sec.pcap_stream_list path, limit(默认 200,最多 2000), offset, sort_byfirst_ts(默认) / packets / bytes 分页列出全部 TCP/UDP/ICMP 流;id 始终是全局时间序编号,跨页跨排序都不变,可直接传给 sec.pcap_stream_extract
sec.pcap_stream_extract path, stream_id, out_path(相对工作区根,可写到 samples/ 之外) dump 该流 L7 载荷为文件
sec.pcap_extract path, protocol(dns/http/tls_sni), limit 协议感知字段抽取,返回 IOC(IP 等)

v1 仅做单包检视,不做 TCP 重组。

8.11 sec.yara_scan

参数 类型 默认 说明
path string 必填
rules string 内置规则集 规则文件相对路径或内置集合名
timeout_ms int 60_000 超时即终止

8.12 sec.ontology.* — 安全领域事实层(v1 本地工作区)

工具 参数 说明
sec.ontology.record facts: [{s, p, o, source?}] 写入 SPO 三元组;单值谓词(version / license / severity / auth)取代写入,多值谓词(depends_on / has_cve / exposes / listens / affects)累加写入
sec.ontology.query s?, p?, o?(空字段 = 通配) 按模式查询;如 {p:"has_cve"} 列所有 CVE,{s:"pkg:lodash"} 列关于 lodash 的全部
sec.ontology.reachable start, predicate 沿可传递谓词从 start 多跳遍历,得可达实体集;用于传递依赖 / 攻击面爆炸半径

实体命名约定:建议带类型前缀(pkg:lodash / svc:api / cve:CVE-2021-23337),便于跨类查询。SSOT 持久化:事实落到工作区,对话折叠不影响。

8.13 软件物料清单(SBOM)工具 — 供应链漏洞排查

sbom.*工作区工具(作用于项目的依赖清单,不限于 samples/),共 5 个。结果文件默认落到工作区 .avlcode/ 目录。配套设置见 §3.16。

工具 用途
sbom.generate 扫描依赖清单生成 SBOM(默认 CycloneDX 1.5 JSON)
sbom.convert 在 CycloneDX / SPDX / DSDX / SWID 之间任意互转
sbom.audit 对照 OSV 排查已知漏洞,标注 CVE / KEV / CVSS 严重度
sbom.vex 符号级可达性收敛漏洞,输出 OpenVEX
sbom.dbsync 维护本地离线 OSV 漏洞库(air-gap)

8.13.1 sbom.generate

参数 类型 默认 说明
path string 工作区根 扫描根(相对工作区)
format string cyclonedx cyclonedx / spdx / dsdx / swid;加 -xml 出 XML(如 cyclonedx-xml),dsdx-tag 出 DSDX 原生 tag-value
output string .avlcode/sbom.<format>.<ext> 输出路径(相对扫描根)

识别的生态(Ecosystem 常量):go · npm(含 yarn Berry / pnpm v5)· cargo · pypi · maven · gem · composer · nuget · swift · pub · conan · conda · hex · cocoapods · cran · hackage · julia(本版新增;另新增 Deno 清单支持)。清单文件同前(npm/pypi/conan 多锁首个命中为准,maven 三种全读)。本版增强:清单扫描递归子目录、缺锁回退清单文件解析;剔除首方误报、正确处理 Go replace/exclude、版本比对保真;审计逐生态回退 + Maven/Gradle/pip/Conda/Conan/npm 精度提示 + 未审生态明示 + 可利用性描述。缺清单跳过该生态,全缺得 0 组件空清单(非错误)。输出确定性可复现(无时间戳 / 随机序列号、组件定序)。返回字段:format / encoding / component_count / ecosystems / bom_path / components(预览,最多 50)/ truncated

8.13.2 sbom.convert

参数 类型 默认 说明
input string 必填,待转 SBOM 文件(相对工作区)
to string 必填,目标格式(同 format 取值语法)
from string 自动嗅探 源格式覆盖
output string <input>.<to>.json 输出路径

经规范化中间模型转换(N 读 + N 写);保留组件 / purl / 许可 / 哈希 / 依赖关系,目标不支持的字段按规则丢弃(DSDX 无哈希、SWID 哈希不映射)。格式与编码矩阵:CycloneDX(1.5) JSON+XML、SPDX(2.3) JSON+RDF/XML、DSDX JSON+XML+native、SWID JSON+XML,均可读可写。

8.13.3 sbom.audit

参数 类型 默认 说明
path string 工作区根 扫描根
mode enum auto auto(本地有库则离线、否则在线)/ online(api.osv.dev) / offline(本地快照)
output string .avlcode/sbom.audit.json 报告路径

对照 OSV 匹配;CVE 取首个 CVE-… 别名;KEV 取自 <config>/kev.json。严重度按 CVSS 向量计算:v2(AV:/AC:/Au:) / v3(CVSS:3) / v4(CVSS:4.0,官方 MacroVector 查表);定级 critical ≥9 / high ≥7 / medium ≥4 / low >0;记录自带 GHSA 定性等级时以其为准。结果最严重优先、KEV 置顶。返回字段:source / components_scanned / vulnerable / total_vulns / by_severity / kev_count / report_path / findings(预览,最多 30)/ truncated

8.13.4 sbom.vex

参数 类型 默认 说明
path string 工作区根 扫描根
mode enum auto 同 audit 来源
output string .avlcode/sbom.vex.json OpenVEX 输出
lsp_confirm bool false 用语言服务器确认每包至少一处真实引用(需装对应 server,会拉起进程);默认纯离线导入扫描,air-gap 友好
detail bool false findings_detail(供 App 端 LLM 收敛用)

先跑 audit,再做确定性符号级可达性分析。状态:affected / not_affected / under_investigation / fixednot_affected 带机读理由(vulnerable_code_not_present / vulnerable_code_not_in_execute_path / component_not_present / inline_mitigations_already_exist)。可达性扫描上限:≤4000 文件、≤256 KiB/文件,跳过 .git/node_modules/vendor/target/dist/build 等目录。Go 凭 OSV 受影响符号可直接收敛 not_affected;其它生态默认「用到即 affected、没用到即 under_investigation」(不擅自判 not_affected),可经 lsp_confirm 或 App 端符号比对进一步收敛。结论按 affected > under_investigation > fixed > not_affected 排序。

8.13.5 sbom.dbsync

参数 类型 默认 说明
action enum status status(纯本地,看记录数 / 新鲜度)/ sync(联网拉 OSV dump)/ import(离线导入)/ kev(刷新 KEV)
ecosystems string[] 自动检测 sync 指定生态;空则按工作区清单自动检测
path string 工作区根 sync 自动检测的扫描根
zip_path string import 必填:本地 OSV 生态 zip(相对工作区)
osv_eco string import 必填:该 zip 对应的 OSV 生态名(如 npm / PyPI / Go)

13 个生态有 OSV 离线 dump 覆盖(SyncableEcosystems);conan / conda / CocoaPods 暂无离线库(可在线审计)。importzip_pathosv_eco 报错。

8.14 云端威胁情报工具(VirusTotal / GTI)

两组工具、独立门控,均在 设置 → 安全 配置(见 §3.17)。

哨兵哈希扫描 sec.vtai_*(绑定「自动扫描拦截·哨兵」配置,用 vtGuard):

工具 参数 说明
sec.vtai_check_hash hash(必填,MD5/SHA1/SHA256) 哈希查情报、不上传;返回 verdict/malicious/total/label/source/link;未配后端报错
sec.vtai_scan path(必填), force(bool) 上传高危文件全量扫描;RegisterUploadRequired——仅开「上传扫描」或本地 YARA 时对 LLM 可见,否则退化为哈希查询
sec.vtai_register display_name? / human_alias? / bio? / contact_email? 触发 VirusTotal AI 注册;实际在设置面板同意流程完成(RegisterVTAI
sec.vtai_status 返回 enabled/monitor/auto_scan/mode/source/public_handle/cache_size

全量情报 vt.*full_tools 策略门控,与哨兵并存):

工具 关键参数 门控
vt.lookup indicators[] / indicator, type?(file/url/domain/ip), relationship? 免费只读(仅主开关)
vt.api resource? / id? / relationship? / action? / path? / method(默认 GET) / query{} / body{} / raw? 读默认可用;写受 query_only、Premium/GTI 端点受 enable_paid_features
vt.submit url? / file? / rescan? / wait? / confirm? 写;query_only 拦;file 上传 ≤ 32 MB、confirm_sample_upload 开时需 confirm=truewait 轮询上限 180s
vt.download hash(必填), save_to(必填) Premiumenable_paid_features
vt.feeds type, timeYYYYMMDDhhmm/hh,UTC), save_to(均必填) Premium;T-60 分钟延迟
vt.hunt op(retrohunt_*/notifications/rulesets), id? / rules? / corpus? / limit? / cursor? Premium;异步

full_tools 策略字段enabled / query_only(默认开)/ enable_paid_features(默认关)/ confirm_sample_upload(默认开)/ api_baseCheck() 顺序:未启用 → ErrDisabled;写 + 仅查询 → ErrQueryOnly;非 public 档 + 未开收费 → ErrPaidDisabled。档位(public/premium/gti由 VT 远端 403 兜底。启用需 KeyUsable(密文可解密且非空),否则启用环节即报错。响应默认经 Summarize() 紧凑摘要(names cap 8、tags cap 12),raw=true 取原始。超时:api/lookup/hunt/submit 30s,download/feeds 5 分钟。


9. 外部工具服务接入参考

9.1 服务条目字段

每个外部服务条目包含:

字段 类型 说明
name string 名字(也作为工具前缀,例如 notion.*
protocol enum http(Streamable HTTP,手动添加时的默认)/ sse(旧式)/ stdio。填错时连接会自动协商回退:若服务端可达但握手被拒(如 405 / Bad Request),自动改试另一种 HTTP 传输并把实际生效的方式写回配置;连不上(拒绝 / 超时 / EOF)则不回退
lazy_load bool 是否延迟加载该服务的工具。缺省跟随全局「工具分类延迟加载」;显式关闭则该服务工具常驻。落盘 mcp_lazy_load(按后端名)
endpoint string HTTP / SSE 通道的 URL;stdio 通道不用
command string stdio 通道要启动的命令行(如 npx -y @some/mcp-server
args array stdio 通道的命令行参数
env map stdio 子进程的环境变量(凭证、token 等)
credential string HTTP / SSE 的 Bearer Token 或 API Key
oauth object OAuth 2.1 + PKCE 配置(authorizationEndpoint / tokenEndpoint / clientId / scope / clientSecret?);endpoint 可通过 .well-known 自动发现
enabled bool 是否启用
timeout_ms int 请求超时
retry object max=3, base=500ms, jitter=0.3

凭据存储(VAULT)credential / env / oauth.refresh_token 与续期元数据不入主配置文件、不入日志,统一进国密加密的凭据库(SM4-GCM + HKDF-SM3,machineID 绑定);存量明文凭据下次使用时被动迁移

9.1.1 OAuth 流程字段

字段 说明
authorizationEndpoint OAuth 授权端点
tokenEndpoint OAuth token 端点
clientId 客户端 ID
clientSecret 可选;缺省即 public client(仅依赖 PKCE)
scope 申请的权限范围
redirectUri 本机回环:http://127.0.0.1:<port>/cb
pkce.codeVerifier / pkce.codeChallenge S256
accessTokenExpiresAt 启动 / 后台到期前用 refresh_token 自动换新

9.1.2 健康看板字段

MCP 配置 → 健康看板 来源是 zMCP gateway 的 /admin/metrics 环形缓冲:

字段 说明
backend MCP 后端名
calls 调用次数(窗口内)
failRate 失败率
p50Ms / p95Ms 响应耗时分位(毫秒)
lastError / lastErrorAt 最近一次失败错误信息 + 时间

9.2 工具命名规则

来源 命名
内置工具 不加前缀(例如 read, git.status
安全分析 sec.* 前缀
外部服务 <服务 name>.* 前缀(例如 notion.search
通讯出站 channels.* 前缀
技能调用 skill.invoke

9.3 错误抽屉条目

字段 说明
时间 触发时间
工具 工具名
状态码 / 错误类 HTTP 状态 / 异常类
摘要 单行简述
详情 服务端原始返回(最多 4 KB)
重试次数 自动重试已尝试次数

后端缺席兜底:某后端一时缺席 / 未就绪时,tools/call 过去会返回「unknown tool」协议错误;现对未知工具做兜底处理按需重连自愈,后端就绪后自动恢复,不再因此整体不可用。


10. 工具权限策略参考

10.1 三态语义

状态 图标 行为
启用 直接放行,不弹窗
询问 每次调用前弹窗审批(接入实际确认流程,批准前调用暂停)
禁用 直接拒绝,记录到错误抽屉

三态对子代理同样生效:「禁用」在主代理与子代理两侧一并生效(子代理侧 fail-closed,工具直接不可见);卸载插件 / 移除 MCP 后端时自动清理残留的工具配置键,盘上配置与实际可用工具保持一致。

10.2 决策聚合与多端应答

Hook 决策聚合:同一次评估中多个 Hook 返回的权限决策按下列优先级合并(前者胜):

deny  >  defer  >  ask  >  allow

多端应答:审批弹窗与远程通道(微信等)同时收到同一请求时,首个应答生效;其余端的后续回复会被提示已应答。

10.3 白名单匹配粒度

粒度 覆盖范围 适用场景
仅本次 单次调用 谨慎评估
同工具同参数 一组完全相同的入参 推荐默认
同工具任何参数 该工具任意调用 内部脚本
整工作区放行 该工作区所有工具 仅限隔离环境

10.4 远程审批回写

命令 等价桌面操作
/approve <审批号> 允许(仅本次)
/always <审批号> 始终允许
/deny <审批号> 拒绝
不回复 30 秒倒计时结束即超时拒绝

10.4.1 无限制模式(高级)

输入区模式滑块右侧盾牌开关;按会话独立、纯内存、重启即清。开启前有 5 秒冷静期。

解除 开启后行为
工具批准 跳过批准弹窗,直接执行
命令白名单 fs.exec 不限命令
网络过滤 web.fetch / web.bing 不过滤内网 / 环回 / 链路本地

始终保留的硬底线(不受开关影响):

硬底线 说明
samples/ 沙箱 不可解除
rm -rf 参数校验 仍校验
危险注入黑名单 fork 炸弹 / 写 /etc / curl|sh / eval
协议白名单 http(s) 放行

消息标识:模式期间产生的连续消息以浅色边框整体圈出(起止界标),关闭后当场收口;模式未结束不打「结束」界标。子代理可按需递归继承该模式,继承产生的消息同样带标识。

10.5 审批请求字段与留痕

审批弹窗(hook:ask 事件)携带的字段:

字段 说明
request_id 审批号
event 触发的 Hook 事件名
fingerprint 授权指纹,「始终允许」按它匹配
handler_type / handler_label 处理器类型与显示名
matcher / match_target 命中的匹配器与匹配目标
source_scope / source_id 来源作用域(plugin / user / workspace)及其 ID
session_id 会话 ID
timeout_sec 倒计时秒数(30)

决策取值:deny(拒绝)/ allow_once(仅本次允许)/ always_allow(始终允许)。

留痕:仅「始终允许」会持久化 — 写入工作区级授权文件 hook-approvals.yaml(记录授权指纹与决策时间),可在 设置 → Hooks 查看与撤销;「仅本次允许」「拒绝」与超时只作用于当次调用,不落盘。


11. 计划与待办状态参考

11.1 计划(Plan)状态机

状态 触发 下一态
起草中 助手开始写计划 草稿就绪
草稿就绪 助手发出完整计划 已接受 / 已修改 / 已拒绝
已修改 用户编辑后回交 起草中(再补完善)
已接受 用户点击「接受」 进入执行
已拒绝 用户点击「拒绝」 助手重写

11.2 待办(Todo)状态

状态 图标 说明
待办 尚未开始
进行中 助手当前正在做
完成 已完成
失败 已失败或被跳过

11.3 跨折叠保留

历史折叠发生时,下列字段始终原样保留在新摘要中:

  • 计划当前状态(起草中 / 草稿就绪 / …)
  • 计划的最新版本号与差异概要
  • 待办列表的全部条目与其状态
  • 用户已确认的关键决策("接受了 v3 计划")
  • 上下文必需事实(路径、版本号)

12. 技能(SKILL.md)格式参考

12.1 文件结构

<skill-root>/
├── SKILL.md              # 必需。前置元数据 + 模板正文
├── README.md             # 可选。给人看的说明
├── examples/             # 可选。示例输入输出
└── …                     # 可选附加资源

12.2 前置元数据字段

SKILL.md 顶部使用 --- 分隔的 YAML 前置元数据,所有可识别字段:

字段 类型 必填 说明
name string 用作 slash 名(建议小写连字符)
description string 一句话说明,列在 /help
argument-hint string <arg1> <arg2> 提示
allowed-tools array 限制本技能可用的工具白名单
denied-tools array 黑名单(与白名单二选一)
work-modes array 适用工作模式 [plan, execute, …]
model string 强制使用的模型;缺省继承当前
temperature number 强制温度;缺省继承当前
version string 语义化版本号
license string SPDX 标识
author string 作者 / 团队
tags array 用于市场过滤
signature string 国密签名块(由签名工具自动写入)

12.3 正文模板

正文为标准 Markdown,支持下列扩展:

语法 含义
$1 $2 $N 第 N 个位置参数
$ARGUMENTS 全部参数原样拼接
!`<shell>` Shell 预处理;输出替换该位置
{{include:path}} 内联另一个 Markdown 文件(相对 skill-root)

12.4 三层加载优先级

层级 路径 优先级
全局 应用数据目录的全局技能区 最低
工作区 <workspace>/.config/skills/<name>/
插件 插件包内提供

12.5 调用方式

方式 触发点 行为
用户 slash /<name> <args> 渲染后注入下一回合 system prompt
助手主动 skill.invoke 工具 渲染后作为工具响应回到对话流

12.6 内置技能

应用内置一批技能(如 skill-creator),启动时自动物化、内容漂移自动覆盖;通过构建期签名 + 内置签名锚点(trust ExtraSignerRoots),在严格签名策略下也放行。设置 → 技能 面板以「内置」徽标区分内置 / 自建 / 第三方。兼容 Agent Skills(agentskills.io):跨客户端发现 / 解析容错 + 工具名翻译映射。

12.7 market.check(发布契约校验)

内置只读、确定性、离线工具,按 zMarket 发布契约校验本地技能 / 插件目录:

参数 类型 默认 说明
path string 必填,待校验目录相对路径(如 .avlcode/skills/my-skill
kind string 自动探测 skill / plugin / mcp / provider
version string 目录推断 覆盖 / 补充严格 semver
source string ./<name> 覆盖 source 形态
manifest string 从目录派生 直接给 manifest JSON

报告过 / 不过 + 原因 + 缺什么(name slug、严格 semver、source 形态、能力声明、归档安全等)。不联网、不提交。注:.skill-sign 签名 ≠ zMarket 认可;只查发布契约形态,非运行时安全审计。


13. 助手人设参考

13.1 人设字段

字段 类型 必填 说明
id string 内部 ID;系统消息携带
name string 显示名
personality string 短句个性
soul string 完整核心提示词
soul_path string 引用 Markdown 文件作为 SOUL(与 soul 二选一)
default_model string 默认模型
default_temperature number 默认温度

13.2 内置人设

ID 名称 默认模式
builtin/auto 自动 auto
builtin/plan 筹划 plan
builtin/prepare 准备 prepare
builtin/execute 执行 execute
builtin/assess 评估 assess

13.3 模式 → 助手绑定

每个工作区维护一份 5 项映射(mode → persona id):

mode_persona:
  auto:    builtin/auto
  plan:    builtin/plan
  prepare: builtin/prepare
  execute: builtin/execute
  assess:  builtin/assess

14. 模型 Provider 参考

14.1 Provider 字段

字段 类型 必填 说明
name string Provider 标识
display_name string 显示名
base_url string API 基础地址
api_key string 凭证(共享额度走系统下发,无需填写)
protocol enum openai-compat / anthropic / gemini / custom
models array 模型列表;空时启动后异步拉取
priority int 100 兜底排序
enabled bool true 是否启用
api.headers map[string]string 自定义请求头(仅自定义 Provider 可编辑;逐条 Header.Set,可覆盖内置;空 key 与含 CR/LF 的条目自动跳过;Host 头不生效)

14.2 内置 Provider 占位

name 说明
AVL-Zero 共享额度入口;登录后自动下发 key
OpenAI 标准 OpenAI 协议
Anthropic Claude 系列
Aliyun 阿里云通义系列
Volcengine 火山方舟

14.3 参数命名映射

通用名 OpenAI Anthropic Aliyun
temperature temperature temperature temperature
top_p top_p top_p top_p
max_output_tokens max_tokens max_tokens max_tokens
stream stream stream stream
stop stop stop_sequences stop

15. 历史折叠(Compact)参考

15.1 触发方式

来源 时机
手动 用户 ⌘⇧K / 标签右键 / /compact
自动 助手在自身 context 接近上限时反向触发
会话切换 切到长会话时按需

15.2 折叠摘要的字段

字段 说明
compacted_from_ids 被折叠的原消息 id 列表
summary LLM 生成的摘要正文
plan 当时计划的最新状态
todos 当时待办的全部条目
decisions 用户已确认的关键决策
facts 必需事实(路径、版本号、配置项等)
excluded_from_context 被折叠的原消息是否对 LLM 隐藏

15.3 多次折叠

折叠是 append-only 的:每次折叠都新增一条节点而非替换;UI 上以"折叠摘要 →(展开)→ 原消息"层叠展示,可逐层展开到最早历史。


16. 子任务与后台执行参考

16.1 派发参数

参数 类型 默认 说明
prompt string 子任务提示词;必填
agent_id string 当前助手 指派子助手人设
model string 当前模型 子任务模型
run_in_background bool false true 走后台
timeout_ms int 600_000 前台超时;后台不适用

16.2 BackgroundRegistry

字段 默认 说明
同时在跑上限 64 超出立即拒绝并提示稍后重试
终态保留 30 分钟 超过窗口被回收
优先级 killed > done 外部 stop 与自然结束撞拍时 killed 胜

16.3 子任务工具

工具 参数 说明
Agent prompt, agent_id, run_in_background? 派发单个子任务
AgentParallel legs[](2–16), timeout_seconds? 一次拆多路并行 fan-out(见 §16.5)
TaskOutput task_id, limit? 拉取后台任务状态 / 输出片段
TaskStop task_id 强制终止后台任务
StopAgentToolRun child_session_id 单独停止某个正在跑的子代理(后台 / 并行腿);幂等,同步内联子代理需停整轮
TaskWait task_ids, mode=all|any, timeout_seconds(默认 300,最长 1800) 阻塞等待后台任务 / 子代理;超时返回「还在跑」让模型决定继续
EnterPlanMode / ExitPlanMode 进入 / 退出筹划
TodoWrite todos 写入或更新待办列表

16.3.1 AgentParallel 参数

参数 类型 默认 说明
legs array 必填,2–16 条;每条独立 fresh-context 子 Agent,全部完成后聚合返回
legs[].subagent_type string 必填,目标子代理类型
legs[].prompt string 必填,自包含子任务提示词(腿看不到主对话历史)
legs[].description string 可选,3–5 词,仅用于日志 / UI
legs[].model string 继承 可选,单腿模型覆盖
timeout_seconds int 600 整体等待超时,上限 1800;到时未完成的腿返回 pending 并在后台继续

少于 2 条会报错(改用 Agent),多于 16 条静默截断到前 16。每条腿作为真实后台任务派发、内部统一 Wait(all) 聚合;单腿输出超 8000 runes 截断(提示用 TaskOutput 取全文)。腿为叶子层、不可再嵌套 Agent / AgentParallel。v1 仅 all 模式。返回 ParallelResultcompleted / num_ok / num_failed / num_pending / legs[] 等,永不抛错)。

渲染:调用卡片执行期即显示并随实时 store 反映各腿运行状态(停止后不再转圈);极简密度下结果块不被工具组误折叠。

16.4 长程任务崩溃恢复

后台任务(run_in_background=true)的进度落盘到本机全局目录(每任务一份 JSON 快照);走到终态(done / error / killed)即删除快照。

默认 说明
落盘范围 仅后台任务 前台同步任务不落盘
启动扫描 异步、不阻塞 先做脏条目清理(父会话已删的条目自动剔除),再列出残留任务
自动恢复开关 关(auto_resume_tasks 设置 → 智能体 → 自省;开启后启动自动续跑(夜间无人值守)
启动自动恢复上限 5 防「续跑消息风暴」;其余转手动横幅
恢复方式 注入父会话续跑 不直接重启子进程,而是向原父会话注入「继续 / 重新委派」消息(对用户可见)
手动入口 顶部恢复横幅 每条可「恢复 / 忽略」,另有「全部忽略」

16.5 自修复循环参考

错误按来源(request / gateway / upstream)与类别分流后映射到 4 类修复策略,各有按会话计的尝试上限:

修复策略 适用错误 上限
transient_compact(压缩重试) 上下文超限 2
transient_fallback(切换供应商,需确认) 无可用通道 / 上游过载 / 上游认证失败 3
backoff(退避重试) 限流 / 超时 / 网络 3
terminal(交还用户) 余额不足 / 需重登 / 模型不存在

特例:upstream 来源的 auth_error 重判为 transient_fallback(某通道 key 失效而非用户凭据);仍可重试的 terminal 救回为 backoff;5xx / 408 默认可重试,其它 4xx 终止。

网络抖动自愈:瞬断 / 临时离线时探测「离线 → 在线」再续跑,这段等待不计入重试预算;连接重置、DNS 暂时解析失败、握手中断等连接级瞬断细分为网络问题(而非笼统 llm_error),不误导你排查上游配置。

产出型自愈MaxOutcomeHeal = 3):回复被长度截断自动续写(truncated_continue)、推理绕圈打断(reasoning_loop)、内容过滤换述(content_filter)。门禁升级:同一处检查 / 测试失败或待办无进展达上限(测试门禁 3 次、无进展待办 2 次)时升级提示换思路。供应商备选通过 App.RespondProviderFallback 回写确认,前端为 SelfRepairFallbackBanner;后端事件 self_repair:fallback_confirm / _applied / _declined / self_repair:outcome

16.6 经验学习闭环参考

组成 说明
自愈历史学习(P1) 每类自愈成败落盘 ~/.config/avlcode/self-heal-stats.json;平滑率 (succ+1)/(total+2)。样本 < 5 用默认上限 3;率 < 0.2 → 1、0.2–0.5 → 2、≥ 0.5 → 3;每类至少 1,仅下调不上调
自动反省(P2/P3) auto_reflect(默认关,设置 → 智能体 → 自省)开启后,多步任务收尾异步跑一次 GRAI+KISS 复盘;读轨迹摘要(最多 5 个错误步)+ 自愈统计,产出 ≤ 8 条 Keep/Improve/Stop/Start 教训
教训去向 沉淀到记忆宫殿 _pending 草稿盒(房间 scratch、类型 decision、不衰减),需人工审批后才入正式库;按标题去重;事件 reflection:done

17. 命令行入口参考

命令行版本与桌面版共享同一份会话与配置,互相之间可以接力。

17.1 主子命令

命令 用途
avl tui 在终端里启动 TUI 版本,与桌面版共享同一份会话
avl zagent-tui 直接启动批处理对话 TUI,适合脚本化驱动
avl workspace 工作区操作
avl agent 一次性 LLM 对话(JSONL 批处理)
avl skill 技能管理与签名
avl channel 随行通讯(独立运行 / dry-run / 主 App 回调)
avl mcp 外部工具服务连接调试
avl install 在当前目录安装 5 个子命令的入口符号链接

tui / zagent-tui 由主二进制内置,无需额外安装 zBoxFull 发行包。

17.2 通用参数

参数 含义
`--workspace <id path>`
--config <path> 显式指定配置目录
--log-level <level> error / warn / info / debug
--no-color 关闭彩色输出
-h / --help 帮助
-V / --version 版本号

17.3 退出码

含义
0 成功
1 通用错误
2 参数错误
64 配置错误
65 数据错误
69 服务不可用
70 软件错误(应反馈)

18. 主题与外观参考

18.1 主题三档

模式 触发 表现
system 跟随系统 自动切换
light 浅色 纯灰阶 + 暖白底
dark 深色 OKLCH 蓝调 + 高对比度

18.2 关键色(用户可感知)

角色 浅色 深色
主品牌 深蓝 浅蓝
强调 / 链接 浅蓝
状态 · 成功 绿 绿
状态 · 警告 琥珀 琥珀
状态 · 错误

18.3 字体

角色 默认
界面 系统 UI 字体
等宽 系统等宽(SF Mono / Consolas / JetBrains Mono …)
字号档位 小 / 中 / 大(默认中)

18.4 Header 快捷菜单(显示组滑块)

Header 右上快捷菜单集中四个外观滑块,与设置页同源同步:

滑块 档位 对应设置项
主题 system / light / dark 设置 → 通用 → 主题
布局 侧边栏 / 顶部标签页 设置 → 通用 → 工作区与会话布局workspace_display_mode
信息量 正常 / 极简 设置 → 通用 → 消息密度message_density
语言 简 / 繁 / EN 设置 → 通用 → 语言language),切换即时生效并落盘

18.5 会话状态条(strip)布局

会话状态条纳管文件变更、记忆、待办、计划、目标、引导、结果草稿、附加资料、建议任务、自检门禁共 10 类条目,按窗口宽度在两种形态间自动切换:

形态 触发 呈现
row 窄屏,或信息量 = 极简(full 档)时恒用 输入框上方横排,超宽换行;展开为向上弹出的浮层
rail 宽屏(内容区上限 + 268px 起) 消息区右上纵向状态栈,宽 236px
  • rail 形态下展开为右侧堆叠抽屉:固定定位、无遮罩、不挤压正文,宽 680px;以整个 rail 为锚,切换不同条目时抽屉位置稳定,并按两侧可用空间自动选择向左或向右展开。
  • 超宽窗口下固定预留抽屉槽位,「内容 + rail + 抽屉」整体居中,开合抽屉不会移动主内容。
  • 切换布局只改变位置,不改变内容宽度。

19. 系统集成参考

19.1 系统托盘

说明
启用条件 设置 → 通用 → 最小化到系统托盘 开启
托盘图标 平台原生图标,跟随主题切换
关窗行为 隐藏到托盘并保留后台进程
菜单项 显示窗口 / 设置 / 检查更新 / 退出
macOS 限制 启停需重启应用生效

19.2 开机自启

平台 实现位置
macOS ~/Library/LaunchAgents/<AppID>.plist
Windows HKCU\Software\Microsoft\Windows\CurrentVersion\Run
Linux ~/.config/autostart/<AppID>.desktop

启动参数:--from-autostart,配合"最小化到托盘"走静默启动。

19.3 通知

事件 默认通知
后台任务完成 系统通知中心
待审批 系统通知中心(如桌面在前台则只弹 modal)
点数到期 状态点 + 一次性 toast
升级可用 一次性 toast;可推迟

19.4 在线文档入口

入口 行为
侧边栏「帮助」按钮 系统默认浏览器打开 https://avlcode.cn/docs.html
macOS 帮助菜单 → 在线文档 同上(紧跟在「命令列表」后)

20. 状态指示与提示参考

20.1 左侧栏状态点

颜色 含义
绿 一切正常
琥珀 凭证 1 小时内到期 / 限流警告 / 通道重连中
离线 / 凭证已过期 / 严重错误
未登录

20.1.1 上下文占用圆环

显示当前上下文窗口占用比例的圆环按占用分档变色

占用 颜色
< 75% 常态色
≥ 75%
≥ 90% 红(已接近上下文上限,宜续跑 / 折叠)

20.2 会话标签徽章

徽章 含义
数字 该会话有 N 条新消息(仅当切换走时累计)
该会话当前有助手在运行
🌙 该会话当前有后台子任务
红点 该会话有未处理的审批请求

20.3 输入框右侧按钮

形态 含义
发送(默认) 助手空闲;点击发送当前输入
停止 助手运行中;点击同步终止主助手 + 所有子任务
置灰 输入框为空

21. 错误信息参考

下表收录用户最常见的提示文案及其含义与处置建议。

提示文案 含义 处置
服务未就绪 后台子进程仍在初始化 等待 30 秒;超时则查看错误抽屉
工具调用被拒绝 工具被设为禁用 / 被审批拒绝 / 路径越权 检查工具权限策略与路径范围
模型超时 LLM 长时间无响应 重发;或切到备用 Provider
模型返回为空 LLM 输出长度为 0 多见于触发拦截;尝试改写 prompt
上下文超长 接近模型 context 上限 触发折叠或开新会话
工作区已锁定 该工作区已有进程持有 等待或重启应用
凭证已过期 登录 token 失效 重新登录
点数不足(HTTP 402) 账号点数耗尽 「前往购券」(购券口径,与账号用量 / 服务端计费一致,不用「充值 / 重置 / 余额」;不再当成可重试错误反复重试)
套餐额度已用尽(HTTP 429) 套餐配额耗尽 「等配额刷新或升级套餐」(不再误判成限流)
鉴权失败(HTTP 401 / 403) 需要登录 / Key 失效 「重新登录或重发 key」(不再让你去查配置)
当前模型暂无可用通道(HTTP 503) 通道全部不可用 稍后重试或切换模型
上游服务异常(HTTP 502 / 529 / overloaded) 上游问题 如实说明是上游;上游鉴权失败时不再误导你去查自己的 key
Provider 端点不存在(HTTP 404,endpoint_not_found_error URL 路径写错 检查 Provider Base URL;与"API JSON 返回的 404 模型不存在"分流
macOS App Translocation 应用在只读临时镜像运行(未拖进"应用程序") 「退出应用 → 拖进『应用程序』→ 重新打开 → 再检查更新」
通道断开 IM 通道掉线 自动重试;30 秒后仍失败请重新扫码
配对码无效 6 位码错误或过期(10 分钟) 重新生成
升级签名无效 升级包签名校验失败 自动回滚;手动通过应用内升级再试
技能签名无效 技能包签名校验失败 拒绝执行;联系发布方
后台任务上限 在跑后台任务达到 64 等待回收或主动终止

22. 数据与备份参考

22.1 备份内容

说明
工作区列表 名称、路径、归档状态
会话历史 全量消息流,含工具调用、计划、待办、审批
助手人设 内置 + 自定义
技能 全局 + 工作区 + 插件提供
工具策略 三态权限 + 白名单
外部服务 凭证以加密形式存储
通道绑定 IM 对端 ↔ 工作区
设置项 通用 + 工作区

22.2 备份与恢复

操作 步骤
备份 关闭应用 → 设置 → 数据 → 数据目录 → 整目录打包
恢复 关闭应用 → 替换原数据目录 → 启动应用
跨设备迁移 备份后还原到新设备同名目录
同步(实验性) 设置 → 数据 → 同步 开启后多设备共享

22.3 完整清理

关闭应用 → 删除应用本体 → 删除数据目录

数据目录包含登录凭证、会话历史、外部服务凭证;删除后不可恢复


22.6.1 SSH 远程工作区协议

字段 类型 默认 说明
协议 enum zworkspace zworkspace / ssh
主机 string user@host[:port]
认证 enum password password / private_key / private_key_with_passphrase
私钥路径 string 文件选择器挑选;本机解析
远程根目录 string ~ 支持 ~ 自动展开为远端家目录。拒绝 /.. 逃逸与 ~/..(含 ~//../)一层穿透均已封堵;展开并解析真实路径后再按同一口径二次校验
凭据加密 SM4-GCM 国密落盘 + 本机绑定;每次保存使用随机盐
凭据保留 bool 记住 「记住密码 / 口令」复选框。未勾选则为临时凭据:连接期内保留(保重连),应用启动与退出时清除。工作区粒度,落盘为 ssh_secrets.yamlremember 标记;存量无此字段视同已记住
主机指纹 首连确认 首次连接展示 SHA256 指纹,由你核对确认后才钉住 known_hosts,确认前不发送密码;已知主机换钥硬拒(疑似中间人)

SSH 工作区与本地工作区的差异:

能力 本地 SSH
fs.* 文件操作 本地 走 SFTP / 远端 shell
fs.grep Go RE2 远端系统 grep(提速)
fs.exec 同步 本地 远端 shell
fs.exec.start 后台长驻 启用(会话随 Interpreter 生命周期结束) 启用(会话状态存远端 <root>/.avlcode/sessions/,跨断线重连与应用重启存活;setsid 自成进程组,kill 连子孙一并收;日志为完整文件、无本地版 256 MiB 环形丢尾;不做 venv 感知
文件变更面板 git 本地 git 远端 git(无 git 时隐藏面板)
Skills / Plugins / Hooks 本地 .avlcode/ 远端 .avlcode/
文件威胁扫描 本地字节 SFTP 取字节后扫描
sys.info 报告身份 本地 远端真实身份
「关闭并清除数据」菜单项 显示 不显示 + 后端拒绝(避免误删远端文件)
「移除工作区」 删本地记录与凭据 删本地记录与凭据(不碰远端文件)
跨 OS 客户端兼容 远端命令不注入本机环境变量(用远端登录 shell 自带环境);远端路径一律按 POSIX 文法构造(Windows ↔ Linux 已彻底打通)

22.6.2 会话附加目录

字段 类型 默认 说明
入口 输入框「+」菜单:附加目录(只读) / 附加目录(读写)
权限 enum ro(读 / 列举 / 搜索) / rw(额外允许写 / 删 / 创建)
作用域 会话 仅当前会话;其它会话不受影响
持久化 会话内 随会话保存;重启后台自动重新生效
显示 输入框上方「附加路径」条 可随时移除
路径标注 绝对路径 搜索 / 列举结果标绝对路径,来源一目了然
会话身份注入 系统在调用链注入 _session_id AI 不可伪造身份冒用别会话的附加权限

22.7 项目指令(AGENTS.md)

工作区根目录放 AGENT.md / AGENTS.md / CLAUDE.md(按优先级取一份),自动作为系统提示里的「# 项目指令」块。

字段 行为
文件名优先级 AGENT.md > AGENTS.md > CLAUDE.md(取第一个存在的)
注入位置 系统提示词独立「# 项目指令」块
重新读取 每轮重新读,改了立即生效
子目录注入 AI 读写某子目录下文件时,自动把路径上各级 AGENT.md 一并注入(每会话每子目录一次,去重不刷屏)
截断策略 UTF-8 字符边界安全截断 + 截断标记
软链护栏 EvalSymlinks 真实路径校验,不在工作区内则拒绝
内置编辑器 会话菜单 / 工作区菜单「编辑 AGENTS.md」;Cmd/Ctrl+S 保存、Tab / Shift+Tab 缩进、未保存保护、空状态模板

22.8 消息内链接与文件路径点击行为

类别 识别 点击行为
工作区内文件路径 带常见扩展名(如 src/main.go / README.md 系统文件管理器定位并选中
外部链接 http(s) URL 默认浏览器打开
反引号内联代码里的路径 带扩展名 与普通链接同等识别
工具结果 / 回答里的 文件:行 path:line(:col)? 带行号的工作区文件 → 「查看」打开源码预览并滚到该行
代码块里单条 .md / .mdx 路径 文件存在(异步校验后升级为可点) 打开 Markdown 预览抽屉
普通内联代码 不识别为链接
危险协议 http(s) 拦截
纯目录 / 无扩展名片段 a/b/etc/hosts 不可点

点击后弹出非模态浮动工具条(主动作「查看 / 打开」+「复制」),用 Popover API 渲染在顶层,弹窗内点击同样不被遮挡。「查看」对带行号的源码走 PreviewSourceFile(target, line) 在代码视图定位到该行,让 code.search / code.ask 给出的 文件:行 证据可核对。

23. 文件命名约定

下表为用户可见的文件命名规则,方便手工脚本化处理(不要修改这些文件,除非显式说明可以)。

类别 命名格式 说明
会话文件 <sid>.jsonl sid 为 8 字符随机;前 4 位为短 id
计划快照 <sid>.plan.json 与 jsonl 同名
待办快照 <sid>.todos.json
工作区配置 agents.yaml tools.yaml channels.yaml 各功能独立文件
技能 <skill-name>/SKILL.md 技能根目录名建议小写连字符
助手人设 <persona-id>.yaml 路径斜杠以 __ 编码
日志 avlcode-YYYYMMDD.log 按日轮转

24. 网络访问清单

下表收录应用可能发起的网络请求,便于在受限网络环境中加白。

用途 协议 说明
登录 / 共享额度 / 用量 HTTPS 账号管理后台
模型调用(共享) HTTPS 共享额度走的模型供应商
模型调用(自有 Key) HTTPS 你配置的模型供应商
升级检查 HTTPS 内部升级源
网页检索(可选) HTTPS 仅启用 web.search 时
通道(微信 iLink) HTTPS / WebSocket 仅启用随行通讯时
外部工具服务 HTTPS / SSE 仅启用 MCP 服务时
SBOM 在线审计 HTTPS sbom.audit / sbom.vex 在线模式:api.osv.dev
SBOM 离线库同步 HTTPS sbom.dbsync sync / kev:OSV dump 存储桶、CISA KEV feed(可改指内部镜像)

应用不会

  • 主动联网做行为埋点。
  • 把样本本体上传到任何第三方(仅反编译会按需发反汇编片段)。
  • 自动同步本地会话到云(除非显式启用同步开关)。

25. 隐私与遥测参考

25.1 默认行为

默认 说明
行为埋点 不主动上报
崩溃栈 询问 崩溃时弹窗询问是否上报
模型对话 走你选择的 Provider 相应隐私协议适用
反编译片段 调用时即送 由你显式触发
样本本体 永不上传 仅本地分析

25.2 加密存储项

下列条目以受保护方式存储在本机:

  • 登录凭证
  • 模型 Provider API Key
  • 外部工具服务 Bearer Token / 凭证
  • 通道(微信 iLink)会话状态

25.3 会话内容

会话内容仅在本机持久化;只有你主动调用模型时才把对应消息按 Provider 协议发出。


26. 升级与版本号参考

26.0 配置目录品牌迁移(zcode → avlcode)

自 v0.6.30-alpha 起,内部标识统一由 zcode 迁移为 avlcode启动 / 打开工作区时自动完成、有 toast 提示、保留旧名双读回退

全局配置目录 ~/.config/zcode/ ~/.config/avlcode/
工作区内 .zcode/(含 rag/sbom.* 等) .avlcode/
环境变量 ZCODE_…(如 ZCODE_DISABLE_VENV_AUTODETECT AVLCODE_…
配置 YAML 与 frontmatter 字段(x-zcode-… 等) 对应 avlcode / x-avlcode-…
UA 尾部令牌 zCode/<ver> avlcode/<ver>
SSH 远端 ~/.zcode、远程工作区 .zcode ~/.avlcode.avlcode

界面与对外输出里残留的「zCode」统一为「AVL Code」。脚本里写死过旧路径 / 旧变量的,建议改用新名。

26.1 版本号格式

MAJOR.MINOR.PATCH[-PRERELEASE][+BUILD]
含义
MAJOR 不兼容更改(数据迁移 / 配置不兼容)
MINOR 新功能(向后兼容)
PATCH 修复 / 优化(向后兼容)
PRERELEASE alpha.<n> / beta.<n> / rc.<n>
BUILD 构建元数据,不参与版本比较

26.2 升级路径

路径 频率 说明
应用内升级 默认每天检查 推荐
手动下载(免安装) 按需 官网下载页 www.avlcode.cn/#download,下载直接替换运行,配置目录不动
内部市场 视团队配置 组织管理员控制版本

官网下载页按平台提供构建(Windows x64 / macOS 通用版·Apple 芯片版 / Linux x64·AppImage·Snap·WebKit4.1 / 银河麒麟 V10 SP1 / 统信 UOS V20),走 alpha 渠道、恒为最新构建。

26.3 升级签名

步骤 说明
下载 从内部升级源拉到本地缓存
验签 国密签名 + 嵌入公钥校验
替换 验签通过后原子替换主二进制
回滚 验签失败 / 启动失败时自动回滚到上一版本

27. 附录 A:术语表

术语 定义
工作区(Workspace) 绑定一个本地目录与一组配置的执行单位
会话(Session) 一次连贯的对话上下文,本地持久化
工作模式 五种之一(auto / plan / prepare / execute / assess)
助手 / 人设(Persona) 决定 AI 风格与边界的提示词集合
工具(Tool) AI 可调用的能力
技能(Skill) 提示词模板包
子任务(Subtask) 助手派发给独立子助手执行的子工作
计划(Plan) 结构化任务规划
待办(Todo) 结构化任务清单
历史折叠(Compact) 把早期消息压缩为摘要,原消息仍保留
审批(Approval) 工具调用前的决策:拒绝 / 仅本次允许 / 始终允许
随行通讯(Messaging) 把 AI 助手接入 IM 通道
共享额度 由组织统一管理 / 计费的模型调用额度
错误抽屉 把最近的工具与服务错误集中展示的面板
配对码 6 位数字、10 分钟有效,用于 IM 绑定
SBOM 软件物料清单,列出项目用到的第三方组件(CycloneDX / SPDX / DSDX / SWID)
VEX 漏洞可利用性说明(OpenVEX),标注漏洞在本项目是否真正受影响
OSV / KEV OSV:开源漏洞库;KEV:CISA「已知被利用漏洞」名录
CVSS 通用漏洞评分系统,本工具支持 v2 / v3 / v4 向量定级
哨兵(Sentinel) 读 / 写 / 执行文件时自动扫描并阻断恶意的拦截层,与检测能力解耦
VirusTotal AI / GTI 云端威胁情报后端:VirusTotal AI(免费托管)/ Google Threat Intelligence(自带 Key)
自修复循环 遇错按类自动选修复策略(压缩 / 切换 / 退避 / 终止)的机制(§16.5)
AgentParallel 一次拆 2–16 路并行 fan-out 的子任务工具(§16.3.1)
GRAI+KISS 自动反省框架:GRAI 归因 + KISS(Keep/Improve/Stop/Start)教训分类(§16.6)
复述意图 会话首条消息开工前 AI 复述目标 / 计划请你确认(intent_confirm,默认开)
全库 RAG code.search / code.ask:非向量(BM25 + 标识符切分 + 中日韩二元切分,零 embedding)符号级全库检索 / 问答(§7.12.3)

28. 附录 B:参数取值速查

28.1 默认上限

默认 上限
单次工具返回 4096 字节 256 KiB
单次出站消息 3800 字 取决于 IM
终端命令超时 60_000 ms 可调
后台任务并发 64 不可调
后台任务终态保留 30 分钟 不可调
启动自动恢复任务数 5 不可调;其余转手动恢复
AgentParallel 腿数 2–16 < 2 报错、> 16 截断
AgentParallel 整体超时 600 秒 上限 1800;超时未完成腿转 pending
AgentParallel 单腿输出 8000 runes 超出截断,提示取全文
自愈尝试上限(压缩/切换/退避/产出) 2 / 3 / 3 / 3 自愈历史可下调,每类至少 1
RAG 索引文件数 / 构建超时 4000 / 120s 每文件 ≤ 400 符号·≤ 4 MiB;code.search 默认 20 命中、code.ask 默认 12
SBOM 组件预览 / audit 预览 / vex 语句预览 50 / 30 / 40 完整结果在落盘文件
SBOM 可达性扫描 ≤4000 文件 · ≤256 KiB/文件 vex 可达性分析上限
配对码 TTL 10 分钟 不可调
登录凭证 TTL 23h45m 不可调

28.2 文件大小硬上限(工具读取)

工具 上限
read (lines) 256 KiB
read (bytes) 256 KiB
list 4 KiB
glob 256 KiB
grep 256 KiB
exec 256 KiB

28.3 退出码语义

含义 来源
0 成功 CLI / 工具
1 通用错误 CLI / 工具
2 参数错误 CLI
64–78 sysexits 系列 CLI
124 超时 exec
137 被 kill exec

29. 附录 C:常见正则与通配符语法

29.1 文件名通配(glob)

字面 含义
* 匹配任意字符(不跨 /
** 匹配任意目录层级
? 匹配单字符
[abc] 字符集
[!abc] 否定字符集
{a,b,c} 集合分支

示例:

表达式 意图
**/*.go 所有 Go 文件
src/**/*test*.{ts,tsx} src 下含 test 的 TS/TSX
[Mm]akefile Makefile / makefile

29.2 内容搜索(RE2)

元字符 含义
. 单字符(不含换行)
\d \w \s 数字 / 词字符 / 空白
^ $ 行首 / 行尾
\b 词边界
(?i) 行内忽略大小写
(...) 捕获组
(?:...) 非捕获组
+ * ? 量词
{n,m} 重复 n–m 次

不支持反向引用 \1、回溯前瞻 (?<=…) 等 PCRE 扩展。


30. 附录 D:键值清单导出格式

设置面板支持把当前所有设置导出为单一 YAML 文件,便于版本管理与团队同步。

30.1 顶层结构

version: 1
exported_at: 2026-07-28T08:00:00Z
exported_by: AVL Code v0.7.28-alpha
sections:
  account:        { … }
  models:         { … }
  personas:       { … }
  tools:          { … }
  skills:         { … }
  messaging:      { … }
  plugins:        { … }
  general:        { … }
  workspaces:     [ … ]

30.2 节字段速查

主要字段
account provider_priority
models providers[](不含明文 key)
personas [].id name personality soul_path
tools defaults policies[].mode policies[].overrides
skills signature_required extra_search_paths[]
messaging channel route_strategy throttle
plugins installed[].id installed[].version installed[].enabled
general theme language tray_enabled autostart_enabled font_size
workspaces [].id path name archived default_mode mode_persona{}

30.3 注意

  • 凭证类字段在导出时不会写入;目标设备需重新登录或填写。
  • 同步开关单独维护,不在导出范围内。

License:AVL Code Proprietary Software License — Copyright © 2024–2026 Antiy. All Rights Reserved. 文档版本:2026-07-28,对应应用版本 v0.7.28-alpha。