Ynuo Agent(依诺) 一 0.3.10 发布:研发透明化,抛弃许愿式编程

0.3.10 发布:研发透明化,抛弃许愿式编程

一个 AI 编码平台做到第三版时,我意识到真正的问题不是"它不够聪明",而是"我看不见它在干什么"。

旧用户注意在浏览器多刷新几次,防止缓存!!


一、先说"许愿式编程"是什么

如果你用 AI 写过代码,下面三个场景大概率熟悉:

场景一:一句话丢过去,等一个奇迹。

"帮我把这个模块重构一下。" 十分钟后 AI 说"已完成重构,共修改 12 个文件"。你打开 diff,发现它顺手删掉了一个你认为很重要的兼容逻辑------它不知道那是有意为之。

场景二:做了很多,但你说不清它凭什么这么做。

它读了哪些文件、信了哪段注释、跳过了哪个目录,你一概不知。出了问题,第一反应是"重开一个会话再试一次",而不是"定位哪一步判断错了"。

场景三:交付没有凭据。

它说"测试通过"。哪个测试?覆盖了哪些分支?没有需求文档、没有方案评审、没有验证记录,只有一个自信的结论。

这三件事的共同点:过程是黑盒,结论只能靠信。 我把这种开发方式叫许愿式编程------你付出的不是工程,是期待。

0.3.10 想解决的就是这个。它不打算做一个更聪明的许愿池,而是把黑盒拆开。


二、这一版的三条主线

一句话概括:

过去的黑盒 0.3.10 的答案
不知道它打算怎么干 研发流程门禁:六段流程,逐门推进,方案先审再写
不知道它看了什么、想到第几步 上下文白盒 + 过程可见:token 水位、维度明细、推理轮次全在界面上
不知道它守不守规矩 记忆层 devrules:规矩落成文件,按仓库、按状态、按需注入

下面逐条说。


三、研发流程门禁:把"丢进去等结果"改成"逐门过"

这是 0.3.10 最核心的改动。任务不再是丢进 Agent 队列等结果,而是走一条有据可查的流水线:

复制代码
(进入流程)→ 调研 → 实施方案 → 方案评审 → 编码 → 测试 → 交付

每道门 = 状态推进校验 + 沙箱档位切换点。

前一阶段的产物不齐------以任务附件为凭据,不是靠 AI 自己说"我调研过了"------门就不开。这就把"AI 的自述"换成了"系统的校验"。

3.1 分级门禁,而不是一把尺子量所有活

按任务类型自动分 S / M / L 三档:

  • S 档(缺陷 BUG、单点修改):调研与方案合并,可直接推进到评审------不为一个改错别字的需求走完整六段;
  • M 档(需求、功能开发):完整六段;
  • L 档(架构设计、测试):从调研起,逐门不落。

3.2 评审门不可跳

review → implement 这一道门,必须人工批准才能开始写代码。

S 档可以把"调研 + 方案"合并,但"方案评审"这一步无论如何绕不过去。理由很简单:写代码是最贵的动作,方案评审是最便宜的纠错点。

3.3 要跳过?可以,但会留痕

现实里总有"别评审了,先给我改上"的时刻。系统不拦你,但会做两件事:

  1. 把任务直接置为 deliver 阶段;
  2. 写入 dev_bypass=1,跳过所有门这件事本身被永久记录。

允许例外,但不允许例外消失。 这是流程设计里最容易被忽略的一点------如果"临时绕过"没有痕迹,三个月后你会发现所有任务都是绕过的。

3.4 界面长这样

任务面板顶部就是门禁条:当前处于哪一段、下一步能推进到哪、评审卡上预审意见和"批准"按钮并排。看板上的任务状态不再是一个模糊的"进行中",而是"在编码阶段"。


四、AI 预审:审的人和写的人,不该是同一个上下文

评审门上挂了一个隔离子会话的预审员。它的几个设计取向值得单独说:

1)fork 空历史会话,与编码会话零共享上下文

复用编码 Agent 的上下文去评审它自己的方案,等于让它自己批自己------它会维护自己之前的判断。所以预审线程是全新的空会话,走 afterSeq: -1。

2)只读工具环

预审只查不写,结论必须能引到 file:line。没有证据链的意见,视为无效意见。

3)结构化 verdict

不是一段没法验收的散文,而是逐条 finding(结构示意):

json 复制代码
{
  "findings": [
    {
      "title": "并发写入未加锁",
      "body": "writeQueue 在 batch 模式下绕过了串行队列,高并发下会丢失事件",
      "confidence": 0.82,
      "priority": 0,
      "location": "packages/storage/src/write-queue.ts:118"
    }
  ]
}

标题 / 说明 / 置信度 / 优先级 / 位置,五项齐全才叫"评审意见"。

4)人工结论优先

预审意见只贴在评审卡上供你参考,不代替你过门。AI 的价值是把明显的坑先标出来,不是替你签字。

这套口径参考了 Codex 的 Review Mode------审的人和写的人,不该是同一个上下文,也不该是同一个人格。


五、上下文白盒:token 花在哪,终于能看见

上下文(Context)是这个领域最不透明的东西。你只知道"快满了",不知道"谁占的"。

0.3.10 把上下文信息面板重做了一遍,现在是:

  • 一个 token 水位环:总占用多少,每个维度各占百分之几,环上一眼看出;
  • 15 个维度分 tab :系统提示词、创作人设、任务、代码仓库、知识库、记忆层规约、技能、工具、附件、对话历史、任务清单、反思、注入、会话摘要、其他,每个 tab 带条数角标;
  • 工具与技能自动瘦身:只显示"名称 + 描述",参数细节折叠掉------你不会想逐个读 JSON 参数;
  • 默认单行折叠:长内容一行截断,点"展开"看全文;
  • 上栏固定、下栏明细各自滚动:面板不会撑爆页面,刷新按钮就在环形图右上角。

创作、研发、工作台三端统一了这一套。

上下文不透明,调提示词就只能是玄学。你无法优化一个看不见的数字。


六、过程可见:第几次推理,都算数

研发工作区这一版做了整体重构,原则只有一条:AI 在干什么,界面上必须有对应的痕迹。

  • 消息头信息完整 :YnuoAgent · 模型名 · 时间 · 研发思考中... 第 X 次推理,推理轮次带循环配色,长跑任务不再像卡死;
  • 过程消息只留最近 5 条:其余折叠成"还有 N 条过程消息,查看更新",点击直达日志并自动滚到底------既不被刷屏,也不丢信息;
  • 左栏任务 × 会话手风琴:一个任务下挂多个会话,展开即见历史(克隆 / 删除 / 新建),任务卡上"查看 / 展开"是两个独立按钮,不必再双击猜;
  • 任务进度胶囊卡:悬停弹出 todo 明细,进度条 + 计数 + 百分比实时同步;
  • 打开即钉底:切 tab、切会话、加载历史后自动贴到最新消息,含渲染后高度增长的二次校正。

透明不是把日志全糊在脸上,而是关键信息出现在正确的位置。


七、记忆层 devrules:规矩写进文件,不靠模型自觉

上一版的"研发规约"和"经验",本质是两段塞进提示词的文本,各 6000 字符常驻,超长就 slice。问题很明显:

  • 每回合稳定吃掉约 3000 token,里面可能一半跟当前任务无关;
  • 超长直接截断,可能切在句子中间------给模型半条规则,比不给更容易诱发幻觉;
  • 所有仓库的规则糊成一份聚合文件,无法按仓库过滤。

0.3.10 把它重做成三层结构:

层次 位置 性质
人工规则 <项目>/docs/rules/(公共规范 + 各仓约定) 入库、可 review、团队共享
机器产物 <项目>/.ynuo/rules/<仓库>/(开发规约 + 经验) gitignore、可随时重建
分析真源 项目库 repo_conventions 带状态:草稿 / 已确认 / 已否决 / 过期 / 废弃

关键改动:

  1. 一仓一文件,按仓库取用,聚合文件这个"多仓混合物"从源头消失;
  2. 不再硬截断:宁可少给,不给半条;
  3. 经验有归属、有条数上限、会过期:跨仓经验进公共文件,仓库经验回本仓,长期不用的不再占预算;
  4. 按需读取 :新增 dev-rules / repo-touch 工具,模型需要时才翻开具体文件,而不是每回合常驻几千 token;
  5. 配置页可视化:系统级 + 项目级规则配置,能看清每条规则的归属与状态。

一句话:规矩不是求模型记住,是把规矩以文件形式摆在它面前,让它查得到、引得出、过期即失效。

顺带说,这套东西和代码仓库分析是打通的:分析结论会投影成仓库内可读的 .ynuocode/CONVENTIONS.md,并按仓库落到 .ynuo/rules/<仓库>/开发规约.md,只有"已确认"的规约才进入上下文。


八、知识库重做:切片可调、分块可改

做 RAG 的人大概都踩过这几个坑,0.3.10 一并处理了。

1)切片策略下沉到文件级

每个文件可以有自己的策略、大小、重叠,存进 knowledge_base_file,下次打开还是上次的配置。代码文档和需求文档,终于不必用同一把刀切。

2)分块可管理(这次新加的)

点文件名打开分块列表:分块数 / 总 token / 均 token 三个统计、按内容或序号搜索、新增 / 编辑 / 删除,保存即针对该条重新向量化。切坏了不用整篇重来。

3)模型选择就在"选择文件"弹窗里

文本模型 + 向量模型都在索引时选,选完随索引持久化到知识库,对话与检索复用同一套模型。同一个库混用两个向量模型,跨文件向量空间不一致,检索会莫名奇妙地失效------这个坑现在在 UI 层就堵住了。

4)限流自愈,索引不再中途归零

批大小收到 10;批间自适应节流(800ms 起,命中限流翻倍,上限 5s);限流错误指数退避重试 6 次(2s / 4s / 8s / 16s / 30s);重试耗尽给可操作提示,而不是一个 429 堆栈。索引期间全屏锁定 + 已用时计时器,防止边索引边改库。

5)检索容错

baseId 少个连字符、传了不存在的库、同时有多个库------都不再直接报错:精确命中 → 归一化/子序列唯一匹配 → 回退全部库合并检索。

6)模型下拉口径收敛

文本模型下拉严格排除向量模型;模型配置页从 Checkbox 改为"对话模型 / 向量模型"单选,从源头不再产出双能力脏数据(历史脏数据也会立刻从下拉里消失,不用手工改库)。


九、顺手填的坑

  • 文件预览窗口:拖拽移动、边缘/右下角自由拉伸、全屏、缩放 50%~300%(可重置);
  • HTML 双模式预览 :源码(高亮、不执行)与 页面预览(iframe 内联相对子资源)一键切换;
  • 预览容器高度链断裂导致视频溢出窗口、HTML 预览被压成 150px 的问题修掉了;
  • 漫剧模式下文本模型切换不生效;
  • 代码格式化问题;
  • AI 身份档案:现在问它"你的作者是谁",会给出完整创作者信息,而不是含糊其辞。

十、安装与升级

bash 复制代码
# 全局安装(自动携带当前平台的守护启动器)
npm install -g @ynuo/ai@latest

# 或使用内置升级命令(升级完自动重启守护进程)
ynuo update

# 只查版本,不升级
ynuo check

# 启动
ynuo daemon          # 守护模式(后台运行,崩溃自愈)
# 或 npx ynuo        # 前台模式

# 打开浏览器
# http://localhost:2609

按平台拆分的 launcher 包通过 optionalDependencies 挂载,npm install 时按当前 os/cpu 只装匹配的那个,Windows x64 / Linux x64 / macOS Apple Silicon / macOS Intel 四平台都有。

手动升级请用 npm install(而不是 npm update),确保平台包一并更新到 0.3.10。


十一、写在最后

这一版没有堆功能数量。六个门、一个水位环、一套规则文件、一堆分块按钮------如果只看清单,它们都很朴素。

但它们指向同一件事:把"我相信 AI 做对了"换成"我能看到它做了什么、凭什么这么做、有没有走过该走的路"。

许愿式编程的问题从来不是 AI 不够强,而是你没法参与判断。一旦过程可见,判断权就回到了人手里------AI 负责推进,你负责在每个该点头的地方点头。

0.3.10 是往这个方向的第一版。离"完整的研发透明"还差得远,但至少,黑盒被打开了一条缝。


仓库地址 :https://gitee.com/yanzkc/ynuo

作者 :elcker(438586732@qq.com)

当前版本:0.3.10

如果这套思路对你有用,欢迎到仓库看看,或者留言聊聊你怎么看"AI 写代码的可验证性"。

相关推荐
海宇AI39 分钟前
零信任架构实战:基于海宇车辆车五项信息核验构建自动化汽配供应链车型分类与发动机型号适配网关
运维·人工智能·架构·自动化
xlbbbcn40 分钟前
给模型装上手和脚之后,我把边界做成了七个风险等级
agent
码哥字节40 分钟前
用 MCP 把排障 Agent 接上生产库,4 分钟定位 OOM
agent·ai编程
記億揺晃着的那天42 分钟前
基于 MCP 的 AI 协作工程技术搭建:从线上故障排查到闭环修复的工程实践
agent·devops·故障排查·mcp·后端架构
2601_955662461 小时前
支持声音克隆的配音工具怎么选?先了解使用条件
人工智能·音视频·语音识别·视频
9i编程1 小时前
低代码平台实测踩坑记录:从审核排序到历史数据,问题逐条清零
人工智能·openai·ai编程
志尊宝1 小时前
AI原生前端开发(019):端侧AI安全与隐私:数据保护、权限控制
人工智能·安全·ai-native
LeoLi6381 小时前
Agent 正在被「关进沙箱」:从 Copilot 到 Antigravity,权限边界开始由操作系统说了算
人工智能
用户91294046848421 小时前
让 Codex 接着干:用 AGENTS.md、状态文件和日志做任务交接
ai编程