网络安全【免费下载链接】sliverAdversary Emulation Framework项目地址https://gitcode.com/gh_mirrors/sl/sliver点击查看免费下载本指南以本仓库vendor/github.com/sendgrid/sendgrid-go/USAGE.md为骨架完整讲解用 Go 语言通过sendgrid-go官方 SDK 调用 Twilio SendGrid v3 Web API 的初始化方式、统一请求模型以及邮件发送、营销活动、联系人管理、订阅抑制、统计报表、账户与安全设置等全量端点同时结合 Sliver 服务端把 SendGrid 集成进 C2 事件通知管道的实际用法说明如何用该 SDK 支撑真实系统的告警推送。读完本文你将能够独立完成 SendGrid 的初始化、鉴权、发信与账户资源管理并理解其在安全运营工具中的落地模式。说明Sliver 项目在server/notifications/builder.go与server/configs/notifications.go中通过nikoksr/notify的 SendGrid 服务封装间接使用本库本文将以官方 USAGE 文档为主体展开并把这些仓库内的集成代码作为源码佐证。一、初始化与统一请求模型1.1 最小初始化所有调用都从三个要素开始API Key、请求路径、目标主机host。官方推荐的初始化方式如下package main import ( fmt github.com/sendgrid/sendgrid-go log os ) apiKey : os.Getenv(SENDGRID_API_KEY) host : https://api.sendgrid.com其中SENDGRID_API_KEY是 Twilio SendGrid 控制台生成的 v3 API Key注意SDK 使用Authorization: Bearer API Key进行鉴权host默认即https://api.sendgrid.com一般不需要改动。1.2 通用请求-响应模型sendgrid-go没有为每个端点生成强类型方法而是提供一个统一模型sendgrid.GetRequest(apiKey, path, host)构造请求对象之后设置Method、Body、QueryParams再交给sendgrid.API(request)执行request : sendgrid.GetRequest(apiKey, /v3/access_settings/activity, host) request.Method GET queryParams : make(map[string]string) queryParams[limit] 1 request.QueryParams queryParams response, err : sendgrid.API(request) if err ! nil { log.Println(err) } else { fmt.Println(response.StatusCode) fmt.Println(response.Body) fmt.Println(response.Headers) }request.Body为[]byte类型的 JSON 字符串用于 POST / PUT / PATCH / DELETE 请求体request.QueryParams为map[string]string用于查询参数response包含StatusCodeint、Bodystring、Headershttp.Header错误通过err返回而非通过 HTTP 状态码抛异常。这套模型贯穿全文所有端点后续示例均复用该结构。1.3 Subuser 上下文请求需要以子用户subuser身份代行调用时使用GetRequestSubuserrequest : sendgrid.GetRequestSubuser( os.Getenv(SENDGRID_API_KEY), /v3/tracking_settings/subscription, https://api.sendgrid.com, SUBUSER_USERNAME, )这会自动附加on-behalf-of: SUBUSER_USERNAME请求头适合父账户批量管理子用户。注意/v3/mail/send端点不支持on-behalf-of头。二、邮件发送MAIL2.1 v3 Mail Send 全局参数POST /v3/mail/send是最核心的端点USAGE 文档给出的完整示例覆盖了几乎所有字段按作用域可分为全局参数与personalizations内的个性化参数个性化字段会覆盖同名全局字段。完整请求体如下request : sendgrid.GetRequest(apiKey, /v3/mail/send, host) request.Method POST request.Body []byte( { asm: { group_id: 1, groups_to_display: [1, 2, 3] }, attachments: [ { content: [BASE64 encoded content block here], content_id: ii_139db99fdb5c3704, disposition: inline, filename: file1.jpg, name: file1, type: jpg } ], batch_id: [YOUR BATCH ID GOES HERE], categories: [category1, category2], content: [ { type: text/html, value: htmlpHello, world!/pimg src[CID GOES HERE]/img/html } ], custom_args: { New Argument 1: New Value 1, activationAttempt: 1, customerAccountNumber: [CUSTOMER ACCOUNT NUMBER GOES HERE] }, from: { email: sam.smithexample.com, name: Sam Smith }, headers: {}, ip_pool_name: [YOUR POOL NAME GOES HERE], mail_settings: { bcc: { email: ben.doeexample.com, enable: true }, bypass_bounce_management: { enable: true }, bypass_list_management: { enable: true }, bypass_spam_management: { enable: true }, bypass_unsubscribe_management: { enable: true }, footer: { enable: true, html: pThanks/brThe Twilio SendGrid Team/p, text: Thanks,/n The Twilio SendGrid Team }, sandbox_mode: { enable: false }, spam_check: { enable: true, post_to_url: http://example.com/compliance, threshold: 3 } }, personalizations: [ { bcc: [ { email: sam.doeexample.com, name: Sam Doe } ], cc: [ { email: jane.doeexample.com, name: Jane Doe } ], custom_args: { New Argument 1: New Value 1 }, headers: { X-Accept-Language: en, X-Mailer: MyApp }, send_at: 1409348513, subject: Hello, World!, substitutions: { id: substitutions, type: object }, to: [ { email: john.doeexample.com, name: John Doe } ] } ], reply_to: { email: sam.smithexample.com, name: Sam Smith }, sections: { section: { :sectionName1: section 1 text, :sectionName2: section 2 text } }, send_at: 1409348513, subject: Hello, World!, template_id: [YOUR TEMPLATE ID GOES HERE], tracking_settings: { click_tracking: { enable: true, enable_text: true }, ganalytics: { enable: true, utm_campaign: [NAME OF YOUR REFERRER SOURCE], utm_content: [USE THIS SPACE TO DIFFERENTIATE YOUR EMAIL FROM ADS], utm_medium: [NAME OF YOUR MARKETING MEDIUM e.g. email], utm_name: [NAME OF YOUR CAMPAIGN], utm_term: [IDENTIFY PAID KEYWORDS HERE] }, open_tracking: { enable: true, substitution_tag: %opentrack }, subscription_tracking: { enable: true, html: If you would like to unsubscribe and stop receiving these emails % clickhere %., substitution_tag: %click here%, text: If you would like to unsubscribe and stop receiving these emails % click here %. } } }) response, err : sendgrid.API(request) if err ! nil { log.Println(err) } else { fmt.Println(response.StatusCode) fmt.Println(response.Body) fmt.Println(response.Headers) }关键字段语义字段类型说明fromobject必填发件人email namepersonalizations[].toarray必填收件人每个 personalization 可以带独立的cc/bcc/subject/headers/send_atcontentarray邮件正文type可为text/plain、text/html等template_idstring事务模板 ID与content互斥使用attachments[].contentstring附件内容为 Base64 编码send_atintUnix 时间戳用于定时发送batch_idstring批次 ID可将多个定时发送关联以便统一取消mail_settings.sandbox_mode.enablebool沙箱模式投递时实际不发出用于测试tracking_settingsobject点击/打开/订阅跟踪与 Google Analytics 参数该端点有独立的 helper 封装见仓库内 vendor/github.com/sendgrid/sendgrid-go/helpers/mail/README.md可避免手写大段 JSON。2.2 批次发送Batch IDPOST /v3/mail/batch生成新的batch_idGET /v3/mail/batch/{batch_id}校验 batch ID 是否有效。通过 SMTPAPI 头的batch_id把多个定时mail/send请求关联为同一批次后可在预定发送时间前最多 10 分钟内调用取消定时发送端点统一取消。2.3 取消/暂停定时发送POST /user/scheduled_sends请求体{batch_id: YOUR_BATCH_ID, status: pause}用于按 batch 取消或暂停定时发送配套端点还包括GET /user/scheduled_sends列出全部、PATCH /user/scheduled_sends/{batch_id}更新状态、GET /user/scheduled_sends/{batch_id}查询单个、DELETE /user/scheduled_sends/{batch_id}删除取消/暂停记录。注意预定发送时间前 10 分钟以内的取消不保证生效。三、营销活动CAMPAIGNSMarketing Campaigns API 用于创建、管理、发送与排期营销活动POST /v3/campaigns创建活动请求体可含title、subject、sender_id、html_content、plain_content、list_ids、segment_ids、categories、custom_unsubscribe_url、ip_pool、suppression_group_id等发送或排期时才强制要求 subject、sender_id、content 与至少一个 list/segment IDGET /v3/campaigns按创建时间倒序返回全部活动不存在时返回空数组支持limit、offsetPATCH /v3/campaigns/{campaign_id}更新活动尤其适合只创建未补全参数的情况GET /v3/campaigns/{campaign_id}查询单个活动DELETE /v3/campaigns/{campaign_id}删除活动PATCH /v3/campaigns/{campaign_id}/schedules修改发送时间send_at为 Unix 时间戳POST /v3/campaigns/{campaign_id}/schedules设置发送时间GET /v3/campaigns/{campaign_id}/schedules查看已排期时间DELETE /v3/campaigns/{campaign_id}/schedules取消排期成功返回 204若活动正在发送中则只能改用取消方法POST /v3/campaigns/{campaign_id}/schedules/now立即发送POST /v3/campaigns/{campaign_id}/schedules/test发送测试邮件to可为单个地址或地址数组。四、联系人数据库CONTACTDB4.1 自定义字段与保留字段POST /v3/contactdb/custom_fields创建自定义字段请求体{name: pet, type: text}GET /v3/contactdb/custom_fields/GET /v3/contactdb/custom_fields/{custom_field_id}查询DELETE /v3/contactdb/custom_fields/{custom_field_id}删除GET /v3/contactdb/reserved_fields列出不可用作自定义字段名的保留字段。4.2 列表ListsPOST /v3/contactdb/lists创建列表{name: your list name}GET /v3/contactdb/lists查询全部无列表时返回空数组DELETE /v3/contactdb/lists批量删除请求体为 ID 数组如[1, 2, 3, 4]PATCH /v3/contactdb/lists/{list_id}改名GET /v3/contactdb/lists/{list_id}查询单个DELETE /v3/contactdb/lists/{list_id}删除可用delete_contactstrue连同联系人一起删除POST /v3/contactdb/lists/{list_id}/recipients按 recipient_id 批量加入GET /v3/contactdb/lists/{list_id}/recipients分页列出page、page_sizePOST /v3/contactdb/lists/{list_id}/recipients/{recipient_id}/DELETE /v3/contactdb/lists/{list_id}/recipients/{recipient_id}单个增删。4.3 联系人RecipientsPOST /v3/contactdb/recipients批量添加联系人可附带自定义字段默认字段示例age、email、first_name、last_nameGET /v3/contactdb/recipients分页查询文档特别提示批量删除后可能出现空页但未到列表末尾的情况应迭代到返回 404 为止PATCH /v3/contactdb/recipients更新一个或多个联系人请求体为对象数组DELETE /v3/contactdb/recipients按 ID 数组删除GET /v3/contactdb/recipients/billable_count可计费联系人数量GET /v3/contactdb/recipients/count联系人总数GET /v3/contactdb/recipients/search按自定义字段搜索{field_name}需 URL 编码日期字段只能用 Unix 时间戳搜索对created_at/updated_at等保留日期字段系统会自动扩展为整天范围GET /v3/contactdb/recipients/{recipient_id}/DELETE /v3/contactdb/recipients/{recipient_id}单个查询/删除GET /v3/contactdb/recipients/{recipient_id}/lists查询联系人所在的全部列表。4.4 分段SegmentsPOST /v3/contactdb/segments创建分段条件中第一个and_or必须为空字符串后续条件必须显式给出and或or运算符按字段类型区分日期用eq/ne/lt之前/gt之后文本用contains/eq/ne数字用eq/lt/gt邮件点击/打开用eq已打开/ne未打开且field取clicks.campaign_identifier或opens.campaign_identifierGET /v3/contactdb/segments/GET /v3/contactdb/segments/{segment_id}查询PATCH /v3/contactdb/segments/{segment_id}更新DELETE /v3/contactdb/segments/{segment_id}删除delete_contactstrue时连同段内联系人删除GET /v3/contactdb/segments/{segment_id}/recipients列出段内联系人分页。五、订阅抑制管理ASM 与 SUPPRESSION5.1 抑制组Unsubscribe GroupsPOST /v3/asm/groups创建抑制组请求体{description: ..., is_default: true, name: Product Suggestions}每个账户最多 25 个组GET /v3/asm/groups查询多个组用id参数追加组 IDPATCH /v3/asm/groups/{group_id}/GET /v3/asm/groups/{group_id}更新/查询DELETE /v3/asm/groups/{group_id}删除只能删除近 60 天未关联发送邮件的组若收件人随后对已删除组使用一键退订会被加入全局抑制列表。5.2 组内抑制POST /v3/asm/groups/{group_id}/suppressions向组添加抑制邮箱recipient_emails数组组已删除/不存在时自动落到全局抑制GET /v3/asm/groups/{group_id}/suppressions列出组内全部抑制POST /v3/asm/groups/{group_id}/suppressions/search批量查询哪些邮箱已被抑制DELETE /v3/asm/groups/{group_id}/suppressions/{email}移除单个抑制。5.3 全局抑制与 Suppression 汇总端点POST /v3/asm/suppressions/global添加全局抑制GET /v3/asm/suppressions/global/{email}查询未抑制时返回空对象{}DELETE /v3/asm/suppressions/global/{email}移除GET /v3/asm/suppressions列出全部抑制GET /v3/asm/suppressions/{email}查询某邮箱已退订的全部组阻塞blocks、退信bounces、无效邮箱invalid_emails、垃圾举报spam_reports、全局退订unsubscribes端点均支持时间范围查询start_time/end_time、分页limit/offset与按邮箱删除删除请求体统一支持delete_all或emails数组两种方式两者应独立使用。六、统计报表STATSGET /v3/stats全局邮件统计支持start_date、end_date、aggregated_byday/week/month、limit、offset父账户返回含子用户的聚合数据进阶统计按维度细分均只保留7 天邮件活动数据、默认每请求返回500 条GET /v3/browsers/stats浏览器、GET /v3/clients/stats与GET /v3/clients/{client_type}/stats客户端类型phone/tablet/webmail/desktop、GET /v3/devices/stats设备见下表、GET /v3/geo/stats国家/州country参数如US、GET /v3/mailbox_providers/stats邮箱服务商GET /v3/categories分类列表与GET /v3/categories/stats、GET /v3/categories/stats/sums分类统计与求和支持sort_by_metric、sort_by_direction子用户统计GET /v3/subusers/stats最多 10 个子用户、GET /v3/subusers/stats/monthly、GET /v3/subusers/stats/sums、GET /v3/subusers/{subuser_name}/stats/monthly使用sort_by_metric时不能按bounce_drops、deferred、invalid_emails、processed、spam_report_drops、spam_reports、unsubscribe_drops排序。设备类型表设备说明示例Desktop桌面邮件客户端Outlook、Sparrow、Apple MailWebmail网页邮箱Yahoo、Google、AOL、Outlook.comPhone智能手机iPhone、Android、Blackberry 等Tablet平板iPad、安卓平板等Other无法识别的设备—七、账户安全与管理ACCESS、IP、API KEY、SENDERS、USER7.1 IP 访问管理Access SettingsGET /v3/access_settings/activity查询最近尝试访问账户的 IP 列表UI 或 API 均可支持limitPOST /v3/access_settings/whitelist白名单加 IP可一次添加多个支持精确 IP、通配192.*.*.*与 CIDR192.168.1.3/32数量无上限注意移除自己的 IP 会把自己挡在账户外GET /v3/access_settings/whitelist、DELETE /v3/access_settings/whitelist按ids数组删除、GET/DELETE /v3/access_settings/whitelist/{rule_id}查询与删除。7.2 IP 与 IP 池IPSGET /v3/ips含subuser/ip/exclude_whitelabels过滤、GET /v3/ips/assigned、GET /v3/ips/{ip_address}查询某 IP 所属的所有池IP 池POST /v3/ips/pools每账户最多 10 个池、GET /v3/ips/pools、PUT /v3/ips/pools/{pool_name}改名、GET /v3/ips/pools/{pool_name}、DELETE /v3/ips/pools/{pool_name}、POST /v3/ips/pools/{pool_name}/ips加 IP生效最长约 60 秒、DELETE /v3/ips/pools/{pool_name}/ips/{ip}未指定池时邮件会使用任意可用 IPIP 加热warmupPOST /v3/ips/warmup、GET /v3/ips/warmup、GET /v3/ips/warmup/{ip_address}、DELETE /v3/ips/warmup/{ip_address}。7.3 API Key 与权限域POST /v3/api_keys创建name必填可用scopes限定权限如mail.send、alerts.create、alerts.read每账户上限 100 个超限返回 403GET /v3/api_keys查询支持limitPUT /v3/api_keys/{api_key_id}更新名称与 scopesPATCH /v3/api_keys/{api_key_id}仅更新名称GET /v3/api_keys/{api_key_id}查询单个不存在返回 404DELETE /v3/api_keys/{api_key_id}吊销生效有传播延迟GET /v3/scopes列出当前 API Key 可访问的全部权限域。7.4 发件人认证Senders / Sender AuthenticationPOST /v3/senders创建发件人身份最多 100 个from.email需验证域名已认证则自动验证否则向该地址发验证邮件请求体含address、city、state、zip、country、nickname、from、reply_toGET /v3/senders、PATCH /v3/senders/{sender_id}更新from.email需重新验证、GET /v3/senders/{sender_id}、DELETE /v3/senders/{sender_id}、POST /v3/senders/{sender_id}/resend_verification域名认证whitelabelPOST /v3/whitelabel/domains创建自动安全开启时提供 3 条 CNAME关闭时提供 2 条 TXT 1 条 MX支持username参数创建子用户认证或通过关联流程分配、GET /v3/whitelabel/domains、GET /v3/whitelabel/domains/default、GET/DELETE /v3/whitelabel/domains/subuser、PATCH/GET/DELETE /v3/whitelabel/domains/{domain_id}、POST /v3/whitelabel/domains/{domain_id}/subuser、POST/DELETE /v3/whitelabel/domains/{id}/ips[/{ip}]、POST /v3/whitelabel/domains/{id}/validate反向 DNSPOST /v3/whitelabel/ips使用与域名认证相同的子域、GET /v3/whitelabel/ips支持ip前缀搜索、GET/DELETE /v3/whitelabel/ips/{id}、POST /v3/whitelabel/ips/{id}/validate链接品牌link brandingPOST /v3/whitelabel/links、GET /v3/whitelabel/links、GET /v3/whitelabel/links/default默认品牌按已认证且标记 default 的链接品牌 迁移的旧式品牌 默认 sendgrid 链接品牌顺序确定、GET/DELETE /v3/whitelabel/links/subuser、PATCH/GET/DELETE /v3/whitelabel/links/{id}、POST /v3/whitelabel/links/{id}/validate、POST /v3/whitelabel/links/{link_id}/subuser。7.5 用户与账户USER账户信息GET /v3/user/account、GET /v3/user/credits信用额度余额个人资料PUT /v3/user/email、GET /v3/user/email、PUT /v3/user/passwordnew_passwordold_password、PATCH /v3/user/profile至少传一个参数、GET /v3/user/profile、PUT /v3/user/username、GET /v3/user/username强制 TLSPATCH /v3/user/settings/enforced_tlsrequire_tls/require_valid_cert任一开启而收件方不支持时消息被丢弃并记录 block 事件、GET /v3/user/settings/enforced_tls事件 WebhookPATCH /v3/user/webhooks/event/settings逐事件开关bounce、click、deferred、delivered、dropped、open、processed、spam_report、unsubscribe、group_unsubscribe、group_resubscribe、GET /v3/user/webhooks/event/settings、POST /v3/user/webhooks/event/test入站解析Inbound ParsePOST /v3/user/webhooks/parse/settings、GET /v3/user/webhooks/parse/settings、PATCH/GET/DELETE /v3/user/webhooks/parse/settings/{hostname}、GET /v3/user/webhooks/parse/stats解析消息上限 20MB。八、其他资源端点AlertsPOST /v3/alerts用量告警或统计通知type可为usage_limit或stats_notification后者用frequency指定daily/weekly/monthly、GET /v3/alerts、PATCH/GET/DELETE /v3/alerts/{alert_id}Email ActivityGET /v3/messages需购买额外邮件活动历史query格式为query{query_type}{query_content}并 URL 编码支持、!、、运算符如queryto_email%3D%22example%40example.com%22、GET /v3/messages/{msg_id}、POST /v3/messages/downloadCSV 导出链接 3 天有效、包含最近 100 万条消息、每 12 小时限 1 次、GET /v3/messages/download/{download_uuid}Templates事务模板 CRUDPOST/GET /v3/templates、PATCH/GET/DELETE /v3/templates/{template_id}每账户最多 300 个模板、300 个版本GET /v3/templates支持generationslegacy,dynamic过滤与模板版本管理POST /v3/templates/{template_id}/versions、PATCH/GET/DELETE /v3/templates/{template_id}/versions/{version_id}、POST /v3/templates/{template_id}/versions/{version_id}/activateSubusersPOST /v3/subusers创建、GET /v3/subusers、GET /v3/subusers/reputations、PATCH /v3/subusers/{subuser_name}启用/禁用、DELETE /v3/subusers/{subuser_name}永久删除、PUT /v3/subusers/{subuser_name}/ips、PUT/POST/GET/DELETE /v3/subusers/{subuser_name}/monitor监控采样Partner SettingsGET /v3/partner_settings、PATCH/GET /v3/partner_settings/new_relic。九、仓库集成实证SendGrid 在 Sliver 通知管道中的用法vendor/github.com/sendgrid/sendgrid-go位于 Sliver 的依赖目录中其上游sendgrid-go的 USAGE 文档即本文主体定义的是如何用 Go 直接调用 SendGrid v3 API而在本仓库中SendGrid 被接入服务端的运维通知系统用于把 C2 运行事件推送到邮件配置结构定义于 server/configs/notifications.goSendGridConfig包含api_key、sender_address、sender_name与receivers收件人列表并内嵌NotificationServiceConfig含enabled与事件过滤events服务装配逻辑位于 server/notifications/builder.gobuildSendGrid校验APIKey、SenderAddress、SenderName与Receivers非空后调用notifysendgrid.New(cfg.APIKey, cfg.SenderAddress, cfg.SenderName)构造服务再通过AddReceivers注册收件人配置开关与事件过滤由 server/notifications/builder.go 完成仅当services.SendGrid.Enabled为真时才注册该通道并支持按事件类型过滤整体生命周期见 server/notifications/builder.go 的Start()读取configs.GetServerConfig()若Notifications未启用则直接跳过启用后由NewManager构建全部通知通道并启动。这一集成展示了本文前几节所讲初始化 API Key 收件人模型在真实系统中的最小落地形态仓库里并没有手写大段 JSON 请求体而是借助nikoksr/notify的 SendGrid 服务封装完成发信sendgrid-go则作为底层 HTTP 客户端被间接依赖。十、常见错误处理与边界约束所有端点均通过response.StatusCode与err双重判断结果建议统一封装log.Println(err)分支存在数量上限的约束API Key 100 个、抑制组 25 个、IP 池 10 个、发件人身份 100 个、事务模板/版本各 300 个——超出会返回 4xx数据保留限制进阶统计仅保留 7 天活动数据Email Activity CSV 仅覆盖最近 100 万条消息时间约束定时发送在预定时间前 10 分钟内取消不保证生效删除抑制组需组近 60 天未被使用向 IP 池添加 IP 最长约 60 秒生效权限边界on-behalf-of头不支持v3/mail/send删除操作大多为永久性操作如删除子用户、吊销 API Key。结语sendgrid-go用一套GetRequest API response的统一模型覆盖了 Twilio SendGrid v3 API 的邮件发送、营销活动、联系人、抑制、统计、账户与安全等数十个端点学习成本集中而非分散。以本文为参考配合仓库内 vendor/github.com/sendgrid/sendgrid-go/USAGE.md 原文档与 server/notifications/builder.go 的集成示例即可快速接入从单封事务邮件到完整事件告警管道的各类场景。赞分享网络安全【免费下载链接】sliverAdversary Emulation Framework项目地址https://gitcode.com/gh_mirrors/sl/sliver点击查看免费下载相关推荐用 FanControl 风扇控制 30 分钟压掉机箱噪音新手第一夜实操记录用 FanControl 风扇控制 30 分钟压掉机箱噪音新手第一夜实操记录 凌晨一点CPU 才 42°C机箱风扇却像吹风机一样转——问题不在硬件而在主桌面应用智能硬件Boss Show Time招聘信息时间可视化的终极解决方案Boss Show Time招聘信息时间可视化的终极解决方案 还在为招聘信息的时间不透明而烦恼吗每天面对海量的职位信息却不知道哪些是真正新鲜的机会Bos前端Twilio SendGrid PHP API 库使用教程Twilio SendGrid PHP API 库使用教程 项目介绍 Twilio SendGrid PHP API 库是一个官方提供的 PHP 库用于通过后端开发工具上一篇Hydra 配置特化Specializing Config让配置根据其他配置项动态决策下一篇IBM发布320亿参数长上下文模型Granite-4.0-H-Small多语言代码生成能力达行业领先水平创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
XAgent 内环 ReACT 链式搜索深度解析:ReACTChainSearch 如何驱动子任务逐步执行 AI Agent大模型后端任务调度 【免费下载链接】XAgent An Autonomous LLM Agent for Complex Task Solving 项目地址: https://gitcode.com/gh_mirrors/xa/XAgent 点击查看 免费下载 本文基于 XAgent 仓库中 ReACT.md 文档及其对应源码 ReACT.py,系统讲解… · 2026/9/25 3:43:29
作业批改系统实战:从OCR图像识别到判分规则全流程解析 简介:作业批改系统是一套面向教学场景的多角色Web应用源码,完整覆盖学生、教师、管理员三类账号的功能闭环。学生端包含注册登录、点卡充值、个人信息维护、作文上传与上传管理、请求老师批改及批改结果查询;教师端可在线批改作文、获取点数并… · 2026/9/25 3:43:29
BewlyBewly Adapted Styles 开发指南:编写深色模式与主题色适配样式的规范与实践 前端 【免费下载链接】BewlyBewly Just make a few small changes to your Bilibili homepage. (English | 简体中文 | 正體中文 | 廣東話) 项目地址: https://gitcode.com/gh_mirrors/be/BewlyBewly 点击查看 免费下载 导读:BewlyBewly 是一个对 Bilib… · 2026/9/25 3:43:29
影视仓TVBox 4K配置地址全攻略:自制JSON接口与硬件带宽优化指南 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 4:20:10
AirPods在Windows上连接不稳定的原因与优化方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 4:20:10
模拟CMOS运算放大器设计全流程:从手算到仿真与版图实现 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 4:20:10
麒麟系统安装全攻略:从虚拟机到物理机的完整指南 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 4:20:10
DeepAgent 交互层重写复盘:SSE 流式输出落地与长期记忆半成品实践 1. 为什么我要把 DeepAgent 的交互层整个重写一遍去年年底我开始做一个内部用的智能体平台,代号 DeepAgent,目标很明确:让团队里不懂代码的运营同学也能通过自然语言驱动一套自动化流程,比如自动整理竞品动态、自动生成周报草稿、… · 2026/9/25 4:20:10
软件测试ROI怎么算?从缺陷成本到业务价值的量化指南 做测试这行,早晚要面对一个灵魂拷问:你们软件测试的ROI到底是多少?这两年公司一开会提降本增效,这个问题就会准时出现。很多测试负责人被问住以后,支支吾吾半天,最后只能搬出用例数、执行率、自动化覆盖率来… · 2026/9/25 4:19:56
创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31
MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:37