@sakanano-moe/agenthelm 6.7.0 → 6.11.0-rc.1

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 (86) hide show
  1. package/package.json +1 -1
  2. package/runtime/index.json +6 -6
  3. package/runtime/plugins/agent-pack/.codex-plugin/plugin.json +1 -1
  4. package/runtime/plugins/agent-pack/hooks/hooks.json +32 -0
  5. package/runtime/plugins/agent-pack/plugin.json +1 -1
  6. package/runtime/plugins/agent-pack/references/local-only.md +126 -0
  7. package/runtime/plugins/agent-pack/references/nudge.en.md +58 -0
  8. package/runtime/plugins/agent-pack/references/nudge.md +58 -0
  9. package/runtime/plugins/agent-pack/runtime/agent_pack_nudge.py +573 -0
  10. package/runtime/plugins/agent-pack/runtime/agenthelm.py +419 -107
  11. package/runtime/plugins/agent-pack/runtime/agenthelm_runtime.py +77 -53
  12. package/runtime/plugins/agent-pack/runtime/i18n_agent_pack.py +78 -0
  13. package/runtime/plugins/agent-pack/runtime/local_only.py +1130 -0
  14. package/runtime/plugins/agent-pack/runtime/locale/en.json +385 -0
  15. package/runtime/plugins/agent-pack/runtime/mcp_server.py +25 -0
  16. package/runtime/plugins/agent-pack/runtime/nudge_text.py +107 -0
  17. package/runtime/plugins/agent-pack/skills/agent-pack/SKILL.md +9 -1
  18. package/runtime/plugins/agents-init/.codex-plugin/plugin.json +1 -1
  19. package/runtime/plugins/agents-init/content.json +17 -2
  20. package/runtime/plugins/agents-init/plugin.json +1 -1
  21. package/runtime/plugins/agents-init/skills/agents-init/AGENT.template.md +47 -0
  22. package/runtime/plugins/agents-init/skills/agents-init/SKILL.md +39 -1
  23. package/runtime/plugins/agents-init/skills/agents-init/project.schema.json +404 -70
  24. package/runtime/plugins/agents-init/skills/agents-init/scripts/adopt.py +596 -0
  25. package/runtime/plugins/agents-init/skills/agents-init/scripts/i18n_init.py +78 -0
  26. package/runtime/plugins/agents-init/skills/agents-init/scripts/init_project.py +245 -72
  27. package/runtime/plugins/agents-init/skills/agents-init/scripts/locale/en.json +210 -0
  28. package/runtime/plugins/agents-init/skills/agents-init/scripts/regions.py +99 -0
  29. package/runtime/plugins/agents-init/skills/agents-init/scripts/scaffold.py +1081 -0
  30. package/runtime/plugins/agents-init/skills/agents-init/scripts/test_adopt.py +551 -0
  31. package/runtime/plugins/agents-init/skills/agents-init/scripts/test_init_project.py +46 -2
  32. package/runtime/plugins/agents-init/skills/agents-init/scripts/test_scaffold.py +555 -0
  33. package/runtime/plugins/agents-init/skills/agents-init/skeleton.json +66 -0
  34. package/runtime/plugins/agents-init/skills/agents-init/skill.json +1 -1
  35. package/runtime/plugins/opinion-manager/.codex-plugin/plugin.json +1 -1
  36. package/runtime/plugins/opinion-manager/plugin.json +1 -1
  37. package/runtime/plugins/opinion-manager/references/inbox.en.md +48 -0
  38. package/runtime/plugins/opinion-manager/references/inbox.md +48 -0
  39. package/runtime/plugins/opinion-manager/runtime/context.py +19 -18
  40. package/runtime/plugins/opinion-manager/runtime/i18n_opinion.py +78 -0
  41. package/runtime/plugins/opinion-manager/runtime/inbox.py +397 -0
  42. package/runtime/plugins/opinion-manager/runtime/inbox_text.py +101 -0
  43. package/runtime/plugins/opinion-manager/runtime/lifecycle.py +45 -44
  44. package/runtime/plugins/opinion-manager/runtime/locale/en.json +184 -0
  45. package/runtime/plugins/opinion-manager/runtime/opinion_manager.py +55 -50
  46. package/runtime/plugins/opinion-manager/runtime/versioned.py +84 -83
  47. package/runtime/plugins/opinion-manager/skills/opinion-manager/SKILL.md +15 -2
  48. package/runtime/plugins/project-orchestrator/.codex-plugin/plugin.json +1 -1
  49. package/runtime/plugins/project-orchestrator/content.json +30 -3
  50. package/runtime/plugins/project-orchestrator/plugin.json +1 -1
  51. package/runtime/plugins/project-orchestrator/references/case-workspaces.md +9 -1
  52. package/runtime/plugins/project-orchestrator/references/case.schema.json +1 -0
  53. package/runtime/plugins/project-orchestrator/references/sop-interview.md +83 -0
  54. package/runtime/plugins/project-orchestrator/references/sop.md +156 -0
  55. package/runtime/plugins/project-orchestrator/runtime/assets.py +52 -57
  56. package/runtime/plugins/project-orchestrator/runtime/case.py +139 -80
  57. package/runtime/plugins/project-orchestrator/runtime/case_structure.py +71 -0
  58. package/runtime/plugins/project-orchestrator/runtime/case_workspace.py +47 -46
  59. package/runtime/plugins/project-orchestrator/runtime/i18n_orchestrator.py +78 -0
  60. package/runtime/plugins/project-orchestrator/runtime/locale/en.json +1409 -0
  61. package/runtime/plugins/project-orchestrator/runtime/memory.py +44 -43
  62. package/runtime/plugins/project-orchestrator/runtime/private_paths.py +119 -0
  63. package/runtime/plugins/project-orchestrator/runtime/project_base.py +37 -19
  64. package/runtime/plugins/project-orchestrator/runtime/project_cli.py +267 -174
  65. package/runtime/plugins/project-orchestrator/runtime/project_demo.py +130 -48
  66. package/runtime/plugins/project-orchestrator/runtime/project_maintain.py +524 -134
  67. package/runtime/plugins/project-orchestrator/runtime/project_menu.py +159 -85
  68. package/runtime/plugins/project-orchestrator/runtime/project_real.py +191 -106
  69. package/runtime/plugins/project-orchestrator/runtime/project_write.py +58 -55
  70. package/runtime/plugins/project-orchestrator/runtime/sop.py +1670 -0
  71. package/runtime/plugins/project-orchestrator/runtime/sop_structure.py +226 -0
  72. package/runtime/plugins/project-orchestrator/runtime/wf.py +74 -70
  73. package/runtime/plugins/project-orchestrator/skills/project-orchestrator/SKILL.md +22 -0
  74. package/runtime/plugins/project-orchestrator/sop-templates/blank/SOP.en.md +57 -0
  75. package/runtime/plugins/project-orchestrator/sop-templates/blank/SOP.md +57 -0
  76. package/runtime/plugins/project-orchestrator/sop-templates/knowledge-digest/SOP.en.md +77 -0
  77. package/runtime/plugins/project-orchestrator/sop-templates/knowledge-digest/SOP.md +77 -0
  78. package/runtime/plugins/project-orchestrator/sop-templates/knowledge-digest/templates/digest.en.md +11 -0
  79. package/runtime/plugins/project-orchestrator/sop-templates/knowledge-digest/templates/digest.md +11 -0
  80. package/runtime/plugins/project-orchestrator/sop-templates/video-to-transcript/SOP.en.md +87 -0
  81. package/runtime/plugins/project-orchestrator/sop-templates/video-to-transcript/SOP.md +87 -0
  82. package/runtime/plugins/project-orchestrator/sop-templates/weekly-review/SOP.en.md +75 -0
  83. package/runtime/plugins/project-orchestrator/sop-templates/weekly-review/SOP.md +75 -0
  84. package/runtime/plugins/project-orchestrator/sop-templates/weekly-review/templates/review.en.md +11 -0
  85. package/runtime/plugins/project-orchestrator/sop-templates/weekly-review/templates/review.md +12 -0
  86. package/runtime/plugins/project-orchestrator/templates/CASE.en.md +39 -0
@@ -0,0 +1,57 @@
1
+ ---
2
+ schema_version: "1.0"
3
+ id: "{{id}}"
4
+ title: "{{title}}"
5
+ status: "draft"
6
+ version: "1.0.0"
7
+ description: "【待补充】一句话:这个流程做什么、什么时候该想起它"
8
+ trigger: "【待补充】什么情况下用这个流程"
9
+ exclude: ""
10
+ confirm: "ask"
11
+ creates_case: "always"
12
+ created: "{{date}}"
13
+ aliases: []
14
+ examples_hit: []
15
+ examples_miss: []
16
+ on_events: []
17
+ outputs: []
18
+ sources: []
19
+ decided: []
20
+ ---
21
+ # {{title}}
22
+
23
+ ## 目的
24
+
25
+ 【待补充】这个流程要达成什么结果,一两句话。
26
+
27
+ ## 前置条件
28
+
29
+ 每行一项:`- 种类:名称|用途:…|安装:…|替代:另一项的名称|缺失时:询问用户`。
30
+ 种类可用:命令、模块(Python 模块)、环境变量、路径、技能、MCP、手动确认。缺失时可用:询问用户、停止、跳过该步、使用替代。
31
+ API 密钥只写环境变量名,不写密钥本身。确实不需要任何工具时写“无”。
32
+
33
+ - 命令:【待补充】|用途:【待补充】|安装:【待补充】|缺失时:询问用户
34
+
35
+ ## 步骤
36
+
37
+ 每步一个编号,下面用缩进的子项补充;可用子项:工具、输入、中间产物、最终产物、检查点、失败时、需确认、说明。
38
+ “工具”里写的名称必须在上面的前置条件里声明过。
39
+
40
+ 1. 【待补充】第一步做什么
41
+ - 工具:【待补充】
42
+ - 输入:【待补充】
43
+ - 中间产物:【待补充】
44
+ - 检查点:【待补充】怎样算这一步做对了
45
+ - 失败时:【待补充】(不写则按“执行约定”处理)
46
+
47
+ ## 完成标准
48
+
49
+ - 【待补充】怎样才算整个流程做完了(能被检查的条件,例如“成品文件存在于 …”)
50
+
51
+ ## 例外与回退
52
+
53
+ - 【待补充】常见的例外情况和处理办法;没有就写“无”。
54
+
55
+ ## 修订记录
56
+
57
+ 暂无。
@@ -0,0 +1,77 @@
1
+ ---
2
+ schema_version: "1.0"
3
+ id: "{{id}}"
4
+ title: "Weekly knowledge digest"
5
+ status: "draft"
6
+ version: "1.0.0"
7
+ description: "Regularly tidy new notes and materials: merge duplicates, fill in links and distill rule candidates"
8
+ trigger: "The user wants the recent notes and materials tidied, or the fixed digest day has come"
9
+ exclude: "Only looking up one particular document"
10
+ schedule: "weekly:sat"
11
+ confirm: "ask"
12
+ creates_case: "always"
13
+ created: "{{date}}"
14
+ aliases:
15
+ - "knowledge digest"
16
+ - "tidy notes"
17
+ examples_hit:
18
+ - "Tidy up my recent notes"
19
+ - "Do a knowledge digest"
20
+ examples_miss:
21
+ - "Find that report from last time"
22
+ on_events: []
23
+ outputs: []
24
+ sources: []
25
+ decided: []
26
+ ---
27
+ # {{title}}
28
+
29
+ ## Purpose
30
+
31
+ Bring the notes and materials added or changed over a period into a state where they are searchable, free of duplicates and linked to each other, and distill practices that keep recurring into rule candidates.
32
+
33
+ ## Prerequisites
34
+
35
+ - Command: agenthelm | Purpose: find new materials by keyword and date (`agenthelm project find`) | Install: see agenthelm's INSTALL.md | If missing: Ask the user
36
+
37
+ ## Steps
38
+
39
+ 1. Settle the scope of the digest
40
+ - Inputs: a directory, tags or a period
41
+ - Checkpoint: the user states the scope explicitly
42
+ - Needs confirmation: yes
43
+ - Note: if the scope contains materials with personal progress, accounts or private material, tell the user first and let them decide whether to include them; by default this procedure tidies only shareable knowledge content
44
+ 2. Collect new and changed materials
45
+ - Tools: agenthelm
46
+ - Inputs: the scope; the date of the last digest
47
+ - Intermediates: a list of things to tidy
48
+ - Checkpoint: the list holds only materials in scope
49
+ 3. Merge duplicates and outdated content
50
+ - Inputs: the list of things to tidy
51
+ - Checkpoint: every merge or deletion is on the list
52
+ - Needs confirmation: yes
53
+ - Note: hand the list to the user for confirmation before merging or deleting, and never delete directly; keep the originals that were merged until the user confirms
54
+ 4. Fill in links and indexes
55
+ - Checkpoint: each new material is referenced by at least one index or related material, and no link is broken
56
+ 5. Distill rule candidates
57
+ - Inputs: practices that recurred during the digest and that the user has stated explicitly
58
+ - Intermediates: a candidate list (each with the places it is based on)
59
+ - Note: only form candidates and hand them to rule management (opinion-manager) for the user-confirmation flow; never write into OPINION.md yourself, and the number of recurrences is not the user's confirmation
60
+ 6. Record the result
61
+ - Final outputs: docs/digest-DATE.md inside this Case's directory (using the structure of templates/digest.md in this directory)
62
+ - Checkpoint: merges, deletions, new links and candidates are each recorded
63
+
64
+ ## Completion criteria
65
+
66
+ - The result is saved and registered as a deliverable
67
+ - Everything merged or deleted was confirmed by the user
68
+ - The rule candidates were handed to the user for a decision, or "no candidates this time" is recorded explicitly
69
+
70
+ ## Exceptions and fallback
71
+
72
+ - Nothing new in scope: record it as it is, and do not change existing content just to have something to show
73
+ - Content that was already tidied turns out to be wrong: do not overwrite the original; point it out in the result and ask the user
74
+
75
+ ## Revision log
76
+
77
+ None yet.
@@ -0,0 +1,77 @@
1
+ ---
2
+ schema_version: "1.0"
3
+ id: "{{id}}"
4
+ title: "每周知识整理"
5
+ status: "draft"
6
+ version: "1.0.0"
7
+ description: "定期整理新增的笔记与资料:合并重复、补齐链接,并提炼规则候选"
8
+ trigger: "用户要整理最近的笔记和资料,或到了固定的整理日"
9
+ exclude: "只是查找某一份资料"
10
+ schedule: "weekly:sat"
11
+ confirm: "ask"
12
+ creates_case: "always"
13
+ created: "{{date}}"
14
+ aliases:
15
+ - "知识整理"
16
+ - "整理笔记"
17
+ examples_hit:
18
+ - "把最近的笔记整理一下"
19
+ - "做一次知识整理"
20
+ examples_miss:
21
+ - "帮我找一下上次那份报告"
22
+ on_events: []
23
+ outputs: []
24
+ sources: []
25
+ decided: []
26
+ ---
27
+ # {{title}}
28
+
29
+ ## 目的
30
+
31
+ 把一段时间内新增或变更的笔记、资料整理成可检索、不重复、互相链接的状态,并把反复出现的做法沉淀成规则候选。
32
+
33
+ ## 前置条件
34
+
35
+ - 命令:agenthelm|用途:按关键词、日期查找新增的资料(`agenthelm project find`)|安装:见 agenthelm 的 INSTALL.md|缺失时:询问用户
36
+
37
+ ## 步骤
38
+
39
+ 1. 确定整理范围
40
+ - 输入:目录、标签或时间段
41
+ - 检查点:范围由用户明确给出
42
+ - 需确认:是
43
+ - 说明:范围内如有含个人进度、账号或私人素材的资料,先告诉用户,由用户决定是否纳入;本流程默认只整理可共享的知识类内容
44
+ 2. 收集新增与变更的资料
45
+ - 工具:agenthelm
46
+ - 输入:范围;上次整理的日期
47
+ - 中间产物:待整理清单
48
+ - 检查点:清单只含范围内的资料
49
+ 3. 合并重复与过时内容
50
+ - 输入:待整理清单
51
+ - 检查点:每一处合并或删除都列在清单里
52
+ - 需确认:是
53
+ - 说明:合并或删除前把清单交给用户确认,不直接删除;被合并的原文先保留到用户确认之后
54
+ 4. 补齐链接与索引
55
+ - 检查点:新增资料至少被一个索引或相关资料引用,没有断链
56
+ 5. 提炼规则候选
57
+ - 输入:整理过程中反复出现、用户明确表达过的做法
58
+ - 中间产物:候选清单(每条写明依据来自哪几处)
59
+ - 说明:只形成候选,交给规则管理(opinion-manager)走用户确认流程;不自行写入 OPINION.md,重复出现的次数不等于用户已确认
60
+ 6. 记录整理结果
61
+ - 最终产物:本 Case 目录内的 docs/digest-日期.md(使用本目录 templates/digest.md 的结构)
62
+ - 检查点:合并、删除、新增链接、候选各有记录
63
+
64
+ ## 完成标准
65
+
66
+ - 整理结果已保存并登记为交付物
67
+ - 合并或删除的内容都经用户确认
68
+ - 规则候选已交给用户裁决,或明确记录“本次无候选”
69
+
70
+ ## 例外与回退
71
+
72
+ - 范围内没有新增内容:照实记录,不为了凑数改动已有内容
73
+ - 发现已整理的内容有误:不覆盖原文,在结果里标出并问用户
74
+
75
+ ## 修订记录
76
+
77
+ 暂无。
@@ -0,0 +1,11 @@
1
+ # Knowledge digest (date range)
2
+
3
+ ## Scope
4
+
5
+ ## Merges and deletions (all confirmed)
6
+
7
+ ## New links and indexes
8
+
9
+ ## Rule candidates (awaiting the user's confirmation)
10
+
11
+ ## Open questions
@@ -0,0 +1,11 @@
1
+ # 知识整理(日期范围)
2
+
3
+ ## 范围
4
+
5
+ ## 合并与删除(均经确认)
6
+
7
+ ## 新增链接与索引
8
+
9
+ ## 规则候选(待用户确认)
10
+
11
+ ## 遗留问题
@@ -0,0 +1,87 @@
1
+ ---
2
+ schema_version: "1.0"
3
+ id: "{{id}}"
4
+ title: "Video to transcript"
5
+ status: "draft"
6
+ version: "1.0.0"
7
+ description: "Turn a video (a link or a local file) into a transcript"
8
+ trigger: "The user wants a video turned into a transcript, subtitles or searchable text"
9
+ exclude: "The user already has a transcript and only wants it summarized or rewritten"
10
+ confirm: "ask"
11
+ creates_case: "always"
12
+ created: "{{date}}"
13
+ aliases:
14
+ - "video to text"
15
+ - "video transcription"
16
+ examples_hit:
17
+ - "Turn this video into a transcript"
18
+ - "Transcribe the video at this link"
19
+ examples_miss:
20
+ - "Summarize this transcript"
21
+ on_events: []
22
+ outputs: []
23
+ sources: []
24
+ decided: []
25
+ ---
26
+ # {{title}}
27
+
28
+ ## Purpose
29
+
30
+ Turn a video into a readable, searchable transcript that keeps its source information.
31
+
32
+ ## Prerequisites
33
+
34
+ A set of common choices; the names are examples: confirm, replace or delete each one according to the tools you actually use. Items marked "Only if" are needed only when this run's input matches the condition.
35
+
36
+ - Command: yutto | Purpose: download Bilibili videos (BV / av IDs, bilibili.com links); `--audio-only` fetches just the audio, `-d` sets the output directory | Install: `pipx install yutto` (needs FFmpeg configured) | Only if: the input is a Bilibili video | If missing: Ask the user
37
+ - Command: yt-dlp | Purpose: download online videos from other sites | Install: `pipx install yt-dlp` or the system package manager | Only if: the input is an online video from a site other than Bilibili | If missing: Ask the user
38
+ - Command: ffmpeg | Purpose: merge Bilibili audio and video streams, extract audio from a video, convert to the format the transcription tool needs | Install: the system package manager (for example `brew install ffmpeg`) | If missing: Ask the user
39
+ - Command: whisper-cli | Purpose: transcription with a local model | Install: follow the official instructions of the local transcription tool you use | Alternative: TRANSCRIBE_API_KEY | If missing: Use the alternative
40
+ - Path: ~/models/whisper.bin | Purpose: the model file whisper-cli needs; change it to your actual location | If missing: Ask the user
41
+ - Environment variable: TRANSCRIBE_API_KEY | Purpose: the key for a cloud transcription API, if you switch to one (write only the variable name) | If missing: Ask the user
42
+
43
+ ## Steps
44
+
45
+ 1. Confirm the input and options
46
+ - Inputs: the video link or local file path; the language; whether timestamps are needed
47
+ - Checkpoint: the input is clear, and a local file really exists
48
+ 2. Get the video file
49
+ - Tools: yutto, yt-dlp
50
+ - Inputs: the video link (skip this step for a local file)
51
+ - Intermediates: the downloaded video or audio file
52
+ - Checkpoint: the file exists and is larger than 0 bytes
53
+ - On failure: Ask the user (when a link is dead, needs a login or is region-locked, do not work around it yourself)
54
+ - Needs confirmation: yes
55
+ - Note: use yutto for Bilibili links and yt-dlp for other sites. For content that needs a login, the user logs in and saves the login information themselves (see yutto's official documentation for how); credentials are written neither into this SOP nor into the Case. Downloading a large file is a slow step, so the "run conventions" decide whether to ask first
56
+ 3. Extract the audio
57
+ - Tools: ffmpeg
58
+ - Inputs: the video or audio file from the previous step
59
+ - Intermediates: audio.wav (mono, 16 kHz; follow the transcription tool if it needs another format)
60
+ - Checkpoint: the audio length differs from the video length by at most 1 second
61
+ 4. Transcribe
62
+ - Tools: whisper-cli, TRANSCRIBE_API_KEY
63
+ - Inputs: audio.wav; the language
64
+ - Intermediates: the raw transcription result
65
+ - Checkpoint: the text is not empty and its length roughly matches the audio length
66
+ - Note: prefer local transcription; switch to a cloud API only when the local one is unavailable and the user agrees, because using an API sends the audio to a third-party service, which needs the user's consent first
67
+ 5. Tidy up and save
68
+ - Inputs: the raw transcription result
69
+ - Final outputs: the transcript (see the completion criteria for where to save it)
70
+ - Checkpoint: spot-check one passage each from the start, the middle and the end against the audio
71
+ 6. Clean up
72
+ - Note: handle the intermediates according to the "run conventions"; clean up only files registered in the Case during this run
73
+
74
+ ## Completion criteria
75
+
76
+ - The transcript is saved at: [TO FILL IN]
77
+ - The start of the transcript records the source (link or file name), the transcription tool and the date
78
+ - The intermediates were handled as agreed, and the outcome is noted in the Case's work log
79
+
80
+ ## Exceptions and fallback
81
+
82
+ - The video has no audio track: stop and tell the user; do not make up text
83
+ - The audio is very long: transcribe it in segments and merge them, then check that the passages join up
84
+
85
+ ## Revision log
86
+
87
+ None yet.
@@ -0,0 +1,87 @@
1
+ ---
2
+ schema_version: "1.0"
3
+ id: "{{id}}"
4
+ title: "视频转文字稿"
5
+ status: "draft"
6
+ version: "1.0.0"
7
+ description: "把一个视频(链接或本地文件)转成文字稿"
8
+ trigger: "用户要把某个视频转成文字稿、字幕或可检索的文本"
9
+ exclude: "用户已经提供了文字稿,只是要总结或改写"
10
+ confirm: "ask"
11
+ creates_case: "always"
12
+ created: "{{date}}"
13
+ aliases:
14
+ - "视频转文字"
15
+ - "视频转录"
16
+ examples_hit:
17
+ - "帮我把这个视频转成文字稿"
18
+ - "这个链接的视频转录一下"
19
+ examples_miss:
20
+ - "总结一下这份文字稿"
21
+ on_events: []
22
+ outputs: []
23
+ sources: []
24
+ decided: []
25
+ ---
26
+ # {{title}}
27
+
28
+ ## 目的
29
+
30
+ 把一个视频转成可阅读、可检索的文字稿,并保留来源信息。
31
+
32
+ ## 前置条件
33
+
34
+ 下面是一组常见选择,名称都是示例:请按你实际使用的工具逐项确认、替换或删除。带“仅当”的项只在本次输入符合条件时才需要。
35
+
36
+ - 命令:yutto|用途:下载 B 站视频(BV / av 号、bilibili.com 链接),可用 `--audio-only` 只取音频、`-d` 指定输出目录|安装:`pipx install yutto`(需要已配置 FFmpeg)|仅当:输入是 B 站视频|缺失时:询问用户
37
+ - 命令:yt-dlp|用途:下载其他网站的在线视频|安装:`pipx install yt-dlp` 或系统包管理器|仅当:输入是 B 站以外的在线视频|缺失时:询问用户
38
+ - 命令:ffmpeg|用途:合并 B 站音视频流、从视频提取音频、转成转录工具需要的格式|安装:系统包管理器(如 `brew install ffmpeg`)|缺失时:询问用户
39
+ - 命令:whisper-cli|用途:本地模型转录|安装:按所用的本地转录工具的官方说明|替代:TRANSCRIBE_API_KEY|缺失时:使用替代
40
+ - 路径:~/models/whisper.bin|用途:whisper-cli 需要的模型文件,请改成你的实际位置|缺失时:询问用户
41
+ - 环境变量:TRANSCRIBE_API_KEY|用途:改用云端转录 API 时的密钥(只写变量名)|缺失时:询问用户
42
+
43
+ ## 步骤
44
+
45
+ 1. 确认输入与选项
46
+ - 输入:视频链接或本地文件路径;语言;是否需要时间戳
47
+ - 检查点:输入明确,本地文件确实存在
48
+ 2. 取得视频文件
49
+ - 工具:yutto、yt-dlp
50
+ - 输入:视频链接(本地文件则跳过本步)
51
+ - 中间产物:下载的视频或音频文件
52
+ - 检查点:文件存在且大小大于 0
53
+ - 失败时:询问用户(链接失效、需要登录或地区限制时不要自行绕过)
54
+ - 需确认:是
55
+ - 说明:B 站链接用 yutto,其他站点用 yt-dlp。需要登录才能看的内容,由用户自己登录并保存登录信息(yutto 的做法见其官方文档),登录凭据不写进本 SOP、不写进 Case。大文件下载属于耗时步骤,按“执行约定”决定是否先问
56
+ 3. 提取音频
57
+ - 工具:ffmpeg
58
+ - 输入:上一步的视频或音频文件
59
+ - 中间产物:audio.wav(单声道,16 kHz;转录工具要求其他格式时按其要求)
60
+ - 检查点:音频时长与视频时长相差不超过 1 秒
61
+ 4. 转录
62
+ - 工具:whisper-cli、TRANSCRIBE_API_KEY
63
+ - 输入:audio.wav;语言
64
+ - 中间产物:原始转录结果
65
+ - 检查点:文本非空,长度与音频时长大致匹配
66
+ - 说明:优先使用本地转录;本地不可用且用户同意时才改用云端 API,使用 API 会把音频发送给第三方服务,需要先问用户
67
+ 5. 整理与保存
68
+ - 输入:原始转录结果
69
+ - 最终产物:文字稿(保存位置见完成标准)
70
+ - 检查点:抽查开头、中间、结尾各一段与音频一致
71
+ 6. 清理
72
+ - 说明:按“执行约定”处理中间产物;只清理本次在 Case 里登记过的文件
73
+
74
+ ## 完成标准
75
+
76
+ - 文字稿已保存到:【待补充】
77
+ - 文字稿开头记录了来源(链接或文件名)、转录工具与日期
78
+ - 中间产物已按约定处理,处理结果记在 Case 的工作记录里
79
+
80
+ ## 例外与回退
81
+
82
+ - 视频无音轨:停止并告诉用户,不要凭空生成文本
83
+ - 音频很长:可按段切分转录再合并,合并后检查段落衔接
84
+
85
+ ## 修订记录
86
+
87
+ 暂无。
@@ -0,0 +1,75 @@
1
+ ---
2
+ schema_version: "1.0"
3
+ id: "{{id}}"
4
+ title: "Weekly review"
5
+ status: "draft"
6
+ version: "1.0.0"
7
+ description: "Look back on the progress of chosen items each week, write a review and plan the next week"
8
+ trigger: "The user wants a weekly review or to look back on the week, or the fixed review day has come"
9
+ exclude: "Only asking where one item stands right now"
10
+ schedule: "weekly:sun"
11
+ confirm: "ask"
12
+ creates_case: "always"
13
+ created: "{{date}}"
14
+ aliases:
15
+ - "weekly review"
16
+ examples_hit:
17
+ - "Do this week's review"
18
+ - "Look back on what I did this week"
19
+ examples_miss:
20
+ - "Where is this item right now"
21
+ on_events: []
22
+ outputs: []
23
+ sources: []
24
+ decided: []
25
+ ---
26
+ # {{title}}
27
+
28
+ ## Purpose
29
+
30
+ Look back on what the chosen items actually achieved this week and where they got stuck, collect the lessons, and settle the few most important things for next week.
31
+
32
+ ## Prerequisites
33
+
34
+ - Command: agenthelm | Purpose: read the progress of the chosen items (`agenthelm project progress --output json`) | Install: see agenthelm's INSTALL.md | If missing: Ask the user
35
+
36
+ ## Steps
37
+
38
+ 1. Settle the scope of the review
39
+ - Inputs: the items to include (tags, item names or IDs)
40
+ - Checkpoint: the user states the scope explicitly; do not include every item by default
41
+ - Needs confirmation: yes
42
+ - Note: the review reads the work logs of the chosen items, which may hold personal progress. Items the user did not include are never read and never written into the review; the review document stays in the project that runs it, and if that project may become public, do not use this procedure to review personal progress
43
+ 2. Collect the progress of the chosen items
44
+ - Tools: agenthelm
45
+ - Inputs: this week's start and end dates; the scope from the previous step
46
+ - Intermediates: a progress list (item, status, this week's work log)
47
+ - Checkpoint: only items in scope are covered, and all of them that are in progress or were closed this week
48
+ 3. Compare with last week's plan
49
+ - Inputs: the "next week's plan" in the previous review document
50
+ - Checkpoint: every planned item has a verdict: done / not done, with the reason
51
+ 4. Write the review document
52
+ - Inputs: the results of the steps above
53
+ - Final outputs: docs/review-DATE.md inside this Case's directory (using the structure of templates/review.md in this directory)
54
+ - Checkpoint: every section has content and the conclusions have grounds (pointing to an item or a file); the scope of this review is stated at the top
55
+ 5. Plan next week
56
+ - Inputs: the unfinished items and blockers in the review document
57
+ - Checkpoint: no more than the number the user set; every item has a clear next action
58
+ - Needs confirmation: yes
59
+ - Note: the user decides next week's plan; only suggest
60
+ 6. Register the deliverable
61
+ - Note: register the review document as a deliverable of the Case
62
+
63
+ ## Completion criteria
64
+
65
+ - The review document is saved inside this Case's directory, states its scope at the top and is registered as a deliverable
66
+ - Next week's plan was confirmed by the user
67
+
68
+ ## Exceptions and fallback
69
+
70
+ - The chosen items have no records at all this week: say "no records this week" as it is, and ask the user whether something went unrecorded
71
+ - The user later wants to publish or share the review: the user first confirms, section by section, what may be public, and then it is copied out; the original document is not moved
72
+
73
+ ## Revision log
74
+
75
+ None yet.
@@ -0,0 +1,75 @@
1
+ ---
2
+ schema_version: "1.0"
3
+ id: "{{id}}"
4
+ title: "每周复盘"
5
+ status: "draft"
6
+ version: "1.0.0"
7
+ description: "每周回看所选事项的进展,写复盘并规划下周"
8
+ trigger: "用户要做周复盘、回顾本周,或到了固定的复盘日"
9
+ exclude: "只是查询某个事项当前进展"
10
+ schedule: "weekly:sun"
11
+ confirm: "ask"
12
+ creates_case: "always"
13
+ created: "{{date}}"
14
+ aliases:
15
+ - "周复盘"
16
+ examples_hit:
17
+ - "做一下本周复盘"
18
+ - "回顾一下这周做了什么"
19
+ examples_miss:
20
+ - "这个事项现在到哪了"
21
+ on_events: []
22
+ outputs: []
23
+ sources: []
24
+ decided: []
25
+ ---
26
+ # {{title}}
27
+
28
+ ## 目的
29
+
30
+ 回看本周所选事项实际完成了什么、卡在哪里,沉淀经验,并定下下周最重要的几件事。
31
+
32
+ ## 前置条件
33
+
34
+ - 命令:agenthelm|用途:读取所选事项的进展(`agenthelm project progress --output json`)|安装:见 agenthelm 的 INSTALL.md|缺失时:询问用户
35
+
36
+ ## 步骤
37
+
38
+ 1. 确定复盘范围
39
+ - 输入:要纳入的事项(标签、事项名或编号)
40
+ - 检查点:范围由用户明确给出,不默认纳入全部事项
41
+ - 需确认:是
42
+ - 说明:复盘会读取所选事项的工作记录,其中可能有个人进度。未被用户纳入的事项一律不读、不写进复盘;复盘文档只留在运行它的这个项目里,该项目若会公开,不要用本流程复盘个人进度
43
+ 2. 收集所选事项的进展
44
+ - 工具:agenthelm
45
+ - 输入:本周的起止日期;上一步确定的范围
46
+ - 中间产物:进展清单(事项、状态、本周的工作记录)
47
+ - 检查点:只覆盖范围内的事项,且覆盖其中所有进行中和本周关闭的
48
+ 3. 对照上周计划
49
+ - 输入:上一次复盘文档里的“下周计划”
50
+ - 检查点:每条计划都有结论:完成 / 未完成及原因
51
+ 4. 写复盘文档
52
+ - 输入:以上步骤的结果
53
+ - 最终产物:本 Case 目录内的 docs/review-日期.md(使用本目录 templates/review.md 的结构)
54
+ - 检查点:所有小节都有内容,结论有依据(指向事项或文件);开头写明本次范围
55
+ 5. 规划下周
56
+ - 输入:复盘文档里的未完成项与阻塞
57
+ - 检查点:不超过用户设定的数量;每项有明确的下一动作
58
+ - 需确认:是
59
+ - 说明:下周计划由用户决定,只提出建议
60
+ 6. 登记交付物
61
+ - 说明:把复盘文档登记为 Case 的交付物
62
+
63
+ ## 完成标准
64
+
65
+ - 复盘文档已保存在本 Case 目录内,开头写明了范围,并登记为交付物
66
+ - 下周计划已经用户确认
67
+
68
+ ## 例外与回退
69
+
70
+ - 所选事项本周没有任何记录:照实写“本周无记录”,并提示用户是否漏记
71
+ - 用户后来想把复盘公开或分享:先由用户逐段确认哪些内容可以公开,再复制出去,不直接移动原文档
72
+
73
+ ## 修订记录
74
+
75
+ 暂无。
@@ -0,0 +1,11 @@
1
+ # Weekly review (date range)
2
+
3
+ ## Done this week
4
+
5
+ ## Not done, and why
6
+
7
+ ## Blockers and help needed
8
+
9
+ ## Lessons and improvements
10
+
11
+ ## Next week's plan
@@ -0,0 +1,12 @@
1
+ # 周复盘 (日期范围)
2
+
3
+ ## 本周完成
4
+
5
+ ## 未完成与原因
6
+
7
+ ## 阻塞与需要的帮助
8
+
9
+ ## 经验与改进
10
+
11
+ ## 下周计划
12
+
@@ -0,0 +1,39 @@
1
+ # Summary
2
+
3
+ {{title}}; current state: {{current_state}}; next: {{next_action}}.
4
+
5
+ ## Background and scope
6
+
7
+ Source: {{source}}. Goal: {{goal}}. Definition of done: {{done_when}}.
8
+
9
+ ## Current trusted state
10
+
11
+ {{current_state}}
12
+
13
+ ## Next action
14
+
15
+ {{next_action}}
16
+
17
+ ## Blockers and resume conditions
18
+
19
+ None.
20
+
21
+ ## Decision log
22
+
23
+ None yet.
24
+
25
+ ## Work log
26
+
27
+ - {{created_at}} Case created.
28
+
29
+ ## Deliverables and quality gates
30
+
31
+ Pending.
32
+
33
+ ## Result
34
+
35
+ The definition of done is not met yet.
36
+
37
+ ## Lessons candidates
38
+
39
+ None yet.