CodePapr 教程
v0.1.0 macOS + Windows Tauri Desktop ← 返回首页

CodePapr 教程

CodePapr 是一个基于 DeepSeek 缓存友好的本地编码 Agent 系统。它不只是代码生成器,而是具备理解 + 执行能力的智能体工作台——能读取项目、搜索代码、执行命令、修改文件、预览结果,全部在本地完成。

CodePapr 简介

什么是 CodePapr

CodePapr 是一个缓存优先的编码代理(Agent)系统,以 Tauri 桌面端为公开入口。它通过共享 Agent Runtime 为桌面工作台和内部自动化宿主提供能力,使 AI 代理能够在真实项目仓库里完成读取、修改、执行、验证与预览

CodePapr 不是传统的 AI 聊天工具,也不是 IDE 插件。它是一个在终端/桌面中运行的自主代理,能真正理解你的项目上下文并自动执行开发任务。

核心设计理念

  • 本地优先:项目上下文尽量不离开工作区,文件和命令执行都在本地完成
  • 单一 Runtime,多入口复用:桌面端与内部自动化宿主共用同一套 Agent、Session、ToolRegistry、Provider 语义
  • DeepSeek 缓存优化:稳定内容前置、易变内容后置,最大化前缀缓存命中率以降低 token 成本
  • 结构化代码修改:使用 Search/Replace Diff 机制,先校验再写入,避免行号错位
  • 可验证执行链路:每一轮请求、响应、工具调用和缓存统计都可追踪

CodePapr 与主流 AI 编程工具对比

2026 年,AI 编程工具已经很成熟。以下对比基于各工具当前公开能力,如实呈现差异。

维度Cline (62k⭐)Aider (46k⭐)Devin DesktopCodePapr
形态SDK / VS Code / JetBrains / CLI / Kanban终端命令独立桌面 IDE独立桌面应用(Tauri 2)
多 Agent✅ 团队 + 协调者 + 定时调度❌ 单 Agent✅ 多 Agent 舰队 + ACP 协议✅ 主 Agent + 3 内置子代理 + 自定义
任务规划Kanban 看板Spaces + KanbanTodoList:自动创建 / 进度追踪 / re-plan
代码理解读取文件 + grep + LSPRepo MapFast Context(毫秒级)CodeGraph 语义图:13 个分析 action
回退机制Checkpoints 快照Git commit 回退Diff reviewGit auto-commit checkpoint + reset --hard:代码与消息原子性恢复
缓存优化DeepSeek 三层前缀缓存,跨会话复用
模型支持几乎所有(含本地)几乎所有(含本地)内置免费模型 + 第三方DeepSeek / OpenAI / Claude / 本地
扩展性SDK + MCP + 插件系统配置文件MCP + Extension + ACP自定义 Agent / Skills / 命令 / 规则
价格开源免费 + API 费用开源免费 + API 费用免费 / $20 Pro / $200 Max开源免费 + API 费用
CodePapr 的独特价值:与其他工具互补而非替代。如果你需要 IDE 深度集成和丰富的插件生态,Cline/Aider/Devin Desktop 更成熟。如果你看重 独立桌面工作台DeepSeek 前缀缓存极致省成本多子代理协作体系对话即可回退的原地重置——CodePapr 是最佳选择。

谁适合使用 CodePapr

  • 已掌握至少一门编程语言,能读懂基础语法和项目结构
  • 希望借助 AI 大幅提升开发效率的工程师
  • 独立开发者或需要长期维护复杂项目的技术负责人
  • 习惯在命令行和可视化界面之间切换的开发者
  • 关注 token 成本,希望利用 DeepSeek 缓存优化降低开销的团队

需要具备的基础能力

  • 基础编程能力(能读懂并编写简单代码)
  • 基本的代码阅读与理解能力
  • 会使用常见开发工具(编辑器、命令行、Git)
  • 具备基本的项目结构认知(目录、模块划分)
  • 愿意理解代码,而不是完全依赖 AI

支持的 LLM Provider

DeepSeek(原生) OpenAI(兼容) Claude / Anthropic(兼容) 本地 OpenAI 兼容端点

安装与环境配置

环境要求

组件最低版本用途
Node.js18+运行时和包管理
npm9+依赖管理
Rust toolchain + Cargostable桌面端编译(debug/release/publish)
.NET SDK-C# Roslyn analyzer(release 构建需要)
注意:如果只做前端开发或只阅读源码,完成 npm installnpm run build 通常就够了。桌面端调试和打包才需要 Rust toolchain。

标准安装

# 克隆仓库后
npm install
npm run build

安装验收

npm run verify

通过这一步,说明当前机器至少满足:Node 依赖正确、workspace 构建正常、workspace 测试正常、CLI E2E 正常、Tauri cargo check 正常。

支持平台

平台架构状态
macOSarm64 (Apple Silicon)主要开发环境
Windowsx64支持

外部依赖

根据你要执行的操作,可能还需要:

  • 可用的模型 API key(DeepSeek / OpenAI / Claude 或本地兼容端点)
  • Chrome 或 Chromium 兼容浏览器(用于浏览器交互和截图)
  • VS Code(可选,用于工作区任务和调试配置)

三种启动方式

命令用途
npm run debug开发调试,热重载,适合长会话和日常使用
npm run release直接启动优化后的桌面端运行文件(不打包安装包)
npm run publish生成当前平台的安装包(.dmg / .msi)并整理到 Release/

API 设置与模型配置

配置存放位置

层级路径作用
应用级~/.codepapr/codepapr.sqliteprovider、model、API key、语言、采样参数
项目级<workspace>/.CodePapr/项目状态、会话记录、规则、Agents、Skills

Provider 模式

模式说明适用场景
deepseekDeepSeek 官方 provider推荐默认,缓存优化效果最好
openaiOpenAI 兼容格式接入 OpenAI 或兼容服务
claudeClaude/Anthropic 兼容格式接入 Claude 或兼容端点

DeepSeek 接口参考地址

# OpenAI 格式
https://api.deepseek.com

# Anthropic 格式
https://api.deepseek.com/anthropic

环境变量回退顺序

内部自动化宿主与 provider 兼容层会按以下顺序读取 API key:

  1. DEEPSEEK_API_KEY
  2. OPENAI_API_KEY
  3. ANTHROPIC_API_KEY

应用级设置项

LLM 设置

  • provider — 模型提供商
  • model — 模型名称
  • baseURL — 自定义端点地址
  • API key — 认证密钥
  • temperature — 生成温度
  • maxTokens — 最大输出 tokens
  • thinkingEnabled / thinkingEffort — 思考模式

路由设置

  • fast model 开关 — 是否启用快速模型
  • fast model name — 快速模型名称(默认 deepseek-v4-flash
  • max tool rounds — 最大工具轮次(默认 500)
  • max context tokens — 最大上下文 tokens(默认 200k)
  • max conversation rounds — 最大对话轮数(默认 24)

快速模型路由

场景使用模型温度
主 Agent 对话主模型(默认 deepseek-v4-pro默认
上下文压缩快速模型(默认 deepseek-v4-flash0.1
子代理派发(重型/执行类)主模型用户配置
子代理派发(只读分析类)快速模型用户配置
提示:桌面端设置面板分为 General / LLM / 子Agent / 高级 四个 Tab。General 标签页包含语言、调试和许可证信息,子Agent 标签页可配置独立导师模型及子代理自定义提示词、Top P、嵌套深度和推理模式。

第一次使用

三步启动

  1. 准备配置:在桌面端设置中填写 API key、provider 和 model
  2. 选择入口:直接使用桌面端(当前公开产品入口只保留桌面工作台)
  3. 选择模式:Ask 负责解释和分析,Plan 负责拆解方案,Agent 负责实际执行

最短路径

npm install
npm run build
npm run debug

首次使用流程

  1. 打开设置,填写 provider、model 和 API key
  2. 选择项目文件夹
  3. 在 Ask、Plan、Agent 中选择当前任务模式
  4. 输入任务描述,让代理执行或分析
  5. 在文件树、编辑器、Git、预览面板中复核结果
自动恢复:桌面端会记住你上次打开的项目目录,并在下次启动时自动恢复该项目及其项目级聊天记录。只有当项目路径失效或你改为打开其它目录时,才会看到空工作区。

使用入口

入口适合场景
Desktop Workbench长会话、文件树、Git、预览、浏览器交互——可视化工作台

注意:仓库中同时保留 @codepapr/cli 终端入口,支持终端交互和脚本化自动化。CLI 同样内置 Explore、Scout、Mentor 三个子代理,与桌面端功能一致。

工作模式:Ask / Plan / Agent

Ask、Plan、Agent 不是不同产品,而是同一套 Runtime 的三种工作方式

Ask 分析模式

适合:解释架构、梳理模块职责、分析报错原因、先问清楚再决定是否执行。

特点:

  • 默认不改文件、不跑命令
  • 遇到时效性问题时,优先走只读时间/网页工具核实
  • 只有你明确要求基于项目核实,它才会进入只读工具链

Plan 规划模式

适合:大改动前先出执行方案、想看影响文件和验证路径、把复杂任务拆成清晰步骤。

特点:

  • 默认先给任务清单
  • 会给影响文件、执行顺序、验证方式和风险
  • 适合先规划,再切到 Agent 执行

Agent 执行模式

适合:修复 bug、实现功能、跑测试与验证、需要真正读写文件和调用工具的任务。

特点:

  • 会主动搜索项目、读写文件、跑命令、做验证
  • 会使用工作区工具、后台命令、shell、预览和浏览器能力
  • Agent 主执行循环在 Web Worker 中运行,长任务不会阻塞界面
  • workspace_run_command 等长命令会在工具调用卡片中显示运行状态和日志
  • 主执行默认最多连续运行 500 个内部工具轮次
  • 自愈补跑最多 5 轮,用失败指纹去重

如何给出有效任务

CodePapr 的实际表现很依赖任务描述质量。最有效的提示词通常包含:

  • 目标是什么
  • 改动范围在哪里
  • 参考实现在哪
  • 不能动什么
  • 验证标准是什么

推荐写法

修复 packages/@codepapr/ui 里预览关闭后后台进程未停止的问题。
先找当前预览会话和后台进程的绑定逻辑,再做最小修改。
改完后至少跑受影响范围的验证,如果没有窄验证,再说明原因。

不够好的写法

帮我修一下预览。
经验之谈:把它当作一个能执行任务的工程代理,而不是纯聊天机器人,会得到更稳定的结果。

桌面工作台

界面结构

  • 左侧:会话列表和快捷入口
  • 中间:聊天区,展示消息、工具调用、状态和执行总结
  • 右侧:文件树与代码预览
  • 辅助区域:Git 面板、后台进程、网页预览

桌面端完整能力

  • 项目文件树浏览
  • Monaco 代码预览(VS Code 引擎)
  • 多语言 LSP hover、definition 和问题标记
  • Ask / Plan / Agent 模式切换
  • 工具调用过程可视化
  • Git diff、最近提交、分支切换与安全回退
  • 后台进程管理
  • 应用内网页预览
  • 浏览器页面交互与截图
  • 项目配置入口(规则、Agents、Skills)

什么时候优先用桌面端

  • 你在做多轮修复或重构
  • 你需要一边看文件树一边让代理工作
  • 你需要 Git diff、页面预览或页面自动化
  • 你希望把会话、文件和验证收拢在一个界面里

Git 集成

  • Git 面板:展示 staged/unstaged diff、最近提交历史、分支创建/切换、本地提交、安全擦除本地改动
  • 8 个 Agent Git 工具:status、diff、history、branch_checkout、stage、commit、restore、reset
  • 自动初始化:如果当前工作区还不是 Git 仓库,面板可直接执行 git init

对话重置(Git Checkpoint)

每次 Agent 完成一轮对话后,系统自动执行 git add -A && git commit -m "codepapr:checkpoint" 创建快照。当你需要回退时:

  • Hover 任意用户消息,点击"重置到此点"
  • 系统 git reset --hard 到该消息对应的 checkpoint commit
  • 所有文件原子性恢复到对话那一刻的状态
  • 消息列表同步截断,后续对话全部移除
  • 非 Git 仓库自动降级到逐文件编辑历史撤销

工具能力详解

Agent 注册了 全面的工具集,覆盖文件操作、CodeGraph 分析、Git、预览、浏览器、Shell、LSP 等全部本地开发场景。以下是按能力分组的关键工具。

CodeGraph — 项目理解核心

CodeGraph 是统一的项目理解图,同时返回目录树、代码骨架摘要和文件/符号关系图。所有符号查找、依赖分析、影响分析均以此为基础。

工具名能力
workspace_code_graph生成统一 CodeGraph:目录树 + 符号/导入/继承关系 + 入口点排序 + 同名符号去歧义;view=overview 轻量概览,view=full 完整语义图
workspace_symbol_lookup在 CodeGraph 中查找符号(【推荐】优先使用,再定位文件和导航)
workspace_dependency_subgraph提取依赖子图,支持 incoming / outgoing / both 三种方向
workspace_entrypoints返回项目入口点文件和入口符号,快速锁定启动链路
workspace_change_impact反向分析文件或符号的影响面:受影响文件、符号和关系边
workspace_symbol_implementations查找接口或基类的实现/派生符号
workspace_smart_context【推荐】根据任务描述智能获取最相关项目上下文,自动整合 CodeGraph + 符号查找 + 依赖分析
code_graph:dead_code检测项目中未被使用的符号(类、函数、变量),返回死代码清单
code_graph:circular_deps检测文件间循环导入依赖,返回环路列表
code_graph:type_hierarchy构建类、接口、类型的继承/实现层次树
code_graph:suggest_refactors基于代码结构分析,建议可提取的方法和可独立成文件的符号
code_graph:test_impact根据变更文件列表,分析哪些现有测试会受影响
code_graph:generate_tests为项目中导出的可测试符号自动生成测试骨架
workspace_lsp_diagnostics查询 LSP 实时诊断:编译错误、未使用导入、类型不匹配、代码风格警告等。传 relativePath 查单文件,不传则返回全项目摘要

LSP 语言智能工具

基于 Language Server Protocol,直接调用语言服务。CodeGraph 优先复用 LSP documentSymbol 结果增强符号质量。

工具名能力
workspace_symbol_definition跳转到定义(无可用 LSP 时返回 unavailable)
workspace_symbol_references查找引用(无可用 LSP 时返回 unavailable)
workspace_rename_symbol语义化重命名,应用 workspace edit
workspace_organize_imports调用 organize imports 并应用编辑
workspace_apply_code_action按标题或 kind 选择代码动作并应用
workspace_fix_diagnostics优先应用当前位置最合适的 quickfix
workspace_format_files批量格式化多个文件

文件操作工具

工具名能力
workspace_list_files列出文件树,理解项目结构
workspace_read_file读取 UTF-8 文本文件,支持范围读取、窗口读取、路径后缀定位
workspace_write_file写入 UTF-8 文本文件,适合创建或替换源码文件
workspace_search_text搜索文本内容,支持 smart-case、正则,遵守 .gitignore
workspace_search_files按文件名/路径搜索,支持 smart-case、正则
workspace_apply_patch单块 SEARCH/REPLACE 补丁修改
workspace_apply_diff多文件、多块批量修改,全校验后原子写入

命令执行工具

工具名能力
workspace_run_command运行短时命令:测试、构建、lint、格式检查(命令+args 分离传参)
workspace_start_background_command后台启动长驻命令:dev server、watcher、调试器
workspace_list_background_processes列出由 CodePapr 托管的后台进程
workspace_stop_background_process停止指定后台进程
workspace_stop_all_background_processes停止所有托管后台进程

Git 操作工具(9 个)

工具名能力
workspace_git_status读取 Git 状态:分支、staged/unstaged/untracked
workspace_git_diff读取 Git diff,可选 staged 或指定 pathspecs
workspace_git_history读取最近提交历史
workspace_git_branch_checkout切换或创建分支,隔离沙盒改动
workspace_git_stage暂存改动,支持全部或指定路径
workspace_git_commit创建本地提交,可选先自动暂存
workspace_git_restore恢复工作区到干净状态,默认先建安全 stash 快照
workspace_git_reset安全回退到指定提交,先建备份分支

预览与浏览器工具

工具名能力
workspace_start_preview_session启动预览会话,绑定 dev server URL 到应用内预览
browser_open_preview在应用内预览打开 URL,可绑定后台进程
browser_navigate_preview导航预览页到新 URL
browser_reload_preview刷新预览页
browser_close_preview关闭预览,默认停掉绑定后台进程
browser_open_page打开可交互浏览页,支持后续点击/输入/抓 DOM/截图
browser_click点击元素(CSS 选择器或 xpath)
browser_input_text向输入元素填文本,可选 submit
browser_read_dom抓取 DOM 内容(html 或 text)
browser_take_screenshot截图:整页或元素,保存到项目内
browser_close_page关闭浏览页会话

Shell 会话工具

工具名能力
shell_open_session启动托管 Shell 会话,用于多步命令或交互式终端
shell_list_sessions列出当前托管 Shell 会话
shell_read_output读取会话输出尾部
shell_send_input向会话发送输入(优先传 command+args 自动转义)
shell_close_session关闭 Shell 会话

网络工具

工具名能力
web_search在线搜索:聚合 DuckDuckGo + Bing,财经查询优先行情页
web_fetch_url读取公开网页文本内容,HTML 页面提取正文
web_download_file下载网络文件到项目文件夹

诊断与项目存储

工具名能力
workspace_project_diagnostics运行项目级诊断:lint → typecheck → build(变更后自动触发,失败则进入自愈)
project_store_read读取 .CodePapr/store 下的项目级文本记录
project_store_write写入项目级文本记录,保存分析、任务摘要或长期上下文
skill_load按需加载 Skill 包的完整 Markdown 说明

实用工具

工具名能力
local_time_now读取设备本地时间、日期和时区
execute_javascript在隔离 Worker 中执行 JavaScript 函数体,适合快速计算/转换/解析
workspace_open_in_browser在系统默认浏览器中打开 URL 或项目内的 HTML 页面
questionPlan 模式下向用户提问收集需求或确认决策
工具设计原则:Agent 可同时使用所有工具,子代理按 tools 配置限制权限。长命令(如 dev server)优先使用后台启动,短命令(如测试、构建)走 run_command。代码修改优先走 Search/Replace Diff,新建文件才用 write_file。

配置文件与规则

.CodePapr/AGENTS.md — 全局项目规则

全项目规则会注入主 Agent 和所有子代理。适合写:

  • 代码风格和目录约定
  • 构建、测试、发布命令
  • 禁止改动的路径或行为
  • 项目背景和验收标准
自动注入流程:代理会按以下优先级查找规则文件并拼进稳定系统提示词:
1. .CodePapr/AGENTS.md
2. .CodePapr/rules.md
文件不存在会被自动跳过。

配置入口

桌面端项目头部的"配置"入口可以:

  • 创建/编辑 .CodePapr/AGENTS.md(不存在时生成默认模板)
  • 创建/编辑/删除自定义子代理(.CodePapr/agents/*.md
  • 创建/编辑/启用/停用/删除 Skills(.CodePapr/skills/**/SKILL.md

数据位置总览

路径作用
~/.codepapr/codepapr.sqlite应用级设置、会话和缓存统计
<workspace>/.CodePapr/project.sqlite项目级状态、聊天记录、缓存统计
<workspace>/.CodePapr/store项目级文本记录
<workspace>/.CodePapr/skills项目级技能文件
<workspace>/.CodePapr/agents项目级子代理定义
<workspace>/.CodePapr/commands项目级自定义命令

代码修改与 Diff 机制

Search/Replace Diff(YOLO Diff)

CodePapr 的自动修改不依赖标准 Git diff 行号。多处局部修改会优先生成 Search/Replace 块:

<<<<<<< SEARCH
文件里已经存在的旧代码
=======
替换后的新代码
>>>>>>> REPLACE

应用规则

  • SEARCH 必须能在目标文件中精确匹配
  • 同一个 SEARCH 如果匹配多处,会被拒绝,避免误改
  • 同一次批量修改会先校验所有文件和所有块,任意块失败则不写入任何文件
  • 换行会兼容 LF / CRLF
  • 失败信息会回到 Agent 上下文,触发重新读取原文件和自愈重试

推荐使用场景

  • 跨多个文件但每个文件只是局部修改
  • 修复测试、lint、类型错误时需要保持上下文精确
  • Agent 模式下需要程序可解析、可校验、可回滚的修改格式

不推荐使用场景

  • 新建文件或整文件重写 → 使用写文件工具
  • 只改一个很小的局部块 → 普通 patch 更直接

Skills 技能系统

什么是 Skill

Skill 是主 Agent 的可复用操作手册,适合沉淀搜索策略、排错流程、发布检查、审查清单和项目固定工作方法。它不会创建独立子代理,而是作为项目级上下文供模型按需选择。

Skill 文件格式

以目录包为标准,放在 .CodePapr/skills/**/SKILL.md,目录里可放 assets/references/scripts/ 等资源。

---
name: search
description: 使用公开网页、官方文档和社区资料进行可验证搜索
---

# 搜索 Skill

当任务需要公开资料、当前事实、第三方 API 用法或报错排查时:

- 官方文档优先,其次 GitHub issue / PR,再看社区答案。
- 精确报错使用双引号,例如 "Cannot find module"。
- 限定站点使用 site:,例如 site:developer.mozilla.org fetch abort。
- 同时带上库名、版本号、运行环境和关键错误码。

Skill 加载机制

  • 运行时只把用户启用 Skill 的 name + description 注入稳定上下文
  • 模型自行判断是否需要某个 Skill
  • 只有选定后才调用 skill_load 读取完整内容
  • 启用状态保存在 .CodePapr/project.sqlite

内置 search Skill

默认 search Skill 包含常用资料源和方法:

  • 官方文档:Microsoft Learn、OpenAI、MDN、Node.js、npm、PyPI、Rust、Tauri、Vite、React
  • 代码与问题:GitHub repositories、issues、pull requests
  • 社区资料:Stack Overflow、包管理器页面、维护者博客
  • 搜索方法:site: 限定站点、双引号精确报错、包名加版本号

Agent 与子代理

内置子代理

CodePapr 自带三个内置子代理,主 Agent 可通过 task 工具直接调度,无需额外配置:

Agent用途模型工具
explore只读代码分析:搜索项目文件、定位符号、分析依赖关系fastfile_read, code_graph, lsp, time
scout网络搜索:查找文档、API 参考、最新资料fastweb_access, open, browser, time
mentor架构/算法/调试高层指导(不写代码、不调工具)mentor*

* Mentor 默认使用主模型,可在设置中启用独立导师模型(支持独立的 API Key、Base URL 和模型选择)。

自定义子代理

.CodePapr/agents/<name>.md 中用 YAML frontmatter + 正文声明一个子代理,主代理可以把子任务委派给它。同名 Agent 会覆盖内置定义。

---
description: reviewer 负责审查当前改动、定位风险并给出最小修复建议
mode: subagent
model: fast
temperature: 0.2
tools:
  workspace_read_file: true
  workspace_search_text: true
  workspace_project_diagnostics: true
  workspace_git_status: true
  workspace_git_diff: true
  workspace_write_file: false
  workspace_run_command: false
---

你是 reviewer,一个只读代码审查子代理。

职责:
- 阅读主代理委派的目标、相关文件和当前 diff。
- 优先找真实 bug、行为回归、边界条件遗漏和缺失验证。
- 给出最小修复建议,指出应修改的文件和验证命令。

边界:
- 默认不直接改文件。
- 不重复总结无关代码风格,只报告影响正确性、可靠性或可维护性的发现。

输出格式:
1. Findings:按严重程度列出问题
2. Suggested Fix:给出最小修改方向
3. Verification:列出建议运行的验证命令

子代理配置说明

  • model:覆盖模型,可选 fast(快速模型)或具体模型名
  • temperature:温度参数,可选数字
  • tools:工具开关,缺省继承全部工具,声明空对象 {} 表示无工具
  • 文件名(不含 .md)即子代理名称,与内置 Agent 同名则覆盖
  • description 让主代理知道何时调用它
  • tools 控制读写/命令权限

子任务机制(两种方式)

方式触发说明
编排层自动拆解系统自动决策Agent 模式下,任务含执行动词且够复杂时,LLM 判断是否需要拆成 2-5 个子任务并行/串行执行
Task 工具主动委派Agent 主动调用主 Agent 推理过程中显式调用 task 工具,将子任务委派给独立子 Agent(含内置和自定义)

子代理运行模型

  • 每个子代理拥有独立 Session、ToolRegistry(按 tools 过滤)、Provider
  • 最大嵌套深度 2 层(子代理不能再委派子代理给自己)
  • 子代理最多执行 50 个内部工具轮次(主代理 500)
  • Explore、Scout 使用快速模型;Mentor 使用独立导师模型或主模型
  • 自定义 prompt 可在设置面板的 Mentor 标签页中覆盖

与 AGENTS.md 的区别

.CodePapr/AGENTS.md 是全局项目规则,所有模式、所有子代理都会继承;自定义 Agent 是专职子代理,只有主代理通过 task 工具委派子任务时才启用。前者适合写"所有任务都遵守什么",后者适合写"某一类任务交给谁做、能用哪些工具"。

自定义命令

内置命令

命令支持 --name(推荐)和 /name(兼容旧版)两种格式。

命令作用示例
/help列出所有命令及说明(本地,零 token)/help
/commands/help 的别名/commands
/review审查当前改动或指定范围/review src/App.tsx
/fix定位并修复指定问题/fix 登录按钮无响应
/test补测试或运行相关测试/test src/utils/format.ts
/explain解释文件、符号、错误或实现/explain handleSubmit 函数
/diagnose诊断报错、慢操作或异常行为/diagnose 页面加载超过 5 秒
/refactor保持行为不变的前提下整理代码/refactor src/components/Modal.tsx
/doc为变更或功能更新文档/doc 新增的退款接口

自定义命令模板

.CodePapr/commands/<name>.md 中声明可复用的提示词模板:

---
description: 审查并修复 lint
agent: code-reviewer
---
请审查 $ARGUMENTS 的改动,并修复其中的 lint 问题。
参考规则见 @.CodePapr/AGENTS.md
当前状态:!`git status -s`

模板语法

语法说明
$ARGUMENTS全部参数
$1 $2 ...第 N 个参数
@path内联文件内容
!`cmd`执行命令并嵌入输出(仅简单命令)
使用方式:在输入框输入 / 会弹出命令面板,列出所有可用命令并支持键盘 ↑↓ 选择。输入 /命令名 参数 即可调用。-- 格式兼容旧版。

系统架构

架构概览

User → Desktop Workbench → Shared Agent Runtime ↓ ┌─────────────┼──────────────┐ Provider SQLite Tool Registry Adapters (App/Project) (Workspace Tools) State ↓ ┌──────────┼──────────┐ DeepSeek OpenAI Claude

包级职责

角色主要责任
@codepapr/types共享协议层统一消息、请求、响应、工具和统计类型
@codepapr/common公共基础设施日志、哈希与通用工具
@codepapr/core运行时核心Agent、Session、ToolRegistry、缓存分区、CodeGraph、Prompt 组装
@codepapr/apiProvider 适配层RequestBuilder、CacheValidator、provider 实现
@codepapr/db持久化层SQLite 封装与 repository
@codepapr/cli内部自动化宿主组装 provider、workspace tools、工程调试入口
@codepapr/ui桌面工作台React、Zustand、Tauri、WorkerBackedAgent

桌面端 Agent 桥接

ChatPanel → agentStore.sendMessage() → WorkerBackedAgent.chat() ├─ Worker Thread: Agent.chat() → LLM └─ Main Thread: tool execution → Tauri invoke

桌面端不直接调用 core Agent,而是通过 WorkerBackedAgent 将 LLM 聊天循环卸载到 Web Worker 中,确保长任务不阻塞 UI。

技术栈总览

技术
前端 UIReact 18、TypeScript、Zustand 5、Monaco Editor、Tailwind CSS 3、Vite 8
桌面框架Tauri 2(Rust)
Rust 后端rusqlite (SQLite)、headless_chrome (浏览器)、tree-sitter (16 种语言)、LSP stdio 桥接(15 个语言族)
Agent 卸载Web Workers
测试Vitest 4

DeepSeek 缓存优化

三层 Prompt 注入

系统将 prompt 分为三层注入,按稳定度从高到低排列以最大化 DeepSeek 自动前缀缓存命中:

注入位置内容稳定性
第一层System PromptBase Identity + Rules + Mode + Workspace Path + Core Constraints跨会话复用
第二层Session BootstrapSkills Summary + CodeGraph + Custom Guidance跨轮次完全稳定
第三层Runtime User PromptMode Header + User Input + Diagnostics每轮可变

缓存命中模式

同一会话多轮工具调用: Round 1: [system][bootstrap][user] ← 全部缓存 Round 2: [system][bootstrap][user][asst_1][tool_1] ← 前缀命中 Round 3: [system][bootstrap][user][asst_1][tool_1][asst_2][tool_2] ← 前缀命中 跨会话(同项目): Session A: [system][bootstrap][user_A] → system+bootstrap 缓存复用于 Session B 跨会话(不同项目): 各有不同 workspace path → system prompt 的 base+constraints 部分仍可复用

关键不变量

  • 用户自定义提示词进入 session bootstrap 而非每轮 user prompt
  • Skills 进入 bootstrap 而非 system prefix
  • Workspace 路径只出现在 system prompt,不在 bootstrap 中重复
  • Custom guidance 只在 bootstrap 中出现一次

语言智能与 LSP

LSP 桥接架构

桌面端 LSP 采用Tauri 原生宿主 + stdio JSON-RPC 的结构,通过 src-tauri/src/lsp.rs 管理 language server 子进程、stdin 写入、stdout reader 线程和消息队列。

支持的语言族(15 种)

语言主 LSP Server类型内置
TypeScript / JS / TSX / JSXtypescript-language-serverNode.js npm
HTMLvscode-html-language-serverNode.js npm
CSS / SCSS / LESSvscode-css-language-serverNode.js npm
JSON / JSONCvscode-json-language-serverNode.js npm
YAMLyaml-language-serverNode.js npm
PythonpyrightNode.js npm
ShellScriptbash-language-serverNode.js npm
C#csharp-ls / CodePapr.CSharp.Analyzer / omnisharp.NET binary
Rustrust-analyzerNative binary
JavaEclipse JDTLS + Temurin JRE 21Java binary
C / C++clangd v22.1.6Native binary
GogoplsNative binary是(尽力)
Swiftsourcekit-lsp(macOS Xcode toolchain)系统
SQLsqlsNative binary
MarkdownmarksmanNative binary

C# LSP 优先级链

C# 的 LSP 有多层回退机制:

  1. csharp-ls(dotnet tool,优先从系统 PATH 或 ~/.dotnet/tools 查找)
  2. CodePapr.CSharp.Analyzer(内置自定义 Roslyn sidecar,支持跨文件和跨 ProjectReference 解析)
  3. omnisharp -lsp(回退)
  4. 内建正则 fallback 符号解析

管理安装(Managed LSP)

桌面端会在运行时按需托管安装缺失的 LSP:

  • Node 系(7 个):typescript-language-server、vscode-langservers-extracted(含 HTML/CSS/JSON)、yaml-language-server、pyright、bash-language-server — 通过 npm 安装,使用内置 Node.js runtime v20.12.2
  • 二进制系(6 个):clangd v22.1.6、rust-analyzer、JDTLS + Temurin JRE 21、sqls、marksman、gopls — 从官方源下载
  • C#:通过 dotnet tool install -g csharp-ls 安装,或使用内置 Roslyn sidecar
  • 可通过 CODEPAPR_DISABLE_MANAGED_LSP_DOWNLOAD=1 禁用自动托管下载

Tree-sitter 语法解析(16 种语言)

内建 tree-sitter 语法树解析,用于 CodeGraph 和 fallback 符号提取:TypeScript、JavaScript、Python、Rust、Java、Go、C++、Bash、C#、CSS、HTML、JSON、PHP、Ruby、Kotlin。

LSP 加载策略

  • 工作区启动时不会批量预热 LSP
  • 当前文件显示后才异步加载该文件的 LSP
  • 生成/修改/保存写盘后异步刷新相关文件的 diagnostics 和符号缓存
  • LSP 后端缓存全 workspace diagnostics,跨文件错误也能被检测
  • 代码区只有有问题时才显示提示,没有问题时保持干净
  • 上层 LSP 不可用时,回退到内建 tree-sitter fallback 符号解析

验证与发布

验证命令矩阵

命令范围适合场景
npm run build全 workspace 构建改完源码后确认产物可生成
npm run test全 workspace 测试日常主回归
npm run test:e2eCLI E2E改到 CLI、会话装配或 scripted provider
npm run lint静态检查提交前质量门禁
npm run audit安全审计发布前或依赖变更后
npm run smoke:agent-tools真实模型工具烟测改到工具选择、shell、浏览器交互
npm run smoke:lsp-preview多语言 LSP 烟测改到 LSP hover、definition
npm run verify最完整验证本地发布前(含 cargo check)

推荐提交前回归顺序

npm run build
npm run test
npm run test:e2e
npm run verify

桌面端发布

# 开发调试
npm run debug

# 优化后的桌面运行版本(不打包)
npm run release

# 生成安装包(.dmg / .msi)并整理到 Release/
npm run publish

发布辅助脚本

  • macOS: ./publish-codepapr.command
  • Windows: publish-codepapr.cmd

发布前检查

npm run release:prep
npm run publish:dry-run
发布包内置内容:官方桌面发布包会同时内置默认 LSP 所需的 Node.js runtime v20.12.2、7 个 Node 系语言服务器(typescript-language-server、vscode-langservers-extracted、yaml-language-server、pyright、bash-language-server)、C# Roslyn sidecar + .NET SDK、JDTLS + Temurin JRE 21、clangd v22.1.6、rust-analyzer、sqls、marksman 和 gopls。用户首次使用默认语言时不需要再额外下载这些组件。

典型工作流

1. 先理解再执行

适合第一次接手仓库或需求还不够清晰时:

  1. Ask:解释系统结构、定位模块
  2. Plan:输出任务清单和验证方案
  3. Agent:按清单实施

2. 直接修复问题

适合你已经知道目标,只是不想手动查和改:

修复 packages/@codepapr/api 里缓存统计不正确的问题。
先定位统计汇总逻辑,再做最小修改,最后跑相关测试。

3. 启动前端并在应用内预览

适合 UI 调整、页面行为验证和预览联动:

  1. 让 Agent 启动 preview session 或后台命令
  2. 在应用内预览中查看页面
  3. 如果还要点页面、填表单或截图,继续用浏览器工具

4. 保留终端上下文做连续操作

适合脚本、REPL、交互式 CLI 或多步 shell 流程:

  1. 打开 shell session
  2. 连续发送命令
  3. 按输出继续推进
  4. 完成后关闭 session

5. 复盘历史会话与成本

  • 查看 session 列表
  • 查看指定 session 的 stats(缓存命中/未命中/token 使用)
  • 对照当前模型设置判断成本是否合理

成本与模型选择

DeepSeek 模型参考

模型上下文最大输出缓存命中输入缓存未命中输入输出并发
deepseek-v4-flash1M384K0.02 元/M tokens1 元/M tokens2 元/M tokens2500
deepseek-v4-pro1M384K0.025 元/M tokens3 元/M tokens6 元/M tokens500
注意:价格会变更,最终请始终以 DeepSeek 官方价格页 为准。

在 CodePapr 里怎么选

  • 主模型默认是 deepseek-v4-pro——用于 Ask、Plan、Agent 主执行流程
  • 快速模型默认是 deepseek-v4-flash——用于上下文压缩、子任务规划、只读轻型子代理
  • 思考强度(thinkingEffort)默认为 max(最强推理),可在 LLM 设置 tab 中切换为 high

成本优化建议

  • Ask 和轻分析任务优先用更便宜模型
  • 大改动前先走 Plan,减少无效执行轮次
  • 让任务描述更具体,减少模型反复搜索和修复的轮数
  • 保持系统提示与工具边界稳定,最大化前缀缓存命中

常见问题

1. 启动后提示没有 API key

先检查桌面端设置是否已保存,以及是否设置了对应环境变量(DEEPSEEK_API_KEY / OPENAI_API_KEY / ANTHROPIC_API_KEY)。

2. 内部自动化脚本跑不起来或命令找不到

确认是否执行过 npm installnpm run build,以及当前仓库是否位于 OneDrive 路径下导致 .bin shim 异常。

3. Agent 遇到 vite、tsc、eslint、模块缺失错误

优先当成依赖未安装或本地包未构建,而不是先怀疑云同步或磁盘问题。

4. 浏览器工具不可用

通常是因为本机没有可检测到的 Chrome 或 Chromium 兼容浏览器。

5. 改完代码后测试还是旧结果

这个仓库里不少包会通过各自的 dist 入口参与测试或引用。改了源文件后,如果结果看起来没变,先重新 build 受影响包,再跑验证。

6. 修改源码后构建原则

重要:改源码 → 先 build → 再跑受影响测试 → 再跑更大范围验证。当结果看起来像"没生效"时,先怀疑 build 没补,而不是先怀疑运行时异常。

7. 如何使用本地模型

在设置中可以接入本地模型 provider(OpenAI 兼容端点),用于离线或私有部署场景。在支持的模型下,可直接向聊天框粘贴或拖入图片作为输入。

使用建议

新手:先用 Ask 理解系统 → 再用 Plan 看清楚改动范围 → 最后用 Agent 做真正执行。

老手:直接在 Agent 模式里给明确目标 → 明确影响文件和验证要求 → 用桌面端完成对话、Git、预览和浏览器联动。


CodePapr v0.1.0 · 本教程基于项目源码及文档编写 · 内容持续更新中