assistant
kcosr/assistant加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
你是否有这样的经历:对着一个只会「一问一答」的 AI 助手,想要让它一边帮你写代码,一边参考之前的笔记,同时还要对照 diff 改动——结果发现你只能在多个标签页之间来回切换,复制粘贴到怀疑人生?
kcosr/assistant 带来了一种截然不同的思路:把 AI 助手做成一个「多面板操作系统」,每个面板各司其职,AI 可以在面板之间穿梭协作,就像在真实工作台上同时摆好几本参考书。

图1:assistant 移动端界面面板布局
assistant 由独立开发者 kcosr 创建和维护(GitHub @kcosr),是一个实验性个人软件项目,旨在探索 AI 助手与用户之间的新型协作模式。项目的核心理念是:AI 不应该只是一个「回复机器」,而应该是一个能够感知用户工作上下文、跨面板共享信息的协作伙伴。
该项目采用了激进的技术选型:TypeScript monorepo 架构、npm workspaces 管理 10 个独立子包、自研 WebSocket 实时通信层,以及一套完整的 Plugin Panel 插件体系。目前版本 0.18.2,已在 GitHub 积累 86 颗星,虽然规模不大,但代码量和架构复杂度远超同星级平均水平。
整个项目以 npm workspaces 组织为 monorepo,包含 10 个独立包:
| 包名 | 职责 | 核心技术栈 |
|---|---|---|
@assistant/agent-server | 核心服务器,处理 LLM 调用、Session 管理、Plugin 生命周期 | Node.js + WebSocket + OpenAI SDK |
@assistant/web-client | 浏览器端 UI,Panel 渲染、Markdown 渲染、语法高亮 | DOMPurify + marked + highlight.js |
@assistant/mobile-web | 移动端 Web,通过 Capacitor 编译为原生 App | Capacitor 框架 |
@assistant/desktop-tauri | 桌面端,基于 Tauri(Rust 后端) | Tauri/Rust |
@assistant/shared | 共享类型定义和工具函数 | Zod schema 验证 |
@assistant/assistant-cli | 命令行界面,CLI agent 启动器 | yargs + yaml |
@assistant/coding-executor | 代码执行引擎,提供 diff review 等能力 | diff 库 |
@assistant/coding-sidecar | 编程辅助 Sidecar 进程 | Node.js child_process |
@assistant/notify-proxy | 通知代理服务 | — |
@assistant/agent-server 还依赖 better-sqlite3(本地会话存储)和 node-pty(伪终端,支持 agent 执行 shell 命令) |
服务器入口 startServer() 函数展现了核心架构:使用 WebSocket Server (ws 库) 同时管理多个客户端连接,每个连接对应一个 Session,Session 通过 EventStore 持久化为 JSONL 文件。
assistant 对 MCP(Model Context Protocol) 的支持是其技术亮点之一。mcpToolHost.ts 完整实现了 MCP over stdio 协议:
node:child_process.spawn 启动 MCP Server2024-11-05,完整实现 JSON-RPC 2.0initialize 请求,协商协议版本和 Server Capabilities这意味着 assistant 可以直接对接任何支持 MCP stdio 模式的工具(如 Filesystem MCP、Git MCP 等),无需额外适配层。
插件是 assistant 最独特的抽象单元。每个插件同时包含 Server 端(Node.js,处理逻辑)和 Web 端(TypeScript,渲染 UI)。以核心插件为例:
Panel 的 Server/Web 双端架构通过 manifest.json 声明式定义界面元素,实现了「一套逻辑、两端渲染」的设计。
agent-server 内置了 AgentRegistry,支持同时注册多个 AI Agent provider:
HistoryProviderRegistry 支持多套历史记录格式的转换(Claude/Codex/EventStore),实现了不同 agent 之间的会话历史共享。
assistant 支持完整的语音交互链路:
packages/agent-server/src/tts/ 模块独立封装,支持流式音频输出不支持。项目无 Dockerfile 或 docker-compose.yml,部署依赖 Node.js >= 20.18.1 和 npm workspaces 环境。但作为补偿,项目支持 npm run build:remote 命令,可以连接远程构建服务器完成编译,适合没有本地 Node 环境的用户。
有。packages/web-client 提供了完整的浏览器端 UI,通过 npm run start -w @assistant/agent-server 启动后访问 http://localhost:3000 即可使用。UI 支持多面板布局、主题切换(auto/light/dark)和多窗口共享 Session。
assistant 创造性地将 Panel 插件导出为 CLaude Code / Pi / Codex Skills:运行 npm run build:plugins -- --skills-dir ~/.pi/skills/ 后,插件以 Skill 形式被 CLI agent 使用,实现了 GUI 插件与 CLI agent 的互操作。
纯 CPU 运行,不需要 GPU。官方配置建议 2GB RAM + 1GB 磁盘空间,适合在常规开发机上部署。
作者在 README 顶部明确标注「Experimental Software」——不保证稳定性,也不提供正式技术支持。对于生产环境使用,需要自行承担风险。
engines.node: ">=20.18.1" 要求较高的 Node 版本,老旧系统可能需要升级 Node 环境。
项目未发布 npm 包到 registry,依赖通过本地 monorepo workspaces 引用,开发流程有一定门槛。
Session 通过 better-sqlite3 和 JSONL 文件存储在本地,无云端同步能力,多设备使用受限。
assistant 代表了 AI 助手发展的一个有趣方向:从「单轮对话」向「多面板协作」的范式跃迁。其 MCP 标准化集成、Panel 插件架构和 CLI agent 互操作设计,在当前 AI 工具链快速整合的背景下,具有较高的技术参考价值。
虽然项目规模尚小(86★),但代码结构清晰(10 个子包、1200+ 文件)、技术选型现代(TypeScript + WebSocket + MCP),适合 AI 开发者研究如何构建多 Agent 协作平台。对于普通用户,Web UI + 语音支持的组合降低了使用门槛,值得一试。
项目地址:https://github.com/kcosr/assistant
技术栈:TypeScript · Node.js · WebSocket · MCP · npm workspaces · Capacitor · Tauri
Star:86 | 语言:TypeScript | License:Not specified(实验性软件)