[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M711FGADB16D792TTXJ32JCB":3,"skill-same:01M711FGADB16D792TTXJ32JCB":72},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":23,"publishedAt":43,"linkOnly":44,"markdownContent":45,"markdownBody":46,"frontMatter":47,"refName":51,"commitSha":52,"skillDirectory":53,"forksCount":14,"repositoryHtmlUrl":50,"repositoryHomepageUrl":6,"ownerHtmlUrl":54,"ownerBlogUrl":55,"ownerDescription":56,"updatedAt":57,"install":58,"resources":71},"01M711FGADB16D792TTXJ32JCB","amplifier-agent",null,"Integrate Amplifier Agent into applications using its Python or TypeScript library, OpenAI-compatible HTTP face, or Agent Client Protocol (ACP) face for editors. Use for installation, sessions, streaming, tools, MCP, skills, approvals, configuration, and integration troubleshooting.","microsoft\u002Famplifier-agent","microsoft","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F6154722?v=4","01M698VYDXZ6JW5WH3CRV650R8","Microsoft","01M711F1PAAX7KNTGCVXW59S98",9,"MIT","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Famplifier-agent\u002Fblob\u002Fmain\u002Fskills\u002Famplifier-agent\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,9,33,34,35,36,37,38,39,40,41,42],"amplifier agent","github","protocol","typescript","agent client protocol","installation","acp","https","integration","approvals","streaming","http","use","MCP","sessions","python","applications","for","openai-compatible","2026-11-10 10:12:30",false,"---\nname: amplifier-agent\ndescription: Integrate Amplifier Agent into applications using its Python or TypeScript library, OpenAI-compatible HTTP face, or Agent Client Protocol (ACP) face for editors. Use for installation, sessions, streaming, tools, MCP, skills, approvals, configuration, and integration troubleshooting.\nlicense: MIT\nmetadata:\n  author: microsoft\n  repository: https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Famplifier-agent\n  version: \"0.20.0\"\n---\n\n# Amplifier Agent integration\n\nBuild against the public bindings and their docs. Read the linked page before writing\nAPI calls. Prefer `docs\u002F` in a matching local checkout when one exists.\n\nDocs root: https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Famplifier-agent\u002Fblob\u002Fmain\u002Fdocs\u002Findex.md\n\n## Versions\n\nLinks and file paths here use `main`. Installs use a release tag; when the installed\ntag differs from `main`, read the docs at that tag.\n\nBefore upgrading an integration, read\n[CHANGELOG.md](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Famplifier-agent\u002Fblob\u002Fmain\u002FCHANGELOG.md)\nfrom the installed version to the target and apply every **Breaking** entry.\n\n## Pick a surface and install\n\nFollow [install](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Famplifier-agent\u002Fblob\u002Fmain\u002Fdocs\u002Finstall.md)\nand [providers](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Famplifier-agent\u002Fblob\u002Fmain\u002Fdocs\u002Fproviders.md).\n`amplifier-agent-ts` versions before 0.20.0 on npm are an older, incompatible API.\nInstall the Python binding as `amplifier-agent[github-copilot]` unless the user asks\notherwise; do not ask them whether to include the extra.\n\n```\nPython      Python 3.12-3.14, uv add from a release tag  docs\u002Fpython\u002F{quickstart,names,reference}.md\nTypeScript  Node 22, ESM; Linux x86-64 with glibc 2.35+   docs\u002Ftypescript\u002F{quickstart,names,reference}.md\n            or macOS 11+ on Apple silicon;\n            npm install amplifier-agent-ts\nHTTP        chat-completions server amplifier-agent-face  docs\u002Fhttp\u002F{quickstart,reference,turns,limits}.md\nACP         stdio executable amplifier-agent-acp          docs\u002Facp\u002F{quickstart,reference,limits}.md\n            started by an ACP editor\n```\n\n- TypeScript options are camelCase; received records keep snake_case spelling\n  (`session_id`, `call_id`), except `ImagePart.mediaType`. Counters are `bigint`,\n  costs are decimal strings.\n- HTTP carries less than a binding: no caller tools. Chat completions carries reply text\n  and reasoning only; `\u002Fv1\u002Famplifier\u002Fturns` streams every event and, with\n  `\"approvals\": \"ask\"`, takes approvals over HTTP. Requests may pick `\u003Cprovider>\u002F\u003Cmodel>`\n  and `reasoning_effort`, and an `Amplifier-Session-Id` header keeps a durable session on\n  the server. Its tools run under a static policy from\n  `AMPLIFIER_AGENT_APPROVALS`, `\"approvals\"` in the config file, or `create_app`\n  options; with tools and no policy the server refuses to start. All clients share the\n  server's tools, filesystem, and credentials. Each response carries one `usage` summed\n  across the turn. The face binds `127.0.0.1`; set `AMPLIFIER_AGENT_FACE_BIND` to serve\n  from a container.\n- ACP carries less than a binding: no caller tools. The editor starts\n  `amplifier-agent-acp` with no arguments; provider, model, and credentials come from its\n  environment (the editor's `env` for the agent), never from keys the editor stores for\n  its own models. Each ACP session is a durable session in the editor's `cwd`. Unless\n  `AMPLIFIER_AGENT_APPROVALS` is `allow` or `deny`, the session's approvals picker decides:\n  `ask`, `allow-reads` (the default: reads and searches inside the session's directories run,\n  every other call is a permission request), or `allow-all`. Results carry a diff per changed\n  file. The editor's model picker switches `\u003Cprovider>\u002F\u003Cmodel>` and reasoning effort.\n\n## Add the ACP face to an editor\n\nFollow the [ACP quickstart](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Famplifier-agent\u002Fblob\u002Fmain\u002Fdocs\u002Facp\u002Fquickstart.md). The editor\nstarts the face as a custom agent; it needs `uv` where the agent runs (`uv --version`):\n\n```\ncommand   uvx, as an absolute path such as \u002Fhome\u002F\u003Cuser>\u002F.local\u002Fbin\u002Fuvx when the editor starts it in WSL or remotely\nargs      --from git+https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Famplifier-agent@v0.26.2#subdirectory=packages\u002Facp amplifier-agent-acp\nenv       AMPLIFIER_AGENT_PROVIDER, AMPLIFIER_AGENT_MODEL, and that provider's credential variable\n```\n\n- Add the entry to the editor's custom agent settings, merged into any existing entries. When the editor runs the\n  agent in WSL or on a remote machine, use `which uvx` on that machine for `command`. Restart the editor after a\n  change; the first start is slow while `uvx` fetches the package.\n- The settings are plain text. Ask before writing a credential into `env`.\n- `AMPLIFIER_AGENT_APPROVALS: \"allow\"` in `env` runs every tool call without asking and removes the approvals option.\n- Skills: `AMPLIFIER_AGENT_SKILLS` in `env`, comma-separated, or `\"skills\"` in `~\u002F.amplifier-agent\u002Fconfig.json`.\n  Personal instructions: `~\u002F.amplifier-agent\u002FAGENTS.md`.\n- Verify with one prompt in a new thread. A sign-in prompt, error `-32000`, means the provider's credentials are\n  missing from the agent's environment.\n\n## Build the integration\n\n1. Construct the agent with provider, model, and instructions. `instructions` replaces the\n   [default system prompt](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Famplifier-agent\u002Fblob\u002Fmain\u002Fpackages\u002Fengine\u002Fsrc\u002Famplifier_agent_engine\u002F_engine\u002Fprompt.py);\n   start from it and adapt it to your use case. The user's `AGENTS.md` beside the host\n   configuration file, then `AGENTS.md` files from the repository root to the working\n   directory, are still appended; see\n   [AGENTS.md](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Famplifier-agent\u002Fblob\u002Fmain\u002Fdocs\u002Fconcepts\u002Fagents.md#agentsmd).\n   Configuration is captured at construction; recreate the agent after changing\n   credentials. See\n   [configuration](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Famplifier-agent\u002Fblob\u002Fmain\u002Fdocs\u002Fconfiguration.md)\n   and [models](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Famplifier-agent\u002Fblob\u002Fmain\u002Fdocs\u002Fconcepts\u002Fmodels.md).\n   With no provider configured, the first provider with credentials is used, with its\n   default model. Set both provider and model to choose one. An unavailable model is\n   reported by the first turn, not at construction. For a provider or model picker,\n   call `list_providers` \u002F `listProviders` and `list_models` \u002F `listModels`; they need\n   no agent. See\n   [discovering providers and models](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Famplifier-agent\u002Fblob\u002Fmain\u002Fdocs\u002Fconcepts\u002Fmodels.md#discovering-providers-and-models).\n   `reasoning_effort` (`reasoningEffort` in TypeScript) sets reasoning from `none` to\n   `max`, default `\"medium\"`. Session and turn values replace it, even when higher. A\n   `list_models` record's `reasoning_efforts` lists the values its model accepts. The HTTP face\n   reads `AMPLIFIER_AGENT_REASONING_EFFORT` at start and `reasoning_effort` per request. Never set effort in\n   `extra_request_params`; it is refused.\n2. Sessions are [durable by default](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Famplifier-agent\u002Fblob\u002Fmain\u002Fdocs\u002Fconcepts\u002Fsessions.md).\n   To resume, keep the session ID and sessions directory, and rebuild tools and\n   approvals. Resumed and forked sessions keep their provider, model, and reasoning\n   effort. `session.set_model(provider, model, reasoning_effort=None)` (TypeScript\n   `session.setModel({ provider, model, reasoningEffort })`) switches them between turns\n   and keeps the conversation; the new provider's credentials must be present when the\n   agent is created. `session.info` reports the current selection. See\n   [switching models](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Famplifier-agent\u002Fblob\u002Fmain\u002Fdocs\u002Fconcepts\u002Fsessions.md#switching-models).\n   Use ephemeral sessions for disposable work or caller-supplied `history`. One turn at\n   a time per session.\n3. `session.run` returns a final result; `start_turn` \u002F `startTurn` streams. See\n   [turns](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Famplifier-agent\u002Fblob\u002Fmain\u002Fdocs\u002Fconcepts\u002Fturns.md).\n4. Check both a raised `AgentError` and the terminal `TurnResult.state` \u002F `error`, and\n   surface `code`, `message`, and `remedy`; the remedy names the fix. Returned text\n   alone is not success. See\n   [errors](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Famplifier-agent\u002Fblob\u002Fmain\u002Fdocs\u002Fconcepts\u002Ferrors.md).\n   Long conversations are compacted automatically; `context_exceeded` means even that\n   did not fit, so start a new session.\n5. Close agents and sessions with context managers or `finally`. To stop a streaming\n   turn, call `cancel()` and drain to `terminal`; leaving the loop does not cancel.\n   An open TypeScript agent keeps the Node process alive.\n6. Images go inline as base64 image parts (png, jpeg, gif, webp) in input content or\n   `user` messages; over HTTP, as `image_url` parts with `data:` URLs. Output is text.\n   `image_unsupported` means the model or provider cannot take them; choose another\n   model or remove the images. The failed turn's images become one-line descriptions\n   in the conversation, so the session continues. Images are sent as given, with no\n   size limit or resizing; a provider's size refusal fails `provider_failed`. See\n   [providers](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Famplifier-agent\u002Fblob\u002Fmain\u002Fdocs\u002Fproviders.md#images).\n\n## Tools and approvals\n\nRead [tools](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Famplifier-agent\u002Fblob\u002Fmain\u002Fdocs\u002Fconcepts\u002Ftools.md),\n[approvals](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Famplifier-agent\u002Fblob\u002Fmain\u002Fdocs\u002Fconcepts\u002Fapprovals.md),\nand, for reusable instructions and named agents,\n[skills](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Famplifier-agent\u002Fblob\u002Fmain\u002Fdocs\u002Fconcepts\u002Fskills.md).\n\n- `tools` is the whole set. Omitted, it is every built-in; `[]` is no tools; keep the\n  built-ins and add yours with `[*BUILTIN_TOOLS, mine]` \u002F `[...BUILTIN_TOOLS, mine]`.\n  Built-ins run with the host process's permissions. With both `edit_file` and\n  `apply_patch` in the set, `gpt-` models other than `gpt-4` and `oss` are offered\n  `apply_patch` and every other model `edit_file`.\n- Every tool call, including reads and MCP, needs an approval handler or a static\n  `\"allow\"` \u002F `\"deny\"` policy. `AgentOptions.approvals` wins; otherwise the host's\n  `AMPLIFIER_AGENT_APPROVALS` or config file `\"approvals\"` applies. Without one, tool\n  requests fail with `approval_unavailable`. `\"allow\"` permits every effect, including\n  writes and shell; `\"deny\"` refuses each one.\n- A handler receives `request.arguments`, exactly what the tool will receive; decide on\n  it and show `request.summary`, the bounded, redacted preview. A `deny` does not end the\n  turn: the tool does not run, the model gets an `approval_denied` result carrying the\n  response's `reason`, and continues. Give a `reason` that says what is allowed instead.\n  Answer `cancel` to end the turn.\n- `working_directory` \u002F `workingDirectory` is where built-ins, `bash`, and stdio MCP\n  servers work. Absent, the process's current directory. `environment` adds per-agent\n  variables, including provider credentials, without changing the process environment.\n- `sessions_directory` holds stored sessions. Absent, it is computed from the working\n  directory, so resume from the same directory or set it. It is not a sandbox.\n- Ordinary tool errors, and arguments that fail the tool's schema (`invalid_input`, the\n  handler never runs), return to the model and the turn continues. Set\n  `tool_error_policy=\"stop\"` \u002F `toolErrorPolicy: \"stop\"` to end the turn on the first.\n- Caller tools need a unique name, a JSON Schema with `$schema`, and a handler. Report\n  known failures with `ToolFailed` and uncertain effects with `ToolOutcomeUnknown`;\n  never retry an unknown outcome. A handler returns a string, or a list of text and\n  image parts; events describe each image in one line, never its bytes.\n\n## Streaming UI\n\nUse [events](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Famplifier-agent\u002Fblob\u002Fmain\u002Fdocs\u002Fconcepts\u002Fevents.md)\nand [usage](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Famplifier-agent\u002Fblob\u002Fmain\u002Fdocs\u002Fconcepts\u002Fusage.md).\nEach turn's stream has one consumer. Correlate tools by `call_id` and approvals by\n`request_id`. Render `output_delta` parts or the terminal content, not both. Usage\nevents replace the previous snapshot; do not sum them. A `progress` event with\n`context.compacted` reports compaction. A stream without `terminal` is incomplete.\n\n## Examples\n\n[`examples\u002F`](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Famplifier-agent\u002Ftree\u002Fmain\u002Fexamples) holds complete applications on the\npublic surface. `examples\u002Fpython\u002Fllm-wiki\u002F` runs many sessions in parallel with caller tools, an approval handler on\n`request.arguments`, skills, streamed events, and usage totals. Every library call is in its `llm_wiki\u002Fagent\u002F`.\n\n## Verify\n\nRun one small live turn, one failure path, and cleanup. With tools or streaming, also\nexercise an approval denial and a cancellation. Live turns need credentials and cost money.\n\n## Source inspection\n\nOptional, for diagnosing behavior. Keep application code on the public surface; engine\ninternals and upstream module APIs are not the public interface. There is no `amplifier-agent` CLI.\n\n```bash\ngit clone --depth 1 --single-branch --branch v0.26.2 \\\n  https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Famplifier-agent.git \"$(mktemp -d)\u002Famplifier-agent\"\n```\n\nStart at `docs\u002Fdevelopment\u002Farchitecture.md`. Upstream module revisions are in\n`packages\u002Fengine\u002Fpyproject.toml` and `uv.lock`.\n","# Amplifier Agent integration\n\nBuild against the public bindings and their docs. Read the linked page before writing\nAPI calls. Prefer `docs\u002F` in a matching local checkout when one exists.\n\nDocs root: https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Famplifier-agent\u002Fblob\u002Fmain\u002Fdocs\u002Findex.md\n\n## Versions\n\nLinks and file paths here use `main`. Installs use a release tag; when the installed\ntag differs from `main`, read the docs at that tag.\n\nBefore upgrading an integration, read\n[CHANGELOG.md](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Famplifier-agent\u002Fblob\u002Fmain\u002FCHANGELOG.md)\nfrom the installed version to the target and apply every **Breaking** entry.\n\n## Pick a surface and install\n\nFollow [install](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Famplifier-agent\u002Fblob\u002Fmain\u002Fdocs\u002Finstall.md)\nand [providers](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Famplifier-agent\u002Fblob\u002Fmain\u002Fdocs\u002Fproviders.md).\n`amplifier-agent-ts` versions before 0.20.0 on npm are an older, incompatible API.\nInstall the Python binding as `amplifier-agent[github-copilot]` unless the user asks\notherwise; do not ask them whether to include the extra.\n\n```\nPython      Python 3.12-3.14, uv add from a release tag  docs\u002Fpython\u002F{quickstart,names,reference}.md\nTypeScript  Node 22, ESM; Linux x86-64 with glibc 2.35+   docs\u002Ftypescript\u002F{quickstart,names,reference}.md\n            or macOS 11+ on Apple silicon;\n            npm install amplifier-agent-ts\nHTTP        chat-completions server amplifier-agent-face  docs\u002Fhttp\u002F{quickstart,reference,turns,limits}.md\nACP         stdio executable amplifier-agent-acp          docs\u002Facp\u002F{quickstart,reference,limits}.md\n            started by an ACP editor\n```\n\n- TypeScript options are camelCase; received records keep snake_case spelling\n  (`session_id`, `call_id`), except `ImagePart.mediaType`. Counters are `bigint`,\n  costs are decimal strings.\n- HTTP carries less than a binding: no caller tools. Chat completions carries reply text\n  and reasoning only; `\u002Fv1\u002Famplifier\u002Fturns` streams every event and, with\n  `\"approvals\": \"ask\"`, takes approvals over HTTP. Requests may pick `\u003Cprovider>\u002F\u003Cmodel>`\n  and `reasoning_effort`, and an `Amplifier-Session-Id` header keeps a durable session on\n  the server. Its tools run under a static policy from\n  `AMPLIFIER_AGENT_APPROVALS`, `\"approvals\"` in the config file, or `create_app`\n  options; with tools and no policy the server refuses to start. All clients share the\n  server's tools, filesystem, and credentials. Each response carries one `usage` summed\n  across the turn. The face binds `127.0.0.1`; set `AMPLIFIER_AGENT_FACE_BIND` to serve\n  from a container.\n- ACP carries less than a binding: no caller tools. The editor starts\n  `amplifier-agent-acp` with no arguments; provider, model, and credentials come from its\n  environment (the editor's `env` for the agent), never from keys the editor stores for\n  its own models. Each ACP session is a durable session in the editor's `cwd`. Unless\n  `AMPLIFIER_AGENT_APPROVALS` is `allow` or `deny`, the session's approvals picker decides:\n  `ask`, `allow-reads` (the default: reads and searches inside the session's directories run,\n  every other call is a permission request), or `allow-all`. Results carry a diff per changed\n  file. The editor's model picker switches `\u003Cprovider>\u002F\u003Cmodel>` and reasoning effort.\n\n## Add the ACP face to an editor\n\nFollow the [ACP quickstart](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Famplifier-agent\u002Fblob\u002Fmain\u002Fdocs\u002Facp\u002Fquickstart.md). The editor\nstarts the face as a custom agent; it needs `uv` where the agent runs (`uv --version`):\n\n```\ncommand   uvx, as an absolute path such as \u002Fhome\u002F\u003Cuser>\u002F.local\u002Fbin\u002Fuvx when the editor starts it in WSL or remotely\nargs      --from git+https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Famplifier-agent@v0.26.2#subdirectory=packages\u002Facp amplifier-agent-acp\nenv       AMPLIFIER_AGENT_PROVIDER, AMPLIFIER_AGENT_MODEL, and that provider's credential variable\n```\n\n- Add the entry to the editor's custom agent settings, merged into any existing entries. When the editor runs the\n  agent in WSL or on a remote machine, use `which uvx` on that machine for `command`. Restart the editor after a\n  change; the first start is slow while `uvx` fetches the package.\n- The settings are plain text. Ask before writing a credential into `env`.\n- `AMPLIFIER_AGENT_APPROVALS: \"allow\"` in `env` runs every tool call without asking and removes the approvals option.\n- Skills: `AMPLIFIER_AGENT_SKILLS` in `env`, comma-separated, or `\"skills\"` in `~\u002F.amplifier-agent\u002Fconfig.json`.\n  Personal instructions: `~\u002F.amplifier-agent\u002FAGENTS.md`.\n- Verify with one prompt in a new thread. A sign-in prompt, error `-32000`, means the provider's credentials are\n  missing from the agent's environment.\n\n## Build the integration\n\n1. Construct the agent with provider, model, and instructions. `instructions` replaces the\n   [default system prompt](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Famplifier-agent\u002Fblob\u002Fmain\u002Fpackages\u002Fengine\u002Fsrc\u002Famplifier_agent_engine\u002F_engine\u002Fprompt.py);\n   start from it and adapt it to your use case. The user's `AGENTS.md` beside the host\n   configuration file, then `AGENTS.md` files from the repository root to the working\n   directory, are still appended; see\n   [AGENTS.md](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Famplifier-agent\u002Fblob\u002Fmain\u002Fdocs\u002Fconcepts\u002Fagents.md#agentsmd).\n   Configuration is captured at construction; recreate the agent after changing\n   credentials. See\n   [configuration](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Famplifier-agent\u002Fblob\u002Fmain\u002Fdocs\u002Fconfiguration.md)\n   and [models](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Famplifier-agent\u002Fblob\u002Fmain\u002Fdocs\u002Fconcepts\u002Fmodels.md).\n   With no provider configured, the first provider with credentials is used, with its\n   default model. Set both provider and model to choose one. An unavailable model is\n   reported by the first turn, not at construction. For a provider or model picker,\n   call `list_providers` \u002F `listProviders` and `list_models` \u002F `listModels`; they need\n   no agent. See\n   [discovering providers and models](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Famplifier-agent\u002Fblob\u002Fmain\u002Fdocs\u002Fconcepts\u002Fmodels.md#discovering-providers-and-models).\n   `reasoning_effort` (`reasoningEffort` in TypeScript) sets reasoning from `none` to\n   `max`, default `\"medium\"`. Session and turn values replace it, even when higher. A\n   `list_models` record's `reasoning_efforts` lists the values its model accepts. The HTTP face\n   reads `AMPLIFIER_AGENT_REASONING_EFFORT` at start and `reasoning_effort` per request. Never set effort in\n   `extra_request_params`; it is refused.\n2. Sessions are [durable by default](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Famplifier-agent\u002Fblob\u002Fmain\u002Fdocs\u002Fconcepts\u002Fsessions.md).\n   To resume, keep the session ID and sessions directory, and rebuild tools and\n   approvals. Resumed and forked sessions keep their provider, model, and reasoning\n   effort. `session.set_model(provider, model, reasoning_effort=None)` (TypeScript\n   `session.setModel({ provider, model, reasoningEffort })`) switches them between turns\n   and keeps the conversation; the new provider's credentials must be present when the\n   agent is created. `session.info` reports the current selection. See\n   [switching models](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Famplifier-agent\u002Fblob\u002Fmain\u002Fdocs\u002Fconcepts\u002Fsessions.md#switching-models).\n   Use ephemeral sessions for disposable work or caller-supplied `history`. One turn at\n   a time per session.\n3. `session.run` returns a final result; `start_turn` \u002F `startTurn` streams. See\n   [turns](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Famplifier-agent\u002Fblob\u002Fmain\u002Fdocs\u002Fconcepts\u002Fturns.md).\n4. Check both a raised `AgentError` and the terminal `TurnResult.state` \u002F `error`, and\n   surface `code`, `message`, and `remedy`; the remedy names the fix. Returned text\n   alone is not success. See\n   [errors](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Famplifier-agent\u002Fblob\u002Fmain\u002Fdocs\u002Fconcepts\u002Ferrors.md).\n   Long conversations are compacted automatically; `context_exceeded` means even that\n   did not fit, so start a new session.\n5. Close agents and sessions with context managers or `finally`. To stop a streaming\n   turn, call `cancel()` and drain to `terminal`; leaving the loop does not cancel.\n   An open TypeScript agent keeps the Node process alive.\n6. Images go inline as base64 image parts (png, jpeg, gif, webp) in input content or\n   `user` messages; over HTTP, as `image_url` parts with `data:` URLs. Output is text.\n   `image_unsupported` means the model or provider cannot take them; choose another\n   model or remove the images. The failed turn's images become one-line descriptions\n   in the conversation, so the session continues. Images are sent as given, with no\n   size limit or resizing; a provider's size refusal fails `provider_failed`. See\n   [providers](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Famplifier-agent\u002Fblob\u002Fmain\u002Fdocs\u002Fproviders.md#images).\n\n## Tools and approvals\n\nRead [tools](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Famplifier-agent\u002Fblob\u002Fmain\u002Fdocs\u002Fconcepts\u002Ftools.md),\n[approvals](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Famplifier-agent\u002Fblob\u002Fmain\u002Fdocs\u002Fconcepts\u002Fapprovals.md),\nand, for reusable instructions and named agents,\n[skills](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Famplifier-agent\u002Fblob\u002Fmain\u002Fdocs\u002Fconcepts\u002Fskills.md).\n\n- `tools` is the whole set. Omitted, it is every built-in; `[]` is no tools; keep the\n  built-ins and add yours with `[*BUILTIN_TOOLS, mine]` \u002F `[...BUILTIN_TOOLS, mine]`.\n  Built-ins run with the host process's permissions. With both `edit_file` and\n  `apply_patch` in the set, `gpt-` models other than `gpt-4` and `oss` are offered\n  `apply_patch` and every other model `edit_file`.\n- Every tool call, including reads and MCP, needs an approval handler or a static\n  `\"allow\"` \u002F `\"deny\"` policy. `AgentOptions.approvals` wins; otherwise the host's\n  `AMPLIFIER_AGENT_APPROVALS` or config file `\"approvals\"` applies. Without one, tool\n  requests fail with `approval_unavailable`. `\"allow\"` permits every effect, including\n  writes and shell; `\"deny\"` refuses each one.\n- A handler receives `request.arguments`, exactly what the tool will receive; decide on\n  it and show `request.summary`, the bounded, redacted preview. A `deny` does not end the\n  turn: the tool does not run, the model gets an `approval_denied` result carrying the\n  response's `reason`, and continues. Give a `reason` that says what is allowed instead.\n  Answer `cancel` to end the turn.\n- `working_directory` \u002F `workingDirectory` is where built-ins, `bash`, and stdio MCP\n  servers work. Absent, the process's current directory. `environment` adds per-agent\n  variables, including provider credentials, without changing the process environment.\n- `sessions_directory` holds stored sessions. Absent, it is computed from the working\n  directory, so resume from the same directory or set it. It is not a sandbox.\n- Ordinary tool errors, and arguments that fail the tool's schema (`invalid_input`, the\n  handler never runs), return to the model and the turn continues. Set\n  `tool_error_policy=\"stop\"` \u002F `toolErrorPolicy: \"stop\"` to end the turn on the first.\n- Caller tools need a unique name, a JSON Schema with `$schema`, and a handler. Report\n  known failures with `ToolFailed` and uncertain effects with `ToolOutcomeUnknown`;\n  never retry an unknown outcome. A handler returns a string, or a list of text and\n  image parts; events describe each image in one line, never its bytes.\n\n## Streaming UI\n\nUse [events](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Famplifier-agent\u002Fblob\u002Fmain\u002Fdocs\u002Fconcepts\u002Fevents.md)\nand [usage](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Famplifier-agent\u002Fblob\u002Fmain\u002Fdocs\u002Fconcepts\u002Fusage.md).\nEach turn's stream has one consumer. Correlate tools by `call_id` and approvals by\n`request_id`. Render `output_delta` parts or the terminal content, not both. Usage\nevents replace the previous snapshot; do not sum them. A `progress` event with\n`context.compacted` reports compaction. A stream without `terminal` is incomplete.\n\n## Examples\n\n[`examples\u002F`](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Famplifier-agent\u002Ftree\u002Fmain\u002Fexamples) holds complete applications on the\npublic surface. `examples\u002Fpython\u002Fllm-wiki\u002F` runs many sessions in parallel with caller tools, an approval handler on\n`request.arguments`, skills, streamed events, and usage totals. Every library call is in its `llm_wiki\u002Fagent\u002F`.\n\n## Verify\n\nRun one small live turn, one failure path, and cleanup. With tools or streaming, also\nexercise an approval denial and a cancellation. Live turns need credentials and cost money.\n\n## Source inspection\n\nOptional, for diagnosing behavior. Keep application code on the public surface; engine\ninternals and upstream module APIs are not the public interface. There is no `amplifier-agent` CLI.\n\n```bash\ngit clone --depth 1 --single-branch --branch v0.26.2 \\\n  https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Famplifier-agent.git \"$(mktemp -d)\u002Famplifier-agent\"\n```\n\nStart at `docs\u002Fdevelopment\u002Farchitecture.md`. Upstream module revisions are in\n`packages\u002Fengine\u002Fpyproject.toml` and `uv.lock`.\n",{"name":5,"license":15,"metadata":48,"description":7},{"author":9,"version":49,"repository":50},"0.20.0","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Famplifier-agent","main","125e1bf81be7dbb37339f3e568959dacacba002b","skills\u002Famplifier-agent","https:\u002F\u002Fgithub.com\u002Fmicrosoft","https:\u002F\u002Fopensource.microsoft.com","Open source projects and samples from Microsoft","2026-11-15 01:51:45",{"source":8,"skillName":5,"commands":59,"prompt":69,"zipAvailable":70},[60,63,66],{"tool":61,"command":62},"npx","npx skills add microsoft\u002Famplifier-agent --skill amplifier-agent",{"tool":64,"command":65},"bunx","bunx skills add microsoft\u002Famplifier-agent --skill amplifier-agent",{"tool":67,"command":68},"pnpm","pnpm dlx skills add microsoft\u002Famplifier-agent --skill amplifier-agent","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Famplifier-agent\u002Fblob\u002Fmain\u002Fskills\u002Famplifier-agent\u002FSKILL.md",true,[],[73,95,123,138,156,171],{"skillNo":74,"name":75,"nameZh":6,"description":76,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":77,"categories":78,"keywords":79,"publishedAt":43},"01M711FEW2T79SR2X5WR6HJGC2","wiki-maintainer","Merge proposals into a concept or entity page, fix lint findings, and write lint reports for the Amplifier ecosystem wiki. Load before writing any wiki page other than a repository page.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Famplifier-agent\u002Fblob\u002Fmain\u002Fexamples\u002Fpython\u002Fllm-wiki\u002Fskills\u002Fwiki-maintainer\u002FSKILL.md",[],[80,81,82,83,84,85,86,87,88,89,90,91,41,92,93,94],"wiki","wiki maintainer","entity","proposals","lint","load","writing","fix","write","repository","merge","page","ecosystem","concept","reports",{"skillNo":96,"name":97,"nameZh":6,"description":98,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":99,"categories":100,"keywords":106,"publishedAt":43},"01M711FDFKF142S7ASQQ6WY0JW","status-report","Write a short three-line project status report in Markdown. Use when asked for a status report.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Famplifier-agent\u002Fblob\u002Fmain\u002Fevaluations\u002Ftasks\u002Ftools\u002Fskill\u002Fworkspace\u002F.agents\u002Fskills\u002Fstatus-report\u002FSKILL.md",[101],{"categoryNo":102,"categoryName":103,"taxonomyType":104,"taxonomyTypeDesc":105},"01JBSEEDCAT000000000000034","行政与办公人员","PROFESSION","适用职业",[107,108,109,110,111,41,112,113,114,115,116,117,118,119,120,121,36,122,88],"status","report","status report","workspace","project","markdown","command","three","project status report","Echo","project status","line","echo skill","when","hook","short",{"skillNo":124,"name":125,"nameZh":6,"description":126,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":127,"categories":128,"keywords":129,"publishedAt":43},"01M711FBCRW1J505E104CGAFJX","py-count","Count Python source files under a directory. Use when asked how many .py files a directory holds.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Famplifier-agent\u002Fblob\u002Fmain\u002Fevaluations\u002Ftasks\u002Ftools\u002Fdelegate_fork_skill\u002Fworkspace\u002F.agents\u002Fskills\u002Fpy-count\u002FSKILL.md",[],[130,131,132,39,133,120,134,135,36,136,137],"count","py count","Bash","directory","source","fork","files","how",{"skillNo":139,"name":140,"nameZh":6,"description":141,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":142,"categories":143,"keywords":144,"publishedAt":43},"01M711F9T26JJGHYPCS460354M","tool-probe","Writes a fixed sentinel to a file to prove the agent invoked this skill through its skills tool in response to a natural-language request. Invoke this skill when asked to run or invoke tool-probe.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Famplifier-agent\u002Fblob\u002Fmain\u002F.amplifier\u002Fevaluation\u002Ftasks\u002Famplifier-agent-capabilities\u002Fskill-tool-invocation\u002Fworkspace\u002F.amplifier\u002Fskills\u002Ftool-probe\u002FSKILL.md",[],[145,146,147,148,149,150,151,152,120,153,154,155],"tool probe","tool","probe","run","natural-language","language","request","file","sentinel","invoke","prove",{"skillNo":157,"name":158,"nameZh":6,"description":159,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":160,"categories":161,"keywords":162,"publishedAt":43},"01M711F8C0XGN3CC9NCC1ZS2TJ","echo-args","Writes the exact text it received as arguments, verbatim, to a file. Used to verify skill argument passthrough.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Famplifier-agent\u002Fblob\u002Fmain\u002F.amplifier\u002Fevaluation\u002Ftasks\u002Famplifier-agent-capabilities\u002Fskill-arguments-passthrough\u002Fworkspace\u002F.amplifier\u002Fskills\u002Fecho-args\u002FSKILL.md",[],[116,163,164,165,166,167,168,152,169,170],"echo args","as","true","text","argument","it","verify skill","verify",{"skillNo":172,"name":173,"nameZh":6,"description":174,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":175,"categories":176,"keywords":178,"publishedAt":43},"01M711F69BAQ6KANGV4126T9SZ","amplifier-agent-new-feature","Develop a new amplifier-agent feature from idea to verified behavior. Covers orientation against the contracts, planning, updating every public description, red\u002Fgreen development driven by an evaluation task and supporting tests, the widening verification ladder, and a hands-on human check. Stops before commit and release.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Famplifier-agent\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Famplifier-agent-new-feature\u002FSKILL.md",[177],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[179,180,181,182,183,184,185,186,187,188,189,190,191,192,165,193,194,195,196,197],"feature","amplifier agent new feature","new feature","new","check","release","ladder","behavior","human","develop","verification","task","commit","tests","development","planning","green","hands-on","orientation"]