pi-multi-viewers 0.6.0 → 0.7.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.
package/README.md CHANGED
@@ -94,6 +94,8 @@ ls viewers/
94
94
  scripts/mv.sh --prepare "<主题>" # spec = question.md(+background.md)
95
95
  scripts/mv.sh --start <spec目录> # 启动(自动挂载主 session;默认 budget 模式)
96
96
  # 可选:--fork-mode compaction|budget|full(见上表;一般不调)
97
+ # 可选:--max-meeting 15 --max-rr 7 --stall-timeout 600
98
+ # (配额:建环境时固化进 protocol.json,之后不可改;meeting 配额是"每 agent")
97
99
  # 可选:--extension-policy mc-tools|none|all(默认 mc-tools = agents 带 MC 的只读检索工具
98
100
  # ctx_search;none = 零扩展、零依赖;all = 走 pi 默认发现。缺 MC 时 mc-tools 可见降级)
99
101
  # 高级:--agents "a,b" 起一次性视角(不建 viewers/ 时用;prompt 入口不传它)
package/meeting_engine.py CHANGED
@@ -36,6 +36,7 @@ from meeting_fs import (
36
36
  read_protocol, cat_batch, remove_message, write_text, file_size,
37
37
  bare_of_base, bare_of_workdir, log,
38
38
  RESULT_MD, RESULT_MD_MIN_BYTES, DEFAULT_STALL_TIMEOUT,
39
+ DEFAULT_MAX_MEETING, DEFAULT_MAX_RR,
39
40
  )
40
41
  from meeting_core import (
41
42
  meeting_speak_count as core_meeting_speak_count,
@@ -503,7 +504,9 @@ def _commit_result_md(workdir, agent, subject):
503
504
  log(agent, "result.md 无改动——跳过 commit(幂等)")
504
505
 
505
506
 
506
- def agent_loop(workdir, agent, responder, max_meeting=10, max_rr=7,
507
+ def agent_loop(workdir, agent, responder,
508
+ max_meeting=DEFAULT_MAX_MEETING,
509
+ max_rr=DEFAULT_MAX_RR,
507
510
  poll_interval=POLL_INTERVAL,
508
511
  stall_timeout=DEFAULT_STALL_TIMEOUT):
509
512
  """主状态机(v2)。responder 注入:响应一轮并返回是否产出。
package/meeting_fs.py CHANGED
@@ -47,8 +47,12 @@ def result_path(base):
47
47
  """
48
48
  return f"{base}-{RESULT_MD}"
49
49
 
50
- # 无进展超时兜底(秒)——协议参数的默认值(gen_protocol 固化进
51
- # protocol.json;engine/fake_agent 的签名默认与 CLI default 同源于此)。
50
+ # 协议参数默认值(gen_protocol 固化进 protocol.json)——**唯一声明点**:
51
+ # CLI default、engine 签名默认、observability 的兜底读取都引用这里
52
+ # (此前 10/7 在三处各写一遍,改一处不改另一处就会漂移)。
53
+ DEFAULT_MAX_MEETING = 15 # meeting 阶段**每 agent** 发言配额
54
+ DEFAULT_MAX_RR = 7 # RR 阶段轮次配额
55
+ # 无进展超时兜底(秒)——同上(engine/fake_agent 的签名默认与 CLI default 同源)。
52
56
  DEFAULT_STALL_TIMEOUT = 600
53
57
 
54
58
  # thinking 档位缺省值——**唯一声明点**:models.md 的 variant 槽(缺省)
package/mv_cli.py CHANGED
@@ -45,6 +45,8 @@ USAGE = f"""用法:
45
45
  {PROG} --prepare "<问题>" [--background "<背景>"] [--agents "a,b,c"|4]
46
46
  {PROG} --start <spec目录> [--fork-mode compaction|budget|full]
47
47
  {PROG} --start <spec目录> [--extension-policy none|mc-tools|all]
48
+ {PROG} --start <spec目录> [--max-meeting N] [--max-rr N] [--stall-timeout S]
49
+ # 配额:建环境时固化进 protocol.json(默认 15 / 7 / 600)
48
50
  {PROG} --status [dir]
49
51
  {PROG} --report [dir]
50
52
  {PROG} --wait [dir]
@@ -57,7 +59,8 @@ USAGE = f"""用法:
57
59
  mv-<PI_SESSION_ID>-* 最新;无匹配则报错要求显式传目录)
58
60
 
59
61
  默认参数:
60
- agents=a,b,c max-meeting=10 max-rr=7 # 配额默认值的权威在 python argparse(本层不传)
62
+ agents=a,b,c max-meeting=15 max-rr=7 # 默认值的权威在 python argparse;
63
+ # 配额可在 --start 时传(建环境时固化,运行中不可改)
61
64
 
62
65
  --agents: 逗号分隔名称列表(如 "x,y")或纯数字(如 4 → 生成 a..d);
63
66
  human 是保留名,不能作为参与者
package/observability.py CHANGED
@@ -284,7 +284,7 @@ def build_report(base):
284
284
  # msgs 由上方流程段一次读取提供(同一读取派生四段)。
285
285
  lasts = {a: (msgs[a][-1] if msgs[a] else None) for a in agents}
286
286
  types = {a: (lasts[a].get("type") if lasts[a] else None) for a in agents}
287
- quota_meeting = proto.get("maxMeetingRounds", 10)
287
+ quota_meeting = proto.get("maxMeetingRounds", meeting_fs.DEFAULT_MAX_MEETING)
288
288
  quota_rr = proto.get("maxRRRounds", 7)
289
289
  out.append("配额:meeting " + "、".join(
290
290
  f"{a} {meeting_core.meeting_speak_count(msgs, a)}/{quota_meeting}"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pi-multi-viewers",
3
- "version": "0.6.0",
3
+ "version": "0.7.0",
4
4
  "description": "Multi-perspective analysis for Pi: fork the main session into N perspective agents over the meeting protocol.",
5
5
  "type": "module",
6
6
  "private": false,
@@ -5,7 +5,7 @@
5
5
  python3 start_discussion.py --dir mymeet --topic "主题" --agents a,b \
6
6
  [--stances '{"a": "立场1", "b": "立场2"}'] [--start] \
7
7
  [--extension-policy none|mc-tools|all] \
8
- [--models '{"a": "provider/model"}'] [--max-meeting 10] [--max-rr 7]
8
+ [--models '{"a": "provider/model"}'] [--max-meeting 15] [--max-rr 7]
9
9
 
10
10
  复杂内容用 spec 规格目录(设计 16,与 CLI 内容参数互斥):
11
11
  1. 生成骨架: python3 start_discussion.py --spec-gen myspec --agents a,b,c
@@ -532,7 +532,8 @@ def main():
532
532
  parser.add_argument("--questions", default=None, help="待回答问题(|分隔,对齐 RR)")
533
533
  parser.add_argument("--models", default=None, help='JSON: {"a": "provider/model"}')
534
534
  parser.add_argument("--result-writer", default=None, help="resultWriter(默认最后一位参与者)")
535
- parser.add_argument("--max-meeting", type=int, default=10, help="meeting 阶段发言配额(每 agent)")
535
+ parser.add_argument("--max-meeting", type=int, default=meeting_fs.DEFAULT_MAX_MEETING,
536
+ help="meeting 阶段发言配额(每 agent)")
536
537
  parser.add_argument("--max-rr", type=int, default=7, help="RR 阶段轮次配额(starter)")
537
538
  parser.add_argument("--stall-timeout", type=int,
538
539
  default=meeting_fs.DEFAULT_STALL_TIMEOUT,