KairoPilot 是面向本地工作流的桌面 AI 工作台,基于 Electron、React 和 TypeScript。项目与任务是工作组织单元,无需创建或切换智能体。
- 侧栏按项目及独立会话组织任务;每组最近 5 条,其余折叠。会话单行,删除按钮之外的操作放入右键菜单。
- 任务统一查询,分别保存消息、草稿、附件、引用、成果、归档和未读状态。
- 输入框直接选择当前任务的模型和执行策略。新任务继承工作台默认值;修改默认值不改写已创建任务。
- 执行策略为仅对话、只读分析、审批后执行、可信自动化;实际能力同时受全局限制和当前目录授权约束。
- 主任务串行执行。A 执行期间可以查看 B、编辑草稿、回看成果或把补充要求加入任务队列,正常完成后依次处理。
- 用户消息靠右、助手消息靠左;输入框保持紧凑。草稿后台保存,正常退出前等待保存或处理恢复,不在输入框常驻展示保存状态。
- 关闭窗口仍隐藏到托盘,保留当前对话与运行。真正退出应用时先保存草稿,再阻止新执行、取消运行和待审批操作;排队消息保留为待人工继续。异常结束后启动同样清理运行、暂停和待审批状态,旧批准/续跑请求不能执行。每次进程启动进入空白新对话,历史记录和旧草稿保留供手动查看;窗口刷新及托盘恢复不另建对话。
- 文件、成果、Diff 与验证在右侧按需打开,执行过程在聊天内展开。齿轮进入独立设置页,集中通用、模型、执行权限、规则记忆、技能、插件与使用统计。
顶栏按侧栏与对话区分开:侧栏展开按钮位于左侧区域右端,文件夹图标、会话标题与操作菜单位于对话区左上;输入栏左侧为附件和执行策略,右侧为当前模型及发送。下拉选择使用应用内主题弹层,支持键盘操作、模型搜索和上下避让;日期筛选使用居中日历。系统目录选择仍使用操作系统文件对话框。
工作台与设置页共用底部名称及齿轮入口;项目内会话行不额外缩进,名称与项目名称对齐。设置页采用分组卡片与左右对齐的设置行。“执行记录”入口已移除,当前任务的执行详情、审批和底层审计记录保留。使用统计展示累计 Tokens、单日峰值、活跃天数、执行轮次、输入/输出用量,以及最近 365 天活动、近 7/30 天模型趋势和模型排行;使用统计不再展示运行与设备详情,也不轮询设备资源与本地模型状态;任务执行过程仍在聊天中按需展开查看。
新会话首次消息被接收后,默认名称会自动替换为首条用户消息的单行摘要(最多 80 个字符),侧栏超出宽度显示省略号;后续追问不改名,手动重命名优先保留。已有默认名称也按首条用户消息显示,无需模型生成标题。
用量沿用现有可见对话与辅助请求的已报告值,包含只读委派和记忆提取,排除工具调用中间消息及本地预算预留值。累计指标与模型排行聚合全量历史,热力图和趋势按本机时区分日;活跃天数与执行轮次按 Run 创建日期统计。热力图日期和模型排行可进入对应明细,不提供未采集的最长聊天时长或费用估算。
- 在设置中配置模型服务,并选择工作台默认模型和权限上限。
- 创建项目并明确选择目录,或直接新建独立会话。新独立任务使用
~/.kairopilot/workbench/tasks/<sessionId>。 - 在输入框选择本任务的模型与执行策略,输入目标,可添加附件或文件引用。“+”菜单可选择任务模板和工作方式。
- 发送按钮在当前任务运行时切换为方块,点击停止,结束后恢复箭头;输入补充要求后可点击“加入队列”或按 Enter 排队。审批仍在原输入框位置处理,等待授权时也可停止整个运行;停止动作统一在发送按钮位置。审批通过记录中的 run/session 定位,不依赖正在查看的任务。
- 在文件与成果面板检查交付物,或在聊天内展开当前轮次执行过程;用量明细可按项目/任务/模型/时间筛选。
每轮执行以对话流展示真实中途说明与简短工具活动,按发生顺序排列。发送位置在执行中切换为方块停止,过程区不提供暂停按钮。单个工具调用的输入、结果及失败更新在同一条活动上,详情点击后读取;重试产生独立活动。完成后过程整体收起为“用时”,最终答复独立显示。
输入框支持技能补全:在行首输入 / 列出已安装且允许用户调用的技能,继续输入可匹配名称、ID 和描述。列表最多显示五项,其余可滚动查看;↑↓ 切换时自动滚动到选中项,支持鼠标、Enter/Tab 选择,Esc 关闭。选中后以蓝色图标和技能名称独立显示,可继续输入正文、添加其他技能,点击移除按钮或在正文开头按 Backspace 移除最后一个技能。草稿和发送仍使用 /技能ID 显式调用文本,恢复草稿时重建技能标记;选择本身不执行技能。工作台技能覆盖同 ID 的公共技能,允许手动调用的 manual-only 技能也可选。
发送后的用户消息同样显示蓝色技能标记和独立正文。新消息在现有会话元数据中保存技能 ID 与名称,重开任务、技能改名或卸载后仍保留发送时的标记;原始调用文本不变。旧消息按当前已安装技能重建展示,不迁移历史数据。标记表示用户指定的技能,不代表执行成功。
审批卡片默认“允许本次”,右侧下拉固定提供“允许本次”和“本会话始终允许”,不随操作增加菜单项或范围说明。主进程根据当前动作自动归类:联网搜索按搜索能力复用,换关键词、数量和语言不重复询问;网页读取按工具和站点(协议、主机、端口)复用;文件读取、列目录及搜索共享授权目录内的读取许可,写入与编辑共享该目录内的修改许可,读取与修改分别授权。Shell 对可识别的 Node/Python 版本及帮助查询、Git 查询操作复用,同类安全参数变化不重新询问;Git 仅识别 status、ls-files、log 的限定选项,以及显式关闭外部 diff/textconv 的 diff 查询。切换目录、命令配置、写出选项或执行代码等不继承查询授权。此分类用于减少确认,不能替代操作系统沙箱。删除、敏感文件修改、带自定义请求头/请求体的 HTTP 请求及无法可靠归类的工具或脚本只提供单次批准。授权仅用于当前对话,可跨轮次和应用重启保留;旧参数匹配授权不会自动扩大为新授权,需要重新批准。任务/全局权限变更或项目授权撤销后清除,删除对话时一并清理。每次调用仍执行目录、命令、网络与重定向权限检查;会话授权不能覆盖明确禁止规则。授权决定及来源保存在审批记录中,后续工具调用继续写入审计。
展示记录直接保存到 conversation_items,用 run_id、消息 ID、工具调用 ID 与轮内顺序关联。实时显示与历史回放共用这些记录,不根据时间、用户输入或内部步骤重建。现有数据库仅新增展示记录表,不转换、覆盖或删除旧历史;新流程只展示直接保存的轮次记录。聊天展示、分页、流式更新和滚动统一使用新会话记录;过程区不展示运行详情、内部步骤、规则指纹或上下文预算。工具活动显示具体动作与目标,展开仅查看该次调用输出。内部运行步骤继续服务执行恢复与审计。审批、安全检查与模型上下文沿用各自的数据。
目录在任务创建后固定。需要换目录时创建新任务或使用项目菜单“从新目录继续”,不搬动项目文件。模型或端点失效时需重新选择模型,不会静默切换服务。
输入框“+ → 任务模板与工作方式”提供通用任务、代码修复、文档整理和资料分析模板,也可另存自定义模板。模板仅含工作方法、输出要求和验收标准,不包含模型、目录或权限。任务保存应用时的模板快照;修改模板不会改写已有任务,需要时显式重新应用新版本。
选择“先规划后执行”后,本轮模型可以定向读取、列目录、搜索已授权项目及读取任务附件,再生成计划;不自动扫描项目。规划阶段不提供写入、Shell、网络、插件、技能或委派工具,模型伪造其他调用也会被主进程拒绝。仅对话任务不能借规划模式获得项目读取权限。任务原有读取审批继续生效,批准只读调查后仍停留在规划阶段。
计划按目标、调查依据、修改范围、执行步骤、交付物、验收标准和待确认事项组织。成功的文件读取或搜索保存参数和结果指纹,最多 32 项;单次规划文件读取限 256 KiB,较大文件应定向搜索。审阅页可展开查看调查路径,确认前重查这些依据;文件内容或搜索结果变化时须重新规划。
计划卡片支持审阅、修改、拒绝和“确认并开始执行”。确认请求绑定任务、计划 ID 和修订号;模型、权限、规则、任务消息或引用元数据变化会使原确认失效。旧计划被后续计划或配置变更替代后无法执行。确认计划仍需遵守原有目录限制和工具审批,不会授予额外权限。
计划与修订记录持久化到 SQLite。重启保留未确认的完整计划,不自动执行;中断的规划需取消暂停运行后重新生成,不能用恢复或重试接口将规划检查点转成执行。规划和实施分别记录 Run 与用量,现有统计可查询;不提供缺乏价格依据的费用估算。
运行时发送补充要求会加入当前任务的待处理队列,支持编辑、删除和上下移动,每任务最多 20 条、每条正文最多 30,000 字符,保留附件与文件引用。排队时原子保存消息并清理对应版本草稿;正式接收时原子记录消息与运行归属,避免重复消费。切换正在查看的会话不会改变队列归属,全部主任务仍共用串行执行限制。
本轮正常完成后自动按顺序续办;失败、暂停、取消、待确认计划、设置或引用变化会保留消息等待处理。待确认计划需先审阅或拒绝;“检查并继续”会展示消息及当前模型、执行策略,再按当前配置重新验证。重启保留未发送消息并暂停队列,需要显式继续;已接收的消息不重放。队列仅代表后续回合,不向正在执行的模型中途注入指令。
成果面板默认聚焦本轮交付物、文件变更、实际检查记录与待核对事项,历史记录折叠;本轮未记录检查时不会沿用历史通过状态。文件可以预览、查看本轮变更边界,并引用回输入框继续修改,引用不会自行执行新任务。模板验收标准保存在运行快照,后续修改模板不会改变旧回合展示。运行完成、命令成功和人工验收是分别判断的状态。
产物与验证仍以应用记录的文件工具操作及显式验证命令为依据;外部程序或 Shell 生成但未记录的文件可从文件面板查看,不自动冒充已登记交付物。当前预览支持沿用已有文本、Markdown、图片与 HTML 能力,未新增 Office/PDF 渲染服务。
项目菜单“项目自动记忆”或设置中的“规则与记忆”提供独立管理入口。每个项目默认关闭,开启后自动整理完成的实施回合中的用户原文,不扫描项目文件,不从规划回合或失败、取消的运行中提取。后台请求使用来源任务配置的模型;模型绑定/端点变化时停止该次提取,不静默换模型。可能产生额外 Token 用量。
记忆保留来源任务、运行、用户原文摘录和修订号;相同内容去重,同主题的相反内容作为待确认候选。候选不进入召回;手动采用后替代旧记录。支持更正、忘记、撤销,忘记的主题不会因后续重复原文重新自动生成。关闭后停止后续提取和召回,已有条目仍可管理。
每项目最多 200 条有效记忆与待确认冲突,遗忘和被替代的历史单独保留,不占此容量。满额时在调用模型前跳过,管理页显示原因;遗忘部分条目后,后续回合可继续整理。撤销遗忘会保留原来的冲突状态;若期间已有同主题新版本,也恢复为待确认冲突。旧记录未保存遗忘前状态时,恢复后保守地要求确认。
新回合只按相关性选取当前项目的少量有效记忆,独立会话和其他项目无法召回这些条目。每轮运行及待确认计划固定所用记忆快照;后续新记忆不改变已审阅计划,正式规则和工具审批继续校验。更正或忘记不会回溯改写既有对话、计划和执行快照。自动记忆是可能过期的背景资料,不能提升权限,也不会改写项目规则或全局偏好。
召回结合主题键、关键词和有限的中英文同义词,如“上线 / 发布 / deploy”;最多六条、3200 字符,仍是本地规则匹配,不代表任意语义理解。提取记录按项目筛选后取最近 100 条,失败、停止或跳过的提取可在管理页显式重试;重试保留来源模型、运行上下文和累计用量,不自动重放已完成的任务。
输入框“+ → 任务模板与工作方式 → 子任务委派”提供关闭、自动按需、仅明确要求三种方式,默认仅明确要求。手动方式可用“请委派……”“请帮我委派……”“请用两个子智能体……”“并行调查……”等直接指令;否定、引用示例与术语解释不作为授权。自动方式由主任务判断是否值得拆分。小改动和紧密依赖的工作应留在主对话。
首版子任务只提供文件读取、受限搜索和网页读取/检索,执行范围与审批限制继承父任务;没有写文件、Shell、技能、插件或再次委派能力。最多两个并行子任务,每个父运行最多四项,每项有时间、模型轮次和输出上限。网页工具仍受原有网络白名单及审批约束;需要额外审批的调查由主任务处理。
协作状态在当前任务内折叠展示,支持查看、停止和重试失败/停止的调查。父任务暂停或取消会停止其子任务;重试需先结束父运行并重新校验原目录、模型、规则和项目授权。重试结果在协作面板查看,不自动重新运行已结束的父任务。重启将中断子任务标为失败,不静默重跑或重复计费。
调查详情展示尝试次数、模型及工具调用过程、脱敏参数和结果摘录,保留最近 80 条过程记录,每条参数或结果摘要最多 1500 字符。任务选项可设置每轮额外调用预算,默认 64,000 Tokens、每项最多额外重试两次;子任务、项目记忆提取及其重试共用父运行额度,主对话用量另计。额度在运行开始时固定,修改设置只影响新运行。辅助请求关闭 SDK 隐式重试,限流或失败后需显式重试。
并行请求先预留本地估算额度,再按提供商报告用量结算;响应缺失用量或进程中断时保守占用预留额度,统计中只记录实际报告值。预算用于阻止后续超额调用,不是金额上限或提供商计费保证。记忆和协作面板在工作时约 1.2 秒刷新,空闲时逐步退避至 30 秒,窗口隐藏时为 60 秒;手动操作及返回窗口会立即刷新。
额外模型调用的提供商报告用量单独保存,并计入所属任务的全局用量查询;不把后台请求伪装成聊天消息,不估算缺失用量或费用。数据库直接使用当前 schema 7,不执行旧格式迁移。全局任务执行仍串行,只读子任务在父任务内部并行,不包含多人并行修改文件或自动化。
工作台使用 AGENTS.md 作为唯一日常指令格式。全局文件默认位于 ~/.kairopilot/AGENTS.md,可在“设置 → 规则与记忆”编辑;项目菜单编辑项目目录的指令文件。已有 AGENTS.override.md 非空时优先生效,设置页显示并编辑该生效文件。全局规则入口与内部任务存储目录分开,不创建额外人格文件,也不按历史 Agent 加载不同规则。
每轮执行从 Git 根目录沿路径读取到任务执行目录,每个目录选择一个非空指令文件,先全局后项目,更具体的指导用于处理作用域内的冲突;无 Git 根目录时只检查任务执行目录。不遍历整个仓库,不自动展开导入指令,也不根据待编辑文件动态扫描子目录。仅支持普通文件,符号链接指令文件会明确拒绝。合并正文最多 32 KiB,超限报错,不静默丢弃批准要求。
应用内置执行与安全要求、用户本轮明确要求、AGENTS.md、技能方法、记忆资料分别处理。权限仍由运行时校验,指令文件不能自行授予访问、Shell、网络或发布权限。自动记忆、用户手动记忆及历史摘要独立保留,不自动写入 AGENTS.md。规则来源、作用域和内容指纹保存在内部运行记录中;规则变化会使旧计划确认失效,中途变化要求新建运行。规则编辑使用设置入口,普通文件工具不能读写受保护的指令文件。
应用直接使用当前工作台格式,不读取旧人格文件、旧工作区、旧规则差异稿或旧资源清单,也不执行数据转换。全局规则只位于数据根目录 AGENTS.md;项目规则来自授权项目的 AGENTS.md。独立任务目录为 workbench/tasks/<sessionId>。
工具授权在原输入框位置显示,不打开全局弹窗。授权绑定任务、运行和审批记录,切换页面不会批准其他任务。拒绝或停止后待授权操作不执行;输入草稿保留。
技能页默认用双列列表展示已安装技能,窄窗口自动切为单列;可按名称、描述或 ID 搜索。点击技能查看完整正文、来源与版本,在详情中进行回滚或发起卸载确认。顶部“添加”进入原有技能导入流程,齿轮进入市场来源配置;技能市场和安装审核继续使用现有流程。
插件页复用技能的紧凑列表,支持搜索并在详情中查看权限、风险及工具声明,操作启停、更新、回滚或卸载;添加仍进入 ZIP 导入审核,齿轮打开插件来源配置,内置能力禁止卸载。工作台各滚动区域统一在滚动时显示滚动条,停止约 0.9 秒后隐藏,拖动时保持可见。内容能放下时不预留滚动条槽位;模型列表仅在条目实际超出可用高度时滚动。
每个用户运行重新选择技能与插件工具。技能初始仅提供名称、描述和调用策略目录;明确的 $skill-id、行首 /skill-id 或“使用 + 完整名称”可以预加载,普通名称/关键词重叠不触发本地强制选择。其他任务由模型按目标、输出和技能描述决定是否调用 load_skill,也可以不使用技能;目录被省略的部分可通过 list_available_skills 查询或分页。加载后的完整技能正文放入独立上下文层,工具结果只返回加载状态和资源目录,避免重复正文。引用与脚本仍按需读取,并执行原有权限和审批。
显式预加载失败会终止本轮并显示技能及错误原因。技能加载成功只表示指令已进入上下文;工具失败、空结果或结果不相关不自动终止任务。系统提示要求模型在原目标、技能约束和已有授权内有限重试或换方法,并在切换前说明原因;额外权限仍走原有审批,禁止绕过拒绝、必需步骤或“仅使用该技能”的要求。最终答复应区分失败环节与替代完成的结果,并说明实际来源和未解决限制。这些恢复与说明要求由模型遵循,实际效果仍需用真实任务评估。
支持 agents/openai.yaml 中块形式的 policy.allow_implicit_invocation 布尔值;false 禁止模型隐式加载,显式用户调用仍可使用。原 frontmatter 的 disable-model-invocation 等更严格限制继续生效。这里只解析该策略,不支持完整 YAML、工具依赖自动安装或任意标签;不支持的策略语法使技能不进入索引。策略进入内容指纹,资源/脚本调用前重新校验已加载技能版本。技能选择的模型判断质量仍需用实际任务评估。
初始化不再加载全部插件代码或参数定义。search_tools 在已启用、当前作用域和权限允许的插件清单中检索,最多加载 5 个匹配工具的定义;下一轮模型请求使用新工具列表。插件工具名称加入稳定命名空间,避免覆盖内置或其他插件工具。检索只加载定义,动作调用仍单独经过权限和审批;每次动作还会核对停用、注册版本与磁盘内容。检查点保存发现结果,恢复时重新加载和校验。这里使用兼容现有 Chat Completions 提供商的本地函数工具,并未切换到 OpenAI Responses 原生 tool_search 或自动安装插件。
主对话每次请求统一核算消息、工具调用参数、工具定义、图片预留、输出空间与安全余量。辅助委派和记忆请求也在发出前经过同一容量检查,累计额外用量预算仍独立执行。在模型配置中可为每个模型填写提供商说明的上下文 Token 上限;未填写时使用本地 65,536 上限并明确标记容量未知。输出默认最多 4,096 Token,小窗口按比例预留,实际请求携带输出限制。
不引入 tokenizer 依赖:文本和工具定义按 UTF-8 字节保守估计,每张图片额外预留 8,192;这些是本地容量策略,不能保证所有模型的真实上下文或账单上限。统计仍只使用提供商报告值。估计消息/工具占用、输出预留和安全余量保存在内部上下文记录中。
系统与 AGENTS.md 指令、已加载技能全文、待批准操作、当前用户输入及最近工具交换完整保留。若必要部分放不下,在发出请求前明确失败;不再静默截断技能末尾的批准条件。旧历史按最近优先、工具调用与结果成组取舍;过长工具输出附缩短提示,原始记录保持不变。历史、附件、审计和用量记录独立保存。
- 支持接入本地与云端模型
- 当前内置支持 OpenAI 兼容接口与常见提供商配置,包括:
- OpenAI
- Ollama
- DeepSeek
- Kimi
- 智谱
- 通义千问
- 自定义 OpenAI-Compatible Base URL
- 支持模型列表拉取、模型配置保存与任务选择
- 文件系统工具:读取、写入、删除文件,列出目录内容;edit_file 按字面值替换文本。授权范围内的 grep 支持目录或单文件搜索,默认逐行独立匹配;multiline 模式对全文跨行匹配(包括换行通配),按原始行号返回命中行并去重,count 统计命中行数。保留逐文件权限检查,以及大小写、类型、glob 和数量限制。
- Shell 工具:在受控命令白名单内执行命令
- System 工具:读取系统基础信息与运行状态
- Web 工具:网页搜索与页面抓取
kairopilot://协议:用于在安全根目录内展示本地文件资源,例如图像产物
- 技能统一在工作台管理,支持公共与工作台作用域
- 支持从工作区
skills/目录扫描技能定义 - Agent Skills 支持
SKILL.mdfrontmatter 中的version、allowed-tools、when_to_use、arguments、user-invocable、disable-model-invocation、context - 明确用户调用可预加载技能;其他任务由模型按目录描述选择
load_skill,不按关键词强制预激活 load_skill支持参数化技能正文渲染,read_skill_resource会复用当前技能参数上下文run_skill_script仅允许访问已加载技能的scripts/目录,并复用 Shell 白名单、超时与缓冲区策略- 插件加载前执行 manifest 校验;插件 ID 限制为以字母或数字开头、最长 160 字符的安全文件名(其余字符仅允许字母、数字、点、下划线和连字符),不接受路径分隔符。安装路径必须位于插件目录内,确认安装时重新核对目标路径。
- 插件 capability 可声明
requiredPermissions,运行时会与当前任务权限交叉校验,超出权限的插件工具不会注册 - 插件工具执行具备超时、代码体积、返回值序列化与输出大小限制,并要求 manifest 已声明的工具名称匹配;worker 日志与最终结果分开处理,打印日志不改变任务结果或延长超时。
- 当前已具备插件管理与技能展示能力,插件商店接口仍在持续建设中
- 支持 Provider 流式输出,运行中可增量更新助手消息,并与暂停 / 取消链路保持一致
- 文件系统访问采用允许路径白名单策略
- Shell 执行采用命令白名单策略,推荐配置不会默认放开删除、系统打开或网络请求类命令
- 网络访问支持域名白名单;空白名单默认阻断外部访问,需显式填写域名、URL 前缀或
*。网页工具每次重定向前重新校验目标,最多五次跳转;禁止 HTTPS 降级和写请求跨源跳转,跨源 GET/HEAD 不携带原凭据。取消运行也会中止正在进行的网页请求。 - 工具注册时会绑定权限 guard,工具即使绕过常规编排入口直接执行,也会重新校验文件、Shell 与网络边界
- 高风险工具操作支持对话输入区内 Human-in-the-Loop 确认
- 保护性禁止直接访问敏感目录与核心 Prompt 文件
- 预加载层 IPC 使用显式白名单,减少渲染进程暴露面
- 审计日志记录工具调用、参数、结果、错误与策略标签
- 插件安装与卸载会写入审计日志,便于追踪扩展能力变更
- 插件 manifest 声明工具、能力与风险等级,安装前可查看能力边界
- 插件声明权限超出 任务当前策略时会被阻断,并记录
plugin_permission_denied审计事件 - 模型 Provider 与 Tavily 的 API Key 使用 Electron
safeStorage加密落盘;常规配置备份与渲染进程配置接口只保留“已保存密钥”状态,不回传明文密钥 - 使用统计支持查看:
- 工作台活动统计
- 提示 / 补全 / 总 Tokens
- 按项目、任务、模型和时间筛选的用量明细
- 配置保存采用临时文件原子替换,并保留最近配置备份以降低写入中断风险
配置版本为 4.2.0,工作台配置版本为 2,数据库 schema 为 7。新数据目录直接创建完整当前结构;再次启动不会执行 ALTER、导入旧记录或搬动目录。项目授权直接记录在 project_authorizations,不建立 Agent 项目绑定表。
现有目录只有格式版本相符时才使用;不支持的配置或数据库会报错,原文件不自动转换、清空或删除。需要新数据环境时应明确选择新的数据目录,本次代码清理不会处理真实用户文件。默认运行数据目录为 ~/.kairopilot。
首版采用 GitHub Releases 手动下载和安装,不检查、下载或自动安装更新。构建默认禁止自动发布,产物名包含版本、系统和架构,避免覆盖不同架构的文件。下载方式、验收要求与已知限制见 封板与分发说明。
剪贴板内容建议默认关闭,可在“设置 → 常规”开启。仅应用聚焦时本地检测,不自动发送模型;点击建议只加入输入框,仍需用户发送。错误上报默认不启用;只有运行环境配置 KAIROPILOT_SENTRY_DSN 才启用,事件仅包含版本、环境、时间和脱敏错误计数,不上传异常文字、堆栈、面包屑、请求或用户字段。
- Node.js 24+
- npm 10+
- Ollama(可选,用于本地模型)
npm installnpm run devnpm run lintnpm run smokenpm run verifyCI 会在 push、pull request 与手动触发时运行同一条验证命令,并覆盖 Node.js 24。
npm run build说明:
- 开发环境基于 Vite + Electron
- 发布前建议先运行
npm run verify,统一覆盖 ESLint、TypeScript、Vitest 与产品冒烟检查 - 生产构建会先执行 TypeScript 编译与前后端打包,再调用 electron-builder 产出安装包
- 当前构建配置已覆盖 macOS、Windows 与 Linux 打包目标
npm run smoke:native在临时数据目录运行真实 Electron main/preload/renderer,直接创建当前数据库,使用本机模型协议夹具。覆盖新安装、初始化并发、跨任务查看、审批定位、权限撤销、取消与重启;不发送真实项目资料,不调用付费模型。证据目录由命令输出。
src/
├── main/
│ ├── core/
│ │ ├── agent/ # Agent 运行时
│ │ ├── llm/ # 模型适配与 Prompt 组装
│ │ ├── plugins/ # 插件与技能加载
│ │ ├── security/ # 权限与安全策略
│ │ └── tools/ # 文件、命令、系统、Web 工具
│ ├── bridge/ipc/ # 主进程 IPC 处理
│ ├── services/ # 启动与协议服务
│ └── store/ # SQLite / 配置 / 审计存储
├── preload/ # contextBridge 安全桥接
└── renderer/
├── components/ # UI 组件
├── hooks/ # 领域逻辑与状态 Hook
├── i18n/ # 中英文文案
└── App.tsx
- Electron 45.2.1
- React 18
- Vite 7.3.7
- TypeScript 5
- better-sqlite3
- OpenAI SDK
- Zod
统一工作台 W0–W3 已交付。W4 已接入任务模板、计划确认、项目自动记忆和按需只读委派;并发写入协调和自动化仍在后续范围。Shell 的固定 cwd 与命令白名单是应用限制,不代表操作系统级沙箱。
-
主分支:
main—— 存放正式发布版本,每个提交对应一个版本。 -
开发分支:
develop—— 集成所有功能,准备下一次发布。 -
功能分支:
feature/xxx—— 从develop切出,完成后合并回develop。 -
发布分支:
release/v1.0—— 从develop切出,用于发布前的测试和修复,完成后合并到main和develop。 -
热修复分支:
hotfix/v1.0.1—— 从main切出,修复线上紧急问题,完成后合并到main和develop。
社区普遍遵循以下命名规则,让分支一看就懂:
| 分支类型 | 命名格式 | 示例 |
|---|---|---|
| 主分支 | main 或 master |
main |
| 开发分支 | develop |
develop |
| 功能分支 | feature/<描述> |
feature/user-login |
| 修复分支 | bugfix/<描述> |
bugfix/fix-header-layout |
| 热修复分支 | hotfix/<描述> |
hotfix/critical-security |
| 发布分支 | release/<版本号> |
release/v1.2.0 |
| 文档/实验分支 | docs/<描述> 或 exp/<描述> |
docs/api-guide |
命名要点:
-
全部使用小写字母,单词间用连字符
-分隔(避免空格、下划线、驼峰)。 -
描述应简洁明了,例如
feature/add-dark-mode比feature/dark更清晰。 -
如果与 issue 关联,可包含编号,如
bugfix/issue-123
MIT