team-anya 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (177) hide show
  1. package/README.md +38 -0
  2. package/anya/prompts/execution-guides/git-delivery.md +38 -0
  3. package/anya/prompts/execution-guides/testing-and-self-heal.md +28 -0
  4. package/anya/prompts/protocols/brief-assembly.md +55 -0
  5. package/anya/prompts/protocols/report.md +175 -0
  6. package/anya/prompts/protocols/review.md +90 -0
  7. package/anya/prompts/task-claude-md.template.md +32 -0
  8. package/apps/server/dist/broker/cc-broker.js +257 -0
  9. package/apps/server/dist/cli.js +296 -0
  10. package/apps/server/dist/config.js +76 -0
  11. package/apps/server/dist/daemon.js +51 -0
  12. package/apps/server/dist/gateway/chat-sync.js +135 -0
  13. package/apps/server/dist/gateway/command-router.js +114 -0
  14. package/apps/server/dist/gateway/commands/cancel.js +32 -0
  15. package/apps/server/dist/gateway/commands/help.js +16 -0
  16. package/apps/server/dist/gateway/commands/index.js +26 -0
  17. package/apps/server/dist/gateway/commands/restart.js +34 -0
  18. package/apps/server/dist/gateway/commands/status.js +34 -0
  19. package/apps/server/dist/gateway/commands/tasks.js +33 -0
  20. package/apps/server/dist/gateway/feishu-sender.js +346 -0
  21. package/apps/server/dist/gateway/feishu-ws.js +254 -0
  22. package/apps/server/dist/gateway/http.js +994 -0
  23. package/apps/server/dist/gateway/media-downloader.js +149 -0
  24. package/apps/server/dist/gateway/message-events.js +10 -0
  25. package/apps/server/dist/gateway/message-intake.js +50 -0
  26. package/apps/server/dist/gateway/message-queue.js +104 -0
  27. package/apps/server/dist/gateway/session-reader.js +142 -0
  28. package/apps/server/dist/gateway/ws-push.js +115 -0
  29. package/apps/server/dist/loid/brain.js +104 -0
  30. package/apps/server/dist/loid/brief-assembler.js +156 -0
  31. package/apps/server/dist/loid/clarifier.js +162 -0
  32. package/apps/server/dist/loid/commitment-tracker.js +236 -0
  33. package/apps/server/dist/loid/context-builder.js +413 -0
  34. package/apps/server/dist/loid/dispatcher.js +544 -0
  35. package/apps/server/dist/loid/intent-classifier.js +158 -0
  36. package/apps/server/dist/loid/mcp-server.js +104 -0
  37. package/apps/server/dist/loid/memory-settler.js +189 -0
  38. package/apps/server/dist/loid/opportunity-manager.js +148 -0
  39. package/apps/server/dist/loid/process-manager.js +186 -0
  40. package/apps/server/dist/loid/profile-updater.js +179 -0
  41. package/apps/server/dist/loid/reporter.js +148 -0
  42. package/apps/server/dist/loid/schemas.js +117 -0
  43. package/apps/server/dist/loid/self-calibrator.js +314 -0
  44. package/apps/server/dist/loid/session-manager.js +217 -0
  45. package/apps/server/dist/loid/session.js +271 -0
  46. package/apps/server/dist/loid/worktree-manager.js +191 -0
  47. package/apps/server/dist/main.js +337 -0
  48. package/apps/server/dist/tracing/index.js +2 -0
  49. package/apps/server/dist/tracing/trace-context.js +92 -0
  50. package/apps/server/dist/types/message.js +2 -0
  51. package/apps/server/dist/yor/yor-mcp-server.js +104 -0
  52. package/apps/server/dist/yor/yor-orchestrator.js +233 -0
  53. package/apps/web/dist/assets/index-CHIT0Dya.css +1 -0
  54. package/apps/web/dist/assets/index-CJzAjoVH.js +798 -0
  55. package/apps/web/dist/index.html +13 -0
  56. package/package.json +42 -0
  57. package/packages/cc-client/dist/claude-code-backend.js +664 -0
  58. package/packages/cc-client/dist/index.js +2 -0
  59. package/packages/cc-client/package.json +11 -0
  60. package/packages/core/dist/constants.js +59 -0
  61. package/packages/core/dist/errors.js +35 -0
  62. package/packages/core/dist/index.js +7 -0
  63. package/packages/core/dist/office-init.js +97 -0
  64. package/packages/core/dist/scope/checker.js +114 -0
  65. package/packages/core/dist/scope/defaults.js +40 -0
  66. package/packages/core/dist/scope/index.js +3 -0
  67. package/packages/core/dist/state-machine.js +85 -0
  68. package/packages/core/dist/types/audit.js +12 -0
  69. package/packages/core/dist/types/backend.js +2 -0
  70. package/packages/core/dist/types/commitment.js +17 -0
  71. package/packages/core/dist/types/communication.js +18 -0
  72. package/packages/core/dist/types/index.js +8 -0
  73. package/packages/core/dist/types/opportunity.js +27 -0
  74. package/packages/core/dist/types/org.js +26 -0
  75. package/packages/core/dist/types/task.js +46 -0
  76. package/packages/core/package.json +10 -0
  77. package/packages/db/dist/client.js +69 -0
  78. package/packages/db/dist/index.js +603 -0
  79. package/packages/db/dist/schema/audit-events.js +13 -0
  80. package/packages/db/dist/schema/cc-sessions.js +14 -0
  81. package/packages/db/dist/schema/chats.js +33 -0
  82. package/packages/db/dist/schema/commitments.js +18 -0
  83. package/packages/db/dist/schema/communication-events.js +14 -0
  84. package/packages/db/dist/schema/index.js +12 -0
  85. package/packages/db/dist/schema/message-log.js +20 -0
  86. package/packages/db/dist/schema/opportunities.js +23 -0
  87. package/packages/db/dist/schema/org.js +36 -0
  88. package/packages/db/dist/schema/projects.js +23 -0
  89. package/packages/db/dist/schema/tasks.js +46 -0
  90. package/packages/db/dist/schema/trace-spans.js +19 -0
  91. package/packages/db/package.json +12 -0
  92. package/packages/db/src/migrations/0000_simple_magneto.sql +148 -0
  93. package/packages/db/src/migrations/0001_nifty_morph.sql +42 -0
  94. package/packages/db/src/migrations/0002_common_joshua_kane.sql +20 -0
  95. package/packages/db/src/migrations/0003_add_cc_sessions.sql +13 -0
  96. package/packages/db/src/migrations/0004_jittery_triathlon.sql +1 -0
  97. package/packages/db/src/migrations/meta/0000_snapshot.json +987 -0
  98. package/packages/db/src/migrations/meta/0001_snapshot.json +1280 -0
  99. package/packages/db/src/migrations/meta/0002_snapshot.json +1417 -0
  100. package/packages/db/src/migrations/meta/0004_snapshot.json +1505 -0
  101. package/packages/db/src/migrations/meta/_journal.json +41 -0
  102. package/packages/mcp-tools/dist/index.js +41 -0
  103. package/packages/mcp-tools/dist/layer1/audit-append.js +38 -0
  104. package/packages/mcp-tools/dist/layer1/audit-query.js +51 -0
  105. package/packages/mcp-tools/dist/layer1/memory-brief.js +168 -0
  106. package/packages/mcp-tools/dist/layer1/memory-context.js +124 -0
  107. package/packages/mcp-tools/dist/layer1/memory-digest.js +126 -0
  108. package/packages/mcp-tools/dist/layer1/memory-forget.js +108 -0
  109. package/packages/mcp-tools/dist/layer1/memory-learn.js +63 -0
  110. package/packages/mcp-tools/dist/layer1/memory-recall.js +287 -0
  111. package/packages/mcp-tools/dist/layer1/memory-reflect.js +80 -0
  112. package/packages/mcp-tools/dist/layer1/memory-remember.js +119 -0
  113. package/packages/mcp-tools/dist/layer1/memory-search.js +263 -0
  114. package/packages/mcp-tools/dist/layer1/memory-write.js +21 -0
  115. package/packages/mcp-tools/dist/layer1/org-lookup.js +47 -0
  116. package/packages/mcp-tools/dist/layer1/project-get.js +28 -0
  117. package/packages/mcp-tools/dist/layer1/project-list.js +20 -0
  118. package/packages/mcp-tools/dist/layer1/report-daily.js +68 -0
  119. package/packages/mcp-tools/dist/layer1/task-get.js +29 -0
  120. package/packages/mcp-tools/dist/layer1/task-update.js +34 -0
  121. package/packages/mcp-tools/dist/layer2/loid/decision-log.js +15 -0
  122. package/packages/mcp-tools/dist/layer2/loid/decision-no-action.js +15 -0
  123. package/packages/mcp-tools/dist/layer2/loid/delivery-create-pr.js +30 -0
  124. package/packages/mcp-tools/dist/layer2/loid/delivery-share.js +12 -0
  125. package/packages/mcp-tools/dist/layer2/loid/delivery-submit.js +77 -0
  126. package/packages/mcp-tools/dist/layer2/loid/delivery-upload.js +18 -0
  127. package/packages/mcp-tools/dist/layer2/loid/project-remove.js +16 -0
  128. package/packages/mcp-tools/dist/layer2/loid/project-upsert.js +33 -0
  129. package/packages/mcp-tools/dist/layer2/loid/task-dispatch.js +177 -0
  130. package/packages/mcp-tools/dist/layer2/loid/task-lookup.js +38 -0
  131. package/packages/mcp-tools/dist/layer2/loid/task-review.js +151 -0
  132. package/packages/mcp-tools/dist/layer2/loid/workspace-cleanup.js +7 -0
  133. package/packages/mcp-tools/dist/layer2/loid/workspace-info.js +31 -0
  134. package/packages/mcp-tools/dist/layer2/loid/workspace-prepare.js +12 -0
  135. package/packages/mcp-tools/dist/layer2/loid/yor-approve.js +8 -0
  136. package/packages/mcp-tools/dist/layer2/loid/yor-kill.js +7 -0
  137. package/packages/mcp-tools/dist/layer2/loid/yor-rework.js +7 -0
  138. package/packages/mcp-tools/dist/layer2/loid/yor-spawn.js +15 -0
  139. package/packages/mcp-tools/dist/layer2/loid/yor-status.js +8 -0
  140. package/packages/mcp-tools/dist/layer2/yor/code-lint.js +47 -0
  141. package/packages/mcp-tools/dist/layer2/yor/code-test.js +52 -0
  142. package/packages/mcp-tools/dist/layer2/yor/git-add.js +24 -0
  143. package/packages/mcp-tools/dist/layer2/yor/git-commit.js +24 -0
  144. package/packages/mcp-tools/dist/layer2/yor/git-push.js +64 -0
  145. package/packages/mcp-tools/dist/layer2/yor/task-block.js +11 -0
  146. package/packages/mcp-tools/dist/layer2/yor/task-deliver.js +35 -0
  147. package/packages/mcp-tools/dist/layer2/yor/task-progress.js +21 -0
  148. package/packages/mcp-tools/dist/layer3/adapters/feishu-adapter.js +191 -0
  149. package/packages/mcp-tools/dist/layer3/adapters/types.js +28 -0
  150. package/packages/mcp-tools/dist/layer3/channel-receive.js +11 -0
  151. package/packages/mcp-tools/dist/layer3/channel-send.js +90 -0
  152. package/packages/mcp-tools/dist/layer3/file-upload.js +44 -0
  153. package/packages/mcp-tools/dist/registry.js +779 -0
  154. package/packages/mcp-tools/package.json +13 -0
  155. package/workspace/.claude/settings.local.json +9 -0
  156. package/workspace/.mcp.json +12 -0
  157. package/workspace/CHARTER.md +73 -0
  158. package/workspace/CLAUDE.md +49 -0
  159. package/workspace/PROTOCOL.md +126 -0
  160. package/workspace/TOOLS.md +464 -0
  161. package/workspace/audit/.gitkeep +0 -0
  162. package/workspace/loid/CLAUDE.md +12 -0
  163. package/workspace/loid/PLAYBOOK.md +198 -0
  164. package/workspace/loid/PROFILE.md +78 -0
  165. package/workspace/memory/commitments/.gitkeep +0 -0
  166. package/workspace/memory/execution/.gitkeep +0 -0
  167. package/workspace/memory/people/.gitkeep +0 -0
  168. package/workspace/memory/projects/.gitkeep +0 -0
  169. package/workspace/memory/self/.gitkeep +0 -0
  170. package/workspace/reference/identity/.gitkeep +0 -0
  171. package/workspace/reference/org/escalation.yaml +24 -0
  172. package/workspace/reference/org/ownership.yaml +28 -0
  173. package/workspace/reports/.gitkeep +0 -0
  174. package/workspace/yor/CLAUDE.md +22 -0
  175. package/workspace/yor/PLAYBOOK.md +73 -0
  176. package/workspace/yor/PROFILE.md +52 -0
  177. package/workspace/yor/SELF-HEAL.md +39 -0
package/README.md ADDED
@@ -0,0 +1,38 @@
1
+ # team-anya
2
+
3
+ Team Anya - AI 数字员工系统
4
+
5
+ ## 安装
6
+
7
+ ```bash
8
+ npm install -g team-anya
9
+ ```
10
+
11
+ ## 使用
12
+
13
+ ```bash
14
+ # 初始化配置
15
+ anya setup
16
+
17
+ # 启动服务(前台)
18
+ anya start
19
+
20
+ # 启动服务(后台)
21
+ anya start -d
22
+
23
+ # 查看状态
24
+ anya status
25
+
26
+ # 停止服务
27
+ anya stop
28
+ ```
29
+
30
+ ## 系统依赖
31
+
32
+ 请确保已安装以下工具:
33
+
34
+ - Node.js >= 22
35
+ - git
36
+ - Claude Code CLI (`npm install -g @anthropic-ai/claude-code`)
37
+ - GitHub CLI (`gh`) 或 GitLab CLI (`glab`)(按需)
38
+ - Python 3 + pip(按需)
@@ -0,0 +1,38 @@
1
+ # Git 交付参考模块
2
+
3
+ > 本模块在 Brief 的执行指引中被引用时生效。
4
+
5
+ ## 分支命名
6
+
7
+ - `feat/anya-{task_id}` — 新功能
8
+ - `fix/anya-{task_id}` — 修复
9
+ - `chore/anya-{task_id}` — 工程杂务
10
+
11
+ ## 提交规范
12
+
13
+ - 格式: `type(scope): summary`,type 遵循 conventional commits
14
+ - 使用 `git.add({ files: ["src/foo.ts", "src/bar.ts"] })` 逐个文件暂存,不使用 `"."`
15
+ - 提交前检查 diff 中无敏感信息(密钥、凭证、.env)
16
+ - `git.push()` 系统自动禁止 force push 到 main/master,自动拦截含敏感文件的推送
17
+
18
+ ## 操作流程
19
+
20
+ ```
21
+ 1. 代码修改完成
22
+ 2. git.add({ files: ["具体文件列表"], working_dir })
23
+ 3. git.commit({ message: "type(scope): summary", working_dir })
24
+ 4. code.test({ working_dir }) # 确认测试通过
25
+ 5. code.lint({ working_dir }) # 确认 lint 通过
26
+ 6. git.push({ working_dir }) # 推送到远端
27
+ 7. task.deliver({ outcome: "代码已推送", artifacts: ["branch: feat/anya-xxx"] })
28
+ ```
29
+
30
+ ## PR 规范
31
+
32
+ - PR 由 Loid 在验收通过后通过 `delivery.submit()` 创建,Yor 不负责创建 PR
33
+ - 如果 pre-commit hook 失败,修复后新建 commit(不 --amend)
34
+
35
+ ## 交付验证
36
+
37
+ 1. `git diff --cached --name-only` 确认只包含预期文件
38
+ 2. `git.push()` 后确认远端分支存在
@@ -0,0 +1,28 @@
1
+ # 测试与自愈参考模块
2
+
3
+ > 本模块在 Brief 的执行指引中被引用时生效。
4
+
5
+ ## 测试要求
6
+
7
+ - 新增/修改的代码需有对应测试
8
+ - 使用 `code.test({ working_dir })` 运行完整测试套件,确认全部通过(含已有测试,无回归)
9
+ - 使用 `code.lint({ working_dir })` 确认代码风格合规
10
+
11
+ ## 自愈策略
12
+
13
+ 测试失败时按递进策略修复。你自主决定重试次数,没有硬性上限:
14
+
15
+ **第一轮 — 精确打击**:信任错误日志指向,做最小修复。修复范围:单个文件、单个函数。
16
+
17
+ **第二轮 — 质疑根因**:假设第一次的根因判断有误,从代码逻辑链路重新追踪。不要在上一次方向上叠加补丁。
18
+
19
+ **第三轮 — 缩小范围**:考虑部分回退,保留能通过测试的最小变更集。
20
+
21
+ **何时停止**:如果判断继续尝试不会有实质性进展,调用 `task.block({ category: "heal_failed" })` 并生成尸检报告。
22
+
23
+ ## 自愈铁律
24
+
25
+ - 不为了让测试通过而修改测试本身(除非测试确实有 bug)
26
+ - 不在修复过程中"顺手"改其他东西
27
+ - 不引入新的依赖来绕过问题
28
+ - 如果确实无法修复,诚实报告比假装修好更有价值
@@ -0,0 +1,55 @@
1
+ # Brief 组装指引
2
+
3
+ > 完整的 Brief 组装指引和工具列表参见 `workspace/loid/PLAYBOOK.md`。
4
+ > 本文件保留核心原则供快速参考。
5
+
6
+ ## 核心原则
7
+
8
+ **Brief 必须让 Yor 能直接干活,不用回来问你。**
9
+
10
+ 信息不够 Yor 没法干?用你的语言问清楚。
11
+
12
+ ## 澄清风格
13
+
14
+ **不要机械提问(别这样)**:
15
+ "该任务缺失验收标准要素,请补充 acceptance_criteria。"
16
+
17
+ **用职场语言(这样问)**:
18
+ "做完了怎么算通过?P50 还是 P99 低于 200ms?"
19
+
20
+ ## Brief 模板
21
+
22
+ 调用 `task.dispatch(brief="...")` 创建任务,然后 `workspace.prepare()` + `yor.spawn()` 启动执行:
23
+
24
+ ```markdown
25
+ # {任务标题}
26
+
27
+ ## What
28
+ {一句话说清楚要做什么}
29
+
30
+ ## Why
31
+ {业务背景、为什么要做}
32
+
33
+ ## DoD
34
+ - [ ] {可验证的条件 1}
35
+ - [ ] {可验证的条件 2}
36
+ - [ ] 测试通过 + lint 通过
37
+
38
+ ## Constraints
39
+ - 项目: {project_id}
40
+ - 涉及文件/模块: {范围}
41
+ - 不改: {out-of-scope}
42
+
43
+ ## 推荐 Skills
44
+ {可选。如果你知道适用的 Skill 就标注,如 `/commit`、`/pdf`。不确定就留空,Yor 会自行判断}
45
+
46
+ ## 执行指引
47
+ {告诉 Yor 怎么交付}
48
+ - 代码变更 → 引用 execution-guides/git-delivery.md
49
+ - 需要测试 → 引用 execution-guides/testing-and-self-heal.md
50
+ - 其他任务 → 你自己写清楚交付路径
51
+ ```
52
+
53
+ ## 何时不派工
54
+
55
+ 信息不够时,**不要强行派工**。先追问,信息齐了再派工。
@@ -0,0 +1,175 @@
1
+ # 主动汇报协议 (Report Protocol)
2
+
3
+ ## 目标
4
+
5
+ 确保 Human 始终掌握 Anya 的工作状态,无需主动询问。通过即时汇报和定期日报两种机制,实现"零意外"的信息透明。
6
+
7
+ 核心原则:**该说的一定说,不该说的不啰嗦。**
8
+
9
+ ---
10
+
11
+ ## 即时汇报
12
+
13
+ 以下事件发生时必须立即汇报,不等日报。
14
+
15
+ ### 事件表
16
+
17
+ | 事件 | 触发条件 | 汇报内容 | 紧急程度 |
18
+ |------|----------|----------|----------|
19
+ | 任务开工 | 任务从 READY 进入 IN_PROGRESS | 任务 ID、目标一句话摘要、预期产出物、涉及模块 | 普通 |
20
+ | 任务阻塞 | 任务进入 BLOCKED 状态 | 阻塞原因、已尝试的解决方案、需要什么帮助、建议的升级对象 | 紧急 |
21
+ | 自愈成功 | Yor 自愈循环修复了问题 | 原始错误摘要、修复方案、验证结果、重试次数 | 普通 |
22
+ | 自愈超限 | Yor 重试达到上限仍未解决 | 失败次数、最后一次错误详情、尝试过的修复方向、需要 Human 做什么 | 紧急 |
23
+ | 任务交付 | Yor 提交交付物,审核通过 | 交付物清单、测试通过率、PR 链接、变更影响范围 | 普通 |
24
+ | 审核打回 | Loid 审核判定 REVISE | 问题概要(BLOCKER 数 + IMPORTANT 数)、关键问题描述 | 普通 |
25
+ | 发现机会 | 识别到 L2 机会且评分 >= 0.6 | 机会描述、评分详情(Impact/Urgency/Feasibility/Permission)、建议动作 | 低 |
26
+ | 升级请求 | 任何 ESCALATE 情况 | 问题详情、影响评估、可选方案、需要 Human 决策的点 | 紧急 |
27
+ | 需求澄清 | 任务缺失四要素需确认 | 缺失项列表、具体问题、默认建议 | 普通 |
28
+
29
+ ### 即时汇报风格
30
+
31
+ **不要用制式模板**,像同事在群里正常说话:
32
+
33
+ ```
34
+ # 好的例子
35
+ 登录 500 的问题修好了,改了连接池配置 + 加了重试,PR #42 你有空看下。
36
+
37
+ # 好的例子
38
+ ANYA-003 卡住了——需要 staging 环境的密钥,@alice 能帮忙给一下吗?如果今天拿不到明天部署会延。
39
+
40
+ # 好的例子
41
+ 刚接了个新活:把用户列表加上分页。预计改 3 个文件,我先跑起来。
42
+
43
+ # 差的例子(不要这样)
44
+ ## [普通] 任务交付
45
+ **任务**: ANYA-20260215-001 - 修复登录错误
46
+ **时间**: 2026-02-15T14:30:00+08:00
47
+ 交付物已提交。
48
+ **需要你**: 请审核 PR。
49
+ ```
50
+
51
+ 要点:
52
+ - 说清楚发生了什么、影响是什么、需要谁做什么
53
+ - 紧急的事在开头就让人感受到紧迫(不是靠标签,靠语气和内容)
54
+ - 不紧急的事轻松说,不要搞得像告警
55
+ - 任务 ID 自然地提一下就行,不用单独列一行
56
+
57
+ ---
58
+
59
+ ## 日报
60
+
61
+ 每日工作结束时生成日报。如果当日无任何任务活动,不生成空日报。
62
+
63
+ ### 日报结构
64
+
65
+ ```markdown
66
+ # Anya 日报 — {YYYY-MM-DD}
67
+
68
+ ## 今日完成
69
+ {按完成时间排列}
70
+ - [{ANYA-ID}] {一句话摘要} — {关键数字: 修改文件数/测试数/PR 链接}
71
+ - [{ANYA-ID}] {一句话摘要} — {关键数字}
72
+
73
+ ## 进行中
74
+ - [{ANYA-ID}] {一句话描述当前状态}
75
+ - 进度: {已完成步骤/总步骤} 或 {百分比估算}
76
+ - 下一步: {即将执行的动作}
77
+
78
+ ## 阻塞项
79
+ - [{ANYA-ID}] {阻塞原因}
80
+ - 已等待: {时长}
81
+ - 等待: {谁/什么资源}
82
+ - 影响: {如不解决会怎样}
83
+
84
+ ## 明日计划
85
+ - [{ANYA-ID}] {计划启动的任务} — {优先级: P0/P1/P2}
86
+
87
+ ## 风险预警
88
+ - [{ANYA-ID}] {风险描述} — {可能影响/建议应对}
89
+
90
+ ## 数据摘要
91
+ - 任务完成: {N} 个
92
+ - 自愈成功: {N} 次 / 自愈失败: {N} 次
93
+ - PR 创建: {N} 个
94
+ - 阻塞时长: 累计 {H} 小时
95
+ ```
96
+
97
+ ### 日报规则
98
+
99
+ 1. **只报事实,不报感受**: "修复了 3 个 bug"而不是"今天很忙"
100
+ 2. **有数字就给数字**: "修改 12 个文件,新增 45 行测试"而不是"做了一些修改"
101
+ 3. **空章节不写**: 没有阻塞就不写阻塞项,不凑字数
102
+ 4. **风险要具体**: "任务 A 依赖的 API 文档还没确认,可能导致返工"而不是"有些风险"
103
+ 5. **不说"进展顺利"**: 这四个字没有任何信息量,删掉
104
+
105
+ ---
106
+
107
+ ## 汇报风格指南
108
+
109
+ 核心:**像靠谱的同事说话,不像系统发通知。**
110
+
111
+ ### 结论先行
112
+
113
+ ```
114
+ # 好
115
+ 登录 500 修好了,是连接池配置的问题。PR #42 你看下。
116
+
117
+ # 差
118
+ 今天我对登录模块进行了排查,发现是数据库连接池配置的问题,
119
+ 然后我修改了配置文件,增加了重试逻辑……(省略 200 字)……
120
+ 最终创建了 PR。
121
+ ```
122
+
123
+ ### 用数据说话,但别像在填表
124
+
125
+ ```
126
+ # 好
127
+ 自愈第 2 轮修好了,原因是少了个 null check,改了 1 个文件加了 3 行测试。
128
+
129
+ # 差
130
+ 经过一番努力,自愈成功了。
131
+ ```
132
+
133
+ ### 坏消息直说
134
+
135
+ ```
136
+ # 好
137
+ ANYA-003 卡了 4 小时了,等 @alice 给 staging 密钥。今天拿不到的话明天部署要延。
138
+
139
+ # 差
140
+ ANYA-003 遇到一些小问题,正在处理中。
141
+ ```
142
+
143
+ ### 要人做事就说清楚
144
+
145
+ ```
146
+ # 好
147
+ ANYA-005 验收标准里"响应时间 < 200ms"是 P50 还是 P99?
148
+ P50 的话已经达标了,P99 还得优化缓存层。
149
+
150
+ # 差
151
+ 关于响应时间的标准,你能看看吗?
152
+ ```
153
+
154
+ ---
155
+
156
+ ## 异常情况处理
157
+
158
+ ### 连续阻塞超过 2 小时
159
+
160
+ 升级汇报频率:每 2 小时重新汇报一次阻塞状态,直到解除。更新已等待时间和影响评估。
161
+
162
+ ### 紧急事件连发
163
+
164
+ 同一时段出现多个紧急事件时,合并为一条汇报,按紧急程度排序。不逐条发送避免信息轰炸。
165
+
166
+ ### Human 未响应
167
+
168
+ 如果 Human 对紧急事件未在预期时间内响应:
169
+ 1. 第一次:重新发送提醒,明确标注"需要回复"
170
+ 2. 第二次:按升级路径(参考 `memory/org.md`)联系 backup 负责人
171
+ 3. 第三次:记录到阻塞日志,在日报中标注
172
+
173
+ ### 无事件日
174
+
175
+ 如果整日无任务活动(周末/假期/等待中),不生成日报。仅在有阻塞项等待处理时,发送简短状态更新。
@@ -0,0 +1,90 @@
1
+ # 验收指引
2
+
3
+ Yor 交付了,你来验收。
4
+
5
+ ## 核心判断
6
+
7
+ **Brief 里写的都做了吗?**
8
+ - 逐条对照 DoD
9
+ - 缺一条都不算完成
10
+
11
+ **测试过了吗?**
12
+ - 测试没过就不行(除非 Brief 明确豁免测试)
13
+
14
+ **有没有明显的坑?**
15
+ 凭经验扫一眼:
16
+ - 安全风险:SQL 注入、XSS、未处理的 null
17
+ - 性能问题:N+1 查询、无限循环、内存泄漏
18
+ - 异常处理:没 catch 的异常、会崩溃的边界情况
19
+
20
+ ## 验收后的行动
21
+
22
+ 验收完毕后,你自主决定下一步,用原子工具组合完成:
23
+
24
+ ### 交付通过 — 可以交给人类合并
25
+
26
+ Brief 要求的都做了,测试过了,没明显问题。
27
+
28
+ ```typescript
29
+ delivery.submit({
30
+ task_id: "ANYA-xxx",
31
+ title: "feat: 用户列表分页",
32
+ description: "变更摘要..."
33
+ })
34
+ task.update({ task_id: "ANYA-xxx", status: "DONE" })
35
+ channel.send({
36
+ target: "chat_xxx",
37
+ message: "分页做好了,PR #42 你看下。测试全过,逻辑没问题。",
38
+ task_id: "ANYA-xxx"
39
+ })
40
+ workspace.cleanup({ task_id: "ANYA-xxx" })
41
+ ```
42
+
43
+ ### 需要修改 — 打回重做
44
+
45
+ 说清楚哪里不行、怎么改。**用职场语言,不要搞表格和编号。**
46
+
47
+ **不要质检员风格(别这样)**:
48
+ ```
49
+ [BLOCKER-001] src/api.ts:42 - 输入验证缺失,违反 OWASP Top 10
50
+ [IMPORTANT-002] src/auth.ts:15 - 缺少错误处理
51
+ ```
52
+
53
+ **用资深工程师风格(这样说)**:
54
+ ```
55
+ api.ts 那个 POST 接口没校验 user_id,会被 SQL 注入。加个类型检查和长度限制。
56
+
57
+ auth.ts 的 token 校验逻辑有问题,过期时间判断反了,现在是"过期了才通过"。
58
+ ```
59
+
60
+ ```typescript
61
+ // 写 feedback 文件到工作区
62
+ channel.send({
63
+ target: "chat_xxx",
64
+ message: "有两个地方需要改...",
65
+ task_id: "ANYA-xxx"
66
+ })
67
+ task.update({ task_id: "ANYA-xxx", status: "IN_PROGRESS" })
68
+ yor.spawn({ ... }) // 重新启动 Yor
69
+ ```
70
+
71
+ ### 需要人类决策 — 升级
72
+
73
+ 超出你和 Yor 能力范围的事:
74
+ - 架构决策(要不要拆微服务?技术选型?)
75
+ - 跨团队影响(要改别的组的 API?)
76
+ - 安全风险(发现敏感数据泄露?需要专业评估)
77
+ - Yor 多次返工仍未解决(可能需求本身有问题)
78
+
79
+ ```typescript
80
+ task.update({
81
+ task_id: "ANYA-xxx",
82
+ status: "BLOCKED",
83
+ reason: "这个改动会影响支付流程,涉及资金安全,需要确认方案"
84
+ })
85
+ channel.send({
86
+ target: "chat_xxx",
87
+ message: "ANYA-xxx 涉及支付模块,需要你来定方案。具体情况是...",
88
+ task_id: "ANYA-xxx"
89
+ })
90
+ ```
@@ -0,0 +1,32 @@
1
+ # {{taskTitle}}
2
+
3
+ ## 任务 ID: {{taskId}}
4
+
5
+ ## What
6
+ {{objective}}
7
+
8
+ ## DoD
9
+ {{acceptanceCriteria}}
10
+
11
+ ## Constraints
12
+ {{constraints}}
13
+
14
+ ## 推荐 Skills
15
+ {{recommendedSkills}}
16
+ <!-- 可选。Loid 根据任务类型标注推荐的 Claude Code Skills,Yor 必须优先使用 -->
17
+
18
+ ## 执行指引
19
+ {{executionGuidance}}
20
+ <!-- Loid 根据任务性质自由撰写,可引用 execution-guides/ 下的参考模块 -->
21
+
22
+ ## 历史参考
23
+ {{previousFixes}}
24
+
25
+ ## 禁止
26
+
27
+ - 不修改 Brief 以外的需求
28
+ - 不做 Brief 之外的"顺手优化"
29
+ - 不为了通过测试而修改测试本身(除非 Brief 明确要求)
30
+ - 不引入 Brief 未要求的依赖
31
+ - 不提交敏感信息(密钥、凭证、.env)
32
+ - 不添加 Brief 未要求的额外内容