尧图精选

Strands Harness Python SDK 完全指南:一次调用构建可投入生产的端到端 AI Agent

🕒 发布时间:2026/9/28 6:40:49 📁 来源:尧图网络
人工智能大模型AI AgentAgent 框架多智能体工具调用MCP 服务【免费下载链接】harness-sdkBuild an agent harness and control it end-to-end. Open-source SDK for production AI agents in Python TypeScript - any model, any cloud.项目地址https://gitcode.com/GitHub_Trending/sdkpython13/harness-sdk点击查看免费下载导读strands_harnessharness-py包是 Strands Harness SDK 的 Python 发行版把 SDK 的模型循环、工具、即时上下文组装、会话、钩子等积木组合成一个开箱即用、带合理默认值并经过调校系统提示词的 Agent。读完本文你将掌握create_harness()的全部参数语义、内置工具与插件的配置方式、模型与推理档位effort的跨厂商映射规则以及如何通过会话、长期记忆、技能、MCP、干预门禁与 OpenTelemetry 追踪把该 Agent 接进自己的生产服务。仓库中的相关实现位于 harness-py/src/strands_harness测试覆盖见 harness-py/tests/test_agent.py。它是什么一行代码得到的即用 Agentcreate_harness()返回一个功能完整、随时可用的 Agent。它由 Strands 团队基于 Strands Harness SDK 组装而成把模型循环、工具、即时上下文装配、会话、钩子等 SDK 构件组合为一个 Agent并提供经过测试的默认值与调校过的系统提示词。所有默认值都可覆盖返回值是一个普通的strands.Agent因此一切保持开放——harness 装配的任何东西你都可以改、扩或替换from strands_harness import create_harness agent create_harness() agent(Find the slowest test in this repo and explain why its slow)TypeScript 侧以strands-agents/harness提供同名接口源码位于 harness-ts/src二者保持相同的参数语义。完整接口一览create_harness()的所有参数都是可选的create_harness( modelbedrock/global.anthropic.claude-opus-5, # provider/name裸 Bedrock id或 Model 实例 effortauto, # auto | off | minimal | low | medium | high | xhigh | max instructionsNone, # 追加到系统提示词之后的领域文本 toolsNone, # 你的工具与内置工具并列加入 mcp_serversNone, # MCP 服务器mcpServers JSON 路径或映射本身 pluginsNone, # 你的 Strands 插件与内置插件并列加入 builtin_toolsNone, # Noneharness 默认列表精确钉住名字映射编辑默认集见下文 background_tasksNone, # SDK Background Tasks 策略False 关闭 builtin_plugins[todos, environment], # 内置功能插件按名选择[] 关闭全部 cachingauto, # 在支持处缓存系统提示词、工具与历史False 关闭 context_managerauto, # auto | agentic | ContextManager 配置/实例 | False sessionTrue, # True | {id: ..., dir: ...} | SessionManager | False skillsTrue, # True (./.agent/skills) | 路径或 git URL | AgentSkills | False memoryTrue, # True (./.agent/memory) | {dir: ..., stores: [...]} | MemoryManager | False interventionsNone, # 门禁工具调用ask | smart | 策略字符串 | .cedar 文件 **agent_kwargs, # 其余一切直接透传给 strands.Agent )对于 JSON 兼容的声明式定义可使用define_harness_agent_config()得到一份补全了默认值的可移植配置再交给harness_agent_kwargs_from_config()转成create_harness关键字参数实现见 config.py。自定义工具、模型、干预处理器、沙箱等可执行值以模块引用{module, export, ...}表示格式错误或语言不符的引用会直接报错而非被静默忽略。安装pip install strands-harness默认 Agent 运行在 Amazon Bedrock 上。切换其他厂商时安装对应的 extrapip install strands-harness[openai] # 或 [anthropic], [gemini]即 google 厂商, [ollama], [litellm]开箱即得的默认能力默认的create_harness()会给你这样一个 Agent运行在开启推理的前沿模型上覆盖 Amazon Bedrock、Anthropic、OpenAI 与 Google。默认模型是 Amazon Bedrock 上的 Claude Opus 5源码常量见 defaults.py背后是一份调校过的系统提示词动手前先探索、不可逆操作前先确认、宣布任务完成前先验证。自带可用工具shell、文件工具read/write/edit、Web 访问以及programmatic_tool_caller——一个沙箱模型在其中编写 Python 来串联、循环、并行化它的其他工具以完成更复杂的编排。自己管理上下文让长任务保持连贯且成本可控它会总结较旧的轮次把体积大的工具结果搬出上下文存到磁盘只留下一个短引用供日后取回请求中可复用的部分在厂商支持处被缓存。会记忆每次对话都保存到磁盘、可按会话 id 恢复长期记忆把跨会话的事实蒸馏成 markdown 文件并折叠回上下文。本质上就是一个strands.Agent默认值全部可覆盖返回值是普通Agent所以整个 SDKinterventions、hooks、MCP 工具、自定义会话后端都可以接上去。以上全部是默认值而非约束下面逐项说明如何调整。选择模型可以传provider/model字符串、裸模型 id 或现成的Model实例create_harness(modelanthropic/claude-opus-5) # 直连 Anthropic API create_harness(modelopenai/gpt-5.6-sol) # OpenAI create_harness(modelgoogle/gemini-3.5-flash) # Google create_harness(modelbedrock/global.anthropic.claude-opus-5) # 默认值完整拼写 create_harness(modelbedrock-mantle/openai.gpt-5.6-sol) # Bedrock 的 OpenAI 兼容端点 from strands.models.openai import OpenAIModel create_harness(modelOpenAIModel(model_idgpt-5.6-sol)) # 完全控制provider/model字符串是带别名的速记bedrock、bedrock-mantle、anthropic、openai、google、ollama、litellm。其他任何厂商请传Model实例原样使用。从源码看models.py裸 id 会被自动归入bedrock厂商_split_provider中无/即按 Bedrock 处理Bedrock 厂商还按模型族识别推理能力anthropic.、openai.gpt-5.6-、openai.gpt-oss-、qwen.、xai.各有不同的 effort 档位表_BEDROCK_GPT_LEVELS、_BEDROCK_QWEN_LEVELS等Claude 还会按版本在 adaptive / extended thinking 之间选择。推理档位effort跨厂商映射推理档位会被映射为每个厂商自己期望的请求字段因此你只需设置一次create_harness(efforthigh) # minimal | low | medium | high | xhigh | max按厂商可用性 create_harness(effortauto) # 厂商推荐档位支持处为 high默认值 create_harness(effortoff) # 关闭推理厂商不提供的档位会直接抛错——拼写错误或不支持的请求永远不会被静默放过。当你传入Model实例时effort以及caching会被忽略并记录警告请在实例本身上配置推理。各厂商接受的档位集由源码中的常量表约束_ANTHROPIC_LEVELS、_OPENAI_LEVELS、_GOOGLE_LEVELS等见 models.py映射逻辑在_effort与_bedrock_effort中完成例如 OpenAI 接受minimal/low/medium/high/xhigh/noneAnthropic 接受low/medium/high/xhigh/maxGoogle 接受minimal/low/medium/high。注入自定义指令与工具instructions在内置契约之后追加一段领域文本用来给 Agent 身份、范围与规则tools把你的工具与内置工具并列加入from strands import tool tool def get_ticket(ticket_id: str) - str: Fetch a support ticket by id. return db.tickets.get(ticket_id) agent create_harness( instructionsYou are a support assistant. Always link the ticket youre working on., tools[get_ticket], )用 builtin_tools 裁切或配置内置工具想要更精简或不同的工具集builtin_tools有两种形态列表钉住恰好列出的工具[]全部关闭映射编辑harness 的默认集合False移除、True添加、配置字典则启用并配置。其中四个工具接受配置每个键都是该工具工厂的关键字参数shelldescription、web_fetchmodel、transport、programmatic_tool_callerallowed_tools、timeout和subagentmax_depth其余工具只接受布尔值。映射中的*是基础集默认True写*: False则从零开始、只命名你想要的create_harness(builtin_tools[read]) # 只要 read create_harness(builtin_tools[]) # 全部自带用 tools create_harness(builtin_tools{subagent: False}) # 默认集减一个 create_harness(builtin_tools{web_fetch: {model: openai/gpt-5-mini}}) # 默认集web_fetch 配置过 create_harness(builtin_tools{subagent: {max_depth: 1}, programmatic_tool_caller: {timeout: 60}}) create_harness(builtin_tools{*: False, read: True, web_fetch: {}}) # 钉住并配置一个字面量完成BUILTIN_TOOL_NAMES从包根导出是完整名单shell、read、write、edit、web_fetch、web_search、programmatic_tool_caller、subagent见 defaults.py。建议优先用映射形式表达默认集减 X{subagent: False}列表会钉住它包含的每个名字所以在没有原生搜索的模型上列出web_search会抛错而不是静默关闭可用{web_search: exa}显式选择 Exa 兜底。配置键的取值校验在 options.py 中逐键完成如timeout必须是正有限数、max_depth必须是非负整数。工具名冲突也会在构造时被发现_check_name_collisions会对内置工具、tools、内置插件、你的插件与 memory 工具做统一的名字查重-/_视为同名冲突时抛出并指出落败来源见 agent.py。后台任务策略subagent总是在后台运行。默认情况下模型也可以为任何其他兼容工具选择后台执行。harness 会等待工作完成并把结果交还父模型继续。传background_tasksFalse关闭该行为或提供 SDK 的BackgroundTasksConfig控制策略、并发、完成与超时。只有当应用会在结果就绪后重新调用 Agent 时才设置wait_for_completionFalse。源码中_resolve_background_tasks会把subagent强制加入 always 后台名单_ALWAYS_BACKGROUND_TOOL_NAMES同时允许策略覆盖其他工具agent.py。把工作委托给子 AgentAgent 可以把子任务交给另一个 Agent后者以工具形式暴露给它。每次调用都在独立的全新对话中运行、只返回最终答案因此会淹没主上下文的那些工作搜索大量文件、多步修改、开放式探索被隔离在外。内置 subagent 工具默认启用通过builtin_tools模型把任务委托给由同一个工厂构建的子 Agent因此子 Agent 是完整的 harness 成员——它继承模型、内置工具与插件、skills、interventions以及你传入的plugins和hooks所以你的审批门禁和策略插件/钩子也能到达委托者你的tools会被转发以便子 Agent 被授予其中的一部分可收窄它只能用子集绝不会超过你持有的。模型默认选择generalist角色、可编写临时角色提示词、可收窄工具集绝不扩大。委托深度有界所以子 Agent 最终无法继续往下委托。把它从builtin_tools里去掉即可关闭跟其他内置工具一样create_harness(builtin_tools[shell, read, write, edit]) # 无 subagent用 make_subagent 构建完全定制的委托工具工具的模型可见参数由配置派生。要一个完全配置好的工具自定义角色、模型档位、固定提示词用make_subagent构建并经tools传入同时从builtin_tools去掉subagent。你提供builder——把解析好的AgentSpec变成子 Agent 的函数典型实现是再次调用create_harness这是让子 Agent 成为 harness 成员的接缝。委托深度默认被限制在两层传max_depth可改。每个轴instructions、tools、mcp_servers、model、context是否成为参数取决于它是Fixed、Inherit、Open还是Choice定义见 tools/subagent.pyfrom strands_harness import create_harness from strands_harness.tools import make_subagent, AgentSpec, Preset, Fixed, Inherit NO_SUBAGENT {subagent: False} # 默认集减去委托web_search 仍随厂商而定 def build_reviewer(spec: AgentSpec): return create_harness(instructionsspec.instructions, builtin_toolsNO_SUBAGENT) reviewer make_subagent( builderbuild_reviewer, presets{reviewer: Preset(instructionsYou review diffs., descriptionreviews diffs)}, instructionsFixed(None), # 角色自持提示词参数被移除 modelInherit(), ) agent create_harness(tools[reviewer], builtin_toolsNO_SUBAGENT)需要聚焦专长时用Agent.as_tool()包装你自己的Agent实例并传入tools每个都成为主 Agent 可调用的工具以该 Agent 的name命名。每次调用都从全新对话运行专家因此它是干净、专注的委托者而非共享会话。给每个 Agent 清晰的name和description模型才知道何时该用它from strands import Agent researcher Agent( nameresearcher, descriptionResearches a topic and summarizes findings., system_promptYou research a topic and return a concise, sourced summary of what you found., ) reviewer Agent( namereviewer, descriptionReviews code for correctness and style., system_promptYou review a diff for correctness and style, and list concrete issues with fixes., ) agent create_harness(tools[researcher.as_tool(), reviewer.as_tool()])每个专家都是完整的Agent自带模型、提示词与工具想让它们共享 harness 默认值也可以用create_harness来构建。连接 MCP 服务器把mcp_servers指向标准的mcpServers配置JSON 文件路径或内联映射harness 会连接每台服务器、发现其工具并加入工具列表create_harness(mcp_servers.mcp.json) create_harness(mcp_servers{ filesystem: {command: npx, args: [-y, modelcontextprotocol/server-filesystem, /data]}, })启动失败的服务器不贡献任何工具而不会拖垮整个 Agent在某个服务器上设置continue_on_error: false可让它的失败变成致命错误。每台服务器的工具按server_tool命名空间分隔服务器名中[A-Za-z0-9_-]之外的字符变为_因此两台暴露同名工具的服务器不会冲突设置服务器的prefix可自定义命名空间prefix: 则退出命名空间。实现上MCPClient.load_servers在构造时连接并载入工具agent.py从 JSON 配置加载时还会做continueOnError/toolFilters/clientId等 camelCase 键到 Python 参数的转换config.py。触达 Webweb_fetch 与 web_search两个内置工具把 Web 带入对话。web_fetch始终开启它抓取 URL、降级为文本并让一个小而快的模型针对内容回答你的提示返回的是答案而非原始页面——长文章永远不会淹没对话。摘要模型默认使用你主厂商对应的小模型凭证对齐可通过builtin_tools中的工具配置覆盖create_harness(builtin_tools{web_fetch: {model: anthropic/claude-haiku-4-5-20251001}})每个厂商的小摘要模型表见源码_WEB_FETCH_MODELSBedrock 上 Haiku、Mantle 上openai.gpt-5.6-luna、OpenAI 上gpt-5.6-luna、Google 上gemini-3.5-flash等models.pyBedrock 上摘要模型跟随主模型的模型族Anthropic 系得 Haiku、OpenAI 系得 OpenAI 小模型无法识别族时复用主模型并告警。摘要请求刻意不带推理summarizing a page is a fast task也不转发缓存。web_search让 Agent 在回答中途上网查东西。模型厂商自带搜索OpenAI、Google、bedrock-mantle上经 Bedrock Web Search 的 GPT-5/GPT-6 模型、以及 Python 侧的 Anthropic时harness 直接启用它无需额外服务。其他场合Amazon Bedrock Converse、其余 Mantle 模型、Model实例web_search默认关闭并记录警告显式点名它会抛错。要在这些场合搜索用{web_search: exa}选入 Exa模型获得由 Exa 托管搜索支撑的web_search工具初始无密钥环境变量EXA_API_KEY可解除速率限制。exa在所有模型上都生效因此也会在厂商自带搜索处替换之。Bedrock Web Search 还需要bedrock-websearchIAM 动作包含在AmazonBedrockFullAccess内缺少时请求成功但每次搜索都失败。[!WARNING] 经由 Exa 的 Web 搜索会把模型写出的每条搜索查询发送给第三方服务 Exaexa.ai。查询会离开你的环境并受 Exa 隐私政策约束。create_harness(modelopenai/gpt-5.6-sol) # 原生搜索开启已在默认集中 create_harness(builtin_tools{web_search: exa}) # Bedrock经由 Exa 搜索第三方实现上_web_search_mode在构造时决定模式False关闭、exa选入第三方工具并告警、支持则走native模型标志不支持而显式点名时抛ValueError仅默认开启时降级为警告agent.py。缓存复用上下文caching默认开启。对话中的稳定部分系统提示词、工具定义、较早轮次在厂商支持处被缓存避免每轮重复计费处理。harness 为 Amazon Bedrock 与 Anthropic 直连配置自动缓存点与缓存工具定义CacheConfig(strategyauto, tools_ttlTrue)见 models.pyOpenAI、Gemini、Bedrock Mantle 与 LiteLLM 在服务端自行缓存无需配置或关闭。唯一无法缓存的只有ollama与预先构建的Model实例其厂商未知前者默认空操作并经由 Pythonlogging告警但显式要求缓存cachingTrue在不支持的厂商处会抛错让刻意的请求永不静默通过Model实例只告警。关闭 harness 配置的缓存create_harness(cachingFalse) # 不配置缓存记住对话会话持久化默认情况下 harness 把每次对话持久化到磁盘./.agent/sessions下默认目录常量DEFAULT_SESSION_DIRdefaults.py。但它不会自动恢复不带 id 时每次运行铸造全新会话因此新一次运行开启新会话。要续接对话从返回的 Agent 上读铸造的 idagent.session_id并作为session{id: ...}传回或事先提供你自己的稳定 id。每个请求构建一个以 id 为键的新 Agentagent create_harness(session{id: user-42}) agent(Where did we leave off?)设置session{dir: ...}选择状态存放位置默认./.agent/sessions。多主机场景下把自定义SessionManager实例例如S3SessionManager作为session传入即可接管。sessionFalse关闭持久化用于一次性运行。实现上默认管理器是SnapshotSessionManager配LocalFileStorage、save_latest_onmessage即每条完成的消息后保存——包括工具结果所以被打断的轮次保留其已保存进度仍在流式输出的文本与未完成的工具调用暂不保存agent.py。会话 id 会经_sanitize_session_id清洗只保留小写字母数字与-/_。长期记忆与会话分离harness 还会积累长期记忆它记住关于你偏好与项目的、它学到的事实保存为./.agent/memory下的 markdown 文件并在后续轮次折叠回上下文Agent 还有一个search_memory工具供按需回忆。长期记忆跨对话与会话生效。从对话历史提取事实每几轮在小型廉价模型上运行一次。generalist子 Agent 以只读方式共享这份记忆因此委托者能回忆起你告诉 Agent 的内容但它的子任务永远不会写回你的存储。设置memory{dir: ...}选择文件存放位置memoryFalse关闭。要换后端而保留 harness 行为传memory{stores: [...]}一个或多个 SDKMemoryStoreharness 以相同策略管理它们generalist仍以只读共享。要替换策略本身把自定义MemoryManager实例作为memory传入。提取在轮次之间的后台运行因此短运行可能先于最新轮次保存而结束。如果你掌管 Agent 生命周期在关闭时 flush 以持久化待写内容harness 的 CLI 会替你做这件事if agent.memory_manager: await agent.memory_manager.flush()create_harness(memoryFalse) # 无记忆 create_harness(memory{dir: ./my-memory}) # 自定义位置 create_harness(memory{stores: [my_store]}) # 换后端保留 harness 策略 create_harness(memorymy_memory_manager) # 你自己的策略原样使用源码上默认后端是FileMemoryStore配合LocalFileStorage命名空间到memory_dirmemory.py记忆注入策略是triggereveryTurn——不只是用户开口时多步工具循环中的每个自主步骤以及委托者都会查记忆。提取所用模型与web_fetch摘要模型同源小而快、凭证对齐。子 Agent 侧_ReadOnlyStore包装器剥掉一切写路径与提取配置只保留搜索与注入实现委托者只读共享记忆memory.py。教它技能Agent Skills把 Agent Skills 放进./.agent/skillsharness 自动加载。每个技能是一个子目录内含SKILL.mdYAML frontmatter 写name与description后面是 markdown 指令模型先看到元数据需要时经skills工具按需加载完整指令。技能可以把支撑文件与SKILL.md并列打包脚本、模板、参考资料供其指令让 Agent 运行或读取./.agent/skills/ ├── release-notes/ │ └── SKILL.md └── changelog/ ├── SKILL.md └── scripts/ └── collect_commits.py用skills指向别处路径、git URL 或它们的列表SDK 的SkillSources传配置好的AgentSkills插件则完全接管skillsFalse关闭。缺失目录会被跳过源码里_skills_plugin对True仅在./.agent/skills目录存在时才实例化插件见 agent.py。内置插件todos 与 environmentharness 自带两个内置功能插件默认均开启todos让 Agent 维护结构化任务清单并在每一步之前重新浮现它从而在长任务中保持按计划行事。清单活在 agent 状态里绝不进入持久历史。environment在每轮之前注入一段简短上下文块平台、当前日期、工作目录、项目AGENTS.md的内容以及向下几级目录中其他AGENTS.md/README.md的链接是链接而非内容保持块体量小。所有读取都经过 agent 的沙箱因此本地、Docker 或 SSH 运行都一致工作。builtin_plugins按名选择方式与builtin_tools相同传子集或[]关闭create_harness(builtin_plugins[]) # 无内置插件实现上内置插件注册表是_BUILTIN_PLUGINS {todos: Todos, environment: EnvironmentContext}agent.py插件 vended 的工具如 todos 的todo_write同样参与名字冲突检查插件实例与子 Agent 共享因此保留每 Agent 状态的插件应把状态放在agent.state而非self上。追踪OpenTelemetrySDK 会插桩 Agent模型循环、工具调用与子 Agent 委托都发出 OpenTelemetry spans。当你用标准的OTEL_TRACES_EXPORTER开启追踪时harness 替你接好导出器代码里无需传参export OTEL_TRACES_EXPORTERotlp # 或 console 把 span JSON 打到 stdout export OTEL_EXPORTER_OTLP_ENDPOINThttp://localhost:4318 # 你的 collector 监听地址headers、protocol 等通过其他OTEL_EXPORTER_OTLP_*变量设置。OTEL_TRACES_EXPORTER未设置时harness 完全不碰遥测无导出器、零成本。如果你的进程已配置 tracerharness 直接复用。用OTEL_SDK_DISABLEDtrue关闭。为工具调用加审批门禁默认情况下 Agent 每次工具调用都不询问直接执行。传interventions用预设、策略、SDK 处理器或它们的列表来门禁create_harness(interventionsask) # 审批每次工具调用 create_harness(interventionssmart) # LLM 风险分类器标记高风险调用待审批 # 自然语言策略成为分类器的评判准则 create_harness(interventionsRead-only, but writes under ./out are fine) # Cedar 策略文件需要 pip install strands-agents[cedar] create_harness(interventions./agent.cedar) # 完全控制你自己的处理器Slack 审批、自定义信任、Cedar 主体解析器 from strands.vended_interventions.hitl import HumanInTheLoop create_harness(interventionsHumanInTheLoop(askmy_slack_ask, enable_trustTrue)) # 在人工门禁下再叠一层策略引擎 create_harness(interventions[./agent.cedar, ask])预设通过 SDK 的 interrupt/resume 暂停因此服务可以异步收集审批带session_id时挂起的审批能跨进程重启存活。subagent子 Agent 继承该策略委托者无法绕过programmatic_tool_caller在沙箱内发出的工具调用也走同一执行器因此同样被门禁被拒绝的调用在代码中抛错需要交互审批的调用被拒绝。这是 SDKHumanInTheLoop与CedarAuthorization之上的糖预设覆盖不到的场景直接传那些处理器。strandsCLI 通过--interventions暴露同样能力在终端内联提示。解析逻辑在 interventions.py字符串语法是确定性的——预设关键字off/ask/smart映射为HumanInTheLoop配置、.cedar结尾的路径加载CedarAuthorization策略、任何其他字符串都被当作自然语言风险策略成为 LLM 分类器的提示词多个处理器按名字去重同名冲突会抛错。它就是一个 Strands Agent返回值是普通strands.Agent因此整个 SDK 都可用。任何 harness 未命名的关键字都直接透传给Agent你的显式值永远胜过 harness 默认。这是接入 SDK 原生特性的接缝把你的plugins、interventions或其他任何Agent关键字与 harness 的并列传入它们会组合起来。from strands.vended_interventions.hitl import HumanInTheLoop agent create_harness( checkpointingTrue, plugins[MyMetricsPlugin()], # 你的 Strands 插件加入 harness 的内置插件 interventions[HumanInTheLoop()], # SDK 特性直接接通 context_manageragentic, # 模型驱动的上下文替代 auto ) # 构造之后还能继续定制 agent.system_prompt \n\nAlways cite file paths as file:line.context_manager为auto默认或agenticSDK 预设、ContextManagerConfig字典或ContextManager实例自定义流水线、False/None关闭启用时大体积工具结果还会卸载到磁盘上下文中保留预览与引用Agent 因此能跑更久才压缩。SDK 的 Agent 拒绝裸配置字典harness 会先把它实例化为ContextManageragent.py。从终端聊天不想写代码而想要终端命令strandsCLI包装同一个 Agent上面每个选项都有对应旗标。它流式输出回复、显示 Agent 的推理与工具调用并能在脚本中干净地管道npm install -g strands-agents/cli # 提供 strands 命令 strands summarize what this repo does git diff | strands -p write a commit messageCLI 是独立的 npm 包仓库内源码位于 strands-cli/src。超出其旗标的部分自定义插件、interventions、自带模型实例请使用 Python API——那才是它的用武之地。独立取用的系统提示词系统提示词也可单独取用便于直接在其上构建例如每轮注入时间戳或请求上下文的 serving 层from strands_harness import HARNESS_CONTRACT, build_system_prompt prompt build_system_prompt( instructionsYou are a>赞分享人工智能大模型AI AgentAgent 框架多智能体工具调用MCP 服务【免费下载链接】harness-sdkBuild an agent harness and control it end-to-end. Open-source SDK for production AI agents in Python TypeScript - any model, any cloud.项目地址https://gitcode.com/GitHub_Trending/sdkpython13/harness-sdk点击查看免费下载相关推荐Strands Agents 上手指南用 create_harness() 构建端到端可控的 AI Agent HarnessStrands Agents 上手指南用 create_harness 构建端到端可控的 AI Agent Harness 本文以 harness sdk 仓人工智能大模型AI AgentAgent 框架多智能体工具调用MCP 服务Strands harness TypeScript 指南一行代码构建开箱即用的生产级 AI AgentStrands harness TypeScript 指南一行代码构建开箱即用的生产级 AI Agent 导读 Strands harness 是构建在 St人工智能大模型AI AgentAgent 框架多智能体工具调用MCP 服务Strands Agents TypeScript SDK 完全指南用模型驱动的方式在 Node.js 中构建生产级 AI AgentStrands Agents TypeScript SDK 完全指南用模型驱动的方式在 Node.js 中构建生产级 AI Agent 本篇技术指南以开源仓库人工智能大模型AI AgentAgent 框架多智能体工具调用MCP 服务上一篇home-manager配置备份策略防止数据丢失的最佳实践下一篇spotDL自动化脚本批量处理与计划任务集成创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
上一篇/下一篇内容由系统自动关联 返回资讯列表 →