96SEO 2026-08-14 21:58 4
做一个能自己改代码的桌面 Agent。第一个要想清楚的不是「怎么调模型」,而是谁有权力说「这次成功了」。

使用者痛点:在缺乏明确授权的程序里任何 UI 按钮都可能直接触发代码写入,导致不可追溯的错误修改。
我们参考的开源 CLI里有这么一段:
// src/sdk.ts:-// SDK 模式下工具调用自动批准
还有子 Agent 在消息总线缺失时的处理:
// src/tools/task.ts:-// bus 不可用 → fail-open。继续执行
这两处单独看都有理由:SDK 是给程序调的,没人能点确认;bus 挂了不该让整个流程崩。但合起来的含义是:「没人批准」和「批准了」在代码里走同一条方法。
使用者痛点:同一条代码方法既处理授权也处理业务逻辑,使得审计、拒绝和追责几乎不可能实现。
flowchart TB R P M C S K X R -->|意图| P P -->|校验后的 IPC| M M -->|私有 MessagePort| C C --> S C --> X M --> K
图里那个存储节点要表达的是边界证据存储由 Core 独占,Renderer 和 Main 都碰不到。至于用什么存,原型阶段是 JSONL + 未加密目录。这条也在 README 的「还没做的」里 —— 别把图当成已实现清单。注意凭据是另一回事:那条走 M --> K,用 Electron safeStorage 落在钥匙串里。
| 进程 | 有什么 | 明确没有什么 |
|---|---|---|
| Renderer | 展示、收集输入 Node、文件程序、shell、密钥、Run 终态 | 业务授权、方法解析、Task / Run / Approval 权威、Agent Loop、仓库写权限 |
| Preload | 白名单方法、shape 校验 通用 invoke、业务授权、方法解析 | Task / Run / Approval 权威、Agent Loop、工具执行、Mutation 长期明文凭据、任意宿主方法、监听端口 |
| Main | 原生目录选择 钥匙串、监督 Core Task / Run / Approval 权威、Agent Loop、工具执行、Mutation 长期明文凭据等 | Main 不持有业务权威 |
使用者痛点:Main 进程如果拥有全部能力。会成为“全能黑盒”,难以定位谁真正负责审批,从而导致安全审计失效。
关键是不暴露通用能力
const bridge: RepoPilotBridge = {
protocolVersion: PROTOCOL_VERSION。request {
return ipcRenderer.invoke(IPC_CHANNEL.request,{
protocolVersion: PROTOCOL_VERSION,method,payload,});},subscribe {
/* 只读事件订阅 */
},};contextBridge.exposeInMainWorld;
注意这里没有** `invoke`**。Renderer 连 channel 名字都拿不到 ——它只能调用 `request`,而 `'run.cancel'` 必须在 Main 的白名单里:
const ALLOWED_METHODS = new Set();
*不在集合里的一律拒绝*。这不是「多一层校验」,而是让「注册一个新的特权通道」必须改 Main 源码。不能由插件或运行时动态完成。
使用者痛点:If a developer can inject arbitrary IPC channels at runtime,hidden privileged pathways appear。making security reviews impossible.
The **第 一步** 「Main 不先写」很容易被忽略。 一旦 Main 为了「快一点」先在本地记一笔。就出现了两个真相源,crash 后它们会不一致。
使用者痛点:Main 若自行写入状态。会产生“双写”风险,一旦进程异常重启就会出现数据冲突或丢失。
Core 启动完发 `ready`,Main 转发给 Renderer。但窗口创建是异步的 ——如果 Core 比 window 先就绪。这条推送就发给了空气,UI 永远停在「Core 启动中」。
// 示例修复
mainWindow.webContents.on => {
pushToRenderer({
说到type。'core.status',status: coreReady?'READY' : core?'RESTARTING' : 'DOWN',detail: coreReady?'Agent Core 已就绪' : 'Agent Core 尚未就绪',});}),
User Pain Point:If an event is emitted before any subscriber exists,UI will hang indefinitely without feedback.
child.on => {
coreReady = false;// 所有在途请求必须收到明确失败,不能永远挂着
for {
pending.delete;resolve({
从ok来看,false,error: {
至于code,'CORE_UNAILABLE'。message: 'Agent Core 已退出',detail: `exit code ${code}`
},});}
if setTimeout;}),
`if ` 必须保留,否则退出应用时会疯狂重启 Core。
User Pain Point:The UI shows endless loading spinners because unresolved promises are never rejected when child process crashes.
const { execFileSync } = require;
This passes type‑checking because `@types/node` declares `require`,but Electron‑vite builds main process as ESM . At runtime `require` simply does not exist.
User Pain Point:A seemingly harmless import causes runtime crashes that are only discovered after launching app.
"启动没报错" 不算证据。我加了一个自检模式,走**完全相同**的 Main → Core 通道:
REPOPILOT_SELFTEST= npx electron .
Core 就绪,用时 106ms
PASS doctor.run → {"checks":
PASS 未知方法被拒绝 → {"code":"BAD_REQUEST"。"message":"未知方法: run.deleteEverything"}
PASS renderer 已挂载
ALL PASS
The last line is crucial – it runs a tiny piece of JS in page and confirms that `` really has children and that `window.repopilot` truly exists. “Compilation passed” and “React mounted” are two different things.
User Pain Point:If you only rely on build success,you might miss integration bugs that only surface at runtime.
invoke 就没有意外多出来的特权通道。怎么说呢,
.
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback