ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

从客户端困境到AI原生开发:DeepSeek Harness重构软件工程实践

从客户端困境到AI原生开发:DeepSeek Harness重构软件工程实践 最近一个技术决策在开发者圈子里引发了不小的讨论知名技术人池建强宣布停掉了维护两年的客户端项目并将团队的核心开发工作全面迁移至 DeepSeek Harness。这不仅仅是一个工具切换的故事它背后折射出的是 AI 原生开发范式对传统工程流程的深刻冲击。当“客户端”这个承载了无数复杂业务逻辑的庞然大物开始被一个以 AI Agent 为核心的新框架所重构时我们看到的可能不只是效率的提升而是一场关于“如何构建软件”的思维革命。很多开发者第一反应可能是DeepSeek Harness 是什么又一个 AI 编程助手实际上它远不止于此。简单来说你可以把它理解为一个“AI 驱动的全栈开发与部署平台”。它试图回答一个核心问题当大语言模型LLM能够理解需求、生成代码、调试甚至部署时传统的 IDE、构建工具、CI/CD 流水线应该如何进化池建强团队的这次迁移正是对这个问题的实践性回答——他们发现用 DeepSeek Harness 重构客户端逻辑其开发迭代速度远超传统模式并且显著降低了复杂状态管理和异步逻辑的心智负担。如果你正面临以下困境那么这篇文章值得你仔细阅读客户端开发陷入泥潭业务逻辑日益复杂状态管理混乱Bug 修复和新功能开发效率低下。对 AI 辅助编程停留在“聊天”层面仅用 Copilot 补全代码未触及工作流重构。好奇下一代开发工具的模样想了解 Beyond IDE 的 AI Native 开发环境究竟如何运作。团队正评估技术栈升级在考虑如何引入 AI 能力来提升整体工程效能。本文将带你深入剖析 DeepSeek Harness 的核心概念并以一个模拟的“客户端迁移”场景为例展示从零开始使用它进行开发、测试到部署的完整流程。我们不止步于“是什么”更会探讨“为什么有效”、“迁移中的坑”以及“它是否适合你的项目”。1. 从“客户端困境”到“AI 原生工作流”我们真正要解决什么问题在深入技术细节前我们必须先理解传统客户端开发尤其是复杂业务客户端如桌面应用、Electron 应用、复杂 SPA面临的几个经典困境状态管理的复杂性随着功能增长全局状态如 Redux、Vuex 中的 Store变得臃肿且难以维护。数据流追踪如同侦探破案一个状态的变更可能触发一连串难以预料的副作用。异步逻辑的“面条代码”网络请求、定时器、WebSocket、文件 I/O 等异步操作与 UI 状态紧密耦合。虽然有了async/await和RxJS等工具但错误处理、取消逻辑、竞态条件依然让代码变得脆弱。开发与部署的割裂开发者通常在 IDE 中编码在终端运行构建命令在浏览器或模拟器中调试再通过 CI/CD 平台部署。上下文切换频繁反馈链路长。新人上手成本高庞大的代码库、特有的项目架构和复杂的构建配置让新成员需要数周甚至数月才能有效贡献。DeepSeek Harness 的切入点正是试图用 AI Agent 作为“核心协调者”来系统性解决这些问题。它不是一个简单的代码生成器而是一个将自然语言需求、代码生成、上下文感知、实时执行与调试、以及基础设施管理统一起来的平台。它的目标是将开发者从繁琐的“翻译”将需求翻译为代码将代码翻译为可运行程序工作中解放出来更专注于业务逻辑的定义和架构设计。池建强团队停掉客户端选择全面迁移其核心判断可能在于与其用 AI 工具修补一个日益复杂的旧系统不如用 AI 原生的思维和工具重构一个更简洁、更易维护的新系统。这种迁移本质上是开发范式的迁移。2. DeepSeek Harness 核心概念拆解Agent、Skill 与 Workspace要理解 DeepSeek Harness必须厘清三个核心概念Agent智能体、Skill技能和Workspace工作空间。这与传统的“项目”、“模块”、“函数”有本质区别。2.1 Agent你的 AI 协作者而非工具在 DeepSeek Harness 中Agent 是核心执行单元。你可以把它想象成一个高度专业化、拥有特定上下文和权限的 AI 程序员。与传统 AI 助手的区别ChatGPT 或 Copilot 是通用的、无状态的对话者。而 Harness 中的 Agent 是有状态的、可定制的、目标驱动的。你可以创建一个“前端路由 Agent”它专门负责理解和修改你项目的路由配置拥有相关文件的读写权限并记住你之前的修改习惯。多 Agent 协作一个复杂任务可以由多个 Agent 协同完成。例如一个“需求分析 Agent”解析你的自然语言描述生成任务清单一个“后端 API Agent”负责生成或修改服务器接口一个“前端 UI Agent”负责生成 React/Vue 组件。它们之间可以传递上下文和结果。2.2 SkillAgent 的“武器库”Skill 是 Agent 可以调用的具体能力。一个 Agent 可以装备多个 Skill。Skill 使 Agent 从“空谈者”变为“实干家”。内置 Skill包括文件读写、终端命令执行、代码分析、Git 操作、HTTP 请求测试、数据库查询等。自定义 Skill这是 Harness 的强大之处。你可以用 Python 或 JavaScript 编写自己的 Skill封装团队内部的特定操作比如“连接公司内部用户系统”、“调用特定的微服务 API”、“生成符合团队规范的代码模板”。自定义 Skill 让 AI 能力真正融入你的技术栈和业务流程。2.3 Workspace安全可控的执行沙盒Workspace 是 Agent 和 Skill 运行的环境。它定义了文件系统访问范围Agent 能“看到”和修改哪些文件和目录。网络访问权限Agent 能否访问外部 API能访问哪些。环境变量为 Agent 提供运行所需的配置信息如数据库连接字符串、API Keys。工具链预装的语言运行时Node.js, Python、包管理器、构建工具等。Workspace 确保了 AI 操作的安全性和可复现性。你不会因为一个错误的指令让 Agent 删掉系统文件。每个开发任务都可以在独立的 Workspace 中运行互不干扰。类比理解如果把软件开发比作拍电影那么Workspace是摄影棚提供了场地、灯光和道具。Skill是各种摄影器材和特效工具摄像机、吊威亚、绿幕。Agent就是导演和各个工种摄影指导、武术指导、特效师他们懂得如何使用工具Skill在摄影棚Workspace里协作完成电影软件。3. 环境准备安装与初步配置 DeepSeek Harness在开始我们的“客户端迁移”实验之前需要先搭建 DeepSeek Harness 环境。根据官方信息和社区实践目前主要有两种使用方式桌面客户端和 CLI 工具。我们以更贴近开发的 CLI 方式为例。3.1 系统与前置要求操作系统macOS (10.15), Linux (Ubuntu 20.04, CentOS 8), Windows (WSL2 强烈推荐)。Python版本 3.8 或以上。这是运行 Harness CLI 和许多自定义 Skill 的基础。Node.js(可选但推荐)版本 16 或以上。如果你的项目是前端技术栈或需要运行前端构建 Skill则需要。Docker(可选)用于创建隔离的 Workspace 环境推荐安装。Git必备用于版本控制和代码管理。3.2 安装 DeepSeek Harness CLI目前Harness 的 CLI 工具可以通过 pip 安装。建议使用虚拟环境。# 1. 创建并激活 Python 虚拟环境 (推荐) python -m venv harness-env source harness-env/bin/activate # Linux/macOS # 对于 Windows (PowerShell): # .\harness-env\Scripts\Activate.ps1 # 2. 安装 harness-cli pip install harness-cli # 3. 验证安装 harness --version # 预期输出类似harness-cli, version 0.x.x3.3 初始化配置与认证安装后需要进行初始配置主要是设置 API 密钥用于调用 DeepSeek 的大模型和工作目录。# 1. 登录或配置 API Key # 你需要一个 DeepSeek API Key。如果没有请前往 DeepSeek 官网申请。 harness config set api_key your_deepseek_api_key_here # 2. 设置默认工作空间路径 harness config set workspace_path ~/my-harness-projects # 3. 查看当前配置 harness config list # 预期输出 # api_key: ******** # workspace_path: /Users/yourname/my-harness-projects # model: deepseek-chat (默认模型)重要安全提示请妥善保管你的 API Key不要将其提交到代码仓库。harness config命令通常会将其保存在用户主目录的配置文件中。4. 模拟迁移将一个“任务管理”客户端功能重构为 AI 驱动模块现在我们模拟一个经典场景迁移一个客户端中的“任务管理”模块。假设原模块是一个用 React Redux 构建的复杂组件包含任务列表、添加、编辑、过滤和状态同步功能。我们的目标不是一行行翻译旧代码而是用 Harness 的思维重新定义这个功能并让 Agent 协助我们实现核心部分。4.1 步骤一创建并初始化 WorkspaceWorkspace 是我们的项目沙盒。# 1. 创建一个名为 task-manager-migration 的工作空间 harness workspace create task-manager-migration # 2. 进入该工作空间 cd ~/my-harness-projects/task-manager-migration # 3. 查看工作空间状态 harness workspace info # 输出会显示工作空间路径、ID、以及挂载的目录。4.2 步骤二定义任务并创建专属 Agent我们通过一个harness_task.yaml文件来定义我们的开发任务。这个文件是 Harness 的核心它用结构化的方式描述“要做什么”。# 文件~/my-harness-projects/task-manager-migration/harness_task.yaml name: 重构任务管理前端模块 description: | 将原有的基于React/Redux的复杂任务管理模块重构为更简洁、基于状态机理念的React函数组件。 新模块应具备以下功能 1. 任务列表展示支持分页。 2. 添加新任务标题、描述、优先级。 3. 编辑现有任务。 4. 按状态待办/进行中/完成和优先级过滤。 5. 使用自定义Hook管理服务器状态同步模拟。 agents: - name: frontend-architect role: 前端架构师 model: deepseek-chat # 指定使用的模型 skills: [file_io, code_analysis, react_expert] constraints: - 只能修改或创建 src/ 目录下的文件 - 必须使用 TypeScript - 优先使用函数组件和React Hooks - 状态管理使用Zustand替代Redux以简化逻辑 - name: api-mocker role: API模拟工程师 model: deepseek-chat skills: [file_io, nodejs] constraints: - 在 server/ 目录下创建模拟API - 使用 json-server 或简单的 Express 服务器 - 提供任务数据的CRUD端点 goals: - 分析现有代码结构如果存在并提供重构方案摘要。 - 在 src/ 下创建新的任务管理组件 TaskManager.tsx。 - 创建对应的状态管理 store (useTaskStore.ts)。 - 创建模拟API服务器并确保前端能成功调用。 - 生成一份简要的重构报告说明新旧架构对比和优势。 files: - path: src/ description: 前端源代码目录 - path: server/ description: 模拟后端API目录这个 YAML 文件定义了一个清晰的任务蓝图。两个 Agent 各司其职constraints部分给出了明确的技术选型约束防止 Agent 天马行空。4.3 步骤三启动任务执行将任务描述交给 Harness CLI它会自动分配任务给定义的 Agent并开始执行。# 在工作空间根目录执行 harness task run ./harness_task.yaml执行这个命令后CLI 会与 DeepSeek 模型通信模型会根据任务描述、Agent 角色和技能生成具体的执行计划Plan然后逐步执行。你会在终端看到类似以下的输出[INFO] 开始执行任务: 重构任务管理前端模块 [INFO] 初始化 Agent: frontend-architect [INFO] Agent ‘frontend-architect‘ 正在分析目标... [INFO] 生成执行计划 1. 创建项目基础结构 (package.json, tsconfig.json) 2. 安装依赖 (react, zustand, axios, etc.) 3. 创建 Zustand store (useTaskStore.ts) 4. 创建主组件 (TaskManager.tsx) 及其子组件 5. 创建模拟API服务文件 [INFO] 开始执行步骤 1...这个过程是交互式的吗是的Harness 在执行关键步骤如安装依赖、创建重要文件前可能会在终端向你确认。你也可以配置为全自动模式。5. 核心成果AI 生成的代码与架构解析当harness task run执行完成后你的工作空间里应该已经生成了一个可运行的项目骨架。让我们查看几个关键文件理解 AI 生成的代码质量与架构思路。5.1 状态管理 Store (Zustand)Agent 根据约束选择了 Zustand 这个轻量级状态库。// 文件src/stores/useTaskStore.ts import { create } from zustand; import { Task, TaskPriority, TaskStatus } from ../types/task; interface TaskStore { tasks: Task[]; filteredTasks: Task[]; filters: { status: TaskStatus | null; priority: TaskPriority | null; search: string; }; isLoading: boolean; error: string | null; // Actions setTasks: (tasks: Task[]) void; addTask: (task: OmitTask, id | createdAt) Promisevoid; updateTask: (id: string, updates: PartialTask) Promisevoid; deleteTask: (id: string) Promisevoid; setFilter: (filter: PartialTaskStore[filters]) void; fetchTasks: () Promisevoid; } // 模拟 API 调用函数 const mockApi { fetchTasks: async (): PromiseTask[] { /* ... */ }, createTask: async (task: OmitTask, id | createdAt): PromiseTask { /* ... */ }, // ... 其他方法 }; export const useTaskStore createTaskStore((set, get) ({ tasks: [], filteredTasks: [], filters: { status: null, priority: null, search: }, isLoading: false, error: null, setTasks: (tasks) { set({ tasks }); get().applyFilters(); // 自动应用过滤 }, addTask: async (newTask) { set({ isLoading: true, error: null }); try { const createdTask await mockApi.createTask(newTask); set((state) ({ tasks: [...state.tasks, createdTask], isLoading: false })); get().applyFilters(); } catch (err) { set({ error: 添加任务失败, isLoading: false }); } }, setFilter: (newFilters) { set((state) ({ filters: { ...state.filters, ...newFilters } })); get().applyFilters(); }, applyFilters: () { const { tasks, filters } get(); let filtered [...tasks]; if (filters.status) { filtered filtered.filter(t t.status filters.status); } if (filters.priority) { filtered filtered.filter(t t.priority filters.priority); } if (filters.search) { filtered filtered.filter(t t.title.toLowerCase().includes(filters.search.toLowerCase()) || t.description.toLowerCase().includes(filters.search.toLowerCase()) ); } set({ filteredTasks: filtered }); }, fetchTasks: async () { set({ isLoading: true }); try { const tasks await mockApi.fetchTasks(); set({ tasks, isLoading: false }); get().applyFilters(); } catch (err) { set({ error: 获取任务列表失败, isLoading: false }); } }, }));代码洞察状态集中化所有任务相关的状态列表、过滤条件、加载状态、错误都集中在一个 Store 中避免了 Redux 中 action、reducer、selector 的碎片化。派生状态自动计算filteredTasks是一个派生状态通过applyFilters函数自动更新响应tasks或filters的变化。这比在组件中手动计算更清晰。异步逻辑内聚异步操作addTask,fetchTasks直接写在 Store 内部包含了加载和错误状态的处理逻辑自包含。类型安全全程使用 TypeScript 接口增强了代码可靠性。5.2 主组件 (React Function Component)主组件负责 UI 渲染和与 Store 的交互。// 文件src/components/TaskManager/TaskManager.tsx import React, { useEffect } from react; import { useTaskStore } from ../../stores/useTaskStore; import TaskList from ./TaskList; import TaskForm from ./TaskForm; import TaskFilter from ./TaskFilter; import { Button, Spin, Alert } from antd; // 假设使用 Ant Design const TaskManager: React.FC () { const { tasks, filteredTasks, isLoading, error, fetchTasks } useTaskStore(); useEffect(() { fetchTasks(); }, [fetchTasks]); if (error) { return Alert message错误 description{error} typeerror showIcon /; } return ( div classNametask-manager h1任务管理/h1 div style{{ display: flex, gap: 20px, marginBottom: 20px }} div style{{ flex: 1 }} TaskFilter / Spin spinning{isLoading} TaskList tasks{filteredTasks} / /Spin /div div style{{ width: 300px }} TaskForm / /div /div div small总任务数: {tasks.length} | 过滤后: {filteredTasks.length}/small /div /div ); }; export default TaskManager;代码洞察逻辑简洁组件主要职责是组合子组件和展示状态。业务逻辑数据获取、过滤、增删改全部下沉到 Store。关注点分离TaskList、TaskForm、TaskFilter作为子组件各自职责单一。易于测试因为逻辑在 Store 中UI 组件可以更容易地进行单元测试。5.3 模拟 API 服务器api-mockerAgent 生成了一个简单的基于 Express 的模拟服务器。// 文件server/mock-api.js const express require(express); const cors require(cors); const app express(); app.use(cors()); app.use(express.json()); let tasks [ { id: 1, title: 学习 DeepSeek Harness, description: 阅读官方文档并实践, status: in_progress, priority: high, createdAt: 2023-10-01 }, // ... 更多初始数据 ]; // GET /api/tasks app.get(/api/tasks, (req, res) { // 模拟网络延迟 setTimeout(() { res.json(tasks); }, 300); }); // POST /api/tasks app.post(/api/tasks, (req, res) { const newTask { id: task_${Date.now()}, createdAt: new Date().toISOString().split(T)[0], ...req.body, }; tasks.push(newTask); res.status(201).json(newTask); }); // PUT /api/tasks/:id app.put(/api/tasks/:id, (req, res) { const { id } req.params; const index tasks.findIndex(t t.id id); if (index -1) return res.status(404).json({ error: Task not found }); tasks[index] { ...tasks[index], ...req.body }; res.json(tasks[index]); }); const PORT 3001; app.listen(PORT, () { console.log(Mock API server running at http://localhost:${PORT}); });这个简单的服务器足以让前端在没有真实后端的情况下进行开发和测试。6. 运行与验证启动你的 AI 重构应用代码生成完毕现在让我们验证这个由 AI Agent 协作构建的应用是否能跑起来。6.1 安装依赖并启动# 1. 进入项目根目录如果不在 cd ~/my-harness-projects/task-manager-migration # 2. 安装前端依赖 (Agent 可能已生成 package.json但我们需要安装) npm install # 3. 安装后端模拟服务器依赖 cd server npm init -y npm install express cors cd .. # 4. 启动模拟 API 服务器 (在一个终端窗口) node server/mock-api.js # 输出Mock API server running at http://localhost:3001 # 5. 启动前端开发服务器 (在另一个终端窗口) # 确保在项目根目录 npm start # 如果使用 Create-React-App 模板默认会启动在 http://localhost:30006.2 功能验证打开浏览器访问http://localhost:3000。你应该能看到任务管理界面左侧是过滤器和任务列表右侧是创建任务的表单。测试过滤功能点击状态筛选如“进行中”列表应实时更新。测试添加任务在表单中输入标题、描述选择优先级点击“添加”。新任务应出现在列表中并且总任务数更新。测试异步状态在mock-api.js中调整setTimeout的延迟可以模拟网络快慢观察前端的加载状态 (Spin) 和错误处理是否正常工作。如何判断成功功能层面所有在harness_task.yaml中定义的目标列表、增删改、过滤都应可交互且运行正常。代码层面代码结构清晰遵循了约束TypeScript、函数组件、Zustand没有明显的逻辑错误或类型报错。架构层面状态管理与 UI 渲染分离异步逻辑集中处理符合现代 React 最佳实践。7. 迁移实战中的常见问题与排查思路从传统客户端迁移到 DeepSeek Harness 驱动的开发模式不会一帆风顺。以下是可能遇到的问题及解决方案。问题现象可能原因排查方式解决方案harness task run失败提示模型错误或超时1. API Key 无效或过期。2. 网络问题导致无法访问 DeepSeek API。3. 任务描述 (harness_task.yaml) 过于复杂或模糊模型无法处理。1. 运行harness config list检查 API Key 配置。2. 使用curl测试 API 连通性。3. 简化任务描述先尝试一个非常小的目标。1. 重新申请并设置正确的 API Key。2. 检查网络代理设置。3. 将大任务拆解为多个小的、连续的harness_task.yaml文件分步执行。生成的代码无法运行有语法错误或依赖缺失1. Agent 生成的代码基于过时或错误的依赖版本。2. 代码中引用了不存在的模块或文件。3. 技能 (skill) 执行环境与实际项目环境不匹配。1. 检查package.json中的依赖版本是否合理。2. 在 IDE 中打开项目查看错误提示。3. 检查 Workspace 中是否安装了必要的全局工具如node,python。1. 手动修正package.json中的依赖版本然后npm install。2. 创建缺失的文件或修正导入路径。3. 在harness_task.yaml的agents部分通过constraints明确指定版本或添加一个“安装依赖”的初始步骤。Agent 的行为不符合预期修改了不该改的文件Workspace 的文件访问权限设置过宽或 Agent 的constraints约束不够明确。查看harness_task.yaml中agents.constraints和全局files部分的定义。1. 在constraints中严格限制文件操作范围例如“只能修改src/components/TaskManager/目录下的文件”。2. 使用files部分明确列出 Agent 可见的目录隐藏无关目录。生成的代码风格与团队规范不符任务描述中未定义代码风格约束。对比生成的代码与团队的 ESLint/Prettier 配置。1. 在harness_task.yaml的constraints中加入代码风格要求如“必须遵循 Airbnb JavaScript Style Guide”“使用 2 空格缩进”。2. 更有效的方法是创建自定义的 Linting Skill让 Agent 在生成代码后自动运行 lint 检查并修正。多 Agent 协作时任务衔接出错Agent 之间的交接信息上下文不清晰或丢失。查看 Harness 的执行日志看每个 Agent 的输出和传递给下一个 Agent 的输入。1. 在goals中更精确地定义每个 Agent 的产出物。例如“frontend-architect必须生成API_INTERFACE.md文档描述组件所需的 API”。2. 使用 Harness 的“工件”Artifact功能显式地定义 Agent 间传递的数据结构。性能问题生成复杂代码速度慢任务描述过于庞大或模型需要处理的上下文太长。观察harness task run每个步骤的耗时。1.分而治之将大型重构拆分成多个独立的小任务分多次执行。2.提供更精准的上下文在files部分只提供与当前任务最相关的源代码文件而不是整个项目目录。3. 考虑使用更强大的模型如果可用或在非高峰时段运行。8. 最佳实践与工程化建议将 DeepSeek Harness 用于真实项目迁移或开发需要遵循一些最佳实践以确保效率、质量和可控性。始于小处验证流程不要一上来就迁移核心业务模块。选择一个非核心、功能边界清晰的模块如“关于我们”页面、一个工具函数集进行首次实践。目标是跑通 “定义任务 - Agent 执行 - 代码审查 - 集成” 的全流程。任务描述是一门艺术harness_task.yaml是你的“产品需求文档”。要清晰、具体、无歧义。坏描述“优化前端性能。”好描述“分析ProductList.tsx组件的渲染性能识别不必要的重渲染。使用React.memo包装子组件ProductItem并使用useCallback包装事件处理函数handleAddToCart。确保修改后功能测试通过。”强化约束与上下文充分利用constraints和files部分。提供越多的上下文如现有的 API 接口文档、数据结构定义、UI 设计稿链接Agent 生成的结果就越精准。人是最终的架构师和审查员Harness 是强大的协作者但不是替代者。开发者必须设计架构决定用什么技术栈如何拆分模块。编写高质量的任务描述这是最重要的输入。进行严格的代码审查AI 生成的代码可能存在边界情况处理不当、安全性考虑不周等问题。必须像审查人类代码一样审查 AI 代码。编写集成测试确保 AI 生成的模块能与现有系统无缝集成。建立自定义 Skill 库这是将 Harness 深度融入你团队工作流的关键。将团队内部的常见操作封装成 Skill例如deploy_to_staging_skill将代码部署到测试环境。run_e2e_tests_skill运行端到端测试套件。generate_crud_api_skill根据数据库表结构自动生成 CRUD API 代码。enforce_coding_style_skill运行 ESLint/Prettier 并自动修复。版本控制一切将harness_task.yaml、自定义的 Skill 脚本、以及 AI 生成的重要代码版本都纳入 Git 管理。这保证了工作流的可复现性也便于团队协作和问题追溯。安全第一永远不要在harness_task.yaml或提供给 Agent 的上下文中包含敏感信息如密码、私钥、生产数据库连接字符串。使用环境变量或安全的配置管理工具。严格控制 Workspace 的网络和文件系统访问权限。池建强团队停掉两年客户端全面转向 DeepSeek Harness这个决定的背后是对“AI 原生开发”将成为未来主流范式的坚定判断。它不仅仅是换了一个更智能的代码生成工具而是将开发的核心从“编写语法正确的代码”转向了“定义清晰的问题和约束”并将执行交给了高度协同的 AI Agent。对于大多数开发者和团队来说现阶段全面迁移可能为时过早但积极拥抱和试点则正当其时。你可以从自动化那些重复、繁琐、模式固定的编码任务开始例如生成数据模型、增删改查界面、单元测试、API 客户端代码等。在这个过程中你会逐渐积累如何与 AI 协作的经验如何编写有效的“任务描述”如何设计可被 AI 理解的系统架构。技术的浪潮从未停歇从汇编到高级语言从单体到微服务每一次范式转移都解放了生产力也提出了新的要求。DeepSeek Harness 所代表的 AI 原生开发或许正是下一波浪潮的起点。与其观望不如现在就开始你的第一个harness_task.yaml体验一下让 AI 作为你的协作者共同构建软件的感觉。
返回列表