Sr. Content Developer at Microsoft, working remotely in PA, TechBash conference organizer, former Microsoft MVP, Husband, Dad and Geek.
160035 stories
·
33 followers

The Unbelievable Evolution of AI with DeepSeek’s New System

1 Share

In the fascinating world of AI, a recent development by DeepSeek seems to have transcended the boundaries of possibility. Imagine a computer program so advanced that it writes itself, creating solutions on-the-fly for problems that, until now, seemed unsolvable. This is precisely what DeepSeek’s new system offers — a self-extending AI.

DeepSeek’s latest innovation is a free and open-source harness that empowers AI to perform tasks specifically tailored to your needs. While harnesses in the AI realm are not a new concept, with predecessors like Spy and Open Code, what sets this apart is its flexibility and customizability.

Based on content from Two Minute Papers

Reimagining the User Interface

One of the standout features of DeepSeek’s harness is the user interface, which can be entirely rewritten to meet specific requirements. The promotional materials might humorously describe this as putting a “snake in the harness,” a quirky phrase that adds to the charm of this high-tech innovation. This UI flexibility allows users to mold the interface in ways previously unimagined.

Customized agents and self-rewriting capabilities

The customizability extends beyond the user interface to the agents within the harness. For instance, a code review mode can be initiated on-the-spot to scrutinize a codebase, identify issues, and prioritize them by severity. But, perhaps more astonishing is the system’s ability to rewrite itself. Users can request features that don’t exist and watch them materialize, whether it’s a mode for verifying a document’s claims against research papers or setting up a local AI lab to monitor performance metrics like GPU memory usage and token speed.

The Brilliance of Lean Efficiency

Despite its expansive functionalities, DeepSeek’s harness remains remarkably lean and efficient, offering savings in both time and resources. This efficiency makes it an attractive solution for streamlining various processes, including video production, where features like storyboards and shot-planning agents can be effortlessly implemented.

Under the Hood: A Technical Insight

For those curious about the mechanics behind this marvel, an 88-page scholarly paper delves into its intricate design. The system maintains stability amidst continuous changes by incorporating cleanup instructions with every modification, ensuring that all alterations can be reversed safely — akin to a coat check system that issues a ticket (instructions) with each action, enabling seamless reversion when needed.

A Revolutionary Leap in AI Development

This breakthrough positions AI at the cusp of an evolutionary leap, where the operating systems surrounding these AIs are no longer fixed. Instead, they dynamically self-adapt to meet specific user needs efficiently and effectively. The capability for AIs to self-adjust and grow in intelligence has already sparked the development of numerous plugins, contributed by an enthusiastic community of fellow scholars.

Consider running this cutting-edge technology locally on your machine or through a service like Lambda, which offers powerful Nvidia GPUs to facilitate rapid AI experimentation and model training. With such advancements, AI development is not just about keeping pace; it’s about pioneering toward the future, pushing the limits of what we once thought possible.

If you’re as excited as we are about these advancements, don’t forget to subscribe for more updates. With Lambda, replicating AI research or experimenting with your own ideas is swiftly becoming a reality, transforming the way we think about and interact with AI systems.

Read the whole story
alvinashcraft
just a second ago
reply
Pennsylvania, USA
Share this story
Delete

Copilot Code Reviews for Azure Repos (public preview)

1 Share

Today, we’re announcing the public preview of GitHub Copilot Code Review for Azure Repos, making the feature available to all Azure DevOps customers using the service. There’s no longer a need to sign up for early access. Customers can now enable Copilot Code Review for their Azure Repos repositories and start using it.

With the public preview, we’re also introducing several improvements we’ve made over the past couple of months based on what we’ve learned during the technical preview.

Before getting started, be sure to read the official documentation for details on how Copilot Code Review works, how to enable it, and what to expect around usage and billing.

Let’s take a look at what’s new.

Onboarding improvements

We’ve made it easier to control where GitHub Copilot Code Review is enabled, with options at the organization, project, and repository levels.

At the organization level, you can enable Copilot Code Review for all repositories across all projects.

blog onboarding 1 image

You can also delegate that decision to project administrators, allowing them to enable Copilot Code Review for all repositories within their project.

For organizations that want more granular control, Copilot Code Review can also be enabled or disabled at the individual repository level.

Support for Managed DevOps Pools

Copilot Code Review uses Azure Pipelines to orchestrate code reviews. By default, these reviews run using Microsoft-hosted agents. However, not every organization uses the default Azure Pipelines agent pool.

Organizations using Managed DevOps Pools can now configure Copilot Code Review to use their managed pool instead. Simply select the desired pool at the organization level, and all Copilot code reviews across the organization will run using that pool.

Self-hosted agents are not currently supported.

Custom instructions

Every team has its own expectations for what good code looks like. With custom instructions, you can define the standards and practices that matter to your organization and have Copilot take them into account when reviewing pull requests.

Instructions can be applied across an entire organization or project, configured for a specific repository, or targeted to specific paths within a repository.

blog custom instructions 1 image

The result is code review feedback that is better aligned with how your teams build software, while helping apply important standards more consistently across repositories and projects.

To learn more about configuring custom instructions for Copilot Code Review, see the Microsoft Learn documentation.

Automatic code reviews

Automatically run a Copilot Code Review when a pull request is created by configuring branch policies. This ensures the code is reviewed without requiring developers to manually request a Copilot review for each pull request.

You can configure the policy for a single repository or apply it to all repositories within a project.

blog auto ccr image

Automatic code reviews also support draft pull requests, allowing engineers to get feedback from Copilot earlier in process.

Smarter billing and cost visibility

Copilot Code Review usage is billed through your linked Azure subscription and shows up as its own meter in Azure Cost Management. Previously, those charges could only be viewed at the organization level, which made it difficult to tell which teams were driving the spend.

Charges now include Azure DevOps project tags, so you can filter or group cost analysis by project and attribute usage back to the teams generating it. Because these are standard Azure tags, they work anywhere tags are supported in Cost Management, including cost analysis views, exports, and budgets.

You can create a budget alert filtered to the Copilot Code Review meter and scoped to a specific project tag, then get an email when actual or forecasted spend crosses a threshold you set.

screenshot of billing in azure portal

View logs (coming soon)

If a code review does fail, we will post a link to the logs on the pull request. This will allow you to dig into details of what failed and why.

blog failed code review 1 image

Level of review (coming soon)

To align with GitHub’s recent announcement, Copilot Code Review for Azure DevOps will also support Lite and Balanced review levels, giving teams more control over how thoroughly Copilot reviews a pull request.

Different changes call for different levels of attention. A small bug fix or documentation update may benefit from a quicker, more focused review, while larger changes involving complex logic, security considerations, or multiple services may warrant a more comprehensive review.

blog level of review 2 image

With configurable review levels, teams can choose the approach that best fits the scope and complexity of the changes being reviewed.

Rollout Expectations

Copilot Code Review will roll out gradually across regions, so when it becomes available for your organization will depend on where your organization is hosted.

The rollout can take 2 to 3 weeks (maybe longer) to reach all organizations. If you manage multiple organizations, you may see Copilot Code Review become available in one before it appears in another.

We appreciate your patience as we complete the rollout.

The post Copilot Code Reviews for Azure Repos (public preview) appeared first on Azure DevOps Blog.

Read the whole story
alvinashcraft
1 minute ago
reply
Pennsylvania, USA
Share this story
Delete

Negative gaps, min/max sizing, and much more: What’s new in stacks?

1 Share
Four overlapping circular avatar illustrations in a horizontal stack labelled “Avatar stack,” with on-canvas controls showing a “Last on Top” layering order option and a “-16” gap value, and a cursor labelled “Sofie.”

When we introduced stacks, we called it a rethink of how layout works in Sketch. With our Florence release, we’re building on that foundation with a set of updates that make stacks more flexible and useful in more scenarios.

None of these updates are as big a leap as stacks itself was. But add them together, and you’ve got a much more capable layout tool. Here’s everything you can do with stacks in Florence.

Overlap items with negative gaps

First up, gap values can now go below zero. This was one of the most popular stacks requests by far, and it’s essential for things like overlapping card designs.

Negative gaps also work on the cross axis when you set your stack to wrap. This opens up some neat effects for grids and tiled layouts.

There’s no limit on how negative a gap can go, since that gives you the most freedom to set up a stack exactly how you want it. If you push it far enough, items can wrap around themselves and spill outside the stack’s bounds. This is intentional, and if you’ve gone that far, you probably know what you’re doing.

Choose how items overlap

By default, the first item in the layer list appears above the ones below it in a stack, but now that negative gaps let items overlap, it’s time to make layer order something you can easily change.

Open the new stack settings panel (via the gear next to the Stack heading the Inspector) and choose between First on top (the default, and how stacks has always worked) or Last on top, which puts whichever item appears last in the layer list at the front.

This only changes how layers stack visually on the canvas — it doesn’t touch their order in the layer list. Items you set to ignore the stack’s layout are also affected by it.

Give stack items relative sizing

You can now give an item inside a stack a relative size, making it even easier to build complex layouts that scale predictably.

Unlike relative sizing outside of stacks, you set this as a percentage, not an absolute value. Stack items with a relative size will fill out remaining space in the stack (the stack’s overall size minus any fixed-size items), relative to their percentage size.

As an example, if you have a 100-point-wide horizontal stack with one 50-point fixed item and two 50%-wide items, those two items will each end up 25 points wide — 50% of the 50 points remaining once the fixed item has taken its share.

If you drag a relative layer from a non-stack into a stack, it will keep its relative sizing. We automatically give it a percentage based on the previous size of the layer and the size of the stack. Likewise, when you drag a relative layer out of a stack, it will retain its size from within the stack.

Set min/max sizes for stacks and stack items

You can now give stacks and their items a minimum and maximum size per axis. You’ll find the new toggle for this next to the sizing options in the Inspector and you’ll only be able to enable it if at least one axis has a non-fixed size.

If you turn off min/max sizing, we’ll clear any values you’ve entered — but if you switch to a sizing mode that doesn’t support it, your values will stick around, just hidden, and reappear if you switch back. We only support absolute min/max values, not percentages.

One more detail: when a max size constrains an item along the stack’s cross axis, you can use the alignment controls at the top of the Inspector to decide how that item aligns within the extra space. If you don’t set one, it falls back to the stack’s own cross-axis alignment.

Choose if stack layouts include borders

Up until now, we haven’t included borders that extend beyond a layer’s bounds (outside or center, specifically) in a stack’s layout calculations. That meant adjusting a stack’s layout settings every time you adjust an item’s borders.

Now, we give you the option to take those borders into consideration. You’ll find this option in the new stack settings panel via the gear next to the Stack heading the Inspector.

It’s worth knowing that the size fields in the Inspector still reflect the size of the stack item itself, not the border box now affecting layout. There’s one exception to this — relative sizes — where the percentage includes borders, which we think feels more intuitive.

Work with clearer Canvas overlays

We’ve tweaked the stacks overlays on the canvas to reduce visual noise while still giving you all the information you need.

The fills that indicated padding and gaps are gone, and handles are smaller and less intrusive. We’ve also introduced a consistent color for stack-specific overlays, so it’s always clear what they’re affecting.

Also, as you drag a padding or gap handle, it now stays pinned right under your cursor, rather than disappearing completely.

Reorder items with ease

Reordering items in a stack — especially across rows or columns — used to require dragging to a fairly specific, not-always-obvious spot to get the result you wanted, and that spot didn’t necessarily line up with where your cursor was. That wasn’t good enough — so we fixed it.

Rearranging items — even across rows and columns, and even with negative gaps in play — is now much more predictable. You simply drag that layer into the position you want it. That’s it. The same improvement applies when you’re drawing a new layer inside a stack.

Have items fill space more predictably

Layers that you set to fill the available space now correctly get an equal share of that space, unless a min or max size constrains it otherwise. This fixes a couple of annoying issues, including text layers in the same row that you set to fill not ending up the same width.

If you’re updating an existing document: stacks affected by the old behaviour won’t automatically update when you open your document in Florence. If something looks off, try nudging an affected stack (by increasing or decreasing a size value, for example) to trigger a relayout.


Beyond these larger updates, we’ve squashed plenty of stacks-related bugs, refined how we handle stacks in the Inspector, exposed all the new stack properties in our web inspector, and made sure our Figma importer — fig2Sketch — supports all of the new features.

Everything we’ve covered here is available right now in our Florence release — you can open Sketch and follow the prompts to update, or download the 2026.3 build directly.

As always, we’d love to hear what you think — you can talk stacks (or any other Sketch feature) with us over in the Discord.

Read the whole story
alvinashcraft
1 minute ago
reply
Pennsylvania, USA
Share this story
Delete

Introducing agent and workflow channels

1 Share

An agent or workflow is only useful when people and other systems can reach it through the interfaces and channels they already use. That might be an OpenAI Responses client, Telegram, another agent using A2A, or an MCP client. As a builder of agents and workflow, you need control over which channels you expose it to and how it behaves. To help, we’re introducing channels in Microsoft Agent Framework for agents and workflows in Python.

Choose the channels your application needs

The new packages are organized around a small shared hosting core and a set of channel-specific integrations:

  • agent-framework-hosting provides shared agent, workflow, and session-state helpers.
  • agent-framework-hosting-responses converts OpenAI Responses requests and results.
  • agent-framework-hosting-telegram converts Telegram updates and outbound operations.
  • agent-framework-hosting-a2a connects agents and workflows to native A2A SDK types.
  • agent-framework-hosting-mcp exposes agents and workflows as native MCP tools.

Each channel package focuses on its protocol boundary. Your application keeps using its chosen web framework or native SDK and owns routing, authentication, authorization, storage, background processing, and deployment.

This means you can add one channel or several without placing the agent or workflow inside a new application runtime, or having to maintain an agent multiple times and with multiple SDKs.

architecture diagram microsoft agent framework channels

One shared target and state model

The agent-framework-hosting package provides the common foundation used with each channel. AgentState holds an agent target together with its session store, while WorkflowState resolves a workflow target from an instance, factory, or builder:

from agent_framework_hosting import AgentState, WorkflowState

agent_state = AgentState(agent)
workflow_state = WorkflowState(workflow_builder, cache_target=False)

Both state types give channel handlers and adapters one consistent way to resolve their target. The target can be created directly or supplied through synchronous or asynchronous setup code, and it can be cached or recreated for each request.

For agents, AgentState maps application-selected session IDs to AgentSession values. It deliberately does not decide how a Responses caller, Telegram user, A2A context, or MCP client becomes a session ID. You build that mapping in your application; resolve_session_id below is illustrative application code, not a function supplied by Agent Framework:

# Application-defined identity and session mapping.
session_id = resolve_session_id(authenticated_user, channel_identity)
session = await agent_state.get_or_create_session(session_id)

This mapping is what enables one conversation to continue across channels. If the same authenticated user resolves to the same canonical session ID from Responses and Telegram, both channels load and update the same AgentSession. If they resolve to different IDs, their histories remain separate. Your application owns the identity linking, authorization, and concurrency controls that make shared sessions safe.

Workflows use the same target-resolution model through WorkflowState, while checkpoint storage and the mapping from channel continuation IDs to checkpoints remain application-owned. Across both target types, the shared hosting layer keeps the agent or workflow definition independent from the channels around it; the channel packages handle their protocol-specific input and output.

OpenAI Responses

The Responses helpers convert an incoming request into Agent Framework run values and convert the completed or streaming result back into the Responses format:

from agent_framework_hosting_responses import (
    create_response_id,
    responses_from_run,
    responses_session_id,
    responses_to_run,
)

run = responses_to_run(body)
session_id, is_conversation = responses_session_id(body)
response_id = create_response_id()
session = await agent_state.get_or_create_session(session_id or response_id)
result = await (await agent_state.get_target()).run(
    run["messages"],
    session=session,
    options=run["options"],
)
await agent_state.set_session(session_id if is_conversation else response_id, session)
response = responses_from_run(
    result,
    response_id=response_id,
    conversation_id=session_id if is_conversation else None,
)

The application decides how response IDs and conversation IDs map to sessions. It also decides which request options callers may control, when to stream, how to authorize continuation IDs, and where session state is stored.

The runnable Responses agent sample demonstrates native FastAPI routing, streaming, session continuation, and an application-owned option policy.

Workflows can use the same Responses interface. Instead of storing an AgentSession, the application maps response IDs to workflow checkpoints. See the Responses workflow sample for a complete implementation.

Telegram

The Telegram helpers translate native updates into Agent Framework input and translate a streaming run into Telegram operations. The application executes those operations through direct HTTP calls or a Telegram SDK such as aiogram or python-telegram-bot.

Commands, webhook authentication, polling, media handling, edit throttling, and delivery policy remain regular application code. You can also add channel-specific instructions manually or through a context provider, for example to tailor the response format for Telegram.

The Telegram sample includes complete polling and webhook applications using aiogram. It demonstrates streaming edits, commands such as /new, media conversion, per-chat ordering, and session continuity.

A2A and MCP

For A2A, AgentA2AAdapter and WorkflowA2AAdapter generate native agent cards and keep the advertised input and output modes aligned with the conversion helpers. Your application continues to own the native A2A executor, task lifecycle, event queue, routes, and task store.

The A2A hosting sample shows how to expose an Agent Framework agent through a native A2A server.

For MCP, AgentMCPTool and WorkflowMCPTool derive native tools from Agent Framework targets. Applications can also use the lower-level conversion functions with a server such as FastMCP or with directly registered MCP handlers.

The MCP hosting samples cover manual conversion, FastMCP, generated agent tools, session-aware agents, and workflow-derived tools.

Build your own channel mix

The same agent or workflow can serve more than one channel. Each channel can have its own authorization rules and presentation instructions while sharing the underlying target and application infrastructure.

As the developer, you define the resolver that maps a channel-specific identity to a session ID. A unified resolver lets a user start in a Responses client and continue in Telegram, or move between any other supported channels, without starting a new conversation. Keeping channel identities in separate namespaces remains available when that is the desired experience.

This flexibility also applies to the application framework. The current HTTP samples use FastAPI, but the helpers operate at the protocol-conversion and execution-state boundary. You can integrate them with Django, Flask, another Python web framework, an existing service, or a native protocol SDK.

What’s next…

We plan to invest in extending this functionality further, with more channels, additional helpers and other features to make it even easier to host your agent! But in order to build the right things, we want to hear from you, on what works, what doesn’t work, and what else you need to complete your scenario end-to-end. So, use these packages to connect an Agent Framework agent or workflow to the protocols and channels your users need, within the application and infrastructure you already operate.

Start with the Agent Framework hosting documentation and the runnable samples linked above, build the channel mix that fits your users, and let us know what works well and which integrations you need next in Python: Channels issue #6265.

The post Introducing agent and workflow channels appeared first on Microsoft Agent Framework.

Read the whole story
alvinashcraft
1 minute ago
reply
Pennsylvania, USA
Share this story
Delete

Learning never stops: How AI makes learning continuous

1 Share
OpenAI’s new report explores how students and educators use ChatGPT to make learning more continuous, with support that extends beyond the classroom.
Read the whole story
alvinashcraft
1 minute ago
reply
Pennsylvania, USA
Share this story
Delete

Preview v0.101.2373.0

1 Share

Preview v0.101.2373.0

This preview resumes development from the main branch after the final PowerToys v0.101 stable release.

Installer Hashes

Description Filename sha256 hash
Per user - x64 PowerToysUserSetup-0.101.2373.0-x64.exe 44EC133557A421504BC3838C9491F5A84B23E462C71A189A82F1FC85F445DEA2
Per user - ARM64 PowerToysUserSetup-0.101.2373.0-arm64.exe C8B80CAEFADDA6C7E5986F85E1152EECF3B79965C5B1B90A9BE7F87CD2B237EE
Machine wide - x64 PowerToysSetup-0.101.2373.0-x64.exe E8F093789A1B8ED0058D19239BA36ED96D47DAA5366E71154E0AF159F8285F69
Machine wide - ARM64 PowerToysSetup-0.101.2373.0-arm64.exe E000B4E1064789AF27C1D7124D7121BE16C1AB9252BA3CAE3EE449ECFF11C6A3

Highlights

  • Command-line tools: Added PATH-visible commands for FancyZones, Image Resizer, File Locksmith, and PowerDisplay.
  • Installer: Improved upgrade reliability by closing independently running PowerToys utilities before replacing files.
  • Keyboard Manager: Improved mapping persistence and consistency across profiles, restarts, and modifier-key scenarios.
  • Command Palette: Fixed PowerToys fallback commands so each command can be enabled or disabled independently.
  • Shortcut Guide: Added a Claude Desktop manifest with general and in-chat keyboard shortcuts.
  • FancyZones: Fixed Shift-triggered zone highlighting during window dragging.

Command-line tools

  • Added PATH-visible command shims for FancyZones, Image Resizer, File Locksmith, and PowerDisplay command-line tools in #48631

Command Palette

  • Fixed PowerToys fallback commands so each command can be enabled or disabled independently in #50047 by @LE0-Lin
  • Added reusable extension settings controls for files, folders, string lists, and key-value lists in #49623 by @jiripolasek
  • Added Visual Studio component requirements to the extension template so contributors can install missing build prerequisites in #50095

FancyZones

  • Fixed drag-state handling so Shift-triggered zone highlighting remains correct, while expanding automated UI coverage in #49985

Keyboard Manager

  • Improved mapping persistence and consistency across profiles, restarts, validation, and modifier-key scenarios in #50059

PowerRename

  • Expanded automated coverage across rename options and Windows 10 and 11 context-menu workflows in #50096

Shortcut Guide

  • Added a Claude Desktop manifest with general and in-chat keyboard shortcuts in #49245 by @Bakorlam

General

  • Improved upgrade reliability by closing remaining independently running PowerToys utilities before installed files are replaced in #50106
  • Updated developer documentation links from docs.microsoft.com to learn.microsoft.com in #50102 by @loulanyue
  • Updated the README roadmap for the PowerToys 0.102 milestone in #50108
Read the whole story
alvinashcraft
1 minute ago
reply
Pennsylvania, USA
Share this story
Delete
Next Page of Stories