ViaTum Lab 开源客户端 · Windows · v1.6.0 正式版

模型负责推理与生成,
Yan 负责可用的工程环境

YAgent(Yan-Agent)是 ViaTum Lab 的开源客户端。搭配 ViaHarness 使用,发挥 MAX 效果:ViaHarness 负责选择模型与策略,YAgent 负责本地代码、工具执行、多 Agent 协作与结果审阅。你也可以连接自己选择的模型,在熟悉的工作区中完成任务。

v1.6.0 Windows x64 Electron 31 MIT 基于 OpenCode 1.18.11
四层运行链 一次任务自上而下,事件自下而上
  • 渲染层 · Electron任务、审阅、内置浏览器与 Work GUI,只显示与操作,不自行模拟执行结果
  • 主进程持有配置、工作区、凭据与 IPC,构造本轮请求及工具权限
  • Yan Core线程、回合、意图与状态机,把 provider 事件转成可恢复的应用状态
  • OpenCode Sidecar实际模型回合、工具调用、权限交互、子会话与上下文操作
  • 模型适配器DSML · GLMM · GPTL · QWEM · KIML,处理线上协议差异后送达你配置的模型 API
  • 工具层原生文件工具、LSP、MCP 与浏览器桥,作用域收敛在工作区与本地数据
Yan Core 与 OpenCode 不是两个同时竞争执行的 Agent 循环——Yan 在内核外部增加任务状态、权限与产品交互。

01 · 连接

把协议差异留在适配层

「兼容 Chat Completions」通常只意味着请求形状相近。思考字段、工具名限制、历史思考回传、推理强度、缓存统计、流结束信号,各家都可能不同。Yan 把这些差异放在 provider 与请求整形层,文件工具和 UI 保持干净。

DSMLDeepSeek将 DeepSeek 特有工具标记解析为工具调用,处理协议文本与思考回放
GLMMGLM请求整形、思考字段与工具流适配;保留已存在的思考原文,不靠填空串伪装历史
GPTLGPT能力配置、Chat 与 Responses 路由、工具别名映射、SSE 终结信号处理
QWEMQwen思考开关与档位按 profile 判断;缓存默认走隐式路径,显式缓存需明确启用
KIMLKimi按代区分思考契约与参数约束,移除已知不支持的参数并给出明确错误
通用 ResponsesOpenAI独立 Responses provider;用户显式指定格式与端点时不擅自换接口

中转站尤其需要按服务端真实支持配置格式与端点——模型名字像 GPT,不等于该走某一套接口。

02 · 理解

从仓库地图,逐步缩小到符号

Yan Analysis 提供可重复计算的工程信息,模型负责根据它推理:仓库结构 → 模块入口 → 符号位置 → 必要引用 → 精确修改。

repo_map按结构重要性排序的仓库骨架,用有限 token 找入口;后台生成并缓存,不阻塞界面
code_outline文件内的函数、类、方法及位置,Tree-sitter WASM 按需加载,覆盖 JS/TS、Python、C/C++、Java、Go、Rust 等
code_symbol某个符号的行范围和源代码,避免读取整份大文件
calltree展开相关调用关系,辅助追踪执行链
slice围绕变量做数据流切片,定位值的传播路径
code_search面向代码的 BM25 检索与排序,CJK 感知
history_search检索可用历史记录中的相关信息
code_impact导入图的反向依赖遍历,删除或重构前先看波及范围

语义层由 Serena 固定暴露 11 个工具:查定义、追引用、跨文件重命名、整方法替换;改一行文案或配置值,原生补丁更合适。

03 · 执行

八类子代理,可解析的委派计划

子代理通过原生 Task 工具形成子会话,Yan 在外层绑定角色、权限、工作区与并发。主代理始终持有最终交付责任——角色数不等于可以无限并行。

Explore

快速探索和定位项目

Review

检查实现、风险和遗漏

Research

研究问题、整理证据

Test

针对任务测试与结果整理

Build

在获准范围内实现修改

Mapper

梳理模块结构与依赖

Tracer

追踪调用链和数据流

Reverser

协议或逆向分析

委派计划标记 · 一行写入任务提示

yan-plan: {"id":"login-ui","dependsOn":["auth-api"],"acceptance":"登录成功和错误提示均可验证"}
并发与隔离Build 角色专用槽位池,当前最多 3 个并发;可能相互影响的修改先建独立 worktree(.yanagent/worktrees/)再合并
依赖准入计划解析校验重复、未知依赖与环;分派时检查前置任务的实际完成状态,不凭主代理一句「可以开始」放行
状态与交付UI 区分运行、完成、失败、中断与未确认完成;builder 的验收条件与工具证据进入收尾判断,口头自称通过不等于测试成功

04 · 审阅

差异来自基线,不是来自转述

审阅的目的不是列出模型说它改过的文件,而是从实际基线与结果构造可检查的差异。

审阅系统

先取清单再按需读取单文件差异;重型计算在后台 Worker 执行,主线程只做协调。文件树、增删统计、图片预览与批注——批注可以直接发回给 Agent 继续处理。

内置浏览器与注释

快照、点击、输入、截图、诊断都在控制链内完成。网页注释把「改这里」变成绑定元素身份的可执行请求——工具按已选元素定位,不由模型重新猜 selector。

变更与证据

从内核 diff、工具目标及运行前基线组织本轮文件变化;检查记录说明哪些验证真正执行过,多文件补丁中断可依据镜像恢复,减少半次成功。

注释对网页的修改是当前页面的本地预览,刷新即失;永久修改请让 Agent 定位并编辑源文件。

长任务、恢复与上下文

状态、连接与预算分别处理——断流不等于断任务。

状态持久化

threads、turns、items、intents 四层模型;state.json 快照 + events.jsonl 追加事件,恢复时读快照再应用后续事件。快照先写临时文件再替换,高频文字增量与耐久状态分开走。

断流恢复

重连预算默认 5 次,稳定流量判断窗口 30 秒;头部超时 2 分钟、块超时 3 分钟,另有生成停滞监测。恢复的目标是重建真实状态——已发生的写文件、提交、远端请求不盲目重放。

上下文预算

优先级:用户显式设置 → 模型声明 → 128,000 token 后备;未指定阈值按窗口的 80% 压缩。压缩后提取原始目标作为锚点回注,帮助长会话保住目标与约束。

五种工作模式

常规使用可用工具执行并交付,正文结束后不自动追加交付验收轮
计划只读调查与方案输出,形成可读取、可下载的 Markdown 计划文档
目标 Goal围绕明确要求完成任务,适用条件下做有界验收与必要修复;有工作区时自动启用 Serena
自进化结合相关经验工作,记录有证据支持的规则或策略改进,删除留痕、可回滚
AGI · 实验性思考侧路、轨迹记录、经验整理、协作拓扑等实验链;需要实际任务检验收益,不承诺通用人工智能

常规模式的交付策略是 maxRepairRounds: 0——必要检查应在正常工作中完成,而不是事后补一份复验报告。

云顶天宫 · Work GUI

真实任务系统的另一种展示与操作入口:Three.js/WebGL 场景订阅真实任务事件,不用「人物正在走动」推测任务成败。

南天门模型 · 工作区 · 任务提交 天工殿主任务与运行状态 协作东阙子代理委派与进展 藏经阁Skills · MCP 启停 归卷台成果与文件改动摘要 观星朝向天际的场景交互

Skills、MCP 与多模态

Skill 是使用方法与任务知识,MCP 提供实际工具接口——安装 Skill 不会让缺失的程序或 API 变成可用。

Yan Analysis仓库、符号、调用链、检索与逆向辅助(hex、CRC、PCAP、Ghidra 桥接)
Yan Workspace任务级 worktree 与代码影响面检查
Yan Browser内置浏览器操作与注释目标修改
Yan Web已知 URL 的文本读取、文件下载、页面资源列表
Yan Skills技能查找、安装、分块读取与移除
Yan Session经授权的跨任务、跨工作区交接
Yan Media图像 / 视频生成与视觉中继,资产本地查看保存
Continual Harness按模式启用的经验与改进管理

我们把边界写在明面上

README 的写法就是产品的写法:说明已经存在的代码及其边界,不把「存在」当成「成功」。

界面上存在它不证明
版本徽章 v1.6.0不代表对应发布资产已上传——以 Releases 页实际为准
仓库里存在测试文件不等于某次发布已全部通过;发布说明记录实际执行项与结果
仓库地图没显示某个文件不能证明文件不存在;地图用于选入口,不是完整语义索引
工具出现在列表里会否使用仍取决于任务与模型;没有被强制纳入的完整 Workflow
适配器识别出模型家族不会仅凭名字强行更换接口;版本特定约束不扩展到未来型号
界面存在生成按钮生成能力取决于已配置的模型与网络;没有配置就没有能力

开始使用

  1. 从 Releases 下载 Windows x64 安装包或便携包。
  2. 打开 API 配置,创建连接:填写名称、Base URL 与 API Key,选择兼容预设并测试连接。
  3. 选择主文本模型;图片理解、图片生成、视频生成按需单独配置。
  4. 编码任务先选择项目工作区;普通问答、网页阅读可从 Blank 任务开始。
  5. 根据任务选择工作模式与访问权限,发送请求。
  6. 工作过程中查看工具与子代理状态;涉及文件修改时,在审阅面板检查差异。
「先定位这个项目的入口、主要模块和测试命令,说明证据,不修改文件。」
推荐的第一条编码请求 · 检查模型连接、文件权限与项目工具是否正常

数据根目录 %APPDATA%\yan-agent\YanData · 敏感字段经 safeStorage 处理 · 反馈问题请附版本、系统与脱敏日志