{"id":48739560,"url":"https://github.com/kocort/kocort","last_synced_at":"2026-04-12T06:13:28.039Z","repository":{"id":347039865,"uuid":"1192462293","full_name":"kocort/kocort","owner":"kocort","description":"Desktop AI agent runtime with dual-brain safety review, GUI-first operation, local model support, and multi-channel delivery.","archived":false,"fork":false,"pushed_at":"2026-04-04T15:18:38.000Z","size":4346,"stargazers_count":17,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-04T18:22:54.712Z","etag":null,"topics":["agent-runtime","ai-agent","ai-agents","desktop-ai","desktop-app","golang","llama-cpp","local-first","local-llm","multi-agent","nextjs","openai-compatible","slack-bot","subagents","task-scheduler","telegram-bot","tool-calling","webhook","workflow-automation"],"latest_commit_sha":null,"homepage":"https://kocort.com","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kocort.png","metadata":{"files":{"readme":"README-CN.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-26T08:39:20.000Z","updated_at":"2026-04-04T15:18:44.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/kocort/kocort","commit_stats":null,"previous_names":["kocort/kocort"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/kocort/kocort","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kocort%2Fkocort","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kocort%2Fkocort/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kocort%2Fkocort/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kocort%2Fkocort/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kocort","download_url":"https://codeload.github.com/kocort/kocort/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kocort%2Fkocort/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31705787,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-12T05:11:36.334Z","status":"ssl_error","status_checked_at":"2026-04-12T05:11:27.332Z","response_time":58,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agent-runtime","ai-agent","ai-agents","desktop-ai","desktop-app","golang","llama-cpp","local-first","local-llm","multi-agent","nextjs","openai-compatible","slack-bot","subagents","task-scheduler","telegram-bot","tool-calling","webhook","workflow-automation"],"created_at":"2026-04-12T06:13:27.457Z","updated_at":"2026-04-12T06:13:28.030Z","avatar_url":"https://github.com/kocort.png","language":"Go","readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"web/public/logo.svg\" width=\"120\" alt=\"Kocort Logo\" /\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003eKocort\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cb\u003e桌面级 AI Agent 助手 — 双脑架构 · 零命令行 · 全平台支持\u003c/b\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/kocort/kocort/releases\"\u003e\u003cimg src=\"https://img.shields.io/github/v/release/kocort/kocort\" alt=\"Latest Release\" /\u003e\u003c/a\u003e\n  \u003ca href=\"LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/github/license/kocort/kocort\" alt=\"License\" /\u003e\u003c/a\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Go-1.23-00ADD8?logo=go\" alt=\"Go 1.23\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Platforms-macOS%20%7C%20Windows%20%7C%20Linux-222222\" alt=\"Platforms\" /\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"#快速开始\"\u003e快速开始\u003c/a\u003e ·\n  \u003ca href=\"#核心特性\"\u003e核心特性\u003c/a\u003e ·\n  \u003ca href=\"#架构概览\"\u003e架构\u003c/a\u003e ·\n  \u003ca href=\"#api-参考\"\u003eAPI\u003c/a\u003e ·\n  \u003ca href=\"docs/README.md\"\u003e文档入口\u003c/a\u003e ·\n  \u003ca href=\"README.md\"\u003eEnglish\u003c/a\u003e\n\u003c/p\u003e\n\n---\n\n## 什么是 Kocort？\n\nKocort 是一个**桌面级 AI Agent 应用**，类似 [OpenClaw](https://github.com/openclaw/openclaw)，让不懂命令行的用户也能零门槛拥有自己的个人 AI 助理。\n\n它是一个**开箱即用的完整 AI 助手**——内置会话管理、工具编排、技能系统、子代理调度和多层安全防护，下载即用，无需复杂命令行操作。\n\n### 核心优势\n\n| | 特性 | 描述 |\n|---|---|---|\n| 🧠 | **双脑架构** | 云端大脑（强力推理）+ 本地小脑（离线安全审查），敏感信息永不出设备 |\n| 🖥️ | **零命令行** | 全部操作通过图形界面完成，开箱即用 |\n| 📦 | **单文件部署** | 编译为单个可执行文件，内嵌 Web 前端 |\n| 🔒 | **主动安全** | 静态规则拦截 + 小脑语义审查，双重防护 |\n| 🏠 | **纯本地运行** | 内置支持本地模型，无需任何云端 API 即可使用 |\n| 🌍 | **全平台支持** | 原生支持 Windows / macOS / Linux，一套代码多平台编译分发 |\n| 📊 | **图形化管理** | 技能与任务的可视化管理面板，安装 / 配置 / 调度全程图形操作 |\n\n---\n\n## 核心特性\n\n### 🧠 双脑架构（Dual-Brain）\n\nKocort 首创的安全架构——大脑负责推理，小脑负责审查：\n\n```\n                 ┌─────────────────┐\n                 │     用户请求     │\n                 └────────┬────────┘\n                          ▼\n              ┌───────────────────────┐\n              │     🧠 大脑 (Brain)    │\n              │    负责推理 \u0026 决策      │\n              │   云端或本地 LLM 驱动   │\n              └───────────┬───────────┘\n                          │ 产生 tool_call\n                          ▼\n              ┌───────────────────────┐\n              │  🛡️ 小脑 (Cerebellum)  │\n              │   负责安全审查 \u0026 拦截   │\n              │   本地模型 · 完全离线   │\n              │                       │\n              │  approve → ✅ 放行执行  │\n              │  flag    → ⚠️ 标记+执行 │\n              │  reject  → ❌ 拦截阻断  │\n              └───────────┬───────────┘\n                          │ ✅\n                          ▼\n              ┌───────────────────────┐\n              │       工具执行         │\n              └───────────────────────┘\n```\n\n- **大脑（Brain）**：云端/远程 LLM 负责推理决策（支持 OpenAI、Anthropic 等）\n- **小脑（Cerebellum）**：本地 1.7B 量化模型，完全离线运行\n  - 对每一条 `tool_call` 做语义安全审查（意图一致性、数据外泄、注入攻击等）\n  - 审查结果：`approve` / `flag` / `reject`，附带风险等级和原因\n  - 智能跳过低风险只读操作，不影响性能\n  - 优雅降级：小脑不可用时自动放行，不阻塞正常流程\n- **本地大脑（Brain Local）**：本地模型也可完全替代云端后端运行 Agent\n\n### 📡 多渠道集成\n\n开箱即用的消息渠道适配器：\n\n- 飞书（Feishu） · Telegram · Discord · Slack · WhatsApp · Zalo\n- Generic Webhook（自定义接入）\n- WebChat（内置 Web 聊天界面）\n\n### 🛠️ 工具系统\n\n30+ 内置工具，完整的管控体系：\n\n**文件操作**：\n- `read` / `write` / `edit` / `apply_patch` — 文件读写与编辑\n- `grep` / `find` / `ls` — 文件搜索与目录浏览\n\n**命令执行**：\n- `exec` — Shell 命令执行（支持 PTY）\n- `process` — 后台进程管理\n\n**Web \u0026 浏览器**：\n- `web_search` — 网页搜索\n- `web_fetch` — URL 内容获取与提取\n- `browser` — 浏览器自动化（导航 / 截图 / PDF / 控制台）\n\n**记忆系统**：\n- `memory_search` / `memory_get` — 持久化工作区记忆搜索与获取\n\n**会话 \u0026 子代理**：\n- `session_status` — 会话状态查看与模型切换\n- `sessions_list` / `sessions_history` — 会话列表与历史\n- `sessions_send` / `sessions_spawn` / `sessions_yield` — 跨会话通信与子代理\n- `subagents` — 子代理编排（list / kill / info / steer / send）\n- `agents_list` — 可用 Agent 列表\n\n**消息 \u0026 媒体**：\n- `send` — 主动发送消息、文件或图片\n- `image` — 图像分析\n- `image_generate` — 图像生成\n\n**自动化**：\n- `cron` — 定时任务调度（one-shot / interval / cron 表达式）\n- `canvas` — Canvas 展示与交互\n\n**安全管控**：\n- Tool Policy — allow/deny/profile/group 策略\n- Sandbox — 沙箱隔离（目录白名单 + 只读保护）\n- Elevated Gate — 高危操作分级拦截（low/medium/high/critical）\n- Tool Approval — 敏感工具动态审批\n- 循环检测 — 重复/乒乓调用自动熔断\n\n### 🔄 管线式执行引擎\n\n每次 Agent 运行经过 6 个独立可测试阶段：\n\n```\nvalidate → resolve → gateQueue → loadContext → buildRunCtx → execute\n```\n\n1. **validate** — 就绪检查、输入校验\n2. **resolve** — 身份 / 会话 / 命令解析\n3. **gateQueue** — active-run 互斥、队列/丢弃决策\n4. **loadContext** — workspace / transcript / skills / memory 加载\n5. **buildRunCtx** — 工具过滤、RunContext 组装\n6. **execute** — 技能分发或模型调用循环 + 重试\n\n### 📋 更多特性\n\n- **技能系统** — 发现 / 快照 / 命令分发 / 隐式注入 / 安装 / 远程技能\n- **记忆系统** — workspace 文件 lexical recall + hybrid recall\n- **子代理编排** — spawn / registry / completion announce / send / steer\n- **任务调度** — one-shot / interval / cron 三种调度模式\n- **心跳机制** — 定期唤醒、条件评估\n- **可恢复投递** — WAL 队列 / replay / hooks / chunking / transcript mirror\n- **审计仪表盘** — 实时运行状态、审计日志查询\n\n---\n\n## 架构概览\n\n```\n┌─────────────────────────────────────────────┐\n│            cmd/kocort/main.go               │  入口层\n├─────────────────────────────────────────────┤\n│              api/ (Gin)                     │  HTTP API 层\n├─────────────────────────────────────────────┤\n│            runtime/ (Runtime)               │  编排层 — 系统中枢\n├─────────────────────────────────────────────┤\n│              internal/                      │  领域层\n│  ┌────────┬────────┬──────────┬──────────┐  │\n│  │  core  │ config │ backend  │ channel  │  │\n│  │  tool  │  task  │ session  │  infra   │  │\n│  │delivery│heartbeat│  skill  │ sandbox  │  │\n│  │cerebellum│localmodel│memory│  event   │  │\n│  └────────┴────────┴──────────┴──────────┘  │\n├─────────────────────────────────────────────┤\n│              utils/                         │  工具函数\n└─────────────────────────────────────────────┘\n```\n\n**依赖方向**：\n\n```\ncmd/kocort → api → runtime → internal/config → internal/core\n                                    ↓\n                          internal/{domain packages}\n```\n\n**关键约束**：\n- `internal/core` 零内部依赖（只依赖标准库）\n- domain 包之间不互相依赖，通过 `core` 共享类型\n- 渐进式迁移：类型提取已完成，实现文件按需迁入\n\n---\n\n## 安全模型\n\nKocort 实现了多层纵深防御：\n\n| 层级 | 机制 | 描述 |\n|------|------|------|\n| L1 | **工具策略** | allow/deny/profile/group，子代理深度限制 |\n| L2 | **提权门控** | 高危操作分级拦截（low → critical），需用户确认 |\n| L3 | **沙箱隔离** | 文件操作限制在授权目录，系统关键路径只读 |\n| L4 | **工具审批** | 敏感工具需通过动态审批流程 |\n| L5 | **循环检测** | 重复 / 乒乓调用自动熔断，全局熔断器保护 |\n| L6 | **小脑语义审查** | 本地模型对 tool_call 做意图一致性、注入攻击、数据外泄等语义分析 |\n| L7 | **会话隔离** | 会话间访问控制，4 级可见性策略（self/tree/agent/all） |\n\n---\n\n## 快速开始\n\n### 环境要求\n\n- Go 1.23+\n- Node.js 20+ 与 npm（用于构建内嵌 `web/` 前端）\n- （可选）llama.cpp 共享库用于本地模型推理（首次使用时自动下载，或设置 `KOCORT_LLAMA_LIB_DIR`）\n\n### 编译\n\n```bash\n# 先安装一次前端依赖\ncd web \u0026\u0026 npm install \u0026\u0026 cd ..\n\n# 一键打包：\n# 1. 编译 web/ 为静态站点\n# 2. 同步到 Go embed 目录\n# 3. 为当前平台生成 Go 二进制\n./scripts/build.sh\n```\n\n前端构建产物会在打包阶段同步到 `api/static/dist`，最终由 Go API 层直接从可执行文件内提供静态资源服务。\n\n默认输出路径为 `dist/\u003cgoos\u003e_\u003cgoarch\u003e/kocort`。\n\n### 配置\n\nKocort 支持三文件分离配置：\n\n```\nlocal-config/\n├── kocort.json    # 主配置\n├── models.json      # 模型/Provider 配置\n└── channels.json    # 渠道配置\n```\n\n**最小配置**（`models.json`）：\n\n```json\n{\n  \"models\": {\n    \"providers\": {\n      \"openai\": {\n        \"api\": \"openai-completions\",\n        \"baseUrl\": \"https://api.openai.com/v1\",\n        \"apiKey\": \"${OPENAI_API_KEY}\",\n        \"models\": [\n          {\n            \"id\": \"gpt-4o-mini\",\n            \"name\": \"gpt-4o-mini\"\n          }\n        ]\n      }\n    }\n  }\n}\n```\n\n### 运行\n\n```bash\n# Apple Silicon macOS 示例\n./dist/darwin_arm64/kocort\n```\n\n`cmd/kocort` 在无参数时会默认启动 HTTP 服务，默认访问地址为 `http://127.0.0.1:18789`。\n\nCLI 模式下的默认配置目录解析顺序：\n\n1. `KOCORT_CONFIG_DIR`\n2. 如果当前目录已存在 `./.kocort`\n3. 如果用户目录已存在 `~/.kocort`\n4. 否则默认使用 `./.kocort`\n\n### 桌面版构建\n\n桌面打包使用独立脚本：\n\n```bash\n# macOS 菜单栏应用\n./scripts/build-desktop.sh --macos\n\n# Windows 托盘应用\n./scripts/build-desktop.sh --windows\n```\n\n签名、DMG、公证、托盘图标与资源嵌入等细节请参考 `desktop/macos/README.md` 与 `desktop/windows/README.md`。\n\n---\n\n## 文档速览\n\n根目录文档体系已经按当前实现重写，建议从这里进入：\n\n| 文档 | 内容重点 |\n|------|----------|\n| [docs/README.md](docs/README.md) | 阅读顺序与文档范围 |\n| [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md) | 分层、启动模式、Runtime 中枢架构 |\n| [docs/RUNTIME_PIPELINE.md](docs/RUNTIME_PIPELINE.md) | RuntimeBuilder、6 阶段执行管线、投递与持久化 |\n| [docs/MODULES.md](docs/MODULES.md) | `api`、`runtime`、`internal`、`web` 模块地图 |\n| [docs/CONFIGURATION.md](docs/CONFIGURATION.md) | 配置加载、路径解析、热更新、brain 模式 |\n| [docs/API_REFERENCE.md](docs/API_REFERENCE.md) | HTTP / RPC / channel webhook 路由地图 |\n| [docs/CLIENTS_AND_DEPLOYMENT.md](docs/CLIENTS_AND_DEPLOYMENT.md) | Web 前端、桌面壳、嵌入式资源和构建发布 |\n| [docs/DEVELOPMENT.md](docs/DEVELOPMENT.md) | 本地开发、构建测试、扩展边界 |\n\n---\n\n## API 参考\n\n### 聊天交互\n\n| 方法 | 路径 | 说明 |\n|------|------|------|\n| GET | `/api/workspace/chat/bootstrap` | 聊天初始化 |\n| POST | `/api/workspace/chat/send` | 发送消息 |\n| POST | `/api/workspace/chat/cancel` | 取消运行 |\n| GET | `/api/workspace/chat/history` | 聊天历史 |\n| GET | `/api/workspace/chat/events` | SSE 事件流 |\n\n### 引擎管理\n\n| 方法 | 路径 | 说明 |\n|------|------|------|\n| GET/POST | `/api/engine/brain/*` | 大脑配置 / 模型管理 |\n| POST | `/api/engine/brain/cerebellum/start\\|stop\\|restart` | 小脑生命周期 |\n| POST | `/api/engine/brain/local/start\\|stop\\|restart` | 本地大脑生命周期 |\n| POST | `/api/engine/brain/mode` | 大脑模式切换 |\n\n### 系统管理\n\n| 方法 | 路径 | 说明 |\n|------|------|------|\n| GET | `/healthz` | 健康检查 |\n| GET | `/api/system/dashboard` | 仪表盘 |\n| POST | `/api/system/audit/list` | 审计日志 |\n\n### 渠道 \u0026 RPC\n\n| 方法 | 路径 | 说明 |\n|------|------|------|\n| POST | `/channels/:channelID` | 渠道 Inbound Webhook |\n| POST | `/rpc/chat.send` | RPC 聊天发送 |\n| GET | `/rpc/chat.events` | RPC SSE 事件流 |\n\n\u003e 完整 API 文档请参阅 [docs/API_REFERENCE.md](docs/API_REFERENCE.md)\n\n---\n\n## 项目结构\n\n```\nkocort/\n├── cmd/kocort/           # CLI + HTTP 服务入口\n├── cmd/kocort-desktop/   # 桌面托盘 / 菜单栏入口\n├── api/                  # HTTP API (Gin)\n├── runtime/              # Runtime 编排核心\n├── internal/\n│   ├── core/             # 共享类型（零依赖）\n│   ├── config/           # 配置结构体与加载\n│   ├── backend/          # LLM Backend 抽象\n│   ├── channel/          # 渠道集成适配器\n│   ├── cerebellum/       # 小脑安全审查\n│   ├── localmodel/       # 本地模型生命周期\n│   ├── tool/             # 工具注册与执行\n│   ├── session/          # 会话管理\n│   ├── task/             # 任务调度\n│   ├── delivery/         # 消息投递\n│   ├── heartbeat/        # 心跳调度\n│   ├── skill/            # 技能系统\n│   ├── infra/            # 基础设施（日志/审计）\n│   └── sandbox/          # 沙箱执行\n├── web/                  # 前端 (Next.js)\n├── desktop/              # macOS / Windows 桌面打包资源\n├── api/static/dist/      # 前端构建后嵌入的静态资源\n├── utils/                # 工具函数\n├── defaults/             # 默认配置示例\n├── local-config/         # 本地运行配置\n├── docs/                 # 文档\n└── scripts/              # 构建脚本\n```\n\n---\n\n## 技术栈\n\n| 组件 | 技术 |\n|------|------|\n| **语言** | Go 1.23 |\n| **HTTP 框架** | Gin |\n| **LLM SDK** | go-openai, anthropic-sdk-go |\n| **本地推理** | llama.cpp (purego 动态加载), GGUF 格式 |\n| **WebSocket** | gorilla/websocket |\n| **前端** | Next.js |\n| **任务调度** | robfig/cron |\n| **文件监控** | fsnotify |\n\n---\n\n## 文档索引\n\n| 文档 | 说明 |\n|------|------|\n| [README.md](docs/README.md) | 文档入口与推荐阅读顺序 |\n| [ARCHITECTURE.md](docs/ARCHITECTURE.md) | 项目架构与主要子系统说明 |\n| [RUNTIME_PIPELINE.md](docs/RUNTIME_PIPELINE.md) | RuntimeBuilder 与 6 阶段执行管线 |\n| [MODULES.md](docs/MODULES.md) | `api`、`runtime`、`internal`、`web` 模块职责地图 |\n| [CONFIGURATION.md](docs/CONFIGURATION.md) | 配置结构、加载规则、热更新与 local-config 用法 |\n| [API_REFERENCE.md](docs/API_REFERENCE.md) | HTTP / RPC 接口参考 |\n| [CLIENTS_AND_DEPLOYMENT.md](docs/CLIENTS_AND_DEPLOYMENT.md) | Web 前端、桌面壳与发布方式 |\n| [DEVELOPMENT.md](docs/DEVELOPMENT.md) | 本地开发与扩展指南 |\n\n---\n\n## 与 OpenClaw 的对比\n\n| 特性 | OpenClaw | Kocort |\n|------|----------|--------|\n| 交互方式 | CLI | 图形界面（零命令行） |\n| 安全模型 | 静态规则 | 双脑架构（静态规则 + 语义审查） |\n| 本地模型 | 不支持 | 内置 llama.cpp 推理 |\n| 部署方式 | CLI 工具 | 单文件 + Web 界面 |\n| 离线运行 | 不支持 | 完全支持 |\n| 渠道集成 | 终端 | 飞书/Telegram/Discord/Slack/WhatsApp 等 |\n| 全平台支持 | macOS / Linux | ✅ Windows / macOS / Linux 全平台原生支持 |\n| 技能/任务管理 | CLI 手动配置 | ✅ 图形化管理面板（安装/配置/调度） |\n\n---\n\n## 许可证\n\n[MIT](LICENSE)\n\n---\n\n\u003cp align=\"center\"\u003e\n  \u003csub\u003eBuilt with 🧠 dual-brain architecture\u003c/sub\u003e\n\u003c/p\u003e\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkocort%2Fkocort","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkocort%2Fkocort","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkocort%2Fkocort/lists"}