Terminal voiceGiọng terminal
The harness lets you tune how it talks in the terminal — bluntness, persona, explanation depth, how hard it interviews you. Six knobs in terminal-voice.yaml, resolved by voice_prefs.py, injected at session start. The whole system rests on one invariant: these knobs change the conversational prose and nothing else — never your code, your artifacts, your evidence, or a gate's decision.Harness cho bạn chỉnh cách nó nói trong terminal — độ thẳng, persona, độ sâu giải thích, độ gắt khi phỏng vấn bạn. Sáu núm trong terminal-voice.yaml, do voice_prefs.py phân giải, tiêm lúc mở phiên. Cả hệ thống dựa trên một bất biến: các núm này chỉ đổi prose hội thoại, không gì khác — không bao giờ đụng code, artifact, bằng chứng, hay quyết định gate.
What it is — and isn'tNó là gì — và không là gì
✓ It changes✓ Nó đổi
- the register of what the assistant says to you in the terminalgiọng của những gì trợ lý nói với bạn trong terminal
- how blunt, how deep, in what persona, how proactively it promptsmức thẳng, độ sâu, persona nào, chủ động gợi ý cỡ nào
✗ It never touches✗ Nó không bao giờ đụng
- code, generated docs / reports / commitscode, docs / báo cáo / commit sinh ra
- evidence —
file:line, IDs, SHAs, quotesbằng chứng —file:line, ID, SHA, trích dẫn - any gate's allow / block decisionquyết định cho-qua / chặn của bất kỳ gate nào
The harshness ladder — voice_level 1–9Thang độ gắt — voice_level 1–9
Default 5. Reaching 6–9 is a deliberate edit in terminal-voice.yaml — no per-run prompt. The register escalates bluntness aimed at the work; it never escalates past the universal-harm floor.Mặc định 5. Lên 6–9 là một chỉnh có chủ đích trong terminal-voice.yaml — không hỏi từng lần. Giọng tăng độ thẳng nhắm vào công việc; không bao giờ vượt qua sàn universal-harm.
| LevelMức | Register of the terminal proseGiọng của prose terminal |
|---|---|
1–2 | polite, measured; soften hard newslịch sự, chừng mực; làm dịu tin xấu |
3–4 | direct but courteousthẳng nhưng nhã |
5 (default) | blunt, direct, NO profanitythẳng, trực diện, KHÔNG tục |
6 | sharper; name a bad idea as bad, no hedgingsắc hơn; gọi ý tồi là tồi, không vòng vo |
7 | roast the work; vi address form ông/tôi · bà/tôi"quay" công việc; xưng hô ông/tôi · bà/tôi |
8 | harsher; vi pronouns mày/tao permittedgắt hơn; cho phép mày/tao |
9 | maximum bluntness; work-aimed profanity permitted (vi: đm/vl-tier)gắt tối đa; cho phép tục nhắm-công-việc (đm/vl-tier) |
The vi pronoun / profanity rows are register form, not a licence to target the person — that line is the floor below.Các dòng đại từ / tục là hình thức giọng, không phải giấy phép nhắm vào con người — ranh giới đó là cái sàn bên dưới.
The universal-harm floorSàn universal-harm
Non-removable. It is TARGET-decided, not word-decided, and it holds at level 9 even with the config set there. Self-applied at generation time — there is no second-pass editor.Không gỡ được. Nó quyết theo ĐỐI-TƯỢNG, không theo từ-ngữ, và giữ ở mức 9 kể cả khi config đặt ở đó. Tự áp ngay lúc sinh chữ — không có biên-tập lượt-hai.
| Aimed at…Nhắm vào… | At any levelỞ mọi mức |
|---|---|
| the work — the idea, code, plan, decisioncông việc — ý tưởng, code, plan, quyết định | IN — up to level 9ĐƯỢC — tới mức 9 |
| who the user is — identity, body, familycon người người dùng — danh tính, thân thể, gia đình | OUT |
| slurs / protected-characteristic attackslăng mạ / tấn công đặc-điểm-được-bảo-vệ | OUT |
| threats, intimidationđe dọa, uy hiếp | OUT |
| sexual content directed at the personnội dung tình dục nhắm vào người | OUT |
| self-harm encouragementcổ vũ tự hại | OUT |
The persona catalog — none + 13Catalog persona — none + 13
persona sets the surface form of the prose; voice_level sets the harshness inside that form — the two are orthogonal. The work group is default-eligible; the fun group is opt-in. Every persona keeps technical accuracy intact, and the scope-fence binds to all of them.persona đặt hình thức bề mặt của prose; voice_level đặt độ gắt bên trong hình thức đó — hai cái trực giao. Nhóm work dùng được mặc định; nhóm fun phải bật chủ động. Mọi persona giữ nguyên độ chính xác kỹ thuật, và scope-fence ràng buộc tất cả.
none base
The natural harness voice — the default. An unrecognised id falls back here.Giọng harness tự nhiên — mặc định. ID lạ rơi về đây.
military work
Terse command-brief: orders, no filler, bottom line up top.Lệnh ngắn: mệnh lệnh, không thừa, kết luận lên đầu.
reality-check work
States the blunt risk / assumption first, then the answer.Nêu thẳng rủi ro / giả định trước, rồi mới trả lời.
git-log work
Imperative one-liners, like a commit log of the reasoning.Một dòng mệnh lệnh, như commit log của lập luận.
socratic work
Answers by asking the sharp question that unblocks you.Trả lời bằng câu hỏi sắc gỡ thế bí cho bạn.
bluf work
Bottom Line Up Front: conclusion first, support after.Kết luận lên đầu, dẫn chứng theo sau.
rubber-duck work
Thinks out loud step by step so you can spot the flaw.Nghĩ ra lời từng bước để bạn thấy chỗ sai.
feynman work
Explains as if to a smart beginner — plain words, one analogy.Giải thích như cho người mới thông minh — lời mộc, một phép so sánh.
first-principles work
Strips to fundamentals, rebuilds the answer from them.Lột về nền tảng, dựng lại câu trả lời từ đó.
caveman fun
Very short primitive grammar; still technically correct.Ngữ pháp nguyên thủy rất ngắn; vẫn đúng kỹ thuật.
yoda fun
Inverted phrasing; the point survives the word order.Đảo cú pháp; ý vẫn sống qua trật tự từ.
pirate fun
Nautical flavour over otherwise precise content.Phong vị thủy thủ trên nội dung vẫn chính xác.
80s-hacker fun
Retro-hacker swagger; the facts stay straight.Chất hacker thập niên 80; sự thật vẫn thẳng.
dad-joke fun
One groan-worthy pun, then the real answer.Một câu chơi chữ nhăn mặt, rồi câu trả lời thật.
Explanation depth — terminal_voice_level 0–5Độ sâu giải thích — terminal_voice_level 0–5
Depth and format of terminal answers — and interview/turn verbosity (the former detail_level folds in here). Changes depth only — never correctness, never which files are touched. Default 5.Độ sâu và định dạng câu trả lời terminal — và độ dài hội thoại/lượt (knob detail_level cũ gộp vào đây). Chỉ đổi độ sâu — không đổi tính đúng, không đổi file bị đụng. Mặc định 5.
| LevelMức | DepthĐộ sâu |
|---|---|
0 | answer only, no explanationchỉ câu trả lời, không giải thích |
1 | answer + one-line whycâu trả lời + một dòng vì sao |
2 | brief reasoninglập luận ngắn |
3 | reasoning + key trade-offslập luận + đánh đổi chính |
4 | thorough reasoninglập luận kỹ |
5 (default) | full reasoning, context, alternativeslập luận đầy đủ, bối cảnh, phương án khác |
no_markdown: true drops markdown from terminal answers (plain prose) — saves ~20–30% tokens on long replies. Formatting only, never content.no_markdown: true bỏ markdown khỏi câu trả lời terminal (prose thuần) — tiết kiệm ~20–30% token cho câu dài. Chỉ định dạng, không đổi nội dung.Interview-rigor knobsNúm độ-gắt phỏng vấn
Read by hs:plan / hs:discover / hs:brainstorm — they shape how the assistant interviews you, not what it builds.Được hs:plan / hs:discover / hs:brainstorm đọc — chúng định cách trợ lý phỏng vấn bạn, không phải cái nó xây.
| KnobNúm | Values (default)Giá trị (mặc định) | ControlsĐiều khiển |
|---|---|---|
interview_rigor | light · standard · deep | depth of challenge / gap-probing — separate from lengthđộ thách thức / dò khe-hở — tách khỏi độ dài |
action_prompting | minimal · standard · proactive | how many next-step suggestions at turn boundariesbao nhiêu gợi ý bước-kế ở cuối lượt |
Deliverable register — output.yaml (a separate file)Register sản phẩm — output.yaml (file riêng)
These are not terminal-voice knobs — they live in output.yaml and shape the deliverable (generated reports and code), not the live conversation. Resolve every value with output_config.py --resolved. Evidence (file:line / IDs / SHAs / numbers / quotes) stays invariant at every level.Đây không phải núm giọng terminal — chúng ở output.yaml và định hình sản phẩm (báo cáo và code sinh ra), không phải hội thoại trực tiếp. Phân giải mọi giá trị bằng output_config.py --resolved. Bằng chứng (file:line / ID / SHA / số / trích dẫn) bất biến ở mọi mức.
| KnobNúm | Values (default)Giá trị (mặc định) | ShapesĐịnh hình |
|---|---|---|
language | vi · en (vi) | language of generated prose — English instructions in, chosen language outngôn ngữ prose sinh ra — chỉ dẫn tiếng Anh vào, ngôn ngữ đã chọn ra |
audience | off · 0–5 (off) | prose register for chat + reports — 0 plain (non-technical) … 5 peer (dense)register prose cho chat + báo cáo — 0 mộc (phi kỹ thuật) … 5 ngang hàng (đặc) |
code_style | off · 0–5 (off) | adapts generated code only (comment density, verbosity) — 0 beginner … 5 expert. NOT scope-fenced.chỉnh chỉ code sinh ra (mật độ comment, độ dài) — 0 mới … 5 chuyên gia. KHÔNG bị scope-fence. |
humanize | true · false | apply the anti-AI-tell / natural-prose pass — default off; on when publishing externallyáp lượt anti-AI-tell / prose tự nhiên — mặc định tắt; bật khi xuất bản ra ngoài |
audience shapes prose; code_style shapes code — the two are disjoint. Both are deliberately NOT merged with the scope-fenced terminal voice (disjoint fail-mode).audience định hình prose; code_style định hình code — hai cái rời nhau. Cả hai cố tình KHÔNG gộp với giọng terminal scope-fenced (chế độ lỗi tách biệt).
The scope-fence & artifact voiceScope-fence & giọng artifact
The harness has three independent voice axes. The terminal voice touches axis 3 only — it never reaches into the other two.Harness có ba trục giọng độc lập. Terminal voice chỉ chạm trục 3 — không bao giờ với tới hai trục kia.
1 · Report language1 · Ngôn ngữ báo cáo
Generated reports follow output.yaml (language: vi|en + humanizer). Untouched by voice knobs.Báo cáo sinh ra theo output.yaml (language: vi|en + humanizer). Núm giọng không đụng.
2 · Artifact candor2 · Độ thẳng artifact
Fixed per artifact type: the journal-writer keeps its brutal candor; the hs:critique report stays neutral — at every voice_level.Cố định theo loại artifact: journal-writer giữ độ thẳng tàn nhẫn; báo cáo hs:critique giữ trung tính — ở mọi voice_level.
3 · Terminal voice3 · Giọng terminal
This system — the live conversational register. The only axis these knobs move.Hệ này — giọng hội thoại trực tiếp. Trục duy nhất các núm này dịch chuyển.
voice_level: 9 session is identical in tone to one generated at voice_level: 5. If a knob changed an artifact, a commit, evidence, or a gate decision, that is a defect, not a feature. scope-fence + universal-harm floor are recorded as DEC-65; the persona catalog as DEC-66.
Một báo cáo sinh trong phiên voice_level: 9 giống hệt về giọng với bản sinh ở voice_level: 5. Nếu một núm đổi artifact, commit, bằng chứng, hay quyết định gate — đó là lỗi, không phải tính năng. scope-fence + universal-harm floor ghi ở DEC-65; catalog persona ở DEC-66.
How to switch — /hs:voiceCách đổi — /hs:voice
Change the register for this session, or persist a new default. The skill rewrites terminal-voice.yaml only when you ask it to save.Đổi giọng cho phiên này, hoặc lưu mặc định mới. Skill chỉ ghi lại terminal-voice.yaml khi bạn yêu cầu save.
/hs:voice pirate · /hs:voice level 7 · /hs:voice depth 2 · /hs:voice plain on · /hs:voice save| ArgumentTham số | SetsĐặt |
|---|---|
[persona] | surface form (e.g. military, feynman, pirate)hình thức (vd military, feynman, pirate) |
level <1-9> | voice_level |
depth <0-5> | terminal_voice_level |
plain on|off | no_markdown |
save | persist the choice to terminal-voice.yamllưu lựa chọn vào terminal-voice.yaml |
A missing key, out-of-range value, or typo silently falls back to its default — the loader never crashes.Khóa thiếu, giá trị ngoài khoảng, hay gõ sai sẽ âm thầm về mặc định — loader không bao giờ sập.
FAQHỏi đáp
If I set voice_level: 9, will my reports get harsher too?Đặt voice_level: 9 thì báo cáo có gắt hơn không?
Does a fun persona make answers less accurate?Persona fun có làm câu trả lời kém chính xác không?
Can a high level target me personally?Mức cao có nhắm vào cá nhân tôi không?
Is interview_rigor the same as making answers longer?interview_rigor có phải làm câu trả lời dài hơn?
terminal_voice_level; report length is output.yaml.Không — rigor là độ thách thức (dò gắt cỡ nào), tách khỏi độ dài. "Ngắn mà sâu" là hợp lệ. Độ dài hội thoại giờ theo terminal_voice_level; độ dài báo cáo ở output.yaml.