
Craft Agents v0.4.2 版本解析GitHub Copilot 接入、Mermaid 引擎重构与原生数据表格能力【免费下载链接】craft-agents-oss项目地址: https://gitcode.com/GitHub_Trending/cr/craft-agents-oss本篇技术指南以 v0.4.2 版本发布说明 为骨架围绕 Craft Agents 桌面客户端的四大核心更新展开GitHub Copilot 作为替代 LLM 提供商的接入、完全重构的 Mermaid 图表引擎、原生数据表格datatable / spreadsheet与transform_data工具、以及 Codex 集成的稳定性修复。读者读完本文将掌握这些新特性的使用方法、底层实现机制与适用场景并能在实际会话中直接复现其中的代码与配置示例。版本概览v0.4.2 是 Craft Agents 早期演进中的一个重要里程碑定位是功能大增、稳定性修复密集的版本。版本摘要明确给出三大主题GitHub Copilot Support新增 GitHub Copilot 作为替代 LLM 提供商支持完整的 OAuth 认证Mermaid Overhaul彻底重绘图表引擎用 ELK 布局替换 DagreData Tables原生数据表格与电子表格渲染配套transform_data数据变换工具。除此之外该版本还包含连接与提供商改进、Codex 集成修复、一批 Bug 修复、依赖升级以及构建与基础设施调整。仓库中同一目录下的其他发布说明如 0.4.1.md、0.4.3.md可以用于对照观察功能演进脉络而本文聚焦 0.4.2 本身。GitHub Copilot 支持新的替代 LLM 提供商核心更新内容v0.4.2 将 GitHub Copilot 引入为替代 LLM 提供商alternative provider这意味着它并非取代默认模型而是在默认提供商的配置之上为用户提供一个可切换的新选项。版本说明中列出的关键改动包括完整的 OAuth 认证通过标准的 OAuth 流程接入 Copilot而非简单填入 API Key新的连接配置界面用于配置提供商以及在多个提供商之间切换提供商专属图标为 Claude、Copilot、OpenAI、Ollama、OpenRouter 和 Vercel 提供各自的图标切换提供商时的会话锁警告防止在切换过程中造成会话上下文或凭证的混淆。源码佐证从源码结构看Copilot 的接入沿用了仓库统一的提供商抽象体系认证层OAuth 相关实现集中在 packages/shared/src/auth 目录其中 oauth.ts 定义了通用 OAuth 流程oauth.test.ts 与 oauth.e2e.test.ts 覆盖了对应的单元与端到端测试说明 v0.4.2 的 full OAuth authentication 并不是孤立实现而是构建在既有认证基础设施之上连接配置逻辑桌面端连接建立流程位于 connection-setup-logic.ts其测试 connection-setup-logic.test.ts 与 Electron 侧的 connection-setup-logic.test.ts 均覆盖了多提供商场景提供商图标渲染层的 provider-icons.ts 维护各提供商图标映射对应版本说明中 Provider-specific icons for Claude, Copilot, OpenAI, Ollama, OpenRouter, and Vercel 的描述提供商选择界面ProviderSelectStep.tsx 是引导流程中的提供商选择步骤用户可以在此完成提供商之间的切换。使用建议在 v0.4.2 及后续版本中接入 Copilot 的路径是打开连接/配置界面或引导流程的 ProviderSelectStep→ 选择 Copilot → 完成 OAuth 授权 → 回到会话。注意切换提供商时界面会给出会话锁警告建议在切换前结束当前会话或确认无未保存的上下文避免凭证与模型上下文错配。连接与提供商改进默认模型升级与认证增强版本说明的 Connection Provider Improvements 小节围绕连接体验做了四个层面的增强精炼 LLM 连接配置界面与新增 Copilot 连接界面属于同一轮 UI 调整默认模型更新为 Claude Opus 4.6模型解析与映射逻辑在 packages/shared/src/config/models.ts 中维护。当前源码中可以看到模型别名映射表例如claude-opus-4-6被归一化映射到claude-opus-4-8见 models.ts这印证了仓库在持续演进默认/推荐 Opus 系列模型相关解析逻辑的测试位于 models.test.ts 与 models-pi.test.tsOAuth token 刷新改进与 packages/shared/src/auth 目录下的 token 管理如 oauth-flow-store.ts相关联确保长时间会话中凭证不过期导致中断API 源的多请求头认证支持面向自定义 API 源Source的能力增强在 packages/shared/src/sources 目录的认证相关代码中有对应支撑。原生数据表格datatable、spreadsheet 与 transform_data三种表格形态的取舍v0.4.2 引入了两个新的 Markdown 块级组件配合既有的 Markdown 表格Craft Agents 现在提供三种展示结构化数据的方式。仓库内的>{ title: Recent Transactions, columns: [ { key: date, label: Date, type: date }, { key: amount, label: Amount, type: currency }, { key: status, label: Status, type: badge } ], rows: [ { date: 2025-01-15, amount: 250.00, status: Completed } ] }仅 rows 格式{ rows: [ { date: 2025-01-15, amount: 250.00, status: Completed } ] }裸数组格式[ { date: 2025-01-15, amount: 250.00, status: Completed } ]合并语义使用src时Markdown 块内内联的columns与title优先于文件中的同名值——这样可以在块里定义列类型同时从文件读取行数据。引用输出文件transform_data成功后会返回输出文件的绝对路径直接把这个路径作为src值填入块中不要手工拼接相对路径datatable { src: /absolute/path/returned/by/transform_data, title: Recent Transactions, columns: [ { key: date, label: Date, type: date }, { key: amount, label: Amount, type: currency }, { key: status, label: Status, type: badge } ] } 完整工作流示例以 展示上月全部 Stripe 交易 为例Step 1通过 MCP 工具调用 Stripe API得到大型 JSON 响应保存为long_responses/stripe_result.txtStep 2调用transform_data抽取并结构化数据transform_data({ language: python3, script: import json, sys\nwith open(sys.argv[1]) as f:\n data json.load(f)\nrows [{\n id: t[id],\n date: t[created],\n amount: t[amount] / 100,\n status: t[status].title(),\n customer: t.get(customer_email, N/A)\n} for t in data.get(data, data.get(transactions, []))]\nwith open(sys.argv[-1], w) as f:\n json.dump({rows: rows}, f), inputFiles: [long_responses/stripe_result.txt], outputFile: transactions.json })Step 3使用transform_data返回的绝对路径输出 datatable 块示例见上文 引用输出文件 小节列改为id/date/amount/status/customer。常用模式速查JSON API 响应 → DatatablePythonimport json, sys with open(sys.argv[1]) as f: data json.load(f) # 兼容常见 API 响应结构 items data.get(data, data.get(items, data.get(results, data))) if not isinstance(items, list): items [items] rows [{ id: item[id], name: item.get(name, ), created: item.get(created_at, ), } for item in items] with open(sys.argv[-1], w) as f: json.dump({rows: rows}, f)CSV/TSV → SpreadsheetPythonimport csv, json, sys with open(sys.argv[1]) as f: reader csv.DictReader(f) rows list(reader) # 从 CSV 表头自动推断列 columns [{key: k, label: k.replace(_, ).title(), type: text} for k in rows[0].keys()] if rows else [] with open(sys.argv[-1], w) as f: json.dump({columns: columns, rows: rows}, f)多源连接Joinsys.argv[1:-1]传多个输入文件例如同时读取long_responses/users.txt与long_responses/orders.txt按user_id关联后输出orders-with-customers.json。过滤与聚合在脚本内用defaultdict按类别分组求和先聚合再展示避免把原始明细行全部灌入上下文。Node.js 替代写法无 Python 环境时可用process.argv[2]读输入、process.argv.at(-1)写输出配合fs.readFileSync/fs.writeFileSync。安全与约束源码级验证transform_data的实现位于 transform-data.ts源码明确体现了版本说明所称的 processing large datasets via scripts 背后的安全边界隔离子进程脚本在子进程中运行环境变量剥离了 API Key 等敏感信息createScriptRuntimeEnv见 sandbox-env.ts30 秒超时源码中定义了TRANSFORM_DATA_TIMEOUT_MS 30_000transform-data.ts超时脚本会被终止路径沙箱outputFile必须落在会话data/目录内isPathWithinDirectoryForCreation输入文件必须位于会话目录或 skills 目录内isPathWithinDirectory../之类的路径穿越会被拦截transform-data.ts底层实现见 path-security.ts禁止网络访问脚本应保持本地计算数据获取应通过 MCP 工具完成被屏蔽的环境变量ANTHROPIC_API_KEY、CLAUDE_CODE_OAUTH_TOKEN、AWS_*、GITHUB_TOKEN、OPENAI_API_KEY、GOOGLE_API_KEY、STRIPE_SECRET_KEY、NPM_TOKEN。渲染层实现UI 侧Markdown.tsx 在 Markdown 解析时识别datatable与spreadsheet代码块并分别包装为MarkdownDatatableBlock与MarkdownSpreadsheetBlock见 Markdown.tsx这是 v0.4.2 native data tables 的渲染落地。Mermaid 图表引擎重构Dagre 到 ELK更新要点v0.4.2 对图表渲染引擎做了整体替换用ELKEclipse Layout Kernel布局引擎替换 Dagre图表布局质量更好改进边的路由、捆绑与逼近方向edge routing、bundling、approach directions全图类型支持多行标签新的形状系统圆形、菱形、六边形、体育场形stadium、状态形等ASCII 渲染改进支持ANSI 颜色更好的子图方向覆盖subgraph direction override与断连图处理。依赖层面版本说明明确 Added elkjs for diagram layouts仓库的锁文件 bun.lock 中同样可以检索到elkjs相关条目证实该依赖确实随本版本引入。语法参考结合仓库指南仓库内的 mermaid.md 是一份完整的 Mermaid 语法参考以下是 v0.4.2 引擎重构后依然生效的核心语法与最佳实践。流程图节点形状语法形状A[text]矩形A(text)圆角矩形A{text}菱形决策A([text])体育场形A((text))圆形A[[text]]子程序A[(text)]圆柱数据库A{{text}}六边形Atext]非对称旗形A[/text\]梯形A[\text/]梯形反向A(((text)))双圆箭头类型语法样式--实线箭头---实线无箭头-.-虚线箭头-.-虚线粗箭头粗线--双向实线-.-双向虚线双向粗线带标签的边与子图子图方向覆盖对应版本说明 subgraph direction overrides 改进状态图、时序图、类图、ER 图与 XY 图表完整语法均可参照 mermaid.md其中状态图使用stateDiagram-v2头支持状态描述、复合状态与direction LR覆盖时序图使用sequenceDiagram头支持-/--/-)等消息类型、激活/-、Note、loop/alt/opt/par块类图使用classDiagram头支持可见性修饰符/-/#/~、关系符号与基数ER 图使用erDiagram头支持PK/FK/UK属性标记与基数记法XY 图使用xychart-beta或xychart-beta horizontal支持title、x-axis、y-axis、bar、line指令如最佳实践优先横向布局流程图用graph LR而非graph TD状态图加direction LR只有组织架构图、继承关系等层级性场景才用TD/BT一图一主题复杂图表拆分为多个独立图使用描述性标签节点文本应说明语义如A[User submits form]复杂图表先用mermaid_validate校验会话工具 mermaid-validate.ts 提供mermaid_validate({ code: ... })语法校验避免输出错误图表标签含特殊字符时加引号A[Label with (parentheses)]常见错误排查流程图必须带方向graph TD而不是裸graph、括号必须闭合、箭头语法要对照上表。Codex 集成修复打包与运行稳定性v0.4.2 在 Codex 集成上做了一批修复集中在打包后的运行环境修复打包应用中 Codex 二进制路径解析开发环境下路径可用但打包后相对路径会失效本版本修复了该解析逻辑Windows 上把 codex.exe 移到 extraResources避免运行时出现 EBUSY 错误文件占用冲突Codex 会话的技能内容注入不再依赖原生发现机制native discovery改由显式注入技能内容OAuth 会话的静默失败与标题生成修复构建验证在 SDK 打包阶段检查 Codex 二进制是否存在。这类修复与 Electron 打包流程electron-builder.yml以及构建后处理脚本 afterPack.cjs 密切相关——extraResources正是 electron-builder 用于携带运行时资源的标准机制。Bug 修复、依赖升级与构建基础设施Bug 修复清单解读修复项意义OAuth 浏览器启动 ENOENT改用shell.openExternal解决部分平台上 OAuth 授权页无法拉起的问题当前 Electron 主进程多处使用shell.openExternal如 window-manager.ts、platform.ts印证了这一修复方向工作区切换时主题不更新修复了主题状态未跟随工作区刷新的问题主题解析与迁移逻辑见 packages/shared/src/colors 与 theme.tsDock 角标与窗口图标路径在打包应用中的问题与 electron-builder.yml 的图标资源配置相关Sentry 只上报 console 错误而非警告降低告警噪声Sentry 初始化位于渲染层入口 main.tsx 附近PowerShell 安装脚本改用 YAML 清单安装脚本 install-app.ps1 的清单格式调整渲染进程在浏览器包中误导入 Node.js fs 模块修复 webui 等浏览器环境的打包兼容问题相关 shim 见 webui/src/shims会话持久化中的元数据竞态条件会话存储层packages/shared/src/sessions/storage.ts的写入顺序问题修复大响应处理整合统一大响应处理路径相关基础设施见 large-response.ts依赖升级依赖版本变化说明claude-agent-sdk^0.2.37Agent SDK 升级同时 Unified title generation through agent SDK infrastructure 说明标题生成统一走 SDK 通道electron-updater^6.8.0自动更新能力升级elkjs新增图表布局引擎配合 Mermaid 重构仓库当前 packages/shared/package.json 中的anthropic-ai/claude-agent-sdk版本已演进到0.3.197可见 SDK 依赖随版本持续升级。构建与基础设施调整默认工作区源配置提供默认的 workspace sources 配置降低新用户上手成本统一标题生成通过 agent SDK 基础设施完成移除重复实现移除废弃的 PlanningAdvisor清理旧规划组件移除 headless 模式整合进主 Agent 流程减少双路径维护成本。总结v0.4.2 是 Craft Agents 在多提供商 富展示 引擎自研方向上迈出的一大步GitHub Copilot 的 OAuth 接入让用户多了一个可切换的 LLM 选择datatable/spreadsheet/transform_data构成了从大型数据到可交互表格的完整链路安全边界由 transform-data.ts 的路径沙箱与子进程隔离保障Mermaid 引擎从 Dagre 迁移到 ELK 提升了图表布局质量配合 mermaid.md 的语法参考可直接上手而 Codex 集成与各类 Bug 修复则夯实了打包与运行稳定性。对照 0.4.3.md 及后续发布说明可以看到这些能力如何在后继版本中持续演进。对于想要深入验证本文内容的读者建议从以下入口入手数据表格完整指南data-tables.mdMermaid 语法参考mermaid.mdtransform_data 实现transform-data.ts表格渲染组件Markdown.tsx提供商连接逻辑connection-setup-logic.ts模型映射models.ts【免费下载链接】craft-agents-oss项目地址: https://gitcode.com/GitHub_Trending/cr/craft-agents-oss创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考