@jakevin7: OpenCLI 的APP 今天完全用一个组件库重新重构了,折腾了好久。 MakeAgent 我也准备让 Agent 把 UI 完全重构掉,这个 UI 可能是最后一面了。 https://github.com/jackwener/maka-…
摘要
Maka 是一个本地优先的桌面 AI 工作台,基于 Electron 构建,支持多种模型连接、工具调用、权限控制和隐私保护,并集成了机器人入口、本地记忆等功能。项目作者同时提到重构了 OpenCLI 的 APP 和计划重构 MakeAgent 的 UI。
查看缓存全文
缓存时间: 2026/06/17 11:52
OpenCLI 的APP 今天完全用一个组件库重新重构了,折腾了好久。 MakeAgent 我也准备让 Agent 把 UI 完全重构掉,这个 UI 可能是最后一面了。
https://t.co/kuSGF0SZDh https://t.co/eUg2zUqwYg
jackwener/maka-agent
Source: https://github.com/jackwener/maka-agent
Maka
Maka 是一个本地优先的桌面 AI 工作台。它把模型连接、会话、工具权限、文件读写、终端执行、搜索、机器人入口和运行恢复放在一个 Electron 应用里,目标是让用户在自己的电脑上跑一个可观察、可控、可持续恢复的 agent。
这个仓库还在活跃开发中。README 先服务两类人:
- 第一次打开 Maka 的用户:知道为什么要先配置 AI、数据放在哪里、哪些能力已经可用。
- 继续开发 Maka 的工程师:能快速启动、验证、定位关键包和设计文档。
你会看到什么
首次进入 Maka 时,如果还没有可用模型连接,首屏会引导你完成 AI 配置,而不是直接给一个不能发送的空聊天框。推荐路径是:
- 打开
设置 -> 模型。 - 选择一个真实模型供应商,填写 API key 或完成已接入的账号登录。
- 测试连接并选择默认模型。
- 回到首屏,用快速输入开始第一条对话。
已接入的模型类型包括:
- 海外 API:Anthropic、OpenAI、Google Gemini。
- 国内 API:DeepSeek、Moonshot、Z.AI Coding Plan、Kimi Coding Plan。
- 本地模型:Ollama。
- 自定义网关:OpenAI Compatible endpoint。
- 账号订阅入口:Claude Subscription、Codex Subscription、Gemini CLI 等仍按实验/可用状态分开呈现,未接入发送链路的入口不会伪装成可用。
当前能力
Maka 当前不是简单 chat demo,已经有这些核心面:
- 桌面会话:创建、切换、归档、搜索、重命名、停止、重试、重新生成、从 turn 分支。
- 模型运行时:基于 Vercel AI SDK 的 provider runtime,支持模型流式输出、工具调用、usage 记录、错误分类和启动恢复。
- 本地工具:
Read、Write、Edit、Bash、Glob、Grep,写文件和命令执行走权限策略。 - 首跑引导:根据真实连接状态展示“补配置 / 选默认连接 / 选默认模型 / 开始对话”的不同状态。
- 设置中心:模型、账号、使用统计、每日回顾、本地记忆、语音模型、开放网关、机器人对话、联网搜索、网络代理、权限与能力、健康状态、数据与关于。
- 本地记忆:
MEMORY.md管理、手动添加、归档/恢复、agent 读取开关。 - 联网搜索:Tavily 凭据配置、测试和 agent tool 边界。
- 机器人入口:Telegram、飞书、企业微信、微信 iLink、Discord、钉钉、QQ 的配置/测试/运行状态框架。
- 开放网关:本地 HTTP/SSE API,用 token 保护外部读取会话状态、事件、能力和健康摘要。
- Office 文档工作流:通过本地
officecli探测后启用读取、校验和按次授权编辑。 - 运行内核:
AgentRunledger、RuntimeEventread model、ToolRuntime、ModelAdapter、RunTrace和恢复逻辑。
本地与隐私边界
Maka 默认把工作数据放在 Electron userData 下的工作区目录:
<Electron userData>/workspaces/default/
llm-connections.json
credentials.json
settings.json
sessions/
重要边界:
- Provider 连接元数据和 session JSONL 在本地文件系统。
- API key、OAuth token、bot token、proxy password、gateway token、Tavily key 等敏感值走 Electron
safeStorage加密后写入credentials.json。 - Renderer 不直接拿明文密钥;Settings 只显示 masked 状态和测试结果。
- 文件读写、shell、危险操作需要经过 permission engine。
- Incognito / privacy context、memory、voice、workspace instructions 等能力有单独 contract 文档约束。
快速开始
仓库使用 npm workspaces。虽然存在 pnpm-workspace.yaml,当前脚本和 lockfile 以 npm 为准。
npm install
npm run dev
npm run dev 会先 build 全部 workspace,再启动 Electron desktop app。
如果安装依赖时设置过 ELECTRON_SKIP_BINARY_DOWNLOAD=1,启动前需要补 Electron 平台二进制:
node node_modules/electron/install.js
常用开发命令:
npm run build
npm run typecheck
npm --workspace @maka/desktop run test
npm --workspace @maka/runtime run test
npm --workspace @maka/core run test
桌面视觉和真实窗口验证:
npm --workspace @maka/desktop run screenshots
npm --workspace @maka/desktop run screenshots:diff:stable
npm --workspace @maka/desktop run smoke:real-window
Release 前的基础检查:
npm run check:release
可选环境变量
这些变量只影响本地开发或特定能力:
| 变量 | 用途 |
|---|---|
ANTHROPIC_API_KEY | 首次启动时可用来 bootstrap Anthropic 连接。 |
OPENAI_API_KEY | 首次启动时可用来 bootstrap OpenAI 连接。 |
TAVILY_API_KEY / MAKA_TAVILY_API_KEY | 联网搜索的 Tavily 凭据来源。 |
MAKA_RIVE_BIN / RIVE_BIN | 指定 Rive workflow 使用的 rive CLI。 |
MAKA_VISUAL_SMOKE_FIXTURE | 启用确定性视觉 fixture,仅限 dev/test build。 |
项目结构
apps/desktop/
src/main/ Electron main process, IPC, settings, OAuth, bot, gateway
src/preload/ window.maka preload bridge
src/renderer/ React desktop UI and Settings surfaces
packages/core/ Pure contracts: sessions, events, settings, permissions, model connections
packages/storage/ File-backed session, settings, connection, run-ledger stores
packages/runtime/ SessionManager, AgentRun, AI SDK runtime, tools, bots, telemetry
packages/ui/ Shared rendering components, markdown, artifacts, redaction helpers
docs/ Product, runtime, design-system, privacy and test-plan contracts
scripts/ Build hygiene, screenshot, smoke and release helpers
Runtime 架构
当前 runtime 已从单一大流程拆成更清楚的内核边界:
SessionManager
-> AgentRun
-> AiSdkBackend
-> ModelAdapter
-> ToolRuntime
-> RunTrace
-> AgentRunStore
关键原则:
SessionManager仍是对桌面、bot、gateway 暴露的公共 runtime API。AgentRun负责单次 turn 的 durable run 事实和启动恢复。ToolRuntime负责工具输入校验、权限、watchdog、abort、telemetry、artifact candidate 和错误分类。ModelAdapter隔离 provider stream / error / usage normalization。RunTrace是 best-effort,不允许因为 trace 写失败影响用户对话。
更多细节见:
docs/runtime-kernel.mddocs/runtime-v2-architecture-evolution.mddocs/runtime-v2-implementation-notes.md
UI 与产品质量契约
Maka 的 UI 不是随手堆页面,已有单独的设计系统和测试计划:
docs/design-system.md:颜色、密度、状态、动效、Settings IA、copy 和 a11y 契约。docs/ui-quality-plan.md:真实窗口、视觉截图、交互状态、回归验证策略。docs/full-product-test-plan.md:从首跑、设置、会话、工具、搜索、bot、gateway 到失败路径的完整 QA 路线。
改 UI 时不要只跑 TypeScript。至少要配套:
- 对应 surface 的 node:test contract。
check-console/check-a11y通过。- 必要时补视觉 fixture 或真实窗口 smoke。
贡献前检查
常规代码改动建议至少跑:
npm run typecheck --workspaces --if-present
npm run build
git diff --check
涉及 desktop renderer / Settings / IPC 的改动,再跑对应 focused suite,例如:
npm --workspace @maka/desktop run test -- settings-form-a11y-contract visible-copy-hygiene-contract
涉及 runtime / storage 的改动,再跑对应 workspace 测试:
npm --workspace @maka/runtime run test
npm --workspace @maka/storage run test
相关文档
CHANGELOG.md:当前未发布变更摘要。SECURITY.md:安全边界和报告方式。docs/workspace-privacy-context.md:工作区隐私上下文。docs/search-service-threat-model.md:搜索服务威胁模型。docs/memory-threat-model.md:本地记忆威胁模型。docs/voice-threat-model.md:语音能力边界。docs/maka-capability-audit-v1.md:能力成熟度审计和后续路线。
相似文章
@jakevin7: 把之前做的 agent: maka 开源出来了,目前还在高密度开发中:https://github.com/jackwener/maka-agent… 现在已经有这么多开源的Agent了,那为什么还要自己做一个呢? - maka首先是一个…
Maka 是一个本地优先的桌面 AI 工作台,通过 DAG 工作流实现长程执行,集成浏览器自动化与插件能力,现已开源在 GitHub 上。
@jakevin7: 分享一下maka 最近在做一件很有意思的事:让 agent 自动优化自己的 system prompt,完全闭环,不需要任何人工介入。Karpathy 的 autoresearch、AEGIS 等都做过类似方向,一个有目标的自我强化学习系…
Maka是一个本地优先的桌面AI工作台,其新功能让agent自动优化自己的system prompt,通过生成变体、容器评测和acceptance policy迭代改进,无需人工介入。
@jakevin7: AI 自己总结出来了 Agent-native 这个词告诉我 我还是有点吃惊的。 project_opencli_design_principle.md,核心三条: - OpenCLI 第一用户是 AI agent,不是人类开发者。所有能…
OpenCLI 项目提出 Agent-native 设计理念,将 AI agent 作为 CLI 的第一用户,所有能力设计以提升 agent 成功率为衡量标准。
@jakevin7: 越来越觉得 Maka 很适合用来学习 Agent。 比如最近一个maka core dev提了 issue 在讨论 DeepSeek 的缓存优化。 全过程透明:1 个 issue + 8 个 PR 一路推上来,从 usage 归一化 → …
一篇介绍 Maka 桌面 AI 工作台的推文和项目说明,探讨了 Agent 开发中的缓存优化、运行时工程问题,以及 Maka 作为本地优先工具的功能架构。
@jakevin7: OpenCLI v1.8.0 终于发布了 熬到凌晨 4 点,1.7 到 1.8 这一程算是落地了。回顾这段时间确实做了太多了! ## Browser Agent Runtime 完善了 browser 能力,一次性到位。本质是把"agen…
OpenCLI v1.8.0 发布,增强了浏览器代理运行时,通过 accessibility tree 和 CDP 原生输入实现了更可靠的浏览器操控,并新增了微信读书、12306、闲鱼等多个站点适配,提升了稳定性和安全性。