MBW Blog

醉后不知天在水, 满船清梦压星河

Harness Engineering

AI Agent / Harness Engineering

Harness Engineering:从写 Prompt 到驾驭 Agent

AI Agent 的核心挑战,正在从“让模型写得更好”转向“让 Agent 在真实工程系统里稳定、可靠、不失控地工作”。

如何写出好的代码?

1. 逻辑设计

代码是否设计良好?这种设计是否适合当前系统?是否具备良好的可扩展性与可维护性?是否考虑了全局设计和兼容现有业务细节? 是否考虑边界条件和并发控制? 是否分层清晰、模块化合理、高内聚?

Unity引导实现方案

简介

游戏的引导实现一直是比较令人头疼的问题,本文将实现一种较为通用的unity引导实现方案。包括引导逻辑驱动,挖洞遮罩等。

1. 引导基本逻辑

引导基本逻辑可以划分为两个部分:引导流程和具体引导步骤

Task-自定义任务

前言

本篇会研究如何在c#里实现自定义的Task, 一般来说c#默认的Task基本能实现绝大部分的异步需求, 为什么需要自定义Task呢?

  • 性能优化: 如果你的任务是高频率的小任务,使用 ValueTask 或自定义的轻量级任务类型可以减少内存分配和 GC 压力。
  • 灵活性:你可以根据需要设计任务的行为,比如自定义错误处理、超时机制、取消支持等。
  • 并发控制:有时你需要控制任务的执行方式,比如限制最大并发数,或者为任务设置特定的优先级,这时自定义类型可能会更适合。
  • 组合和调度:在复杂的异步操作中,可能需要将多个任务组合在一起执行并管理任务的依赖关系。通过自定义任务类型,你可以更好地控制任务的执行顺序和逻辑。

1. Task Type1

任务类型的组成:

Task-异步与多线程

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
public class AsyncTest
{
    public async Task FooAsync()
    {
        Console.WriteLine("ThreadId=" + Thread.CurrentThread.ManagedThreadId);
        await Task.Delay(1000);
        Console.WriteLine("ThreadId=" + Thread.CurrentThread.ManagedThreadId);
        await Task.Delay(1000);
        Console.WriteLine("ThreadId=" + Thread.CurrentThread.ManagedThreadId);
    }
}
问题

运行上面的异步函数, 发现打印的线程id依次为: