YnuoAgent(依诺):一个 npm 包,跑起属于自己的 AI 研发平台

YnuoAgent(依诺):一个 npm 包,把你自己的 AI 研发平台跑起来

一个 MIT 开源、单机可跑、npm install -g 就能用的 AI 研发平台。不是插件,不是 SaaS,装完就在你本机 http://localhost:2609。

两行命令,把一整套 AI 研发平台装进你自己的电脑。

bash 复制代码
npm install -g @ynuo/ai@0.3.10
ynuo daemon          # 然后打开 http://localhost:2609

我第一次拿它跑完一个真实任务,第一反应不是「真快」,而是:「原来它刚才在干什么,我现在能看见。」

如果你也受够了「AI 写完、你不敢合」的循环------三分钟,装上试试。


一、先说一个很具体的困惑

这两年 AI 编码工具换了一茬又一茬,但我一直有个困惑:工具越来越强,我却越来越不知道"这个项目是怎么长出来的"。

  • 代码是 AI 写的,但需求散在聊天记录里;
  • 方案是 AI 想的,但评审只发生在它自己的脑子里;
  • 测试是 AI 跑的,但"通过"这两个字没有凭据;
  • 换个会话,昨天的分析结论、昨天定下的规矩,全部归零。

单点的编码助手解决的是"这一行怎么写",解决不了"这个项目怎么被组织出来"。而后者,恰恰是研发管理真正在做的事。

所以有了 YnuoAgent(依诺) :它把 AI Agent 放进真实的研发管理体系里------企业 → 项目 → 任务 → 文档 → 代码仓库,让每一次 AI 会话都绑在具体任务上,产物落在具体文档里,过程写进事件流里。

一句话:它不只是帮你写代码,它把写代码这件事的过程留下来了。


二、它到底是什么

三个事实,先把定位说清楚:

维度 说明
形态 一个 npm 包 @ynuo/ai,装完起一个本地服务 + 内置 Web IDE
跨平台 Windows x64 / Linux x64 / macOS Apple Silicon / macOS Intel,四平台 launcher 自动匹配
数据 全在本地(SQLite + 工作区目录),不上传云端,升级不丢数据

启动以后浏览器打开 http://localhost:2609,你会看到两个工作台:

  • 创作(Creation) :用自然语言驱动 Agent 写文档、做原型、按五段状态机产出一集漫剧的资产包(详见第六节);
  • 研发(R&D):以项目为单位,任务 → 会话 → 代码仓库,AI 在流程里干活。

两个工作台共享同一个 Agent 运行时、同一套技能、同一份模型配置。区别只是"装配了什么上下文"。


三、一分钟跑起来

环境只有一个要求:Node.js >= 22。

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

# 2. 启动
ynuo daemon        # 后台守护,崩溃自动重启
# 或
ynuo                 # 前台模式,关终端即停

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

当前最新发布是 0.3.10)。要装这一版请显式指定:npm install -g @ynuo/ai@0.3.10;不加版本号的 npm install -g @ynuo/ai` 装的是稳定版线上 tag。

首次启动会进引导流程:建管理员账号 → 配模型 Provider → 建项目 → 开始会话。

其他常用命令:

bash 复制代码
ynuo doctor    # 系统诊断:Node 版本 / SQLite / 工作空间 / 数据库 / bcrypt
ynuo update    # 查版本 → 确认 → 升级主包+平台包 → 自动重启守护
ynuo stop      # 优雅停止守护进程
ynuo check     # 只看有没有新版本

端口默认 2609,改 ~/.ynuo/config.toml 即可。崩溃日志在 ~/.ynuo/logs/crash.log。


四、五个核心能力,讲人话版

1)事件溯源:把"AI 怎么想的"存下来

整个平台的底座不是"聊天记录",是事件流。

会话里发生的每一件事------用户消息、模型调用、工具调用、工具结果、状态变更------都是一条带序号和时间戳的不可变事件,全量落进 SQLite。

这带来三个直接好处:

  • 可回放:任意一次会话,可以按时间顺序重放,看到 AI 在第几步做了什么判断;
  • 可快照:按固定间隔持久化 checkpoint,状态能恢复到某个事件点;
  • 可隔离:需要"另一个视角"时,fork 一个空历史的隔离子会话------0.3.9 的 AI 方案预审就是这么实现的(评审线程和编码会话零共享上下文,避免自己批自己)。

顺带说,这也是为什么它能做"过程透明":不是前端画得好看,是后端真的把过程存下来了。

2)技能体系:研发流程可以被写成文件

内置 10 个技能,覆盖研发全流程:

技能 干什么
lead 研发工作流总管,会话开始自动加载,负责阶段与能力路由
analyze 任务分析与需求澄清:扫现状、展开问题树、排序候选路径、对齐验收口径
design 设计与规划:架构/模块/接口/表结构、原型图、实现步骤与风险
implement 代码实现与 UI 生成:按设计产出代码并验证可运行
review 代码审查与测试:分级问题清单 + 用例设计 + 真实执行收集证据
test 测试验证:正常/边界/异常/状态变化四维用例,报告必须来自真实执行
debug 根因调试:复现 → 证据 → 假设 → 最小修复 → 回归
refactor 安全重构:识别坏味道、Wave 计划、小步改、持续验证
content-creator 创作项目专用:文档写作、文案、资料整理
evant 漫剧创作工作流:立项 → 剧本 → 角色资产 → 风格 → 分镜 → 交付

重点不是"有 10 个",而是技能就是 Markdown 文件 :往项目 .ynuo/skills/ 或全局 ~/.ynuo/skills/ 里丢一个带 frontmatter 的 SKILL.md,重启即生效。

markdown 复制代码
---
name: our-api-convention
description: 公司 API 规范校验。写接口前必须检查路由命名、错误码、鉴权中间件。
---

# API 规范校验

1. 路由统一 `<模块>/<资源>` 小写下划线,禁止驼峰;
2. 业务错误码从 10000 起,禁止直接返回 500;
3. 所有写接口必须挂 auth 中间件,并在返回体带 traceId。

团队的规范不用再写成 Wiki 文章等人去读------写成技能,让 AI 每次动手前先读一遍。

3)多模型:不绑死任何一家

统一 Provider 抽象,配置 model 即可切换:

  • OpenAI 兼容协议(含各类兼容网关,国内大部分厂商都走这套)
  • Anthropic
  • 本地模型(Ollama 等)

支持 Provider 池、请求缓存与熔断降级:某个渠道挂了自动切下一个,长任务不会因为一次 429 直接崩。

模型标识按「渠道 + 模型 」区分------同一个 deepseek-* 你接了三家渠道,用量、选择、统计互不干扰。

4)工具与 MCP:能干活,也能扩展

内置工具集(开箱即用,无需配置):

text 复制代码
bash            命令执行(沙箱裁决)
filesystem      文件读写
git             版本操作
search          代码库检索
web / web-search 网页抓取与联网搜索
knowledge-search 知识库检索(RAG)
dev-rules       项目规约按需读取
repo-touch      仓库触点探测
todo-write      任务清单
subagent-spawn  子 Agent 派发
ask-user        阻塞式追问
offices-read    文档读取

工具按 DAG 拓扑排序并行执行,单个工具 30s 超时兜底------不是串行一个个等。

需要更多能力?接 MCP(Model Context Protocol)。在项目配置里声明 MCP server,即可把外部工具(数据库、私有 API、公司内部系统)挂到 Agent 上。

5)沙箱与审批:AI 的手,得有人管

所有文件读写、命令执行都过统一沙箱裁决,三档权限:

档位 读 写 删
readonly ✅ ❌ ❌
project(默认) ✅ ✅ 仅项目内 ⚠️ 需审批
global ✅ ✅ ✅

危险操作(项目内删除、越界写入)走审批流,全程留痕。这是"给 AI 权限"的正确姿势:不是信任它,而是把权限做成可调的档位。


五、两条使用路径,对应两类人

路径 A:一个人用 ------ 创作工作台

建一个「创作项目」,剩下交给会话:

  • 写技术方案 / 产品文档 / 汇报材料;
  • 从需求到原型页面;
  • 漫剧创作:立项定调 → 剧本 → 角色资产 → 风格 → 分镜 → 交付(内置 evant 工作流,状态机推进,媒体走四个创作工具;见下一节展开)

路径 B:一个团队用 ------ 研发工作台

这里是它和"单点编码助手"最不一样的地方。研发工作台的组织方式是:

text 复制代码
企业 → 项目 → 任务 → 会话 / 文档 / 代码仓库
  • 每个任务有自己的类型、级别、状态;
  • 每个会话绑定在具体任务上,产物进任务;
  • 代码仓库登记在项目里,AI 直接读仓库、出分析、写规约;
  • 0.3.9 起,任务还要走流程门禁 :调研 → 实施方案 → 方案评审 → 编码 → 测试 → 交付,每道门做状态校验,评审门必须人工批准才能写代码,跳过要留痕(dev_bypass=1)。

于是"AI 做了什么"这件事,有了可查询的载体:任务、文档、事件流、规约文件。


六、漫剧创作:从「一句话」到一集片子的资产包

上一节说创作工作台能做漫剧,这里单独展开------因为它是这套平台里最不像"聊天"的部分。

先说清楚它不是什么:它不是一个"文生视频"按钮。 它是一个被状态机约束的创作生产线。

为什么需要生产线?因为 AI 做长内容最常见的失败不是"生成不出来",而是越做越飘:第 5 镜的角色换了张脸,第 8 镜的色调和开头不是同一部片子,第 12 镜的房子结构变了。这不是模型能力问题,是上下文和资产没有被管起来的问题。状态机 + 资产账本,就是把"一致性"从祈祷变成流程里的强制项。

1)三种开工方式,都从「00 项目简报」进

模式 你提供什么 AI 做什么
A 自写 一句创意、一段梗概 陪你定题材、集数、画幅(9:16 / 16:9)、目标平台,产出立项卡
B 上传剧本 现成剧本 不代笔改剧情,直接分场、拆镜、配资产
C 小说转 小说原文 抽取场景与人物,转成可分镜的剧本,且标注「原文明确 / 合理推断 / 创作建议」

模式 C 那条标注看着不起眼,但很关键:AI 的补充建议不会被写成剧本事实,你回头改稿知道自己改的是谁的判断。

2)五段状态机,每段都要你点头

text 复制代码
00 项目简报 → 01 剧本 → 02 角色与资产 → 03 风格 → 04 分镜 → 交付
  • 进度真源是 .ynuo/evant/state.json,不是聊天记录。换会话、隔天回来,从上次那段接着做;
  • 每阶段结束必须你确认才推进,AI 不会自己一路跑到交付;
  • 交付件一律落 docs/<阶段>/(如 docs/剧本/剧本.md),治理区 .ynuo/ 不进版本库------避免"交付件写在缓存区,一清理就没了"。

3)四个工具,是媒体生成的唯一出口

工具 干什么
creation_generate 提交图像 / 视频 / 配音 / 音乐生成
creation_poll 查进度、取真实 localPath
creation_list_assets 列资产 + 预算用量
creation_register_doc 交付 .md 归档并登记

真正有意思的是幂等键 :每次生成都带一个稳定镜号(S01、CHAR-主角)。同键重复提交会自动复用已有任务------网络抖了重试一次,不会重复计费,也不会生成两张脸不一样的图。

落盘规则也是硬的:docs/assets/<镜号>_<类型>_<序号>.<ext>,例如 S02_image_1.png、S02_video_1.mp4、S02_tts_1.mp3。按镜号字典序就是场景顺序,抽卡多版本按序号递增、不覆盖旧版。

4)花钱这件事,有三档刹车

策略 行为
confirm_each 每次生成弹审批,你点「允许」才花钱(未知或缺失档位一律按这个最严的来)
confirm_batch 同一轮里的并行调用合成一批,一次审批统一提交
auto_budget 设预算上限,用完直接拒绝------AI 只能如实告诉你用完了,不能绕过

资产账本 project_asset 记着每一笔,creation_list_assets 会返回预算余额。这一条的意义不只是省钱:它让 AI 的花费变成可核算的,而不是月底看账单猜哪来的。

5)一致性靠纪律,不靠模型自觉

工作流里写死了一条最高优先级规则:

视频必须以同镜号已就绪的关键帧图作首帧 (imageUrl 传该镜 image 资产的 id),禁止只给文字提示词就开视频。

理由很直白:只给提示词,角色形象和色调必然和关键帧脱钩。角色立绘统一走 CHAR-<名> 资产 + 角色圣经里的固定描述,换装、换脸、空间漂移都是红线,同理还有内容合规清单(不生成侵权形象、真实人物,真实地名公司须虚构化)。

6)接了哪些媒体平台

平台 能力
火山 · 即梦 图像 / 视频 / 音乐
火山 · 方舟 Ark 图像 / 视频
火山 · 豆包 seed-tts 配音(可开字级时间戳)
阿里 · 百炼 视频;WebSocket 实时语音合成
OpenAI 兼容网关(NewAPI / Navivo 等) 图像 / 视频 / 配音 / 音乐

模型名一律取渠道里配的 params.model,换模型不改代码;渠道密钥在「系统设置 → 媒体模型」里配,接口返回一律掩码。

7)生成完还有两件事被自动做了

  • 落盘和推进 :MediaPoller 在服务端跨项目轮询生成中的资产,不需要你开着页面。关掉浏览器,任务照样跑完落盘;
  • 字幕:配音返回字级时间戳时按戳切 cue(中英支持),拿不到就整段均分降级,并在结果里标明走了哪条路径------字幕这事不糊弄。

8)创作页长什么样

右侧面板三个页签:素材库 (按 图像 / 视频 / 配音 / 音乐 分组,可预览、可重下)、阶段产物 (按阶段浏览 docs/)、最终产品 (按 EPxx 分集列成片 / 分镜 / 字幕)。生成中走 /progress 轮询 + 资产变更 SSE,审批走底部审批条(允许 / 拒绝)。

9)它现在还不是什么

  • 不是「一键成片」 :mp4 自动合成(ffmpeg 按镜拼接)还在 P2,当前交付的是资产包------分镜脚本、关键帧、视频片段、配音、字幕、交付清单,最后拼接你自己拿剪映或 ffmpeg 完成;
  • 不做真人换脸 / 数字人克隆:合规红线明确不生成侵权形象与真实人物;
  • 长剧集不是强项:单集几分钟的短剧、条漫剧、宣传片是甜区;几十集连续剧的跨集叙事一致性,仍需人来盯。

一句话收尾:它把"AI 帮我想分镜"升级成"AI 按生产线交付一集片子的资产,且每一步都留了凭据"。


七、给技术读者的几个实现细节

如果你关心它是怎么搭的,这几点可能有点意思:

1)六边形架构 + 事件溯源

领域逻辑与基础设施严格分离,@ynuo/core 是零依赖的纯类型内核,存储/遥测/沙箱/LLM 各自成包,依赖单向不可逆。

2)包结构

text 复制代码
@ynuo/core           纯类型内核,零外部依赖
@ynuo/storage        事件存储 + SQLite(better-sqlite3 / knex)
@ynuo/telemetry      OTel + pino + 审计
@ynuo/agent-sandbox  文件/进程沙箱 + Worker 池
@ynuo/agent-llm      Provider 池 + 缓存 + 熔断
@ynuo/agent-harness  驾驭层:上下文 / 会话 / 工作流 / 工具 / 技能 / MCP
apps/server · apps/cli · apps/web

3)分发方式:Claude Code 同款

@ynuo/ai 是主包,全部内部代码用 esbuild 内联成单文件 index.mjs(不含源码);4 个平台 launcher 走 optionalDependencies,npm 按当前 os/cpu 只装匹配的那一个。5 个 tarball 加起来约 6.6MB。

4)守护进程是 Go 写的

launcher/ynuo(.exe) 以独立进程名运行主服务:崩溃自动重启(递增延迟)、PID 防重复、信号优雅关闭。所以 ynuo daemon 关了终端也不影响,ynuo update 升完自动重启加载新版。

5)单机、本地、SQLite

没有外部依赖,不需要 Docker、不需要数据库服务。数据都在工作区目录里(SQLite + 文件),升级只替换程序本身。


八、0.3.10 刚加的:研发透明化

最新版本把"过程可见"做深了一层,四条主线:

  1. 研发流程门禁:六段流程 + S/M/L 分级 + 评审门不可跳 + 跳过留痕;
  2. AI 方案预审 :隔离子会话、只读核查、结论引到 file:line,人工结论优先;
  3. 上下文白盒:token 水位环 + 15 个维度逐项可见(系统提示词/任务/代码仓库/知识库/记忆层规约/技能/工具/...);
  4. 记忆层 devrules :规约与经验落成文件(人工规则 docs/rules/ + 机器产物 .ynuo/rules/),一仓一文件、按需读取、过期不注入。

(这块单独写了篇长文,这里不展开。)


九、诚实说边界:它不适合谁

写宣传最容易犯的错是把工具说成万能。说清楚不适用场景,反而省彼此时间:

  • 只想在 IDE 里按 Tab 补全代码 ------ 你要的是编码插件,它是平台,杀鸡用牛刀;
  • 团队完全没有研发流程意识 ------ 门禁、规约、留痕都需要有人认这些事,工具不会替你建立制度;
  • 要求开箱即用、零配置 ------ 模型 Provider 得自己配 key,技能和规约要自己写,它是"可组装的平台"而不是"一键神器";
  • 需要多租户云服务 ------ 它定位是单机自托管(数据全在本地),不是 SaaS。

坦白讲,它还在早期:单机部署、生态刚起步,很多能力(比如跨仓规则自动提升)目前是刻意不做而不是忘了做。


十、它适合谁

  • 独立开发者 / 小团队:想要一套自己的"AI 研发流水线",又不愿意被 SaaS 绑定;
  • 有规范诉求的技术负责人:希望 AI 写的东西能留痕、能评审、能追溯,而不是一堆无法验收的 commit;
  • 对 Agent 工程感兴趣的人:事件溯源 + 沙箱 + 技能 + MCP 的组合,本身就是个不错的参考实现(MIT,代码全开)。

十一、开始用

bash 复制代码
npm install -g @ynuo/ai@0.3.10
ynuo daemon
# open http://localhost:2609

如果你也在琢磨"怎么让 AI 写的东西可验证",欢迎来仓库看看,或者直接留言聊聊你的做法。

相关推荐
2601_965619691 小时前
让开源项目「会说话」:AI自动生成语音讲解+演示
人工智能·开源
residual_fan1 小时前
船用柴油机动态机动工况故障诊断:控制感知仿射网络(CAAN)的技术实现
人工智能·算法·数据挖掘·数据分析
计算机魔术师1 小时前
发现2天,修复2个月:AI挖穿PHP后,卡兹克讲透攻防时间差
前端
珠海西格电力1 小时前
零碳园区管理系统的性能评估体系的行业标准
大数据·网络·人工智能·物联网·机器学习·架构·能源
风骏时光牛马1 小时前
测试标题001
前端
wangruofeng2 小时前
黑色十月:AI 找到的漏洞,两小时数十万次利用
人工智能·安全·php
二川bro2 小时前
1美金撬动完整开源项目,Gemini+DeepSeek双AI组队写软件
人工智能
一线数智2 小时前
朱鹰:人的判断力,比算力更重要
大数据·人工智能
IT_陈寒2 小时前
Java性能优化完全指南
前端·人工智能·后端