ai-agent-book 精选快照(<2MB 代码与文档,来自 github.com/bojieli/ai-agent-book)
Build latest book artifacts / build (push) Canceled after 0s
dependency resolution / resolve (3.11) (push) Canceled after 0s
dependency resolution / resolve (3.13) (push) Canceled after 0s
deploy-pages / build (push) Canceled after 0s
deploy-pages / deploy (push) Canceled after 0s
i18n consistency check / check (push) Canceled after 0s
provider adoption tests / test (chapter2/context-compression) (push) Canceled after 0s
provider adoption tests / test (chapter2/prompt-injection) (push) Canceled after 0s
provider adoption tests / test (chapter2/system-hint) (push) Canceled after 0s
provider adoption tests / test (chapter3/log-sanitization) (push) Canceled after 0s
web-search-agent tests / test (push) Canceled after 0s
web-search-agent tests / agentbook (push) Canceled after 0s
Build latest book artifacts / build (push) Canceled after 0s
dependency resolution / resolve (3.11) (push) Canceled after 0s
dependency resolution / resolve (3.13) (push) Canceled after 0s
deploy-pages / build (push) Canceled after 0s
deploy-pages / deploy (push) Canceled after 0s
i18n consistency check / check (push) Canceled after 0s
provider adoption tests / test (chapter2/context-compression) (push) Canceled after 0s
provider adoption tests / test (chapter2/prompt-injection) (push) Canceled after 0s
provider adoption tests / test (chapter2/system-hint) (push) Canceled after 0s
provider adoption tests / test (chapter3/log-sanitization) (push) Canceled after 0s
web-search-agent tests / test (push) Canceled after 0s
web-search-agent tests / agentbook (push) Canceled after 0s
This commit is contained in:
@@ -0,0 +1,244 @@
|
||||
[
|
||||
{
|
||||
"id": "rule-excessive-em-dash-separators",
|
||||
"name": "避免用连续破折号代替常规断句",
|
||||
"definition": "当一句或一段中连续使用多个破折号来串联普通并列信息、步骤或分句,导致层次不清、阅读节奏拖长时命中。应改用句号、逗号、冒号或分句。若破折号只偶尔用于插入说明、语意转折或强调,且前后关系明确,则不命中。",
|
||||
"detector": {
|
||||
"type": "llm"
|
||||
},
|
||||
"bad_example": "关于季度复盘会议——时间定于本周五下午三点——地点在三号会议室——请提前准备数据报表——如有冲突请及时告知——谢谢配合。",
|
||||
"good_example": "季度复盘定在这周五下午三点,三号会议室。请提前准备好数据报表,时间冲突的话提前跟我说。",
|
||||
"rewrite_hint": "先判断各部分是并列信息还是独立句意;并列项用逗号,完整意思用句号,只在确有插入或强调作用时保留破折号。",
|
||||
"scope": [
|
||||
"产品发布稿",
|
||||
"公众号文章",
|
||||
"邮件"
|
||||
],
|
||||
"source_ids": [
|
||||
"fp-001",
|
||||
"fp-008",
|
||||
"fp-017"
|
||||
],
|
||||
"status": "candidate",
|
||||
"last_confirmed_batch": 3
|
||||
},
|
||||
{
|
||||
"id": "rule-avoid-repeated-not-but-contrast",
|
||||
"name": "避免反复使用“不是……而是……”对仗",
|
||||
"definition": "当“不是……而是……”被连续用于定义产品、解释概念或制造升华,尤其连续出现两次以上并形成整齐对仗时命中。这类写法常以否定铺垫代替直接说明。若上下文确实需要纠正一种明确误解,并且只使用一次来表达真实对立,则不命中。",
|
||||
"detector": {
|
||||
"type": "llm"
|
||||
},
|
||||
"bad_example": "这不是一次简单的版本更新,而是一次体验的全面革新;不是功能的堆砌,而是对用户需求的深度回应。",
|
||||
"good_example": "这次版本更新改动很大:界面重做,核心流程缩短了两步,都来自上一版用户反馈里最高频的问题。",
|
||||
"rewrite_hint": "删去否定式铺垫,直接说明对象是什么、具体改了什么,并用事实或例子支撑判断。",
|
||||
"scope": [
|
||||
"README 段落",
|
||||
"产品发布稿",
|
||||
"公众号文章"
|
||||
],
|
||||
"source_ids": [
|
||||
"fp-002",
|
||||
"fp-009",
|
||||
"fp-015"
|
||||
],
|
||||
"status": "candidate",
|
||||
"last_confirmed_batch": 3
|
||||
},
|
||||
{
|
||||
"id": "rule-avoid-repeated-let-us-slogans",
|
||||
"name": "避免连用“让我们”式号召口号",
|
||||
"definition": "当邮件、README 或产品稿连续以“让我们”开头,使用“共同见证”“携手并进”等口号来代替具体通知、邀请或行动说明时命中。若只出现一次,且确实是在自然地发出明确、可执行的共同邀请,则不命中。",
|
||||
"detector": {
|
||||
"type": "llm"
|
||||
},
|
||||
"bad_example": "让我们共同见证这个激动人心的时刻!让我们一起开启数字化转型的全新篇章。让我们携手并进,共创辉煌明天。",
|
||||
"good_example": "新版本今天上线了,期待大家试用之后多提意见。",
|
||||
"rewrite_hint": "直接交代发生了什么,以及希望读者采取什么具体行动,如试用、反馈、提 issue 或提交 PR。",
|
||||
"scope": [
|
||||
"README 段落",
|
||||
"产品发布稿",
|
||||
"邮件"
|
||||
],
|
||||
"source_ids": [
|
||||
"fp-003",
|
||||
"fp-010",
|
||||
"fp-018"
|
||||
],
|
||||
"status": "candidate",
|
||||
"last_confirmed_batch": 3
|
||||
},
|
||||
{
|
||||
"id": "rule-avoid-mechanical-sequence-markers",
|
||||
"name": "避免机械堆叠顺序连接词",
|
||||
"definition": "当短段落逐句套用“首先、其次、再次、然后、最后、总而言之”等连接词,实际内容本可自然串联,因而呈现模板化或公文腔时命中。若步骤顺序严格、跳步会造成错误,或连接词确实用于澄清复杂层级,则不命中。",
|
||||
"detector": {
|
||||
"type": "llm"
|
||||
},
|
||||
"bad_example": "首先,克隆本仓库到本地。其次,安装所需依赖。再次,配置环境变量。然后,运行初始化脚本。最后,启动开发服务器即可。",
|
||||
"good_example": "克隆仓库后安装依赖,把 .env.example 复制为 .env 并填好密钥,再运行 init.sh 初始化,最后 make dev 启动服务。",
|
||||
"rewrite_hint": "删除不提供额外信息的序号套话,改用动作之间的真实关系连接;必要时只保留少量“再”“最后”,或改成清晰的步骤列表。",
|
||||
"scope": [
|
||||
"README 段落",
|
||||
"产品发布稿",
|
||||
"邮件"
|
||||
],
|
||||
"source_ids": [
|
||||
"fp-004",
|
||||
"fp-012",
|
||||
"fp-019"
|
||||
],
|
||||
"status": "candidate",
|
||||
"last_confirmed_batch": 3
|
||||
},
|
||||
{
|
||||
"id": "rule-remove-generic-era-openings",
|
||||
"name": "删除空泛的“在……时代”开场",
|
||||
"definition": "当文章以“在……的今天”“在这个……的时代”等宏大背景开头,但该背景没有提供具体时间、事件或因果信息,只用于烘托气氛时命中。若时代或日期本身是论证所需的关键背景,并有具体事实支撑,则不命中。",
|
||||
"detector": {
|
||||
"type": "llm"
|
||||
},
|
||||
"bad_example": "在这个快节奏的时代,高效的沟通显得尤为珍贵。在这个充满变化的时代,稳定的协作关系更值得珍惜。",
|
||||
"good_example": "最近项目节奏快,咱们沟通尽量简短高效;也希望协作关系保持稳定,有问题随时同步。",
|
||||
"rewrite_hint": "直接写当前发生的具体变化、影响和要求,用“最近”“这两年”等可核实时间范围替代泛化时代判断。",
|
||||
"scope": [
|
||||
"产品发布稿",
|
||||
"公众号文章",
|
||||
"邮件"
|
||||
],
|
||||
"source_ids": [
|
||||
"fp-005",
|
||||
"fp-010",
|
||||
"fp-016"
|
||||
],
|
||||
"status": "candidate",
|
||||
"last_confirmed_batch": 3
|
||||
},
|
||||
{
|
||||
"id": "rule-control-emoji-density",
|
||||
"name": "控制 emoji 的使用密度与场合",
|
||||
"definition": "当正式产品稿中使用 emoji,或公众号段落中几乎每个信息点都附带表情,造成视觉干扰、削弱专业感时命中。正式稿件应去除 emoji;轻松社交场景中少量、与语义直接相关且不妨碍阅读的 emoji 不应一概判定为问题。",
|
||||
"detector": {
|
||||
"type": "llm"
|
||||
},
|
||||
"bad_example": "🎉 重磅来袭!🔥 全新智能手表正式发布!⌚ 超长续航 14 天 🔋,心率血氧全天候监测 ❤️,50 米防水 🏊,现在下单立减 200 元 💰,错过再等一年 ⏰!",
|
||||
"good_example": "新款智能手表发布:续航 14 天,支持心率血氧监测和 50 米防水,首发价立减 200 元。",
|
||||
"rewrite_hint": "正式文本删除全部 emoji;其他场景先去掉装饰性表情,只在确有语气或分类作用时保留极少量。",
|
||||
"scope": [
|
||||
"产品发布稿",
|
||||
"公众号文章"
|
||||
],
|
||||
"source_ids": [
|
||||
"fp-006",
|
||||
"fp-011"
|
||||
],
|
||||
"status": "candidate",
|
||||
"last_confirmed_batch": 2
|
||||
},
|
||||
{
|
||||
"id": "rule-avoid-forced-parallelism",
|
||||
"name": "避免刻意堆叠同构排比",
|
||||
"definition": "当三句或更多分句反复使用完全相同的开头和句法框架,如“读书可以……”“它让……”“每一次……都是……”,且内容多为抽象赞美、缺少信息增量时命中。若排比用于必要的结构对照、篇幅适度且每项都有实质信息,则不命中。",
|
||||
"detector": {
|
||||
"type": "llm"
|
||||
},
|
||||
"bad_example": "读书可以拓宽视野,读书可以沉淀心灵,读书可以启迪智慧,读书可以点亮人生。",
|
||||
"good_example": "读书的好处很多:视野会变宽,心能静下来,看问题也会多几个角度。",
|
||||
"rewrite_hint": "保留一个总述,将各项改成不同句式或合并为并列成分;删去重复、空泛或意义相近的项。",
|
||||
"scope": [
|
||||
"README 段落",
|
||||
"公众号文章"
|
||||
],
|
||||
"source_ids": [
|
||||
"fp-007",
|
||||
"fp-014",
|
||||
"fp-017"
|
||||
],
|
||||
"status": "candidate",
|
||||
"last_confirmed_batch": 3
|
||||
},
|
||||
{
|
||||
"id": "rule-replace-empty-metaphors-with-facts",
|
||||
"name": "用具体事实替代空洞抒情比喻",
|
||||
"definition": "当“智者、屏障、明灯、灯塔”等比喻只负责抬高语气,却没有说明产品效果、处理进度或实际价值,甚至替代了读者需要的关键信息时命中。若比喻准确、简洁,并能帮助理解陌生概念或符合文学性场景,则不命中。",
|
||||
"detector": {
|
||||
"type": "llm"
|
||||
},
|
||||
"bad_example": "您的建议宛如一盏明灯,照亮了我们产品改进的前路;您的信任仿佛一座灯塔,指引着我们不断前行。",
|
||||
"good_example": "您提的建议很具体,我们已经记进需求池,下个版本会先改其中两条。谢谢您的信任。",
|
||||
"rewrite_hint": "删除装饰性喻体,补上可验证的信息,如实际体验、使用场景、已采取的动作和后续安排。",
|
||||
"scope": [
|
||||
"公众号文章",
|
||||
"邮件"
|
||||
],
|
||||
"source_ids": [
|
||||
"fp-013",
|
||||
"fp-020"
|
||||
],
|
||||
"status": "candidate",
|
||||
"last_confirmed_batch": 3
|
||||
},
|
||||
{
|
||||
"id": "rule-split-overloaded-sentences",
|
||||
"name": "拆分承载过多层次的长句",
|
||||
"definition": "当一句话同时塞入背景、原因、条件、多个动作、结果和要求,主要依靠“且、并、同时、为了、让”等连续连接,读者难以一次识别主干时命中。句子较长但主干清楚、修饰关系单一且不存在理解负担时不命中。",
|
||||
"detector": {
|
||||
"type": "llm"
|
||||
},
|
||||
"bad_example": "这次更新在保留原有工作台布局的基础上通过重新组织导航层级并合并重复入口同时优化首次加载和列表刷新策略让用户从打开应用到完成一次记录的整个过程都比以前更连贯也更省时间。",
|
||||
"good_example": "这次更新保留了原有工作台布局,同时重新组织导航层级、合并重复入口。首次加载和列表刷新也做了优化,从打开应用到完成记录会更连贯。",
|
||||
"rewrite_hint": "先提取背景、改动、要求和结果,再按层次拆成两到三句;每句只保留一个主要动作或判断。",
|
||||
"scope": [
|
||||
"产品发布稿",
|
||||
"邮件"
|
||||
],
|
||||
"source_ids": [
|
||||
"fp-021",
|
||||
"fp-024"
|
||||
],
|
||||
"status": "candidate",
|
||||
"last_confirmed_batch": 2
|
||||
},
|
||||
{
|
||||
"id": "rule-remove-repeated-attention-prefaces",
|
||||
"name": "删除反复出现的提醒性套话",
|
||||
"definition": "当连续句子都用“值得注意的是”“需要特别注意的是”“更值得注意的是”等元话语开头,只是重复强调而没有建立新的信息层级时命中。若只在关键风险首次出现时使用一次,且确实需要提示读者改变注意焦点,则不命中。",
|
||||
"detector": {
|
||||
"type": "llm"
|
||||
},
|
||||
"bad_example": "值得注意的是,本周五是最终截止时间。需要特别注意的是,逾期提交将影响下游联调。还值得注意的是,附件命名必须统一。",
|
||||
"good_example": "最终截止时间是本周五,逾期会影响下游联调。附件请按统一格式命名。",
|
||||
"rewrite_hint": "删掉“值得注意的是”等前缀,直接写结论、截止时间、后果或操作要求;需要突出时依靠信息顺序而非重复提醒。",
|
||||
"scope": [
|
||||
"公众号文章",
|
||||
"邮件"
|
||||
],
|
||||
"source_ids": [
|
||||
"fp-022",
|
||||
"fp-025"
|
||||
],
|
||||
"status": "candidate",
|
||||
"last_confirmed_batch": 3
|
||||
},
|
||||
{
|
||||
"id": "rule-avoid-passive-voice-chains",
|
||||
"name": "避免连续使用“被”字被动句",
|
||||
"definition": "当多个相邻分句都采用“对象被执行者处理”的结构,且执行者明确、适合直接充当主语时命中。若执行者未知、不重要,或文本确实需要突出受影响对象,则单个被动句不命中。",
|
||||
"detector": {
|
||||
"type": "llm"
|
||||
},
|
||||
"bad_example": "配置文件会被启动器读取,依赖会被安装脚本自动下载,数据库会被迁移工具初始化,服务会被进程管理器拉起。",
|
||||
"good_example": "启动器读取配置文件,安装脚本自动下载依赖,迁移工具初始化数据库,进程管理器随后拉起服务。",
|
||||
"rewrite_hint": "把工具、模块或责任方移到主语位置,改写为“谁做什么”;只有确需突出承受结果的对象时才保留被动表达。",
|
||||
"scope": [
|
||||
"README 段落",
|
||||
"产品发布稿"
|
||||
],
|
||||
"source_ids": [
|
||||
"fp-023",
|
||||
"fp-026"
|
||||
],
|
||||
"status": "candidate",
|
||||
"last_confirmed_batch": 3
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,138 @@
|
||||
{
|
||||
"boundary": [
|
||||
{
|
||||
"id": "b1",
|
||||
"scene": "产品发布稿",
|
||||
"expected_sources": ["fp-001", "fp-008"],
|
||||
"text": "全新降噪耳机——沉浸式体验——一触即达的智能降噪——40 小时超长续航——让音乐回归纯粹——即刻预约——享首发礼遇!"
|
||||
},
|
||||
{
|
||||
"id": "b2",
|
||||
"scene": "公众号文章",
|
||||
"expected_sources": ["fp-002", "fp-009", "fp-015"],
|
||||
"text": "坚持不是咬牙硬撑,而是找到自己的节奏;努力不是做给别人看,而是对得起自己的选择。"
|
||||
},
|
||||
{
|
||||
"id": "b3",
|
||||
"scene": "公众号文章",
|
||||
"expected_sources": ["fp-007", "fp-014"],
|
||||
"text": "我们优化了搜索,我们重构了推荐,我们升级了播放,我们改进了评论。"
|
||||
},
|
||||
{
|
||||
"id": "b4",
|
||||
"scene": "邮件",
|
||||
"expected_sources": ["fp-003", "fp-018"],
|
||||
"text": "让我们携手开启新财年的征程。让我们以饱满的热情迎接每一个挑战。"
|
||||
},
|
||||
{
|
||||
"id": "b5",
|
||||
"scene": "README 段落",
|
||||
"expected_sources": ["fp-004", "fp-012", "fp-019"],
|
||||
"text": "首先安装依赖,其次配置密钥,再次运行迁移脚本,最后启动服务。"
|
||||
},
|
||||
{
|
||||
"id": "b6",
|
||||
"scene": "产品发布稿",
|
||||
"expected_sources": ["fp-006", "fp-011", "fp-007", "fp-014"],
|
||||
"text": "新品上市 🎉🎉!超美配色 🌈,超强性能 🚀,超值价格 💰,快来抢购吧 🛒✨!"
|
||||
},
|
||||
{
|
||||
"id": "b7",
|
||||
"scene": "公众号文章",
|
||||
"expected_sources": ["fp-005", "fp-016"],
|
||||
"text": "在自媒体蓬勃发展的今天,内容创作者站在了流量风口。在这个注意力稀缺的时代,好内容愈发珍贵。"
|
||||
},
|
||||
{
|
||||
"id": "b8",
|
||||
"scene": "邮件",
|
||||
"expected_sources": ["fp-001", "fp-008", "fp-002", "fp-009", "fp-015"],
|
||||
"text": "这次改版——不是小修小补——而是全面升级——不是功能的叠加——而是体验的飞跃。"
|
||||
},
|
||||
{
|
||||
"id": "b9",
|
||||
"scene": "README 段落",
|
||||
"expected_sources": ["fp-021", "fp-024"],
|
||||
"text": "为了确保首次部署时各项依赖能够按照正确顺序完成安装并让初始化脚本拿到全部必要参数同时避免网络波动导致中途失败建议在运行命令前逐项检查配置文件和代理设置然后再启动自动安装流程。"
|
||||
},
|
||||
{
|
||||
"id": "b10",
|
||||
"scene": "产品发布稿",
|
||||
"expected_sources": ["fp-022", "fp-025"],
|
||||
"text": "值得注意的是,新版本支持离线模式。更值得注意的是,缓存空间可以自行设置。还值得注意的是,旧数据不会被删除。"
|
||||
},
|
||||
{
|
||||
"id": "b11",
|
||||
"scene": "邮件",
|
||||
"expected_sources": ["fp-023", "fp-026"],
|
||||
"text": "需求已被产品组确认,接口将被后端团队调整,测试用例会被质量组补齐,上线时间则会被项目经理重新安排。"
|
||||
}
|
||||
],
|
||||
"retention": [
|
||||
{
|
||||
"id": "r1",
|
||||
"scene": "技术文档",
|
||||
"note": "一处必要的补充说明,成对使用两个破折号是合法用法",
|
||||
"text": "内存分配器采用伙伴系统——把空闲块按 2 的幂次分级管理——这样既能快速合并,又能减少外部碎片。"
|
||||
},
|
||||
{
|
||||
"id": "r2",
|
||||
"scene": "邮件",
|
||||
"note": "真正构成对比的单次「不是……而是……」",
|
||||
"text": "这个方案不是技术上不可行,而是排期成本太高,建议放到下个季度再评估。"
|
||||
},
|
||||
{
|
||||
"id": "r3",
|
||||
"scene": "公众号文章",
|
||||
"note": "人类作者克制的两句对仗,不构成三连排比",
|
||||
"text": "写得慢的稿子,读者未必看得出来;写得急的稿子,读者一眼就能看出来。"
|
||||
},
|
||||
{
|
||||
"id": "r4",
|
||||
"scene": "技术文档",
|
||||
"note": "两步教程中「首先/其次」各出现一次",
|
||||
"text": "配置分两步:首先把 API 密钥写进配置文件,其次确认网络能访问服务端点。其他选项保持默认即可。"
|
||||
},
|
||||
{
|
||||
"id": "r5",
|
||||
"scene": "公众号文章",
|
||||
"note": "生活化随笔里零星两个 emoji",
|
||||
"text": "今天试了家附近的社区食堂,十五块钱两荤两素,味道超出预期 😋。老板娘说开了八年,附近的老人几乎天天来。这样的小店能多开几家就好了 👍。"
|
||||
},
|
||||
{
|
||||
"id": "r6",
|
||||
"scene": "公众号文章",
|
||||
"note": "结尾单次「让我们」是真诚的读者互动",
|
||||
"text": "如果你也有类似的踩坑经历,让我们在评论区交流一下,互相省点时间。"
|
||||
},
|
||||
{
|
||||
"id": "r7",
|
||||
"scene": "公众号文章",
|
||||
"note": "历史叙述中的举例补充,成对破折号合法;开头不是「在……的时代」套话",
|
||||
"text": "上世纪八十年代,个体户刚刚出现在街头。他们中的不少人——比如那位卖服装起家的陈老板——后来成了第一批民营企业家。"
|
||||
},
|
||||
{
|
||||
"id": "r8",
|
||||
"scene": "邮件",
|
||||
"note": "单次对比加单处破折号补充原因",
|
||||
"text": "他不是不想来,而是台风把航班全取消了——人在机场等了六个小时。"
|
||||
},
|
||||
{
|
||||
"id": "r9",
|
||||
"scene": "技术文档",
|
||||
"note": "句子较长,但条件、动作和结果关系清楚,没有堆叠互不相干的信息",
|
||||
"text": "当客户端连续三次请求失败时,SDK 会进入退避状态,并在下一次重试前等待最多三十秒。"
|
||||
},
|
||||
{
|
||||
"id": "r10",
|
||||
"scene": "安全公告",
|
||||
"note": "只用一次强调语提示真正重要的兼容性风险",
|
||||
"text": "值得注意的是,本次升级会改变令牌格式,依赖旧格式的客户端必须同步更新。"
|
||||
},
|
||||
{
|
||||
"id": "r11",
|
||||
"scene": "事故报告",
|
||||
"note": "被动语态用于未知执行者的单一客观事实,没有连续堆砌",
|
||||
"text": "凌晨两点,主数据库被意外重启,具体操作来源仍在调查。"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,210 @@
|
||||
[
|
||||
{
|
||||
"id": "fp-001",
|
||||
"batch": 1,
|
||||
"scene": "产品发布稿",
|
||||
"before": "我们隆重推出全新智能笔记应用——一款真正懂你的效率神器——它不仅能记录灵感——还能自动整理、智能归类、跨端同步——让你的每一条想法都不再流失——现在下载,即刻开启高效人生——限时免费,错过再等一年!",
|
||||
"after": "新版智能笔记应用上线了。它能记录灵感,自动整理和归类,支持多设备同步。现在下载可以免费试用一个月。",
|
||||
"correction": "破折号太多了,一句话里五六个,读起来喘不过气,全改掉"
|
||||
},
|
||||
{
|
||||
"id": "fp-002",
|
||||
"batch": 1,
|
||||
"scene": "公众号文章",
|
||||
"before": "真正的成长,不是年龄的增加,而是认知的升级;不是知识的堆砌,而是思维的重构;不是经验的重复,而是边界的突破。",
|
||||
"after": "真正的成长,往往体现在认知的变化上:看问题的角度变了,做事的方法跟着变,最后连自己能做什么的边界都被重新画了一遍。",
|
||||
"correction": "不要「不是……而是……」的句式,连用三次太 AI 了"
|
||||
},
|
||||
{
|
||||
"id": "fp-003",
|
||||
"batch": 1,
|
||||
"scene": "邮件",
|
||||
"before": "让我们共同见证这个激动人心的时刻!让我们一起开启数字化转型的全新篇章。让我们携手并进,共创辉煌明天。",
|
||||
"after": "新版本今天上线了,期待大家试用之后多提意见。",
|
||||
"correction": "邮件里别连用「让我们」开头,像机器人演讲"
|
||||
},
|
||||
{
|
||||
"id": "fp-004",
|
||||
"batch": 1,
|
||||
"scene": "README 段落",
|
||||
"before": "首先,克隆本仓库到本地。其次,安装所需依赖。再次,配置环境变量。然后,运行初始化脚本。最后,启动开发服务器即可。",
|
||||
"after": "克隆仓库后安装依赖,把 .env.example 复制为 .env 并填好密钥,再运行 init.sh 初始化,最后 make dev 启动服务。",
|
||||
"correction": "首先其次再次然后最后,模板腔太重,连成句子写"
|
||||
},
|
||||
{
|
||||
"id": "fp-005",
|
||||
"batch": 1,
|
||||
"scene": "公众号文章",
|
||||
"before": "在人工智能飞速发展的今天,每个人都面临前所未有的机遇与挑战。在这个信息爆炸的时代,如何保持独立思考显得尤为重要。",
|
||||
"after": "这两年 AI 工具更新得飞快,很多人一边兴奋一边焦虑。信息越多,越需要自己能做判断。",
|
||||
"correction": "「在……的今天」「在……的时代」这种开头直接删掉"
|
||||
},
|
||||
{
|
||||
"id": "fp-006",
|
||||
"batch": 1,
|
||||
"scene": "产品发布稿",
|
||||
"before": "🎉 重磅来袭!🔥 全新智能手表正式发布!⌚ 超长续航 14 天 🔋,心率血氧全天候监测 ❤️,50 米防水 🏊,现在下单立减 200 元 💰,错过再等一年 ⏰!",
|
||||
"after": "新款智能手表发布:续航 14 天,支持心率血氧监测和 50 米防水,首发价立减 200 元。",
|
||||
"correction": "emoji 泛滥,正式稿件里一个都别放"
|
||||
},
|
||||
{
|
||||
"id": "fp-007",
|
||||
"batch": 2,
|
||||
"scene": "公众号文章",
|
||||
"before": "读书可以拓宽视野,读书可以沉淀心灵,读书可以启迪智慧,读书可以点亮人生。",
|
||||
"after": "读书的好处很多:视野会变宽,心能静下来,看问题也会多几个角度。",
|
||||
"correction": "四连排比太刻意了,写散一点"
|
||||
},
|
||||
{
|
||||
"id": "fp-008",
|
||||
"batch": 2,
|
||||
"scene": "邮件",
|
||||
"before": "关于季度复盘会议——时间定于本周五下午三点——地点在三号会议室——请提前准备数据报表——如有冲突请及时告知——谢谢配合。",
|
||||
"after": "季度复盘定在这周五下午三点,三号会议室。请提前准备好数据报表,时间冲突的话提前跟我说。",
|
||||
"correction": "把破折号当逗号用是吧?全部改成正常标点"
|
||||
},
|
||||
{
|
||||
"id": "fp-009",
|
||||
"batch": 2,
|
||||
"scene": "README 段落",
|
||||
"before": "本项目不是简单的爬虫框架,而是一套完整的数据采集解决方案;不是一次性的脚本集合,而是可长期维护的工程化平台。",
|
||||
"after": "本项目提供一套可扩展的数据采集方案,支持插件化开发,适合作为长期维护的工程使用。",
|
||||
"correction": "不要「不是……而是……」的对仗,直接说它是什么就行"
|
||||
},
|
||||
{
|
||||
"id": "fp-010",
|
||||
"batch": 2,
|
||||
"scene": "产品发布稿",
|
||||
"before": "在这个万物互联的时代,让我们共同拥抱智能家居的美好未来!让我们一起,让科技温暖每一个家庭。",
|
||||
"after": "智能家居新品系列今天发布,覆盖灯光、安防和环境控制,希望能让家更省心。",
|
||||
"correction": "开头「在这个……的时代」和连喊「让我们」都去掉"
|
||||
},
|
||||
{
|
||||
"id": "fp-011",
|
||||
"batch": 2,
|
||||
"scene": "公众号文章",
|
||||
"before": "早餐这样吃才健康 🍞🥛!营养师推荐的三餐搭配来了 🍚🥗,坚持一个月,气色肉眼可见变好 ✨✨,姐妹们快收藏 💖!",
|
||||
"after": "早餐怎么吃更健康?整理了一份营养师的三餐搭配建议,坚持一段时间会有改善,需要的可以收藏。",
|
||||
"correction": "emoji 收一收,一整段全是表情没法看"
|
||||
},
|
||||
{
|
||||
"id": "fp-012",
|
||||
"batch": 2,
|
||||
"scene": "邮件",
|
||||
"before": "首先感谢各位本季度的付出。其次,需要指出交付节奏仍有优化空间。再次,请各组提交改进方案。最后,期待下季度再创佳绩。",
|
||||
"after": "感谢大家这个季度的付出。交付节奏上还有改进空间,请各组本周内提交改进方案,我们下个季度接着努力。",
|
||||
"correction": "「首先/其次/再次/最后」公文八股味,内部邮件别这么写"
|
||||
},
|
||||
{
|
||||
"id": "fp-013",
|
||||
"batch": 3,
|
||||
"scene": "公众号文章",
|
||||
"before": "这款耳机仿佛一位贴心的智者,在你喧嚣的世界里低语;它的降噪功能宛如一道温柔的屏障,将浮躁隔绝在外。",
|
||||
"after": "这款耳机的降噪效果确实好,地铁里戴上能安静不少,报站的人声也能压得住。",
|
||||
"correction": "「仿佛一位智者」这种空洞比喻删掉,说人话"
|
||||
},
|
||||
{
|
||||
"id": "fp-014",
|
||||
"batch": 3,
|
||||
"scene": "README 段落",
|
||||
"before": "它让配置更简单,它让部署更快速,它让监控更全面,它让运维更安心。",
|
||||
"after": "配置、部署、监控和告警都内置了默认方案,运维成本明显更低。",
|
||||
"correction": "「它让……它让……」排比改掉,平铺直叙"
|
||||
},
|
||||
{
|
||||
"id": "fp-015",
|
||||
"batch": 3,
|
||||
"scene": "产品发布稿",
|
||||
"before": "这不是一次简单的版本更新,而是一次体验的全面革新;不是功能的堆砌,而是对用户需求的深度回应。",
|
||||
"after": "这次版本更新改动很大:界面重做,核心流程缩短了两步,都来自上一版用户反馈里最高频的问题。",
|
||||
"correction": "「不是……而是……」连用两句,AI 味很重"
|
||||
},
|
||||
{
|
||||
"id": "fp-016",
|
||||
"batch": 3,
|
||||
"scene": "邮件",
|
||||
"before": "在这个快节奏的时代,高效的沟通显得尤为珍贵。在这个充满变化的时代,稳定的协作关系更值得珍惜。",
|
||||
"after": "最近项目节奏快,咱们沟通尽量简短高效;也希望协作关系保持稳定,有问题随时同步。",
|
||||
"correction": "别用「在这个……的时代」起头,直接说事"
|
||||
},
|
||||
{
|
||||
"id": "fp-017",
|
||||
"batch": 3,
|
||||
"scene": "公众号文章",
|
||||
"before": "成长是一场修行——它教会我们坚持——教会我们取舍——教会我们感恩。每一次跌倒都是财富,每一次爬起都是勋章,每一次坚持都是胜利。",
|
||||
"after": "成长是场慢功夫。能坚持下来的人,多半都慢慢学会了取舍,也开始记得感谢路上帮过自己的人。摔过跤的地方,印象总是最深。",
|
||||
"correction": "破折号加「每一次……都是……」排比,都太浓了"
|
||||
},
|
||||
{
|
||||
"id": "fp-018",
|
||||
"batch": 3,
|
||||
"scene": "README 段落",
|
||||
"before": "让我们一起构建更好的开源生态!让我们从 star 本项目开始,共同参与这场技术盛宴。",
|
||||
"after": "如果这个项目对你有帮助,欢迎 star;也欢迎提 issue 和 PR。",
|
||||
"correction": "README 里别喊「让我们」口号"
|
||||
},
|
||||
{
|
||||
"id": "fp-019",
|
||||
"batch": 3,
|
||||
"scene": "产品发布稿",
|
||||
"before": "首先,全新设计语言带来视觉革新。其次,性能提升高达 40%。再次,续航焦虑彻底解决。总而言之,这是迄今为止最值得升级的一代。",
|
||||
"after": "这一代换了全新的外观设计,性能比上代提升 40%,电池也够用一整天了。如果是老用户,这次值得升级。",
|
||||
"correction": "「首先其次再次总而言之」八股味,删掉套话"
|
||||
},
|
||||
{
|
||||
"id": "fp-020",
|
||||
"batch": 3,
|
||||
"scene": "邮件",
|
||||
"before": "您的建议宛如一盏明灯,照亮了我们产品改进的前路;您的信任仿佛一座灯塔,指引着我们不断前行。",
|
||||
"after": "您提的建议很具体,我们已经记进需求池,下个版本会先改其中两条。谢谢您的信任。",
|
||||
"correction": "「明灯」「灯塔」这种假抒情删掉,回邮件说正事"
|
||||
},
|
||||
{
|
||||
"id": "fp-021",
|
||||
"batch": 1,
|
||||
"scene": "产品发布稿",
|
||||
"before": "这次更新在保留原有工作台布局的基础上通过重新组织导航层级并合并重复入口同时优化首次加载和列表刷新策略让用户从打开应用到完成一次记录的整个过程都比以前更连贯也更省时间。",
|
||||
"after": "这次更新保留了原有工作台布局,同时重新组织导航层级、合并重复入口。首次加载和列表刷新也做了优化,从打开应用到完成记录会更连贯。",
|
||||
"correction": "一句话塞了太多层意思,长得读不到头,拆成两三句"
|
||||
},
|
||||
{
|
||||
"id": "fp-022",
|
||||
"batch": 1,
|
||||
"scene": "公众号文章",
|
||||
"before": "值得注意的是,团队规模并不是越大越好。值得注意的是,沟通成本会随人数增加。更值得注意的是,真正影响交付的是协作方式。",
|
||||
"after": "团队并非越大越好,人数增加也会抬高沟通成本。真正影响交付的,还是协作方式。",
|
||||
"correction": "别每句都拿「值得注意的是」开头,直接说结论"
|
||||
},
|
||||
{
|
||||
"id": "fp-023",
|
||||
"batch": 2,
|
||||
"scene": "README 段落",
|
||||
"before": "配置文件会被启动器读取,依赖会被安装脚本自动下载,数据库会被迁移工具初始化,服务会被进程管理器拉起。",
|
||||
"after": "启动器读取配置文件,安装脚本自动下载依赖,迁移工具初始化数据库,进程管理器随后拉起服务。",
|
||||
"correction": "四句全是「被」字被动语态,改成谁做什么"
|
||||
},
|
||||
{
|
||||
"id": "fp-024",
|
||||
"batch": 2,
|
||||
"scene": "邮件",
|
||||
"before": "考虑到本季度多个项目同时进入交付阶段且测试环境近期频繁被占用为了避免各组在最后一周集中提交导致验证排队请大家在完成核心功能后尽早预约测试窗口并把预计时间同步到项目群。",
|
||||
"after": "本季度有多个项目同时交付,测试环境最近也经常被占用。请各组完成核心功能后尽早预约测试窗口,并把预计时间同步到项目群,避免最后一周排队。",
|
||||
"correction": "整段只有一个句号,条件原因要求全挤一起了,拆开写"
|
||||
},
|
||||
{
|
||||
"id": "fp-025",
|
||||
"batch": 3,
|
||||
"scene": "邮件",
|
||||
"before": "值得注意的是,本周五是最终截止时间。需要特别注意的是,逾期提交将影响下游联调。还值得注意的是,附件命名必须统一。",
|
||||
"after": "最终截止时间是本周五,逾期会影响下游联调。附件请按统一格式命名。",
|
||||
"correction": "「值得注意的是」反复强调,像自动生成的提醒,删掉套话"
|
||||
},
|
||||
{
|
||||
"id": "fp-026",
|
||||
"batch": 3,
|
||||
"scene": "产品发布稿",
|
||||
"before": "页面被全新的设计系统重构,搜索结果被智能算法重新排序,常用操作被快捷入口集中展示,用户的等待时间被大幅缩短。",
|
||||
"after": "全新的设计系统重构了页面,智能算法重新排序搜索结果,快捷入口集中展示常用操作,整体等待时间也明显缩短。",
|
||||
"correction": "连续被动句很生硬,改成明确主语的主动表达"
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,222 @@
|
||||
[
|
||||
{
|
||||
"id": "g-dash-1",
|
||||
"labels": [{"source_ids": ["fp-001", "fp-008"], "expected": true}],
|
||||
"text": "年度新品——更轻——更快——更智能——现在预约——立即享受专属优惠。"
|
||||
},
|
||||
{
|
||||
"id": "g-dash-2",
|
||||
"labels": [{"source_ids": ["fp-001", "fp-008"], "expected": true}],
|
||||
"text": "会议改到周四——还是下午三点——地点不变——材料提前发——请大家准时参加。"
|
||||
},
|
||||
{
|
||||
"id": "g-dash-3",
|
||||
"labels": [{"source_ids": ["fp-001", "fp-008"], "expected": false}],
|
||||
"text": "这项机制——也就是写时复制——只在数据真正变化时创建副本。"
|
||||
},
|
||||
{
|
||||
"id": "g-dash-4",
|
||||
"labels": [{"source_ids": ["fp-001", "fp-008"], "expected": false}],
|
||||
"text": "她只补充了一点——预算必须在月底前确认。"
|
||||
},
|
||||
{
|
||||
"id": "g-not-but-1",
|
||||
"labels": [{"source_ids": ["fp-002", "fp-009", "fp-015"], "expected": true}],
|
||||
"text": "写作不是表达,而是连接;阅读不是消费,而是成长;分享不是炫耀,而是传递。"
|
||||
},
|
||||
{
|
||||
"id": "g-not-but-2",
|
||||
"labels": [{"source_ids": ["fp-002", "fp-009", "fp-015"], "expected": true}],
|
||||
"text": "这不是修补,而是重塑。不是妥协,而是选择。不是终点,而是起点。"
|
||||
},
|
||||
{
|
||||
"id": "g-not-but-3",
|
||||
"labels": [{"source_ids": ["fp-002", "fp-009", "fp-015"], "expected": false}],
|
||||
"text": "问题不是磁盘空间不足,而是日志轮转没有启动。"
|
||||
},
|
||||
{
|
||||
"id": "g-not-but-4",
|
||||
"labels": [{"source_ids": ["fp-002", "fp-009", "fp-015"], "expected": false}],
|
||||
"text": "我们比较了两个方案,最终选择延迟更低的那个。"
|
||||
},
|
||||
{
|
||||
"id": "g-lets-1",
|
||||
"labels": [{"source_ids": ["fp-003", "fp-018"], "expected": true}],
|
||||
"text": "让我们勇敢出发!让我们携手向前!让我们共同书写新的篇章!"
|
||||
},
|
||||
{
|
||||
"id": "g-lets-2",
|
||||
"labels": [{"source_ids": ["fp-003", "fp-018"], "expected": true}],
|
||||
"text": "让我们见证改变,让我们拥抱未来,让我们一起创造无限可能。"
|
||||
},
|
||||
{
|
||||
"id": "g-lets-3",
|
||||
"labels": [{"source_ids": ["fp-003", "fp-018"], "expected": false}],
|
||||
"text": "如果你复现了这个问题,让我们在 issue 里核对一下环境信息。"
|
||||
},
|
||||
{
|
||||
"id": "g-lets-4",
|
||||
"labels": [{"source_ids": ["fp-003", "fp-018"], "expected": false}],
|
||||
"text": "欢迎提交问题和补丁,维护者通常会在两个工作日内回复。"
|
||||
},
|
||||
{
|
||||
"id": "g-sequence-1",
|
||||
"labels": [{"source_ids": ["fp-004", "fp-012", "fp-019"], "expected": true}],
|
||||
"text": "首先分析需求,其次制定方案,再次协调资源,最后推动落地,总而言之我们会全力以赴。"
|
||||
},
|
||||
{
|
||||
"id": "g-sequence-2",
|
||||
"labels": [{"source_ids": ["fp-004", "fp-012", "fp-019"], "expected": true}],
|
||||
"text": "首先,外观焕然一新。其次,性能全面升级。再次,体验大幅优化。总而言之,这是一款划时代产品。"
|
||||
},
|
||||
{
|
||||
"id": "g-sequence-3",
|
||||
"labels": [{"source_ids": ["fp-004", "fp-012", "fp-019"], "expected": false}],
|
||||
"text": "安装分两步:首先下载压缩包,其次执行安装命令。"
|
||||
},
|
||||
{
|
||||
"id": "g-sequence-4",
|
||||
"labels": [{"source_ids": ["fp-004", "fp-012", "fp-019"], "expected": false}],
|
||||
"text": "先备份数据库,再执行迁移;确认结果后启动新版本。"
|
||||
},
|
||||
{
|
||||
"id": "g-era-1",
|
||||
"labels": [{"source_ids": ["fp-005", "fp-016"], "expected": true}],
|
||||
"text": "在这个信息爆炸的时代,专注力显得尤为珍贵。"
|
||||
},
|
||||
{
|
||||
"id": "g-era-2",
|
||||
"labels": [{"source_ids": ["fp-005", "fp-016"], "expected": true}],
|
||||
"text": "在科技飞速发展的今天,创新已经成为企业前进的不竭动力。"
|
||||
},
|
||||
{
|
||||
"id": "g-era-3",
|
||||
"labels": [{"source_ids": ["fp-005", "fp-016"], "expected": false}],
|
||||
"text": "人工智能工具越来越多,这份调查比较了其中五款的实际响应时间。"
|
||||
},
|
||||
{
|
||||
"id": "g-era-4",
|
||||
"labels": [{"source_ids": ["fp-005", "fp-016"], "expected": false}],
|
||||
"text": "在上世纪九十年代的上海,寻呼机曾是常见的通信工具。"
|
||||
},
|
||||
{
|
||||
"id": "g-emoji-1",
|
||||
"labels": [{"source_ids": ["fp-006", "fp-011"], "expected": true}],
|
||||
"text": "新品来了 🎉🎉,颜值爆表 ✨,性能起飞 🚀,价格惊喜 💰,快来抢购 🛒!"
|
||||
},
|
||||
{
|
||||
"id": "g-emoji-2",
|
||||
"labels": [{"source_ids": ["fp-006", "fp-011"], "expected": false}],
|
||||
"text": "早起打卡 ☀️,早餐打卡 🥐,运动打卡 🏃,阅读打卡 📚,今天也要加油 💪!"
|
||||
},
|
||||
{
|
||||
"id": "g-emoji-3",
|
||||
"labels": [{"source_ids": ["fp-006", "fp-011"], "expected": false}],
|
||||
"text": "这家小店的面很好吃 😋,下次还想带朋友来。"
|
||||
},
|
||||
{
|
||||
"id": "g-emoji-4",
|
||||
"labels": [{"source_ids": ["fp-006", "fp-011"], "expected": false}],
|
||||
"text": "构建已经通过 ✅,可以合并了。"
|
||||
},
|
||||
{
|
||||
"id": "g-parallel-1",
|
||||
"labels": [{"source_ids": ["fp-007", "fp-014"], "expected": true}],
|
||||
"text": "它让工作更轻松,它让协作更顺畅,它让决策更高效,它让未来更清晰。"
|
||||
},
|
||||
{
|
||||
"id": "g-parallel-2",
|
||||
"labels": [{"source_ids": ["fp-007", "fp-014"], "expected": true}],
|
||||
"text": "每一次尝试都是成长,每一次失败都是积累,每一次坚持都是突破。"
|
||||
},
|
||||
{
|
||||
"id": "g-parallel-3",
|
||||
"labels": [{"source_ids": ["fp-007", "fp-014"], "expected": false}],
|
||||
"text": "我喜欢清晨的安静,也喜欢傍晚的热闹。"
|
||||
},
|
||||
{
|
||||
"id": "g-parallel-4",
|
||||
"labels": [{"source_ids": ["fp-007", "fp-014"], "expected": false}],
|
||||
"text": "搜索速度提升了,索引占用则略有增加,两项变化都在预期范围内。"
|
||||
},
|
||||
{
|
||||
"id": "g-metaphor-1",
|
||||
"labels": [{"source_ids": ["fp-013", "fp-020"], "expected": true}],
|
||||
"text": "这款音箱仿佛一位懂你的智者,总能在恰当的时刻送上恰当的音乐。"
|
||||
},
|
||||
{
|
||||
"id": "g-metaphor-2",
|
||||
"labels": [{"source_ids": ["fp-013", "fp-020"], "expected": true}],
|
||||
"text": "她的建议宛如一座灯塔,照亮了团队前行的道路。"
|
||||
},
|
||||
{
|
||||
"id": "g-metaphor-3",
|
||||
"labels": [{"source_ids": ["fp-013", "fp-020"], "expected": false}],
|
||||
"text": "这座灯塔建于 1903 年,至今仍为进港船只导航。"
|
||||
},
|
||||
{
|
||||
"id": "g-metaphor-4",
|
||||
"labels": [{"source_ids": ["fp-013", "fp-020"], "expected": false}],
|
||||
"text": "新算法把平均搜索时间从 800 毫秒降到了 120 毫秒。"
|
||||
},
|
||||
{
|
||||
"id": "g-long-sentence-1",
|
||||
"labels": [{"source_ids": ["fp-021", "fp-024"], "expected": true}],
|
||||
"text": "由于需求在评审后又发生变化并且接口文档直到昨晚才最终确认导致前端无法按原计划完成联调所以本周的提测时间需要顺延到下周二请相关同事同步调整后续安排。"
|
||||
},
|
||||
{
|
||||
"id": "g-long-sentence-2",
|
||||
"labels": [{"source_ids": ["fp-021", "fp-024"], "expected": true}],
|
||||
"text": "新版本通过整合搜索推荐收藏和历史记录入口并重新设计信息层级以及优化缓存更新逻辑让用户能够在更少操作里找到需要的内容同时降低首次打开页面时的等待时间。"
|
||||
},
|
||||
{
|
||||
"id": "g-long-sentence-3",
|
||||
"labels": [{"source_ids": ["fp-021", "fp-024"], "expected": false}],
|
||||
"text": "当请求连续失败三次时,客户端会暂停重试,并在等待三十秒后重新建立连接。"
|
||||
},
|
||||
{
|
||||
"id": "g-long-sentence-4",
|
||||
"labels": [{"source_ids": ["fp-021", "fp-024"], "expected": false}],
|
||||
"text": "测试环境正在升级。联调改到明天下午,地址不变。"
|
||||
},
|
||||
{
|
||||
"id": "g-worth-noting-1",
|
||||
"labels": [{"source_ids": ["fp-022", "fp-025"], "expected": true}],
|
||||
"text": "值得注意的是,价格已经调整。还值得注意的是,套餐内容也有变化。尤其值得注意的是,优惠只到月底。"
|
||||
},
|
||||
{
|
||||
"id": "g-worth-noting-2",
|
||||
"labels": [{"source_ids": ["fp-022", "fp-025"], "expected": true}],
|
||||
"text": "需要强调的是,数据不会迁移。需要特别强调的是,旧账号无法登录。再次强调,用户必须重新注册。"
|
||||
},
|
||||
{
|
||||
"id": "g-worth-noting-3",
|
||||
"labels": [{"source_ids": ["fp-022", "fp-025"], "expected": false}],
|
||||
"text": "值得注意的是,这个安全补丁会使旧版客户端无法连接,升级前必须通知所有用户。"
|
||||
},
|
||||
{
|
||||
"id": "g-worth-noting-4",
|
||||
"labels": [{"source_ids": ["fp-022", "fp-025"], "expected": false}],
|
||||
"text": "价格已经调整,套餐内容不变,优惠持续到月底。"
|
||||
},
|
||||
{
|
||||
"id": "g-passive-1",
|
||||
"labels": [{"source_ids": ["fp-023", "fp-026"], "expected": true}],
|
||||
"text": "方案被委员会审议,预算被财务部门核定,合同被法务团队复核,最终日期被项目组确认。"
|
||||
},
|
||||
{
|
||||
"id": "g-passive-2",
|
||||
"labels": [{"source_ids": ["fp-023", "fp-026"], "expected": true}],
|
||||
"text": "文件会被程序读取,字段会被转换器处理,结果会被缓存模块保存,通知会被任务系统发送。"
|
||||
},
|
||||
{
|
||||
"id": "g-passive-3",
|
||||
"labels": [{"source_ids": ["fp-023", "fp-026"], "expected": false}],
|
||||
"text": "凌晨两点,备用节点被意外重启,操作来源仍在调查。"
|
||||
},
|
||||
{
|
||||
"id": "g-passive-4",
|
||||
"labels": [{"source_ids": ["fp-023", "fp-026"], "expected": false}],
|
||||
"text": "调度器读取任务列表,工作进程执行任务,监控服务记录结果。"
|
||||
}
|
||||
]
|
||||
Reference in New Issue
Block a user