affinage

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

/affinage

/affinage

Act on external claims about a PR — review comments from humans or bots, plus failing CI checks and merge conflicts — grading them through the same lens
/age
uses for fresh review, then handing them to
/cure
for application.
/affinage
always refines the claims that already exist on the PR (comments, CI failures, conflicts). Whether it also generates fresh
/age
findings depends on how it was reached:
  • Standalone — the user typed
    /affinage <pr>
    directly, with no upstream
    handoff_context
    . The PR diff has not been reviewed in this session, so
    /affinage
    runs
    /age
    over it and folds the findings into the same report (unless
    --no-age
    ).
  • Chained — reached from
    /cook
    or
    /cure
    with a
    handoff_context
    .
    /age
    already ran in that chain, so
    /affinage
    skips the fresh pass to avoid double-grading and only refines existing claims.
See
## Fresh-window review
for the detection rule and
## Merge-conflict resolution
for the conflict path.
针对PR的外部反馈进行处理——包括来自人类或机器人的评审评论、失败的CI检查以及合并冲突——通过与/age用于全新评审相同的视角对这些反馈进行分级,然后将其交给/cure执行修复。
/affinage
始终会优化PR上已存在的反馈(评论、CI失败、冲突)。它是否还会生成全新的/age结果取决于触发方式:
  • 独立触发——用户直接输入
    /affinage <pr>
    ,且无上游
    handoff_context
    。本次会话中尚未评审过PR的diff,因此
    /affinage
    会对其运行/age,并将结果整合到同一报告中(除非使用
    --no-age
    参数)。
  • 链式触发——从/cook或/cure触发,带有
    handoff_context
    。该链式流程中已运行过/age,因此
    /affinage
    会跳过全新扫描以避免重复分级,仅优化已有的反馈。
关于检测规则请查看
## Fresh-window review
,关于冲突处理流程请查看
## Merge-conflict resolution

Inputs

Inputs

text
/affinage [<pr-ref>] [--auto --stake <floor>] [--plate] [--safe] [--open-pr] [--hard] [--full] [--include-outdated]
<pr-ref>
accepts a PR number, a full GitHub PR URL, or nothing (auto-detect via
gh pr view --json number
on the current branch).
Flags:
  • --auto --stake <floor>
    — autonomous mode;
    <floor>
    (
    blocker
    ,
    high
    ,
    medium+
    ,
    all
    ) matches
    /cure
    's semantics. Skips selection, dispatches
    /cure --auto --stake <floor>
    , posts replies without prompting. Mechanics:
    references/auto-mode.md
    .
  • --safe
    — also gates cure-selection and merge-conflict resolution (autonomous by default). Reply posting is gated by default regardless — only
    --auto
    skips it.
  • --open-pr
    — let terminal
    /plate
    open a new PR when none exists (else it only updates the open one).
  • --plate
    — one-shot publish combo =
    --auto --stake medium+ --open-pr
    : triage, cure the recommended floor, post every reply, then plate. An explicit
    --stake <floor>
    overrides
    medium+
    .
  • --hard
    — propagated metacognitive-gate flag; forwarded to terminal
    /plate
    , not fired here.
  • --full
    — un-collapses
    ## Low
    when ≥10 low-severity findings exist (mirrors
    /age --full
    ).
  • --include-outdated
    — include outdated review threads (default: skip).
  • --no-age
    — skip the standalone fresh
    /age
    pass; no effect when chained.
Portability reference:
../cheese/references/harness-portability.md
. It covers helper resolution, sub-agent dispatch, GitHub operations, and handoff transitions; prefer the bundled or repo-local helper first, and treat
${CLAUDE_SKILL_DIR}
as optional host-provided fallback. The handoff blocks below are the portable contract; slash commands are host renderings, not the control model.
text
/affinage [<pr-ref>] [--auto --stake <floor>] [--plate] [--safe] [--open-pr] [--hard] [--full] [--include-outdated]
<pr-ref>
可接受PR编号、完整的GitHub PR URL,或留空(通过当前分支上的
gh pr view --json number
自动检测)。
参数说明:
  • --auto --stake <floor>
    ——自主模式;
    <floor>
    blocker
    high
    medium+
    all
    )与/cure的语义一致。跳过选择步骤,直接调度
    /cure --auto --stake <floor>
    ,无需提示即可发布回复。机制详见:
    references/auto-mode.md
  • --safe
    ——同时限制修复选择和合并冲突的解决(默认情况下自主模式会自动处理)。无论如何,回复发布默认受限制——仅
    --auto
    会跳过该限制。
  • --open-pr
    ——当不存在PR时,允许终端
    /plate
    创建一个新的PR(否则仅更新已打开的PR)。
  • --plate
    ——一键发布组合参数 =
    --auto --stake medium+ --open-pr
    :分类处理、修复推荐级别的问题、发布所有回复,然后执行plate操作。显式指定的
    --stake <floor>
    会覆盖
    medium+
  • --hard
    ——传播元认知门控参数;转发给终端
    /plate
    ,不在此触发。
  • --full
    ——当存在≥10个低严重性问题时,展开
    ## Low
    部分(与
    /age --full
    一致)。
  • --include-outdated
    ——包含已过时的评审线程(默认:跳过)。
  • --no-age
    ——跳过独立触发时的全新/age扫描;链式触发时无效果。
可移植性参考:
../cheese/references/harness-portability.md
。该文档涵盖了助手解析、子Agent调度、GitHub操作以及切换过渡;优先使用内置或仓库本地的助手,并将
${CLAUDE_SKILL_DIR}
视为可选的宿主提供的回退方案。下方的切换块是可移植契约;斜杠命令是宿主呈现形式,而非控制模型。

Flow

Flow

Exact CLI invocations, exit-code hints, and grading rationale for steps 2, 3, 6, and 9 below:
references/flow-details.md
.
  1. Resolve PR. From
    <pr-ref>
    or
    gh pr view --json number
    ; resolve
    <owner>/<repo>
    from the git remote.
  2. Fetch PR status.
    affinage.pyz pr-status <pr>
    . Exit 3 halts
    status: halt: pr-status-logs-expired
    ; any other non-zero halts
    status: halt: pr-status-unavailable
    . Conflicting/dirty merge state routes to
    ## Merge-conflict resolution
    before grading. Exit-code detail:
    references/flow-details.md
    .
  3. Fresh-window review. Standalone and
    --no-age
    not passed: score the PR diff, route it through
    age_route.route(...)
    sized with affinage's comment count and CI failure class, run
    /age
    with the returned
    n
    /
    lenses
    /
    effort
    , and fold each finding tagged
    [from-age:<dimension>]
    . See
    ## Fresh-window review
    .
  4. Fetch comments. Inline threads:
    gh api repos/<owner>/<repo>/pulls/<pr>/comments
    (REST; no thread-resolution state, so skip
    position: null
    comments unless
    --include-outdated
    ). Review bodies:
    gh api repos/<owner>/<repo>/pulls/<pr>/reviews
    , filtered to non-empty bodies, deduped against inline comments via
    pull_request_review_id
    .
  5. Skip already-replied threads. A thread last-commented by the resolved GitHub handle (§Rules) is already answered — skip it; the footer renders as
    agent on behalf of <handle>
    .
  6. Grade through the age lens. Classify each input (comment, CI failure, or fresh
    /age
    finding) by dimension — code/claim, or check type/failure for CI — per
    ../age/references/dimensions.md
    , and by severity (base + location + compounding, same rubric as
    /age
    ); ignore reviewer-asserted urgency (
    CHANGES_REQUESTED
    is metadata, never a severity bump). Bucket into severity sections (contained fixes),
    ## Needs-investigation
    (needs out-of-diff evidence), or
    ## Reviewer-rejected
    (wrong/ungrounded, or a lot of follow-up work). Full bucketing criteria:
    references/flow-details.md
    .
  7. Write report to
    .cheese/affinage/pr-<n>.md
    : four-line handoff slug, then the age-format body plus two extra sections. See
    ## Output
    .
  8. Act or ask — per §Handoff.
  9. Draft non-cure replies, then gate before posting (whenever grading produced these items, with or without
    /cure
    ). Never post blind — requires the reply-approval gate (§Handoff), or
    --auto
    . Draft per
    references/flow-details.md
    ; post approved ones via
    affinage.pyz post-reply
    . CI-sourced (
    from-check:<job>
    ) and fresh-review (
    from-age:<dimension>
    ) findings get no reply.
  10. Post-cure reply posting (only when
    /cure
    ran). Once
    /cure
    returns, read
    .cheese/cure/pr-<n>.md
    's
    ### Applied
    /
    ### Deferred
    and post per-finding replies via
    affinage.pyz post-reply
    : Applied (
    from-comment:<id>
    ) →
    "Fixed — <applied summary>."
    ; Deferred (
    from-comment:<id>
    ) →
    "Attempted fix reverted — <reason>."
  11. Plate — once every approved reply is posted (steps 9–10) and the cure applied ≥1 fix, dispatch terminal
    /plate [--open-pr] [--hard] [--safe]
    ; publication lands after every reply. After it lands, run the § Post-PR learnings write-back (
    ../cure/SKILL.md
    § Handoff) — affinage owns the write-back the chained
    /cure
    suppressed. Skip plate and write-back when no fix was applied.
以下步骤2、3、6、9的精确CLI调用、退出码提示以及分级依据详见:
references/flow-details.md
  1. 解析PR。从
    <pr-ref>
    gh pr view --json number
    获取;从git远程仓库解析
    <owner>/<repo>
  2. 获取PR状态。执行
    affinage.pyz pr-status <pr>
    。退出码3表示终止,状态为
    status: halt: pr-status-logs-expired
    ;其他非零退出码表示终止,状态为
    status: halt: pr-status-unavailable
    。存在冲突/脏合并状态时,会在分级前路由至
    ## Merge-conflict resolution
    。退出码详情:
    references/flow-details.md
  3. Fresh-window review。独立触发且未传递
    --no-age
    :对PR diff进行评分,通过affinage的评论数量和CI失败类别调用
    age_route.route(...)
    进行路由,使用返回的
    n
    /
    lenses
    /
    effort
    运行/age,并将每个标记为
    [from-age:<dimension>]
    的结果整合到报告中。详见
    ## Fresh-window review
  4. 获取评论。内联线程:调用
    gh api repos/<owner>/<repo>/pulls/<pr>/comments
    (REST接口;无线程解析状态,因此除非使用
    --include-outdated
    ,否则跳过
    position: null
    的评论)。评审主体:调用
    gh api repos/<owner>/<repo>/pulls/<pr>/reviews
    ,筛选非空主体,通过
    pull_request_review_id
    与内联评论去重。
  5. 跳过已回复的线程。由已解析的GitHub账号(§规则)最后评论的线程视为已回复——跳过该线程;页脚会显示为
    agent on behalf of <handle>
  6. 通过age视角分级。按照
    ../age/references/dimensions.md
    中的维度,将每个输入(评论、CI失败或全新/age结果)分类为代码/反馈,或针对CI的检查类型/失败类型,并按照严重性(基础+位置+复合,与/age使用相同的评分标准)分级;忽略评审者声明的紧急程度(
    CHANGES_REQUESTED
    仅为元数据,不会提升严重性)。将问题归入严重性章节(可修复的问题)、
    ## Needs-investigation
    (需要diff外的证据)或
    ## Reviewer-rejected
    (错误/无依据,或需要大量后续工作)。完整的归类标准:
    references/flow-details.md
  7. 撰写报告
    .cheese/affinage/pr-<n>.md
    :四行切换信息,然后是age格式的主体加上两个额外章节。详见
    ## Output
  8. 执行或询问——根据§Handoff。
  9. 起草非修复类回复,发布前进行审核(无论是否使用/cure,只要分级产生了此类内容)。切勿盲目发布——需要回复审核门控(§Handoff)或
    --auto
    参数。起草规则详见
    references/flow-details.md
    ;通过
    affinage.pyz post-reply
    发布已审核的回复。来自CI(
    from-check:<job>
    )和全新评审(
    from-age:<dimension>
    )的结果无需回复。
  10. 修复后回复发布(仅当/cure运行时)。/cure返回后,读取
    .cheese/cure/pr-<n>.md
    中的
    ### Applied
    /
    ### Deferred
    部分,通过
    affinage.pyz post-reply
    发布对应结果的回复:Applied
    from-comment:<id>
    )→
    "Fixed — <applied summary>."
    Deferred
    from-comment:<id>
    )→
    "Attempted fix reverted — <reason>."
  11. Plate操作——所有已审核的回复发布完成后(步骤9–10),且修复至少应用了一项修改时,调度终端
    /plate [--open-pr] [--hard] [--safe]
    ;每次回复发布后都会进行发布操作。发布完成后,执行**§ Post-PR learnings write-back**(
    ../cure/SKILL.md
    § Handoff)——affinage负责链式/cure所抑制的回写操作。未应用任何修复时,跳过plate和回写操作。

Fresh-window review

Fresh-window review

Standalone runs (see intro) compute the
entry="affinage"
router call (Flow step 3) and run
/age <pr-ref>
over the PR diff, passing the router's
n
/
lenses
/
effort
so
/age
doesn't recompute a smaller
entry="age"
sizing from the diff alone. Fold each returned finding into the report's severity sections tagged
[from-age:<dimension>]
— they flow to
/cure
like any other finding but get no GitHub reply (no reviewer to notify, same as
[from-check:…]
items).
Run the fresh pass before grading external claims so an echoing comment can be deduped, under the same sub-agent gate as grading (
## Sub-agent context gate
) to keep the parent context lean.
独立触发(见简介)会计算
entry="affinage"
的路由调用(流程步骤3),并对PR diff运行
/age <pr-ref>
,传递路由返回的
n
/
lenses
/
effort
,这样/age就不会仅根据diff重新计算
entry="age"
的更小范围。将每个返回的结果标记为
[from-age:<dimension>]
并整合到报告的严重性章节中——这些结果会像其他结果一样流向/cure,但不会在GitHub上回复(没有评审者需要通知,与
[from-check:…]
项相同)。
在对外部反馈分级前执行全新扫描,这样重复的评论可以被去重,同时与分级使用相同的子Agent门控(
## Sub-agent context gate
)以保持父上下文简洁。

Merge-conflict resolution

Merge-conflict resolution

When
pr-status
reports unresolved conflicts,
/affinage
routes to
/melt
(mergiraf → rerere → kdiff3) rather than resolving by hand. Default/
--auto
run checkout +
/melt
automatically before
/cure
;
--safe
gates it behind the handoff prompt. If
/melt
cannot resolve, write
status: halt: merge-conflicts-need-human
and stop. Full steps:
references/merge-conflict.md
.
pr-status
报告存在未解决的冲突时,
/affinage
会路由至/melt(mergiraf → rerere → kdiff3),而非手动解决。默认/
--auto
模式会在/cure前自动执行检出 + /melt;
--safe
模式会将其置于切换提示的门控之下。如果/melt无法解决冲突,写入
status: halt: merge-conflicts-need-human
并停止。完整步骤:
references/merge-conflict.md

Sub-agent context gate

Sub-agent context gate

/affinage
keeps dialogue, selection, approval state, and reply posting in the parent context. When the parent context would balloon — inputs exceed 10, diff exceeds ~25 KB, or threads span more than 5 files — resolve a fresh read-only
reviewer
through the shared agent resolver (a general worker qualifies only with
degraded: true
). The sub-agent returns a digest of graded findings (dimension, severity, confidence, evidence cite, pre-drafted push-back for
Reviewer-rejected
items); the parent owns the report write, selection gate,
/cure
dispatch, and reply posting. Digest size and selection detail:
../age/references/sub-agent-gate.md
.
/affinage
在父上下文中保留对话、选择、审核状态以及回复发布。当父上下文过大时——输入超过10个、diff超过约25 KB,或线程跨越超过5个文件——通过共享Agent解析器获取一个全新的只读
reviewer
(仅当
degraded: true
时,通用工作者才符合条件)。子Agent返回分级结果的摘要(维度、严重性、置信度、证据引用、针对
Reviewer-rejected
项的预起草反驳内容);父上下文负责撰写报告、选择门控、调度/cure以及发布回复。摘要大小和选择详情:
../age/references/sub-agent-gate.md

Preferred tools and fallbacks

Preferred tools and fallbacks

Call source-code search/read backends per
code-intelligence-routing.md
. Affinage-specific tools:
NeedPreferFallback
PR status (build + merge)
skills/affinage/scripts/affinage.pyz pr-status
manual
gh pr checks
+
gh pr view
GitHub fetch
gh api
none (skill halts)
Reply posting
skills/affinage/scripts/affinage.pyz post-reply
none — direct
gh api
calls bypass the
agent on behalf of <handle>
attribution
Diff inspection
delta
git diff --unified=3
根据
code-intelligence-routing.md
调用源代码搜索/读取后端。Affinage专属工具:
需求首选工具回退方案
PR状态(构建 + 合并)
skills/affinage/scripts/affinage.pyz pr-status
手动执行
gh pr checks
+
gh pr view
GitHub获取
gh api
无(工具终止)
回复发布
skills/affinage/scripts/affinage.pyz post-reply
无——直接调用
gh api
会绕过
agent on behalf of <handle>
的署名
Diff检查
delta
git diff --unified=3

Output

Output

Write to
.cheese/affinage/pr-<n>.md
: the four-line handoff slug, then the age-style body plus two extra sections (
## PR status
and the same severity /
## Needs-investigation
/
## Reviewer-rejected
shape
/age
uses). Full annotated template:
references/report-template.md
.
markdown
status: ok | halt: <one-line reason>
next: cure | done
artifact: <path-to-prior-cure-or-press-report-if-any>
<one-line orientation: what the PR does and what was graded>
Empty severity sections are omitted; so are
## Needs-investigation
/
## Reviewer-rejected
when empty.
status: ok
when grading completed;
halt: <reason>
when
gh
/
pr-status
failed.
next:
per
## Handoff
§ Slug
next:
values.
写入
.cheese/affinage/pr-<n>.md
:四行切换信息,然后是age风格的主体加上两个额外章节(
## PR status
以及与/age相同的严重性 /
## Needs-investigation
/
## Reviewer-rejected
结构)。完整带注释的模板:
references/report-template.md
markdown
status: ok | halt: <one-line reason>
next: cure | done
artifact: <path-to-prior-cure-or-press-report-if-any>
<one-line orientation: what the PR does and what was graded>
空的严重性章节会被省略;
## Needs-investigation
/
## Reviewer-rejected
为空时也会被省略。分级完成时
status: ok
gh
/
pr-status
失败时
halt: <reason>
next:
的值根据
## Handoff
§ Slug
next:
的值确定。

Handoff

Handoff

Pipeline: culture → mold → cook → press → age → cure → plate ·
/affinage
is parallel to
/age
and feeds
/cure
.
Default: affinage acts without asking, and asks only for a genuine reason (a sprawling/structural fix in the recommended set, conflicting findings) or under
--safe
(Flow step 8).
  • Severity-section findings exist (any severity, including
    Low
    )
    — compute the recommended composite (
    all-medium, cheap
    ). No reason to ask and no
    --safe
    : announce the selection, dispatch
    /cure
    with the locked
    handoff_context
    (shape:
    references/handoff-templates.md
    § Cure dispatch context), then render the reply-approval gate before posting (Flow steps 9–10) — never post blind. A reason to ask, or
    --safe
    : render the cure-selection gate per
    ../cheese/references/handoff-gate.md
    instead, pre-selecting the composite and flagging heavy rows.
    --auto
    skips both gates (
    ## Auto mode
    ).
  • No severity-section findings, but
    Reviewer-rejected
    /
    Needs-investigation
    items exist
    — nothing for
    /cure
    to act on; render the reply-approval gate and post nothing until chosen. Only
    --auto
    skips it.
After the selection, post approved replies (Flow step 9–10), then — only when the cure applied ≥1 fix — dispatch terminal
/plate [--open-pr] [--hard] [--safe]
(Flow step 11); publication lands after every reply. Exit
status: ok / next: done
when there is nothing to act on.
Slug
next:
values.
cure
when ≥1 finding meets the
medium+
floor;
done
when no severity-section finding exists or all meeting items resolve to an empty selection.
流水线: culture → mold → cook → press → age → cure → plate ·
/affinage
与/age并行,并为/cure提供输入。
默认:affinage无需询问即可执行操作,仅在存在合理原因(推荐集中存在大规模/结构性修复、结果冲突)或使用
--safe
参数时才会询问(流程步骤8)。
  • 存在严重性章节的问题(任何严重性,包括
    Low
    ——计算推荐的组合(
    all-medium, cheap
    )。无询问理由且未使用
    --safe
    :宣布选择结果,使用锁定的
    handoff_context
    调度/cure(结构详见:
    references/handoff-templates.md
    § Cure调度上下文),然后在发布前显示回复审核门控(流程步骤9–10)——切勿盲目发布。存在询问理由,或使用
    --safe
    :改为显示修复选择门控(详见
    ../cheese/references/handoff-gate.md
    ),预先选择组合并标记需要大量工作的项。
    --auto
    会跳过这两个门控(
    ## Auto mode
    )。
  • 无严重性章节的问题,但存在
    Reviewer-rejected
    /
    Needs-investigation
    ——/cure无需处理任何内容;显示回复审核门控,直到选择后才发布。仅
    --auto
    会跳过该门控。
选择完成后,发布已审核的回复(流程步骤9–10),然后——仅当修复至少应用了一项修改时——调度终端
/plate [--open-pr] [--hard] [--safe]
(流程步骤11);每次回复发布后都会进行发布操作。无操作内容时,退出状态为
status: ok / next: done
Slug
next:
的值
。当≥1个问题符合
medium+
级别时,
next: cure
;当无严重性章节的问题,或所有符合条件的项都被选为无需处理时,
next: done

Auto mode

Auto mode

Skips the selection gate. Resolves merge conflicts via
/melt
first (halt
status: halt: merge-conflicts-need-human
if unresolved). If standalone, runs the fresh
/age
pass. Auto-selects every finding meeting
<floor>
(
--plate
enters this mode at
--stake medium+ --open-pr
) and dispatches
/cure --auto --stake <floor>
; once its chain settles, posts replies for the originally graded items only, then dispatches terminal
/plate --open-pr [--hard]
once every reply posts (skipped if no fix applied). If no findings meet the floor: skip
/cure
, post rejection/investigation replies only, exit
status: ok / next: done
. Full mechanics:
references/auto-mode.md
.
跳过选择门控。首先通过/melt解决合并冲突(若无法解决则终止,状态为
status: halt: merge-conflicts-need-human
)。如果是独立触发,运行全新的/age扫描。自动选择所有符合
<floor>
的问题(
--plate
参数会以
--stake medium+ --open-pr
进入该模式)并调度
/cure --auto --stake <floor>
;链式流程完成后,仅针对最初分级的项发布回复,然后在所有回复发布后调度终端
/plate --open-pr [--hard]
(未应用任何修复时跳过)。若无符合级别的问题:跳过/cure,仅发布拒绝/调查类回复,退出状态为
status: ok / next: done
。完整机制:
references/auto-mode.md

--hard mode

--hard mode

/affinage
passes
--hard
to its terminal
/plate
, which fires
/hard-cheese
after verifying the final artifact state.
/cure
never dispatches plate in this chain, so the gate fires once — at affinage's publication boundary.
/affinage
--hard
传递给终端
/plate
,后者会在验证最终工件状态后触发
/hard-cheese
。在此链式流程中,/cure永远不会调度plate,因此门控仅触发一次——在affinage的发布边界处。

Rules

Rules

  • Grading is code-grounded, not reviewer-asserted — see Flow step 6.
  • Prefer fixing over pushing back. A grounded nit with a contained fix goes to
    /cure
    as
    Low
    ; reserve
    ## Reviewer-rejected
    for claims that are wrong, ungrounded, or a lot of work (Flow step 6,
    ../age/references/voice.md
    ).
  • Never auto-apply fixes itself — code fixes go through
    /cure
    , merge conflicts through
    /melt
    (
    ## Merge-conflict resolution
    ).
  • Never post a reply without approval — see the reply-approval gate (
    ## Handoff
    ,
    references/handoff-templates.md
    ).
  • Every posted reply ends with the literal
    agent on behalf of <handle>
    attribution via
    skills/affinage/scripts/affinage.pyz post-reply
    , where
    <handle>
    is resolved from
    RESPOND_GH_HANDLE
    gh api user --jq .login
    git config user.name
    . Never call
    gh api
    directly to post.
  • Idempotent re-runs rely on the latest-comment-from-self heuristic (Flow step 5) — the REST
    /comments
    endpoint exposes no thread resolution state; use GraphQL
    reviewThreads
    if cross-session resolution state is ever needed.
  • Apply the shared voice kernel (
    ../age/references/voice.md
    ): name confidence as
    certain | speculating | don't know
    ; agree when no findings warrant grading.
  • 分级基于代码,而非评审者的声明——见流程步骤6。
  • 优先修复而非反驳。有依据的小问题且修复范围有限时,作为
    Low
    级别提交给/cure;仅将错误、无依据或需要大量工作的反馈归入
    ## Reviewer-rejected
    (流程步骤6,
    ../age/references/voice.md
    )。
  • 切勿自动应用修复——代码修复需通过/cure,合并冲突需通过/melt(
    ## Merge-conflict resolution
    )。
  • 未经审核切勿发布回复——见回复审核门控(
    ## Handoff
    references/handoff-templates.md
    )。
  • 每条发布的回复末尾必须通过
    skills/affinage/scripts/affinage.pyz post-reply
    添加文字
    agent on behalf of <handle>
    署名,其中
    <handle>
    RESPOND_GH_HANDLE
    gh api user --jq .login
    git config user.name
    解析而来。切勿直接调用
    gh api
    发布回复。
  • 幂等重运行依赖于“自身最新评论”的启发式规则(流程步骤5)——REST
    /comments
    端点不暴露线程解析状态;若需要跨会话解析状态,请使用GraphQL
    reviewThreads
  • 应用共享语音内核(
    ../age/references/voice.md
    ):将置信度标记为
    certain | speculating | don't know
    ;当无问题需要分级时表示同意。

References

References

Affinage-local, each also routed inline above:
references/flow-details.md
,
references/merge-conflict.md
,
references/report-template.md
,
references/handoff-templates.md
,
references/auto-mode.md
.
sub-agent-gate.md
is
../age/references/sub-agent-gate.md
(shared, not affinage-local).
Scripts:
skills/affinage/scripts/affinage.pyz post-reply
(reply posting),
pr-status
(PR status fetcher).
Affinage本地参考资料,也已在上方内联路由:
references/flow-details.md
references/merge-conflict.md
references/report-template.md
references/handoff-templates.md
references/auto-mode.md
sub-agent-gate.md
位于
../age/references/sub-agent-gate.md
(共享,非Affinage本地)。
脚本:
skills/affinage/scripts/affinage.pyz post-reply
(回复发布)、
pr-status
(PR状态获取器)。

Agent resolution

Agent resolution

Resolve each dispatch through
../cheese/references/agent-resolution.md
.
WorkPreferred typesPermissions/isolationMinimum powerEffortFallback
Triage review claims and CI evidencereviewerread-only, fresh-contextpowerfulhighcompatible reviewer, then general
The canonical affinage report carries the shared
agent_resolution
block.
通过
../cheese/references/agent-resolution.md
解析每个调度。
工作内容首选类型权限/隔离最低能力工作量回退方案
分类处理评审反馈和CI证据reviewer只读,全新上下文强能力兼容的reviewer,然后是通用型
标准affinage报告包含共享的
agent_resolution
块。