Skip to content

Adnify — AI 原生工程工作台

项目 内容
仓库 ad-naan/Adnify
官网 adnaan.one
许可证 Custom License
技术栈 Electron · React 18 · TypeScript · Monaco · SQLite / LanceDB
我的角色 核心贡献者(贡献量第二,约 194 commits)
文档语言 中文 README · English

Adnify 是一款 local-first 的 AI Agent IDE:把代码编辑、AI 执行、素材生成和浏览器验证放进同一个桌面工作区。

它不是「聊天窗 + 编辑器」的拼装,而是两套目标明确的工作流:

模式 做什么 适合
Agent Mode 同一线程里问答、检索、改文件、跑命令、验结果 直接干活
Plan Mode 需求确认 → 任务图审查 → 依赖感知执行 → 结果验收 大任务、要可审查的编排

工具权限、检查点、诊断、循环检测和异常恢复,让自动执行过程可观察、可审批、可回退。


Adnify 用 Electron 把「会碰机器的部分」和「只负责交互的部分」切开:

Renderer (React UI / Agent kernel / Plan workbench)
│ typed contextBridge
▼
Preload → IPC handlers
▼
Main process (fs / shell / LLM / MCP / LSP / notifications)
▼
Utility processes (索引 · 会话 SQLite · 素材 · 大文档解析)

要点:

  1. Renderer 负责编辑器、Agent 界面、Plan 工作台、终端体验;Agent 与 Plan 任务复用同一套执行内核(模型路由、工具策略、审批、预算、恢复)。
  2. Main 是特权边界:文件系统、shell、更新、通知都走 IPC,preload 不直接把 Node 暴露给页面。
  3. 独立服务进程按需拉起索引和 SQLite;同工作区多窗口共用索引服务,避免每个窗各起一套重活。

对贡献者来说,这意味着:改 UI 时要想清状态落在 store 还是会话进程;改终端 / 远程文件 / 更新时,优先落在 main + IPC 契约,而不是在 renderer 里偷跑特权 API。

官方架构图与进程隔离说明见仓库 README 架构章节 与 process-isolation。


  • 工作区操作:作用域授权 + Diff 预览下的读写删移
  • 代码智能:文本 / 正则检索、LanceDB 语义搜索、LSP 符号与诊断
  • 终端:前台 / 后台命令、实时输出、交互输入、可靠退出码
  • 研究与集成:Web 搜索、URL 读取、MCP、可复用 Skills
  • 上下文引用:@codebase、@git、@terminal、@symbols、@web,也可拖入文件
  • 模型:OpenAI / Anthropic / Google / DeepSeek / Ollama 及兼容接口
  • 素材能力:接自己的图 / 视频 / 音频 HTTP API,任务内生成并入库
  • 浏览器验证:打开预览页查 DOM / 样式 / 控制台,多设备视图,项目级登录态隔离

下面按主题整理,便于以后回看「当时为什么要改」,而不是只列 PR 号。完整列表见 我的 PR。

Agent 能跑 shell,边界必须硬。

  • #108 — shell 命令白名单校验,收紧危险执行面
  • #74 — 整理 secureTerminal 后端与注释,分清职责
  • #130 — dugite 不可用时的警告去重,避免噪音淹没真错误
  • #18 — 终端崩溃与错误处理加固

国内网络下,下载 / 更新经常是「功能有了但装不上」。

  • #164 — 更新服务支持 GitHub 下载镜像(修 #153)
  • #165 / #166 — 远程目录 / 文件下载与上传增强
  • #162 — 外部文件访问请求流程

流式输出和工具卡如果有竞态,用户会看到「字跳了 / 点了没反应」。

  • #72 — 直接订阅 store,真正做到流式输出
  • #71 — 修 streaming edit 索引竞态、Promise.race 定时器泄漏、LSP completion 泄漏
  • #54 — AgentStatusBar / ChatPanel 工具审批按钮(#51)
  • #42 — FileChangeCard / ToolCallCard 实时参数展示
  • #81 — 打开文件的滚动位置保存 / 恢复
  • #163 — Git diff 与文件变更处理增强
  • #15 / #16 — AI 内容里的 GFM 表格渲染
  • #25 — SafeHTML / SafeMarkdownHTML,避免不可信 HTML 直接进 DOM
  • #70 — 索引服务错误处理与工作区健壮性
  • #129 / #86 — postinstall / WASM / electron-builder 依赖处理
  • #161 — 统一抬高 Node 版本到 24.19.0,文档与配置对齐
  • #12 — 防止更新检查无限挂起

早期还做过一套「情绪感知」反馈链路:检测 → 上下文分析 → 编辑器条 / 音频提示 / adapter 回退。

相关:#26 · #27 · #28 · #30


以仓库当前文档为准;通常需要较新的 Node 与 pnpm:

Terminal window
git clone https://github.com/ad-naan/Adnify.git
cd Adnify
pnpm install
pnpm dev

贡献前建议先读仓库的 Contributing 说明,并熟悉 src/main/ipc 与 src/shared 的契约边界——跨进程改动最容易在这里踩坑。