# owncode **Repository Path**: f6688/owncode ## Basic Information - **Project Name**: owncode - **Description**: 一个本地安全的AI编程工具,会把本地的配置文件进行脱敏,保护隐私 - **Primary Language**: Unknown - **License**: AGPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-29 - **Last Updated**: 2026-09-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # OwnCode **Windows 优先的 AI 编程桌面端 — 你的代码,始终属于你。** --- ## 为什么选择 OwnCode? AI 编程工具越来越强大,但也意味着你的代码、配置、密钥正在被发送到更多地方。OwnCode 从设计之初就把**数据安全**放在第一位 —— 不是事后打补丁,而是内建在每一次 LLM 交互中。 --- ## 🔒 核心安全能力 ### 敏感信息自动脱敏 你的 `.env`、数据库连接串、API Key、SSH 私钥……Agent 在把文件内容发送给大模型之前,会**自动检测并替换为 `[REDACTED]`**。敏感信息永远不会离开你的机器。 **三层防护:** | 层级 | 机制 | 覆盖范围 | |------|------|----------| | **文件匹配** | 60+ 内置 glob 模式识别敏感文件 | `.env`、`*credentials*`、`*.pem`、`*.key`、`kubeconfig`、`terraform.tfvars` 等 | | **格式识别** | 25+ 种已知密钥格式的精确正则 | OpenAI `sk-...`、AWS `AKIA...`、GCP `AIza...`、GitHub `ghp_...`、数据库连接串、JWT、PEM 私钥块 | | **关键词匹配** | 通用凭证关键词 + 大写环境变量后缀 | `password`、`secret`、`token`、`api_key`、`*_PASSWORD`、`*_SECRET`、`*_TOKEN` 等 | **两种脱敏粒度:** - **值级脱敏**(`.env`、`credentials.json` 等):仅掩码敏感字段的值,其余配置内容保持可读,Agent 仍能理解文件结构。 - **全文件脱敏**(`*.pem`、`*.key`、`id_rsa`、`*.sqlite` 等):所有非空行全部掩码,Agent 只能知道"这是一个敏感文件"。 > 允许列表:`.env.example`、`.env.sample` 等模板文件由白名单保护,不会被误脱敏。 --- ### 自定义脱敏规则 每个人的项目不同,敏感信息的形态也不同。在 **设置 → 安全** 中,你可以: **1. 添加自定义敏感文件(glob 模式)** 逐行输入 glob 模式,匹配的文件将被**全文件脱敏**: ``` config/production.json *.secret my-custom-env.* internal/keys/* ``` **2. 添加自定义检测规则(正则表达式)** 逐行输入正则表达式,匹配的内容将在值级脱敏文件中被掩码: ``` INTERNAL-\d{8}-[A-Z]+ my_company_[A-Za-z0-9]{32} corp-secret:\s*\S+ ``` 规则会自动编译并追加到内置检测器之后,无效正则会被静默跳过。 **3. 脱敏预览测试** 点击"选择文件测试",选择任意本地文件 —— 系统会用当前规则对它运行一遍脱敏引擎,展示: - 匹配了哪些规则 - 每种规则命中了几处 - 脱敏后的内容预览 不用实际调用 LLM 即可验证脱敏效果。 --- ### 三层写入保护 防止 Agent 意外修改不该动的文件: | 策略 | 保护范围 | |------|----------| | **balanced**(推荐) | 阻止写入 `.git/`、`node_modules/`、`dist/`、`build/`、锁文件、`.owncode/` 内部目录 | | **strict** | 上述全部 + 仅允许编辑约 70 种代码扩展名(`.ts`、`.py`、`.rs` 等)和白名单文件名 | | **loose** | 仅阻止始终禁止的路径 | 所有策略都带**路径逃逸检测** —— 即使用 `../` 尝试越狱,也会被拦截。 --- ### 危险命令二次确认 Agent 执行 `rm -rf`、`git push --force`、`chmod 777` 等危险操作时,会弹出确认栏: - 显示完整命令内容,一目了然 - **Enter 键不会通过** —— 必须手动点击"允许" - Esc 或点击"拒绝"即撤销 - 窗口崩溃或 120 秒无响应 → **自动拒绝**(fail-closed) --- ### 更多安全措施 - **零遥测**:不搜集使用数据,不上报崩溃,不埋任何分析点。 - **Electron 上下文隔离**:`contextIsolation: true`,渲染进程无法直接访问 Node.js,所有 IPC 经类型安全的 preload 桥接。 - **检查点回滚**:每次 Agent 修改文件前自动创建快照,最多保留 12 个。可随时逐文件回滚。 --- ## 核心功能 ### 🧠 Plan + Agent 双模式 | 模式 | 能力 | 适用场景 | |------|------|----------| | **Plan** | 只读:分析代码、搜索、生成方案 | 需求分析、架构设计、代码审查 | | **Agent** | 读写:编辑文件、执行命令、运行测试 | 功能开发、Bug 修复、重构 | ### 📋 任务分解 + 进度追踪 Agent 自动将复杂需求拆解为带依赖关系的子任务,实时显示进度。支持跳过、重置单个任务。 ### 🧪 执行级验证引擎 Agent 改完代码后,自动运行真实的编译器/类型检查器/测试来验证: - 类型检查:`tsc`、`mypy`、`cargo check`、`go vet` - 代码检查:`eslint`、`ruff`、`clippy` - 测试运行:自动发现关联测试文件 验证失败时进入**自动修复循环**(最多 3 轮),根据编译错误自行修正。 ### 📝 内联变更审查 每次 Agent 操作后,对话上方展示变更栏,逐文件 diff 对比: - 独立"保留"/"撤销"按钮 - "全部保留"/"全部撤销"全局操作 - 点击文件名在 Monaco 编辑器中打开 ### 🖥️ 内置终端 xterm.js + node-pty 完整终端体验。Agent 执行标签查看所有命令输出,用户 Shell 标签像普通终端一样使用。 ### 📦 嵌入式代码检索 - **Rust 原生索引**:6 种语言符号提取 + RepoMap,增量扫描,遵循 `.gitignore` - **BM25 语料库**:全文检索 + 经验索引,跨会话复用 - **本地 RAG 嵌入**:三种后端(FastLocalEmbedding / NeuralEmbedding / ApiEmbedding),可离线使用 ### 🧩 其他亮点 - **MCP 协议**:配置任意 stdio MCP 服务器,工具自动暴露给 Agent - **子 Agent 协调**:层级任务分解,子 Agent 间通信共享记忆 - **经验学习**:Agent 记住过往修复模式,跨会话检索 - **@ 文件提及**:`@文件名` 提供上下文,支持自动补全 - **多会话并发**:同时运行多个 Agent 任务 - **双语设计**:中文界面 + 英文运行时提示词,面向中文开发者 --- ## 快速开始 ### 前置要求 - **Node.js** >= 20 - **pnpm**(`npm install -g pnpm`) - **Windows**(当前主要支持平台) > `.npmrc` 已配置 npmmirror 镜像加速下载。 ### 安装与运行 ```bash git clone https://github.com/YOUR_ORG/owncode.git cd owncode pnpm install pnpm native:build # 先构建原生索引模块 pnpm -r run build # 构建所有包 pnpm dev ``` > **💡 提示:** 第一次构建时,`pnpm native:build` 可能需要几分钟来编译 Rust 代码。 --- ## 故障排除 ### 原生索引构建失败 **症状:** `pnpm -r run build` 报错 "Native build completed, but the generated binding could not be loaded" **原因:** 第一次构建时,MSVC 环境初始化可能存在时序问题,导致 `.node` 文件未生成。 **解决方案:** ```bash # 手动运行一次 native build pnpm native:build # 然后重新构建 pnpm -r run build # 启动开发服务器 pnpm dev ``` 第二次运行通常会成功生成绑定文件。 ### Rust 或 MSVC 未安装 **症状:** 提示 "Rust not found" 或 "MSVC vcvars64.bat not found" **解决方案:** 1. 安装 Rust:访问 https://rustup.rs/ 下载安装 2. 安装 Visual Studio Build Tools: - 下载 [Visual Studio Build Tools](https://visualstudio.microsoft.com/downloads/) - 安装时选择工作负载:**使用 C++ 的桌面开发** - 确保包含 MSVC v142 或更高版本和 Windows SDK --- ### 连接大模型 OwnCode 支持任意 OpenAI 兼容接口: 1. 打开 **设置 → Models** 2. 添加提供商:填写名称、Base URL、API Key 3. 在对话栏下拉菜单中选择你的模型 兼容 OpenAI、DeepSeek、通义千问、智谱、Moonshot 等所有 OpenAI Chat Completions API 服务。 ### 第一次使用 1. **Plan 模式**:输入你想做的事,Agent 分析代码并生成方案(只读,不会修改任何文件)。 2. 审查方案后,**切换到 Agent 模式**。 3. Agent 开始执行,每一步的工具调用和结果都会在对话中展示。 4. 完成后,变更栏展示所有改动,逐文件审查后**保留**或**撤销**。 ### 配置脱敏规则 1. 打开 **设置 → 安全** 2. 确认"启用敏感信息脱敏"已勾选(默认开启) 3. 在"敏感文件模式"中添加你的私有文件 glob(一行一个) 4. 在"检测规则"中添加你的自定义正则(一行一个) 5. 点击"选择文件测试"验证脱敏效果 --- ## 开发 ### 项目结构 | 路径 | 说明 | |------|------| | `apps/desktop` | Electron 桌面端 | | `packages/shared` | 共享类型 | | `packages/settings` | 配置 schema、流水线节点、脱敏规则 | | `packages/llm` | OpenAI 兼容客户端 | | `packages/core` | Agent 框架核心(循环、补丁、检查点、验证、LSP、RAG、脱敏引擎) | | `packages/index` | napi 原生索引 TS 封装 | | `crates/owncode-index` | Rust 符号索引 + RepoMap | | `scripts/` | 冒烟测试、构建脚本 | ### 构建原生索引 需要 Rust(`rustup`)和 Visual Studio Build Tools(工作负载:**使用 C++ 的桌面开发**)。 --- ## 许可协议 本项目采用 **GNU Affero General Public License v3 (AGPL-3.0)** 许可。完整协议文本见 [LICENSE](./LICENSE) 文件。 **简单来说:** - ✅ 你可以自由使用、修改、分发本项目 - ✅ 你可以用于商业目的,但**必须将修改后的完整源码公开** - ⚠️ 如果你通过网络提供本软件的服务(包括 SaaS),你的用户同样有权获取源码 - ⚠️ 所有衍生作品必须以相同协议(AGPL-3.0)开源 > 如需闭源商用授权,请联系作者获取单独的商业许可。